static void simple_get_variable_row (GtkTreeModel *model, GtkTreeIter *base_iter, GtkTreeIter *dest_iter) { GtkTreeIter iter; iter = *base_iter; if (!gtk_tree_model_iter_previous (model, &iter) || !gtk_tree_model_iter_previous (model, &iter) || !simple_row_separator_cb (model, &iter, NULL)) { /* Create two new rows if it does not exist */ GtkListStore *store; store = GTK_LIST_STORE (model); gtk_list_store_insert_before (store, dest_iter, base_iter); gtk_list_store_insert_before (store, &iter, dest_iter); gtk_list_store_set (store, &iter, SIMPLE_COL_FORMAT, 0, SIMPLE_COL_FILTER, 0, SIMPLE_COL_DESCRIPTION, "", -1); } else { /* Use the existing row */ iter = *base_iter; gtk_tree_model_iter_previous (model, &iter); *dest_iter = iter; } }
static void move_selected_input_up (GtkButton *button, gpointer data) { GtkBuilder *builder = data; GtkTreeModel *model; GtkTreeIter iter, prev; GtkTreePath *path; g_debug ("move selected input source up"); if (!get_selected_iter (builder, &model, &iter)) return; prev = iter; if (!gtk_tree_model_iter_previous (model, &prev)) return; path = gtk_tree_model_get_path (model, &prev); gtk_list_store_swap (GTK_LIST_STORE (model), &iter, &prev); set_selected_path (builder, path); gtk_tree_path_free (path); update_button_sensitivity (builder); update_configuration (model); }
static void photos_preview_nav_buttons_update_visibility (PhotosPreviewNavButtons *self) { PhotosPreviewNavButtonsPrivate *priv = self->priv; GtkTreeIter iter; GtkTreeIter tmp; if (priv->model == NULL || priv->current_path == NULL || !priv->visible || !gtk_tree_model_get_iter (priv->model, &iter, priv->current_path)) { photos_preview_nav_buttons_fade_out_button (self, priv->prev_widget); photos_preview_nav_buttons_fade_out_button (self, priv->next_widget); photos_preview_nav_buttons_fade_out_button (self, priv->toolbar_widget); return; } photos_preview_nav_buttons_fade_in_button (self, priv->toolbar_widget); tmp = iter; if (gtk_tree_model_iter_previous (priv->model, &tmp)) photos_preview_nav_buttons_fade_in_button (self, priv->prev_widget); else photos_preview_nav_buttons_fade_out_button (self, priv->prev_widget); tmp = iter; if (gtk_tree_model_iter_next (priv->model, &tmp)) photos_preview_nav_buttons_fade_in_button (self, priv->next_widget); else photos_preview_nav_buttons_fade_out_button (self, priv->next_widget); if (!priv->hover) photos_preview_nav_buttons_queue_auto_hide (self); }
static void simple_changed_cb (GtkComboBox *simple, void *data) { GtkTreeIter iter; GtkTreeModel* model; int format, filter; int *previous; if (!gtk_combo_box_get_active_iter (simple, &iter)) return; model = gtk_combo_box_get_model (simple); gtk_tree_model_get (model, &iter, SIMPLE_COL_FORMAT, &format, SIMPLE_COL_FILTER, &filter, -1); previous = g_object_get_data ((GObject*)simple, "previous"); if (!format) { GtkWidget *dialog_widget; GtkDialog *dialog; GtkWidget *dialog_content; GtkWidget *simple_widget; GtkWidget *advanced_widget; int response; simple_widget = GTK_WIDGET (simple); dialog_widget = gtk_dialog_new_with_buttons ( _("Choose an archive format"), GTK_WINDOW (gtk_widget_get_ancestor (simple_widget, GTK_TYPE_WINDOW)), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, _("Cancel"), GTK_RESPONSE_CANCEL, _("OK"), GTK_RESPONSE_ACCEPT, NULL); dialog = GTK_DIALOG (dialog_widget); gtk_dialog_set_default_response (dialog, GTK_RESPONSE_ACCEPT); dialog_content = gtk_dialog_get_content_area (dialog); advanced_widget = autoar_gtk_chooser_advanced_new (previous[0], previous[1]); gtk_container_add (GTK_CONTAINER (dialog_content), advanced_widget); gtk_widget_show_all (dialog_widget); response = gtk_dialog_run (dialog); if (response == GTK_RESPONSE_ACCEPT && gtk_tree_model_iter_previous (model, &iter) && autoar_gtk_chooser_advanced_get (advanced_widget, &format, &filter)) simple_set_active (simple, model, format, filter); else simple_set_active (simple, model, previous[0], previous[1]); gtk_widget_destroy (dialog_widget); } else { previous[0] = format; previous[1] = filter; } }
static void simple_set_active (GtkComboBox *simple, GtkTreeModel *model, AutoarFormat format, AutoarFilter filter) { GtkTreeIter iter, prev; AutoarFormat this_format; AutoarFilter this_filter; int get_format, get_filter; int *previous; previous = g_object_get_data ((GObject*)simple, "previous"); if (autoar_format_is_valid (format) && autoar_filter_is_valid (filter)) { gtk_tree_model_get_iter_first (model, &iter); do { gtk_tree_model_get (model, &iter, SIMPLE_COL_FORMAT, &this_format, SIMPLE_COL_FILTER, &this_filter, -1); if (this_format == format && this_filter == filter) { gtk_combo_box_set_active_iter (simple, &iter); previous[0] = format; previous[1] = filter; return; } prev = iter; } while (gtk_tree_model_iter_next (model, &iter)); if (gtk_tree_model_iter_previous (model, &prev)) { GtkTreeIter active; char *description_string; simple_get_variable_row (model, &prev, &active); description_string = format_filter_full_description (format, filter); gtk_list_store_set (GTK_LIST_STORE (model), &active, SIMPLE_COL_FORMAT, format, SIMPLE_COL_FILTER, filter, SIMPLE_COL_DESCRIPTION, description_string, -1); g_free (description_string); gtk_combo_box_set_active_iter (simple, &active); previous[0] = format; previous[1] = filter; return; } } gtk_tree_model_get_iter_first (model, &iter); gtk_combo_box_set_active_iter (simple, &iter); gtk_tree_model_get (model, &iter, SIMPLE_COL_FORMAT, &get_format, SIMPLE_COL_FILTER, &get_filter, -1); previous[0] = format; previous[1] = filter; }
static void choices_remove_button_clicked (GtkButton *button, gpointer user_data) { GPInstructLessonTestMultiChoiceEditor *editor = GPINSTRUCT_LESSON_TEST_MULTI_CHOICE_EDITOR (user_data); GPInstructLessonTestMultiChoiceEditorPrivate *priv = editor->priv; GPInstructLessonTestMultiChoiceQuestion *question; GtkTreeSelection *selection; GtkTreeIter iter, iterSel; GtkTreePath *path; gboolean select = FALSE; selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->questions_tree_view)); if (gtk_tree_selection_get_selected (selection, NULL, &iter)) { gtk_tree_model_get (GTK_TREE_MODEL (priv->questions_store), &iter, DATA_COLUMN, &question, -1); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->choices_tree_view)); if (gtk_tree_selection_get_selected (selection, NULL, &iter)) { iterSel = iter; if (gtk_tree_model_iter_next (GTK_TREE_MODEL (priv->choices_store), &iterSel)) select = TRUE; else { iterSel = iter; if (gtk_tree_model_iter_previous (GTK_TREE_MODEL (priv->choices_store), &iterSel)) select = TRUE; } if (select) gtk_tree_selection_select_iter (selection, &iterSel); path = gtk_tree_model_get_path (GTK_TREE_MODEL (priv->choices_store), &iter); gpinstruct_lesson_test_multi_choice_question_remove_choice (question, gtk_tree_path_get_indices (path)[0]); gtk_list_store_remove (priv->choices_store, &iter); gtk_tree_path_free (path); gpinstruct_editor_window_set_modified (priv->window, TRUE); } } }
void move_up (GtkButton *button, gpointer user_data) { GtkTreeIter first_iter, *second_iter; GtkTreeSelection *selected; Widgets *widgets = (Widgets*)user_data; selected = gtk_tree_view_get_selection (widgets->tree); if(selected == NULL) { return 0; } gtk_tree_selection_get_selected (selected, NULL, &first_iter); //gtk_tree_store_remove (store, &first_iter); second_iter = gtk_tree_iter_copy (&first_iter); if(gtk_tree_model_iter_previous (widgets->store, second_iter)) { gtk_tree_store_swap (widgets->store, &first_iter, second_iter); } }
static void photos_preview_nav_buttons_update_visibility (PhotosPreviewNavButtons *self) { GtkTreeIter iter; GtkTreeIter tmp; GtkTreePath *current_path = NULL; if (self->model == NULL || !gtk_tree_row_reference_valid (self->current_row) || !self->visible) { self->enable_prev = FALSE; self->enable_next = FALSE; goto out; } current_path = gtk_tree_row_reference_get_path (self->current_row); gtk_tree_model_get_iter (self->model, &iter, current_path); tmp = iter; self->enable_prev = gtk_tree_model_iter_previous (self->model, &tmp); tmp = iter; self->enable_next = gtk_tree_model_iter_next (self->model, &tmp); out: if (self->visible_internal && self->enable_next) photos_preview_nav_buttons_fade_in_button (self, self->next_widget); else photos_preview_nav_buttons_fade_out_button (self, self->next_widget); if (self->visible_internal && self->enable_prev) photos_preview_nav_buttons_fade_in_button (self, self->prev_widget); else photos_preview_nav_buttons_fade_out_button (self, self->prev_widget); g_simple_action_set_enabled (G_SIMPLE_ACTION (self->load_next), self->enable_next); g_simple_action_set_enabled (G_SIMPLE_ACTION (self->load_previous), self->enable_prev); g_clear_pointer (¤t_path, (GDestroyNotify) gtk_tree_path_free); }
static void nimf_candidate_select_previous_item (NimfCandidatable *candidatable) { g_debug (G_STRLOC ": %s", G_STRFUNC); NimfCandidate *candidate = NIMF_CANDIDATE (candidatable); GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeIter iter; model = gtk_tree_view_get_model (GTK_TREE_VIEW (candidate->treeview)); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (candidate->treeview)); if (gtk_tree_selection_get_selected (selection, &model, &iter) == FALSE) { nimf_candidate_select_last_item_in_page (candidatable); return; } if (gtk_tree_model_iter_previous (model, &iter)) { gtk_tree_selection_select_iter (selection, &iter); } else { NimfEngineClass *engine_class; NimfEngine *engine; engine = nimf_service_ic_get_engine (candidate->target); engine_class = NIMF_ENGINE_GET_CLASS (engine); if (engine_class->candidate_page_up) { if (engine_class->candidate_page_up (engine, candidate->target)) nimf_candidate_select_last_item_in_page (candidatable); } } }
static void move_up_selected_layout (GtkWidget * button, GtkBuilder * dialog) { GtkTreeModel *model; GtkTreeIter iter, prev; GtkTreePath *path; if (get_selected_iter (dialog, &model, &iter) == FALSE) return; prev = iter; if (!gtk_tree_model_iter_previous (model, &prev)) return; path = gtk_tree_model_get_path (model, &prev); gtk_list_store_swap (GTK_LIST_STORE (model), &iter, &prev); update_layouts_list (model, dialog); set_selected_path (dialog, path); gtk_tree_path_free (path); }
/** * gtr_message_table_navigate: * @table: * @navigation: * @func: (scope call): * * Returns: (transfer none): */ GtrMsg * gtr_message_table_navigate (GtrMessageTable * table, GtrMessageTableNavigation navigation, GtrMessageTableNavigationFunc func) { GtkTreeSelection *selection; GtkTreeModel *model; GtkTreePath *path; GtkTreeIter iter; GtrMessageTablePrivate *priv; GtrMsg *msg; gboolean cont = TRUE; priv = gtr_message_table_get_instance_private (table); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->treeview)); if (!gtk_tree_selection_get_selected (selection, &model, &iter)) return NULL; switch (navigation) { case GTR_NAVIGATE_FIRST: if (!gtk_tree_model_get_iter_first (model, &iter)) return NULL; break; case GTR_NAVIGATE_LAST: { gint n_children; n_children = gtk_tree_model_iter_n_children (model, NULL); if (n_children <= 0) return NULL; if (!gtk_tree_model_iter_nth_child (model, &iter, NULL, n_children - 1)) return NULL; } break; case GTR_NAVIGATE_NEXT: if (func) { while (cont) { if (!gtk_tree_model_iter_next (model, &iter)) return NULL; gtk_tree_model_get (model, &iter, GTR_MESSAGE_TABLE_MODEL_POINTER_COLUMN, &msg, -1); if (func (msg)) cont = FALSE; } } else if (!gtk_tree_model_iter_next (model, &iter)) return NULL; break; case GTR_NAVIGATE_PREV: if (func) { while (cont) { if (!gtk_tree_model_iter_previous (model, &iter)) return NULL; gtk_tree_model_get (model, &iter, GTR_MESSAGE_TABLE_MODEL_POINTER_COLUMN, &msg, -1); if (func (msg)) cont = FALSE; } } else if (!gtk_tree_model_iter_previous (model, &iter)) return NULL; break; } gtk_tree_selection_select_iter (selection, &iter); path = gtk_tree_model_get_path (model, &iter); gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (priv->treeview), path, NULL, TRUE, 0.5, 0.0); gtk_tree_model_get (model, &iter, GTR_MESSAGE_TABLE_MODEL_POINTER_COLUMN, &msg, -1); return msg; }