[gnome-notes/136-implement-the-list-row-pattern-in-main-view: 19/24] controller: add (un)select item option
- From: Isaque Galdino de Araujo <igaldino src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-notes/136-implement-the-list-row-pattern-in-main-view: 19/24] controller: add (un)select item option
- Date: Tue, 21 Jul 2020 14:58:15 +0000 (UTC)
commit d29d7ffa9b2e4cc0de8483f8687f2419e122a57c
Author: Isaque Galdino <igaldino gmail com>
Date: Sun Jun 14 23:36:39 2020 -0300
controller: add (un)select item option
src/bjb-controller.c | 42 +++++++++++++++++++++++++++++++++++++-----
src/bjb-controller.h | 6 ++++++
2 files changed, 43 insertions(+), 5 deletions(-)
---
diff --git a/src/bjb-controller.c b/src/bjb-controller.c
index 2a9d2c99..de08f0ba 100644
--- a/src/bjb-controller.c
+++ b/src/bjb-controller.c
@@ -909,6 +909,16 @@ bjb_controller_get_selection (BjbController *self)
return g_list_reverse (retval);
}
+static void
+bjb_controller_set_selection (GtkListStore *store,
+ GtkTreeIter *iter,
+ gboolean selection)
+{
+ gtk_list_store_set (store, iter,
+ BJB_MODEL_COLUMN_SELECTED, selection,
+ -1);
+}
+
static gboolean
bjb_controller_set_selection_foreach (GtkTreeModel *model,
GtkTreePath *path,
@@ -917,10 +927,8 @@ bjb_controller_set_selection_foreach (GtkTreeModel *model,
{
gboolean selection = GPOINTER_TO_INT (user_data);
- gtk_list_store_set (GTK_LIST_STORE (model),
- iter,
- BJB_MODEL_COLUMN_SELECTED, selection,
- -1);
+ bjb_controller_set_selection (GTK_LIST_STORE (model), iter, selection);
+
return FALSE;
}
@@ -933,6 +941,26 @@ bjb_controller_set_all_selection (BjbController *self,
GINT_TO_POINTER (selection));
}
+void
+bjb_controller_select_item (BjbController *self,
+ const char *iter_string)
+{
+ GtkTreeIter iter;
+ if (!gtk_tree_model_get_iter_from_string (self->model, &iter, iter_string))
+ return;
+ bjb_controller_set_selection (GTK_LIST_STORE (self->model), &iter, TRUE);
+}
+
+void
+bjb_controller_unselect_item (BjbController *self,
+ const char *iter_string)
+{
+ GtkTreeIter iter;
+ if (!gtk_tree_model_get_iter_from_string (self->model, &iter, iter_string))
+ return;
+ bjb_controller_set_selection (GTK_LIST_STORE (self->model), &iter, FALSE);
+}
+
void
bjb_controller_select_all (BjbController *self)
{
@@ -955,5 +983,9 @@ void
bjb_controller_set_selection_mode (BjbController *self,
gboolean selection_mode)
{
- self->selection_mode = selection_mode;
+ if (self->selection_mode != selection_mode)
+ {
+ self->selection_mode = selection_mode;
+ bjb_controller_unselect_all (self);
+ }
}
diff --git a/src/bjb-controller.h b/src/bjb-controller.h
index 558cd068..d3015c20 100644
--- a/src/bjb-controller.h
+++ b/src/bjb-controller.h
@@ -80,6 +80,12 @@ void bjb_controller_set_selection_mode (BjbController *self,
GList *bjb_controller_get_selection (BjbController *self);
+void bjb_controller_select_item (BjbController *self,
+ const char *iter_string);
+
+void bjb_controller_unselect_item (BjbController *self,
+ const char *iter_string);
+
void bjb_controller_select_all (BjbController *self);
void bjb_controller_unselect_all (BjbController *self);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]