diff options
author | Lars Kotthoff <larsko@uwyo.edu> | 2018-11-05 19:30:21 -0700 |
---|---|---|
committer | Gaute Hope <eg@gaute.vetsj.com> | 2018-11-06 19:03:10 +0100 |
commit | 439856e3f9c78c198959157ad8fcb1540d456969 (patch) | |
tree | a9a84e15d23fb9f58e190841f795a4b2eca0ebc3 /src | |
parent | e62715e4af2c94b6129f50138b63e46a751465ac (diff) |
show difference between tag editing modes through underlining
Diffstat (limited to 'src')
-rw-r--r-- | src/command_bar.cc | 89 | ||||
-rw-r--r-- | src/command_bar.hh | 7 |
2 files changed, 31 insertions, 65 deletions
diff --git a/src/command_bar.cc b/src/command_bar.cc index 8f494ec..95c56e8 100644 --- a/src/command_bar.cc +++ b/src/command_bar.cc @@ -135,18 +135,19 @@ namespace Astroid { reset_bar (); - setup_bar_labels (); - switch (mode) { case CommandMode::AttachMids: { + entry.set_icon_from_icon_name ("mail-attachment-symbolic"); start_generic (cmd); } break; case CommandMode::Search: { + mode_label.set_text (""); + entry.set_icon_from_icon_name ("edit-find-symbolic"); start_searching (cmd); } break; @@ -154,18 +155,24 @@ namespace Astroid { case CommandMode::Filter: case CommandMode::SearchText: { + mode_label.set_text ("Find text"); + entry.set_icon_from_icon_name ("edit-find-symbolic"); start_text_searching (cmd); } break; case CommandMode::Tag: { + mode_label.set_text ("Change tags"); + entry.set_icon_from_icon_name ("system-run-symbolic"); start_tagging (cmd); } break; case CommandMode::DiffTag: { + mode_label.set_text ("Change tags (+/-)"); + entry.set_icon_from_icon_name ("system-run-symbolic"); start_difftagging (cmd); } break; @@ -175,54 +182,6 @@ namespace Astroid { set_search_mode (true); } - void CommandBar::setup_bar_labels () { - switch (mode) { - - case CommandMode::AttachMids: - { - entry.set_icon_from_icon_name ("mail-attachment-symbolic"); - } - break; - - case CommandMode::Search: - { - mode_label.set_text (""); - entry.set_icon_from_icon_name ("edit-find-symbolic"); - } - break; - - case CommandMode::Filter: - case CommandMode::SearchText: - { - mode_label.set_text ("Find text"); - entry.set_icon_from_icon_name ("edit-find-symbolic"); - } - break; - - case CommandMode::Tag: - { - if (edit_mode == EditMode::Tags) { - mode_label.set_text ("Change tags [move by tag]"); - } else { - mode_label.set_text ("Change tags"); - } - entry.set_icon_from_icon_name ("system-run-symbolic"); - } - break; - - case CommandMode::DiffTag: - { - if (edit_mode == EditMode::Tags) { - mode_label.set_text ("Change tags (+/-) [move by tag]"); - } else { - mode_label.set_text ("Change tags (+/-)"); - } - entry.set_icon_from_icon_name ("system-run-symbolic"); - } - break; - } - } - void CommandBar::reset_bar () { entry.set_completion (refptr<Gtk::EntryCompletion>()); } @@ -244,7 +203,7 @@ namespace Astroid { entry.set_completion (search_completion); current_completion = search_completion; - search_completion->color_tags (); + search_completion->color_tags (edit_mode); } void CommandBar::start_text_searching (ustring searchstring) { @@ -266,7 +225,7 @@ namespace Astroid { entry.set_text (tagstring); - tag_completion->color_tags (); + tag_completion->color_tags (edit_mode); } void CommandBar::start_difftagging (ustring tagstring) { @@ -277,7 +236,7 @@ namespace Astroid { entry.set_text (tagstring); - difftag_completion->color_tags (); + difftag_completion->color_tags (edit_mode); } bool CommandBar::entry_key_press (GdkEventKey * event) { @@ -288,7 +247,8 @@ namespace Astroid { case GDK_KEY_Control_R: { edit_mode = edit_mode == EditMode::Tags ? EditMode::Chars : EditMode::Tags; - setup_bar_labels (); + entry_changed (); + return true; } @@ -450,7 +410,7 @@ namespace Astroid { } else if (mode == CommandMode::Tag || mode == CommandMode::DiffTag || mode == CommandMode::Search) { if (current_completion) - refptr<TagCompletion>::cast_dynamic (current_completion)->color_tags (); + refptr<TagCompletion>::cast_dynamic (current_completion)->color_tags (edit_mode); } } @@ -640,7 +600,7 @@ namespace Astroid { return true; } - void CommandBar::TagCompletion::color_tags () { + void CommandBar::TagCompletion::color_tags (EditMode edit_mode) { Gtk::Entry * entry = get_entry (); if (entry == NULL) return; @@ -676,7 +636,7 @@ namespace Astroid { /* grapheme positions */ ustring_sz gstart = txt.substr (0, pos).bytes (); - color_tag (tag, gstart, attrs); + color_tag (tag, gstart, attrs, edit_mode); pos = end+1; } @@ -685,7 +645,7 @@ namespace Astroid { } void CommandBar::TagCompletion::color_tag (ustring tag, - ustring_sz gstart, Pango::AttrList &attrs) { + ustring_sz gstart, Pango::AttrList &attrs, EditMode edit_mode) { unsigned char cv[3] = { (unsigned char) (canvas_color.get_red_u () * 255 / 65535), (unsigned char) (canvas_color.get_green_u () * 255 / 65535), @@ -696,7 +656,7 @@ namespace Astroid { auto fg = colors.first; auto bg = colors.second; - ustring_sz gend = gstart + tag.bytes (); + ustring_sz gend = gstart + tag.bytes (); auto fga = Pango::Attribute::Attribute::create_attr_foreground (fg.get_red_u (), fg.get_green_u (), fg.get_blue_u ()); fga.set_start_index (gstart); @@ -710,6 +670,13 @@ namespace Astroid { bgalpha.set_start_index (gstart); bgalpha.set_end_index (gend); + if (edit_mode == EditMode::Chars) { + auto underline = Pango::Attribute::create_attr_underline (Pango::UNDERLINE_SINGLE); + underline.set_start_index (gstart); + underline.set_end_index (gend); + attrs.insert (underline); + } + attrs.insert (bga); attrs.insert (bgalpha); attrs.insert (fga); @@ -845,7 +812,7 @@ namespace Astroid { return true; } - void CommandBar::SearchCompletion::color_tags () { + void CommandBar::SearchCompletion::color_tags (EditMode edit_mode) { Gtk::Entry * entry = get_entry (); if (entry == NULL) return; @@ -885,7 +852,7 @@ namespace Astroid { /* grapheme positions */ ustring_sz gstart = txt.substr (0, pos).bytes (); - color_tag (tag, gstart, attrs); + color_tag (tag, gstart, attrs, edit_mode); pos = end+1; } diff --git a/src/command_bar.hh b/src/command_bar.hh index dc249e2..4c2d6d1 100644 --- a/src/command_bar.hh +++ b/src/command_bar.hh @@ -63,7 +63,6 @@ namespace Astroid { private: void reset_bar (); - void setup_bar_labels (); class GenericCompletion : public Gtk::EntryCompletion { public: @@ -117,8 +116,8 @@ namespace Astroid { static Gdk::RGBA canvas_color; static bool canvas_color_set; - virtual void color_tags (); - void color_tag (ustring tg, ustring_sz start, Pango::AttrList &attrs); + virtual void color_tags (EditMode edit_mode); + void color_tag (ustring tg, ustring_sz start, Pango::AttrList &attrs, EditMode edit_mode); }; refptr<TagCompletion> tag_completion; @@ -160,7 +159,7 @@ namespace Astroid { bool on_match_selected(const Gtk::TreeModel::iterator& iter) override; - void color_tags () override; + void color_tags (EditMode edit_mode) override; }; refptr<SearchCompletion> search_completion; |