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);
		}
	}
}
Пример #7
0
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 (&current_path, (GDestroyNotify) gtk_tree_path_free);
}
Пример #9
0
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);	
}
Пример #11
0
/**
 * 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;
}