From: Vladimir Nadvornik Date: Sat, 6 Jun 2009 22:51:55 +0000 (+0000) Subject: added mark filter to menu - now it is possible to assign hotkeys X-Git-Tag: v1.0.0~168 X-Git-Url: http://geeqie.org/cgi-bin/gitweb.cgi?p=geeqie.git;a=commitdiff_plain;h=831963138ddff7c9d9d29e39ecf677535e679ec3 added mark filter to menu - now it is possible to assign hotkeys --- diff --git a/src/layout.c b/src/layout.c index c7a841dd..8eb2ce17 100644 --- a/src/layout.c +++ b/src/layout.c @@ -814,6 +814,14 @@ void layout_selection_to_mark(LayoutWindow *lw, gint mark, SelectionToMarkMode m layout_status_update_info(lw, NULL); /* osd in fullscreen mode */ } +void layout_mark_filter_toggle(LayoutWindow *lw, gint mark) +{ + if (!layout_valid(&lw)) return; + + if (lw->vf) vf_mark_filter_toggle(lw->vf, mark); +} + + /* *----------------------------------------------------------------------------- * access diff --git a/src/layout.h b/src/layout.h index 952e145f..09618c3d 100644 --- a/src/layout.h +++ b/src/layout.h @@ -70,6 +70,8 @@ void layout_select_invert(LayoutWindow *lw); void layout_mark_to_selection(LayoutWindow *lw, gint mark, MarkToSelectionMode mode); void layout_selection_to_mark(LayoutWindow *lw, gint mark, SelectionToMarkMode mode); +void layout_mark_filter_toggle(LayoutWindow *lw, gint mark); + void layout_refresh(LayoutWindow *lw); void layout_thumb_set(LayoutWindow *lw, gboolean enable); diff --git a/src/layout_util.c b/src/layout_util.c index b74f9e4d..a2fd23db 100644 --- a/src/layout_util.c +++ b/src/layout_util.c @@ -895,6 +895,16 @@ static void layout_menu_sel_mark_minus_cb(GtkAction *action, gpointer data) layout_mark_to_selection(lw, mark, MTS_MODE_MINUS); } +static void layout_menu_mark_filter_toggle_cb(GtkAction *action, gpointer data) +{ + LayoutWindow *lw = data; + gint mark = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(action), "mark_num")); + g_assert(mark >= 1 && mark <= FILEDATA_MARKS_SIZE); + + layout_marks_set(lw, TRUE); + layout_mark_filter_toggle(lw, mark); +} + /* *----------------------------------------------------------------------------- @@ -1618,6 +1628,7 @@ static void layout_actions_setup_marks(LayoutWindow *lw) layout_actions_setup_mark(lw, mark, "AddMark%d", _("_Add mark %d"), NULL, _("Add mark %d"), G_CALLBACK(layout_menu_sel_mark_or_cb)); layout_actions_setup_mark(lw, mark, "IntMark%d", _("_Intersection with mark %d"), NULL, _("Intersection with mark %d"), G_CALLBACK(layout_menu_sel_mark_and_cb)); layout_actions_setup_mark(lw, mark, "UnselMark%d", _("_Unselect mark %d"), NULL, _("Unselect mark %d"), G_CALLBACK(layout_menu_sel_mark_minus_cb)); + layout_actions_setup_mark(lw, mark, "FilterMark%d", _("_Filter mark %d"), NULL, _("Filter mark %d"), G_CALLBACK(layout_menu_mark_filter_toggle_cb)); g_string_append_printf(desc, " " @@ -1629,8 +1640,10 @@ static void layout_actions_setup_marks(LayoutWindow *lw) " " " " " " + " " + " " " ", - mark, mark, mark, mark, mark, mark, mark, mark); + mark, mark, mark, mark, mark, mark, mark, mark, mark); } g_string_append(desc, diff --git a/src/view_file.c b/src/view_file.c index 3e6dcd2e..7f1f3c3c 100644 --- a/src/view_file.c +++ b/src/view_file.c @@ -711,6 +711,13 @@ static GtkWidget *vf_marks_filter_init(ViewFile *vf) return frame; } +void vf_mark_filter_toggle(ViewFile *vf, gint mark) +{ + gint n = mark - 1; + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(vf->filter_check[n]), + !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(vf->filter_check[n]))); +} + ViewFile *vf_new(FileViewType type, FileData *dir_fd) { ViewFile *vf; diff --git a/src/view_file.h b/src/view_file.h index c83e8967..2cb2d72b 100644 --- a/src/view_file.h +++ b/src/view_file.h @@ -35,6 +35,7 @@ void vf_marks_set(ViewFile *vf, gboolean enable); void vf_sort_set(ViewFile *vf, SortType type, gboolean ascend); guint vf_marks_get_filter(ViewFile *vf); +void vf_mark_filter_toggle(ViewFile *vf, gint mark); GList *vf_pop_menu_file_list(ViewFile *vf); GtkWidget *vf_pop_menu(ViewFile *vf);