summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLars Kotthoff <larsko@uwyo.edu>2018-11-05 19:30:21 -0700
committerGaute Hope <eg@gaute.vetsj.com>2018-11-06 19:03:10 +0100
commit439856e3f9c78c198959157ad8fcb1540d456969 (patch)
treea9a84e15d23fb9f58e190841f795a4b2eca0ebc3 /src
parente62715e4af2c94b6129f50138b63e46a751465ac (diff)
show difference between tag editing modes through underlining
Diffstat (limited to 'src')
-rw-r--r--src/command_bar.cc89
-rw-r--r--src/command_bar.hh7
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;