Example #1
0
static gboolean compare_location(GtkTreeModel* model, GtkTreePath* path, GtkTreeIter* iter, gpointer user_data)
{
    MateWeatherPref* pref = user_data;
    WeatherLocation* loc;
    GtkTreeView* view;

    gtk_tree_model_get(model, iter, MATEWEATHER_XML_COL_POINTER, &loc, -1);

    if (!loc)
    {
		return FALSE;
	}

    if (!weather_location_equal(loc, pref->priv->applet->mateweather_pref.location))
    {
		return FALSE;
	}

    view = GTK_TREE_VIEW(pref->priv->tree);
    gtk_tree_view_expand_to_path(view, path);
    gtk_tree_view_set_cursor(view, path, NULL, FALSE);
    gtk_tree_view_scroll_to_cell(view, path, NULL, TRUE, 0.5, 0.5);

    return TRUE;
}
Example #2
0
void tree_gui_set_current(tree_gui_t *gui, unsigned long key)
{
  if ( gui == NULL )
    return;

  /* Unpaint previous row */
  if ( gui->current.object ) {
    gui->current.object = NULL;
    tree_gui_paint_iter(gui, &(gui->current.iter));
  }

  if ( (key != 0) && tree_gui_get_iter(gui, key, &(gui->current.iter)) ) {
    GtkTreePath *path;

    gtk_tree_model_get(GTK_TREE_MODEL(gui->tree_model), &(gui->current.iter),
		       TREE_GUI_COL_OBJECT, &(gui->current.object),
		       -1);

    /* Expand tree to current path */
    path = gtk_tree_model_get_path(GTK_TREE_MODEL(gui->tree_model), &(gui->current.iter));
    gtk_tree_view_expand_to_path(gui->tree_view, path);
    gtk_tree_path_free(path);

    /* Paint row */
    tree_gui_paint_iter(gui, &(gui->current.iter));
  }
  //fprintf(stderr, "-- CURRENT = %lu\n", key);

  /* Update output dump display */
  tree_gui_show_current(gui);
}
Example #3
0
gboolean
vinagre_bookmarks_tree_select_entry (VinagreBookmarksTree *tree,
				     VinagreBookmarksEntry *entry)
{
  GtkTreeModel          *model;
  struct _find_entry     f;

  if (!entry)
    return FALSE;
  g_return_val_if_fail (VINAGRE_IS_BOOKMARKS_TREE (tree), FALSE);
  g_return_val_if_fail (VINAGRE_IS_BOOKMARKS_ENTRY (entry), FALSE);

  model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree->priv->tree));
  f.entry = entry;
  f.found = FALSE;

  gtk_tree_model_foreach (model, find_entry, &f);
  if (f.found)
    {
      gtk_tree_view_expand_to_path (GTK_TREE_VIEW (tree->priv->tree), f.path);
      gtk_tree_view_set_cursor (GTK_TREE_VIEW (tree->priv->tree), f.path, NULL, FALSE);
      gtk_tree_path_free (f.path);
      return TRUE;
    }
  else
    return FALSE;
}
Example #4
0
static void
select_index (const gchar *uri)
{
  GtkTreeSelection *selection;
  GtkTreeIter      *iter = NULL;

  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));

  if (uri)
    iter = g_hash_table_lookup (uri_hash_table, uri);

  if (iter)
    {
      GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view));
      GtkTreePath  *path;
      GtkTreePath  *scroll_path;

      path = gtk_tree_model_get_path (model, iter);
      scroll_path = gtk_tree_path_copy (path);

      gtk_tree_path_up (path);
      gtk_tree_view_expand_to_path (GTK_TREE_VIEW (tree_view), path);
      gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (tree_view), scroll_path,
                                    NULL, FALSE, 0.0, 0.0);

      gtk_tree_path_free (path);
      gtk_tree_path_free (scroll_path);

      gtk_tree_selection_select_iter (selection, iter);
    }
  else
    {
      gtk_tree_selection_unselect_all (selection);
    }
}
Example #5
0
static gboolean cm_try_to_select(CMPathWalkFunc path_func, GtkTreeSelection *selection,
                                 GtkTreeModel *model, GtkTreePath *path)
{
    GtkTreeIter iter;

    if (gtk_tree_path_get_depth(path) <= 0) /* sanity check */
        return FALSE;

    /* modify the path using the passed function */
    if (path_func != NULL)
        path_func(path);

    if (gtk_tree_path_get_depth(path) <= 0) /* sanity check */
        return FALSE;

    /* check whether the path points to something valid and if so, select it */
    if (gtk_tree_model_get_iter(model, &iter, path))
    {
        GtkTreeView *treeview = gtk_tree_selection_get_tree_view(selection);
        gboolean was_expanded = gtk_tree_view_row_expanded(treeview, path);
        /* to get gtk_tree_selection_select_path() working, we need to expand the row first
         * if it isn't expanded yet, at least when the row is a parent item */
        if (! was_expanded)
            gtk_tree_view_expand_to_path(treeview, path);

        gtk_tree_selection_select_path(selection, path);

        if (! was_expanded) /* restore the previous state */
            gtk_tree_view_collapse_row(treeview, path);
        return TRUE;
    }

    return FALSE;
}
Example #6
0
/**
 * gwy_grain_value_tree_view_select:
 * @treeview: A tree view with grain values.
 * @gvalue: The grain value to select.
 *
 * Selects a particular grain value in a grain value tree view.
 *
 * If the @gvalue group is currently unexpanded, it will be expanded to
 * show it, and the tree view may scroll to make it visible.
 *
 * Since: 2.8
 **/
void
gwy_grain_value_tree_view_select(GtkTreeView *treeview,
                                 GwyGrainValue *gvalue)
{
    GtkTreeSelection *selection;
    GtkTreeModel *model;
    GtkTreePath *path;
    GtkTreeIter iter;

    g_return_if_fail(GTK_IS_TREE_VIEW(treeview));
    g_return_if_fail(GWY_IS_GRAIN_VALUE(gvalue));
    g_return_if_fail(priv_quark
                     && g_object_get_qdata(G_OBJECT(treeview), priv_quark));

    model = gtk_tree_view_get_model(treeview);
    if (!find_grain_value(model, gvalue, &iter)) {
        g_warning("Grain value not in tree model.");
        return;
    }

    path = gtk_tree_model_get_path(model, &iter);
    gtk_tree_view_expand_to_path(treeview, path);
    gtk_tree_view_scroll_to_cell(treeview, path, NULL, FALSE, 0.0, 0.0);
    gtk_tree_path_free(path);

    selection = gtk_tree_view_get_selection(treeview);
    gtk_tree_selection_select_iter(selection, &iter);
}
Example #7
0
void gui_parse_bookmarks(GtkTreeView *tree, const xmlChar *file,
			 GtkTreeIter *parent)
{
	xmlNodePtr cur = NULL;
	BOOKMARK_DATA data, *p = NULL;
	GtkTreeIter iter;
	GtkTreePath *path;

	p = &data;
	cur = xml_load_bookmark_file(file);
	//cur = cur->xmlChildrenNode;
	while (cur != NULL) {
		if (!xmlStrcmp(cur->name, (const xmlChar *)"Bookmark")) {
			get_xml_bookmark_data(cur, p);
			gui_add_item_to_tree(&iter, parent, p);
			free_bookmark_data(p);
		} else {
			get_xml_folder_data(cur, p);
			if (p->caption) {
				gui_add_item_to_tree(&iter, parent, p);
			}
			free_bookmark_data(p);
			add_node(cur, &iter);
		}

		if (cur->next)
			cur = cur->next;
		else
			break;
	}
	xml_free_bookmark_doc();
	path = gtk_tree_model_get_path(GTK_TREE_MODEL(model), parent);
	gtk_tree_view_expand_to_path(tree, path);
	gtk_tree_path_free(path);
}
Example #8
0
static void find_entry_changed(GtkEditable* entry, MateWeatherPref* pref)
{
	GtkTreeView *tree;
	GtkTreeModel *model;
	GtkTreeSelection *selection;
	GtkTreeIter iter;
	GtkTreePath *path;
	const gchar *location;

	tree = GTK_TREE_VIEW (pref->priv->tree);
	model = gtk_tree_view_get_model (tree);

	g_return_if_fail (model != NULL);

	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree));
	gtk_tree_model_get_iter_first (model, &iter);

	location = gtk_entry_get_text (GTK_ENTRY (entry));

	if (find_location (model, &iter, location, TRUE))
	{
		gtk_widget_set_sensitive (pref->priv->find_next_btn, TRUE);

		path = gtk_tree_model_get_path (model, &iter);
		gtk_tree_view_expand_to_path (tree, path);
		gtk_tree_selection_select_iter (selection, &iter);
		gtk_tree_view_scroll_to_cell (tree, path, NULL, TRUE, 0.5, 0);

		gtk_tree_path_free (path);
	}
	else
	{
		gtk_widget_set_sensitive (pref->priv->find_next_btn, FALSE);
	}
}
Example #9
0
void
find_entry_changed (GtkEditable *entry/*, GWeatherPref *pref*/)
{
	GtkTreeModel *model;
	GtkTreeSelection *selection;
	GtkTreeIter iter;
	GtkTreePath *path;
	GtkWidget *nextbutton;
	const gchar *location;

	nextbutton = (GtkWidget *) glade_xml_get_widget(glade_xml, "findnextbutton");

	model = gtk_tree_view_get_model (GTK_TREE_VIEW(locations_widgets->tree));

	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (locations_widgets->tree));
	gtk_tree_model_get_iter_first (model, &iter);

	location = gtk_entry_get_text (GTK_ENTRY (entry));

	if (find_location (model, &iter, location, TRUE)) 
	{
		gtk_widget_set_sensitive (nextbutton , TRUE);

		path = gtk_tree_model_get_path (model, &iter);
		gtk_tree_view_expand_to_path (GTK_TREE_VIEW(locations_widgets->tree), path);
		gtk_tree_selection_select_iter (selection, &iter);
		gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW(locations_widgets->tree), path, NULL, TRUE, 0.5, 0);

		gtk_tree_path_free (path);
	} 
	else 
	{
		gtk_widget_set_sensitive (nextbutton, FALSE);
	}
}
Example #10
0
void TreeViewCategories_CategoryAdd(TreeViewCategories* c, const char* CatName, unsigned int IsRoot)
{
	GtkTreeModel* model;
	GtkTreePath* path;
	GtkTreeIter iter;
	GtkTreeIter iter_parent;
	GtkTreeIter* iter_parent_ptr;
	guint parent_id;
	gchar* CategoryName2Str;
	
	
	model = gtk_tree_view_get_model(GTK_TREE_VIEW(c->treeview));
	
	if (IsRoot)
	{
		iter_parent_ptr = NULL;
		path = NULL;
		parent_id = 0;
	}
	else
	{
		gtk_tree_view_get_cursor(GTK_TREE_VIEW(c->treeview), &path, NULL);
		
		if (path == NULL)
		{
			iter_parent_ptr = NULL;
			parent_id = 0;
		}
		else
		{
			gtk_tree_model_get_iter(model, &iter_parent, path);
			iter_parent_ptr = &iter_parent;
			gtk_tree_model_get(model, iter_parent_ptr, COL_ID_ID, &parent_id, -1);
		}
	}
	
	CategoryName2Str = TreeViewCategories_GetName2(model, iter_parent_ptr, CatName);
	
	g_print("%s(): new category: id = %u, parent_id = %u, name = %s, name2 = %s.\n",
			__func__, c->new_cat_id, parent_id, CatName, CategoryName2Str);
	if (TreeViewCategories_CategoryAddToDatabase(c, c->new_cat_id, parent_id, CatName))
	{
		gtk_tree_store_append(GTK_TREE_STORE(model), &iter, iter_parent_ptr);
		gtk_tree_store_set(GTK_TREE_STORE(model), &iter,
				COL_ID_RECORD_STATE, REC_STATE_ADD,
				COL_ID_ID,           c->new_cat_id,
				COL_ID_PARENT_ID,    parent_id,
				COL_ID_NAME,         CatName,
				COL_ID_NAME2,        CategoryName2Str, -1);
		++c->new_cat_id;
	}
	if (path != NULL)
	{
		gtk_tree_view_expand_to_path(GTK_TREE_VIEW(c->treeview), path);
		gtk_tree_path_free(path);
	}
	
	g_free(CategoryName2Str);
}
Example #11
0
void
parasite_widget_tree_select_widget(ParasiteWidgetTree *widget_tree,
                                   GtkWidget *widget)
{
    GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(widget_tree));
    GList *parents = get_parents(widget, NULL);
    GList *l;
    GtkTreeIter iter, parent_iter = {0};
    gboolean found = FALSE;
    gboolean in_root = TRUE;

    for (l = parents; l != NULL; l = l->next)
    {
        GtkWidget *cur_widget = GTK_WIDGET(l->data);
        gboolean valid;
        found = FALSE;

        for (valid = gtk_tree_model_iter_children(model, &iter,
                                                  in_root ? NULL
                                                  : &parent_iter);
              valid;
              valid = gtk_tree_model_iter_next(model, &iter))
        {
            GtkWidget *iter_widget;

            gtk_tree_model_get(model, &iter,
                               WIDGET, &iter_widget,
                               -1);

            if (iter_widget == cur_widget)
            {
                parent_iter = iter;
                in_root = FALSE;
                found = TRUE;
                break;
            }
        }

        if (!found)
        {
            /* No good. Bail.. */
            break;
        }
    }

    if (found)
    {
        GtkTreePath *path = gtk_tree_model_get_path(model, &iter);
        gtk_tree_view_expand_to_path(GTK_TREE_VIEW(widget_tree), path);
        gtk_tree_selection_select_iter(
            gtk_tree_view_get_selection(GTK_TREE_VIEW(widget_tree)),
            &iter);
        gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(widget_tree), path, NULL,
                                     FALSE, 0, 0);
    }

    g_list_free(parents);
}
Example #12
0
static void add_folder_button(void)
{
	GtkTreeIter selected;
	GtkTreeIter iter;
	BOOKMARK_DATA *data;
	GtkTreeSelection *selection;
	char *t;
	gint test;
	GS_DIALOG *info;
	GString *str;

	selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
	if (!gtk_tree_selection_get_selected(selection, NULL, &selected))
		return;

	t = "|";
	str = g_string_new("");
	info = gui_new_dialog();
	//info->stock_icon = GTK_STOCK_OPEN;
	info->title = _("Bookmark");
	g_string_printf(str, "<span weight=\"bold\">%s</span>",
			_("Enter Folder Name"));
	info->label_top = str->str;
	info->text1 = g_strdup(_("Folder Name"));
	info->label1 = _("Folder: ");
	info->ok = TRUE;
	info->cancel = TRUE;

	data = g_new(BOOKMARK_DATA, 1);
	/*** open dialog to get name for new folder ***/
	test = gui_gs_dialog(info);
	if (test == GS_OK) {
		char *buf = g_strdelimit(info->text1, t, ' ');
		data->caption = g_strdup(buf);
		data->key = NULL;
		data->module = NULL;
		data->module_desc = NULL;
		data->description = NULL;
		data->is_leaf = FALSE;
		data->opened = bm_pixbufs->pixbuf_opened;
		data->closed = bm_pixbufs->pixbuf_closed;
		gui_add_item_to_tree(&iter, &selected, data);
		bookmarks_changed = TRUE;
		gui_save_bookmarks(NULL, NULL);
		g_free(data->caption);
		GtkTreePath *path =
		    gtk_tree_model_get_path(GTK_TREE_MODEL(model), &iter);
		gtk_tree_view_expand_to_path(GTK_TREE_VIEW(treeview),
					     path);
		gtk_tree_selection_select_path(selection, path);
		gtk_tree_path_free(path);
	}
	g_free(data);
	g_free(info->text1);
	g_free(info);
	g_string_free(str, TRUE);
}
Example #13
0
void saa_tree_view_select_wing(SaaTreeView * treeview, SaaAile * ai) {
	GtkTreeSelection * sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
	int i = saa_solide_index_aile(treeview->visuel->solide, ai);
	GtkTreePath * path = gtk_tree_path_new_from_indices(2, i, -1);

	gtk_tree_view_expand_to_path (GTK_TREE_VIEW(treeview), path);
	gtk_tree_selection_select_path(sel, path);
	gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(treeview), path, NULL, TRUE, 0.5, 0);
	gtk_tree_path_free (path);
}
Example #14
0
static void find_next_clicked(GtkButton* button, MateWeatherPref* pref)
{
	GtkTreeView *tree;
	GtkTreeModel *model;
	GtkEntry *entry;
	GtkTreeSelection *selection;
	GtkTreeIter iter;
	GtkTreeIter iter_parent;
	GtkTreePath *path;
	const gchar *location;

	tree = GTK_TREE_VIEW (pref->priv->tree);
	model = gtk_tree_view_get_model (tree);
	entry = GTK_ENTRY (pref->priv->find_entry);

	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree));

	if (gtk_tree_selection_count_selected_rows (selection) >= 1)
	{
		gtk_tree_selection_get_selected (selection, &model, &iter);
		/* Select next or select parent */
		if (!gtk_tree_model_iter_next (model, &iter))
		{
			iter_parent = iter;

			if (!gtk_tree_model_iter_parent (model, &iter, &iter_parent) || !gtk_tree_model_iter_next (model, &iter))
			{
				gtk_tree_model_get_iter_first (model, &iter);
			}
		}

	}
	else
	{
		gtk_tree_model_get_iter_first (model, &iter);
	}

	location = gtk_entry_get_text (entry);

	if (find_location (model, &iter, location, TRUE))
	{
		gtk_widget_set_sensitive (pref->priv->find_next_btn, TRUE);

		path = gtk_tree_model_get_path (model, &iter);
		gtk_tree_view_expand_to_path (tree, path);
		gtk_tree_selection_select_path (selection, path);
		gtk_tree_view_scroll_to_cell (tree, path, NULL, TRUE, 0.5, 0);

		gtk_tree_path_free (path);
	}
	else
	{
		gtk_widget_set_sensitive (pref->priv->find_next_btn, FALSE);
	}
}
Example #15
0
static void tree_gui_spot_path(tree_gui_t *gui, GtkTreePath *path)
{
  /* Expand the node to spot to */
  gtk_tree_view_expand_to_path(gui->tree_view, path);

  /* Make the node viewable within the tree window */
  gtk_tree_view_scroll_to_cell(gui->tree_view, path, NULL, TRUE, 0.5, 0);

  /* Select focused row */
  gtk_tree_selection_select_path(gui->tree_selection, path);
}
Example #16
0
gboolean bar_keyword_tree_expand_if_set_cb(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
{
	PaneKeywordsData *pkd = data;
	gboolean set;

	gtk_tree_model_get(model, iter, FILTER_KEYWORD_COLUMN_TOGGLE, &set, -1);

	if (set && !gtk_tree_view_row_expanded(GTK_TREE_VIEW(pkd->keyword_treeview), path))
		{
		gtk_tree_view_expand_to_path(GTK_TREE_VIEW(pkd->keyword_treeview), path);
		}
	return FALSE;
}
Example #17
0
static gboolean
set_current_action (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data) {
    GValue val = {0,}, ctx_val = {0,};
    gtk_tree_model_get_value (model, iter, 1, &val);
    gtk_tree_model_get_value (model, iter, 2, &ctx_val);
    actionbinding_t *binding = data;
    const char *name = g_value_get_string (&val);
    if (name && binding->name && !strcmp (binding->name, name) && binding->ctx == g_value_get_int (&ctx_val)) {
        gtk_tree_view_expand_to_path (GTK_TREE_VIEW (binding->treeview), path);
        gtk_tree_view_set_cursor (GTK_TREE_VIEW (binding->treeview), path, NULL, FALSE);
        return TRUE;
    }
    return FALSE;
}
Example #18
0
static void collapse(void)
{
	GtkTreeIter iter;
	GtkTreePath *tree_path;
	GtkTreeModel *model = GTK_TREE_MODEL(s_file_store);
	
	gtk_tree_view_collapse_all(GTK_TREE_VIEW(s_file_view));
	
	/* expand the project folder */
	gtk_tree_model_iter_children(model, &iter, NULL);
	tree_path = gtk_tree_model_get_path (model, &iter);
	gtk_tree_view_expand_to_path(GTK_TREE_VIEW(s_file_view), tree_path);
	gtk_tree_path_free(tree_path);
}
Example #19
0
static void
pkg_window_expand_to_iter (PkgWindow   *window, /* IN */
                           GtkTreeIter *iter)   /* IN */
{
	PkgWindowPrivate *priv;
	GtkTreePath *path;

	g_return_if_fail(PKG_IS_WINDOW(window));
	g_return_if_fail(iter != NULL);

	priv = window->priv;
	path = gtk_tree_model_get_path(GTK_TREE_MODEL(priv->model), iter);
	gtk_tree_view_expand_to_path(GTK_TREE_VIEW(priv->treeview), path);
	gtk_tree_path_free(path);
}
Example #20
0
static void setup_treeview(void)
{
	GtkTreePath *path;
	GtkTreeIter iter;
	GtkTreeSelection *selection = NULL;

	gtk_tree_view_set_model(GTK_TREE_VIEW(treeview),
				GTK_TREE_MODEL(model));
	gui_add_columns(GTK_TREE_VIEW(treeview));
	gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter);
	selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
	path = gtk_tree_model_get_path(GTK_TREE_MODEL(model), &iter);
	gtk_tree_view_expand_to_path(GTK_TREE_VIEW(treeview), path);
	gtk_tree_selection_select_path(selection, path);
	gtk_tree_path_free(path);
}
Example #21
0
static gboolean
edit_row_idle (RowEditData *data)
{
  GtkTreePath *new_item_path;

  new_item_path = gtk_tree_row_reference_get_path (data->row_ref);

  gtk_widget_grab_focus (GTK_WIDGET (data->eprop->view));
  gtk_tree_view_expand_to_path (data->eprop->view, new_item_path);
  gtk_tree_view_set_cursor (data->eprop->view, new_item_path,
                            data->eprop->filename_column, TRUE);

  gtk_tree_path_free (new_item_path);
  gtk_tree_row_reference_free (data->row_ref);
  g_slice_free (RowEditData, data);
  return FALSE;
}
Example #22
0
File: main.c Project: DomN86/OpenRA
void last_mod_callback(GPid pid, gint status, gpointer data)
{
  int * out_fd = (int *)data;
  gchar * comma_pos = 0, * newline_pos = 0;
  GString * msg = NULL;
  tree_node n;

  memset(&n, 0, sizeof(tree_node));

  msg = util_get_output(*out_fd);

  close(*out_fd);
  free(out_fd);

  if (!msg)
    return;

  if (g_str_has_prefix(msg->str, "Error:"))
  {
    g_string_truncate(msg, 2);
    g_string_overwrite(msg, 0, "ra");
  }
  else if (NULL != (comma_pos = g_strstr_len(msg->str, -1, ",")))
    *comma_pos = '\0';
  else if (NULL != (newline_pos = g_strstr_len(msg->str, -1, "\n")))
    *newline_pos = '\0';

  n.key = msg->str;

  gtk_tree_model_foreach(GTK_TREE_MODEL(tree_store), find_mod, &n);

  if (n.node_path)
  {
    GtkTreePath * path;
    path = gtk_tree_path_new_from_string(n.node_path);
    if (path == NULL)
      g_warning("Invalid Path");
    gtk_tree_view_expand_to_path(tree, path);
    gtk_tree_view_set_cursor(tree, path, NULL, FALSE);
    gtk_tree_path_free(path);
    g_free(n.node_path);
  }

  g_string_free(msg, TRUE);
}
Example #23
0
void
find_next_clicked (GtkButton *button)
{
	GtkTreeModel *model;
	GtkEntry *entry;
	GtkTreeSelection *selection;
	GtkTreeIter iter;
	GtkTreeIter iter_parent;
	GtkTreePath *path;
	const gchar *location;

	model = gtk_tree_view_get_model (GTK_TREE_VIEW(locations_widgets->tree));
	entry = GTK_ENTRY (glade_xml_get_widget(glade_xml, "location_search_entry"));

	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (locations_widgets->tree));

	if (gtk_tree_selection_count_selected_rows (selection) >= 1) {
		gtk_tree_selection_get_selected (selection, &model, &iter);
		/* Select next or select parent */
		if (!gtk_tree_model_iter_next (model, &iter)) {
			iter_parent = iter;
			if (!gtk_tree_model_iter_parent (model, &iter, &iter_parent) || !gtk_tree_model_iter_next (model, &iter))
				gtk_tree_model_get_iter_first (model, &iter);
		}

	} else {
		gtk_tree_model_get_iter_first (model, &iter);
	}

	location = gtk_entry_get_text (entry);

	if (find_location (model, &iter, location, TRUE)) {
		gtk_widget_set_sensitive ((GtkWidget *)button, TRUE);

		path = gtk_tree_model_get_path (model, &iter);
		gtk_tree_view_expand_to_path (GTK_TREE_VIEW(locations_widgets->tree), path);
		gtk_tree_selection_select_path (selection, path);
		gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW(locations_widgets->tree), path, NULL, TRUE, 0.5, 0);

		gtk_tree_path_free (path);
	} else {
		gtk_widget_set_sensitive ((GtkWidget * )button, FALSE);
	}
}
Example #24
0
void tree_gui_load(tree_gui_t *gui, tree_t *tree, output_t *out)
{
  tree_item_t *head = tree->head;
  char title[strlen(head->name)+24];
  GtkTreePath *path;

  if ( gui == NULL )
    return;

  /* Clear node selection/index */
  gui->current.object = NULL;
  gui->selected.object = NULL;
  gui->exec_state = stRESET;

  /* Build tree structure */
  tree_gui_build_branch(gui, NULL, head->object);

  /* Expand tree root */
  path = gtk_tree_path_new_first();
  gtk_tree_view_expand_to_path(gui->tree_view, path);
  gtk_tree_path_free(path);

  /* Clear selection */
  tree_gui_unselect(gui);

  /* Update window title */
  snprintf(title, sizeof(title), "TestFarm Runner - %s", head->name);
  gtk_window_set_title(GTK_WINDOW(gui->window), title);

  /* Update button sensitivity */
  tree_gui_sensitivity_brk_skip(gui, 1);

  /* Init output and reporting stuffs */
  output_gui_set(gui->og, out);
  report_gui_load(gui->rg, tree, out);

  /* Activate Service start/stop buttons */
  if ( tree->system != NULL ) {
    system_gui_set(gui->sg, tree->system);
    system_gui_enable(gui->sg, 1);
  }
}
static void
source_viewer_expand_to_source (ESourceViewer *viewer,
                                ESource *source)
{
	GHashTable *source_index;
	GtkTreeRowReference *reference;
	GtkTreeView *tree_view;
	GtkTreePath *path;

	source_index = viewer->source_index;
	reference = g_hash_table_lookup (source_index, source);

	/* We show all sources, so the reference should be valid. */
	g_return_if_fail (gtk_tree_row_reference_valid (reference));

	/* Expand the tree view to the path containing the ESource. */
	tree_view = GTK_TREE_VIEW (viewer->tree_view);
	path = gtk_tree_row_reference_get_path (reference);
	gtk_tree_view_expand_to_path (tree_view, path);
	gtk_tree_path_free (path);
}
Example #26
0
/****************************************************************
 * build_acct_tree
 *
 * This function refreshes the contents of the account tree.
 ****************************************************************/
static void
build_acct_tree(QIFAccountPickerDialog * picker, QIFImportWindow * import)
{
    SCM  get_accts = scm_c_eval_string("qif-import:get-all-accts");
    SCM  acct_tree;
    GtkTreeStore *store;
    GtkTreePath *path;
    GtkTreeSelection* selection;
    GtkTreeRowReference *reference = NULL;
    gchar *name_to_select;

    g_return_if_fail(picker && import);

    /* Get an account tree with all existing and to-be-imported accounts. */
    acct_tree = scm_call_1(get_accts,
                           gnc_ui_qif_import_assistant_get_mappings(import));

    /* Rebuild the store.
     * NOTE: It is necessary to save a copy of the name to select, because
     *       when the store is cleared, everything becomes unselected. */
    name_to_select = g_strdup(picker->selected_name);
    store = GTK_TREE_STORE(gtk_tree_view_get_model(picker->treeview));
    gtk_tree_store_clear(store);
    acct_tree_add_accts(acct_tree, store, NULL, NULL, name_to_select, &reference);
    g_free(name_to_select);

    /* Select and display the indicated account (if it was found). */
    if (reference)
    {
        selection = gtk_tree_view_get_selection(picker->treeview);
        path = gtk_tree_row_reference_get_path(reference);
        if (path)
        {
            gtk_tree_view_expand_to_path(picker->treeview, path);
            gtk_tree_selection_select_path(selection, path);
            gtk_tree_path_free(path);
        }
        gtk_tree_row_reference_free(reference);
    }
}
Example #27
0
static void
eprop_data_focus_editing_cell (GladeEPropModelData * eprop_data)
{
  /* Focus and edit the first column of a newly added row */
  if (!eprop_data->setting_focus && eprop_data->store && eprop_data->want_focus
      && eprop_data->editing_column >= 0 && eprop_data->editing_row >= 0)
    {
      GtkTreePath *item_path;
      GtkTreeIter iter;
      GtkTreeViewColumn *column;
      gint row, col;
      GList *column_list;

      column_list = gtk_tree_view_get_columns (eprop_data->view);
      g_list_free (column_list);

      col = eprop_data->editing_column;
      row = eprop_data->editing_row;

      if ((column = gtk_tree_view_get_column (eprop_data->view, col)) != NULL &&
          gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (eprop_data->store),
                                         &iter, NULL, row))
        {
          item_path =
              gtk_tree_model_get_path (GTK_TREE_MODEL (eprop_data->store),
                                       &iter);

          eprop_data->setting_focus = TRUE;

          gtk_widget_grab_focus (GTK_WIDGET (eprop_data->view));
          gtk_tree_view_expand_to_path (eprop_data->view, item_path);
          gtk_tree_view_set_cursor (eprop_data->view, item_path, column, FALSE);

          gtk_tree_path_free (item_path);

          eprop_data->setting_focus = FALSE;
        }
    }
}
Example #28
0
static void
eprop_data_focus_new (GladeEPropModelData * eprop_data)
{

  /* Focus and edit the first column of a newly added row */
  if (eprop_data->store)
    {
      GtkTreePath *new_item_path;
      GtkTreeIter iter;
      GtkTreeViewColumn *column;
      gint n_children;

      n_children =
          gtk_tree_model_iter_n_children (GTK_TREE_MODEL (eprop_data->store),
                                          NULL);

      if ((column =
           gtk_tree_view_get_column (eprop_data->view,
                                     eprop_data->editing_column)) != NULL &&
          n_children > 0 &&
          gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (eprop_data->store),
                                         &iter, NULL, n_children - 1))

        {
          new_item_path =
              gtk_tree_model_get_path (GTK_TREE_MODEL (eprop_data->store), &iter);

          eprop_data->setting_focus = TRUE;

          gtk_widget_grab_focus (GTK_WIDGET (eprop_data->view));
          gtk_tree_view_expand_to_path (eprop_data->view, new_item_path);
          gtk_tree_view_set_cursor (eprop_data->view, new_item_path, column, FALSE);

          eprop_data->setting_focus = FALSE;

          gtk_tree_path_free (new_item_path);
        }
    }
}
Example #29
0
static gboolean
expand_enabled(GtkTreeModel *model,
               GtkTreePath *path,
               G_GNUC_UNUSED GtkTreeIter *iter,
               gpointer user_data)
{
    GtkTreeView *treeview = (GtkTreeView*)user_data;
    GwyGrainValue *gvalue;
    gboolean enabled;

    gtk_tree_model_get(model, iter,
                       GWY_GRAIN_VALUE_STORE_COLUMN_ITEM, &gvalue,
                       GWY_GRAIN_VALUE_STORE_COLUMN_ENABLED, &enabled,
                       -1);
    if (gvalue) {
        if (enabled)
            gtk_tree_view_expand_to_path(treeview, path);
        g_object_unref(gvalue);
    }

    return FALSE;
}
gboolean
giggle_tree_view_select_row_by_string (GtkWidget  *treeview,
				       int         column,
				       const char *pattern)
{
	GtkTreeSelection   *selection;
	GtkTreeModel	   *model;
	GtkTreeIter	    iter;
	GtkTreePath        *path;
	char               *text;

	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));

	if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
		gtk_tree_model_get (model, &iter, column, &text, -1);
	} else {
		model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
		text = NULL;
	}

	if (!g_strcmp0 (text, pattern)) {
		g_free (text);
		return TRUE;
	}

	if (tree_model_find_string (model, &iter, NULL, column, pattern)) {
		path = gtk_tree_model_get_path (model, &iter);
		gtk_tree_view_expand_to_path (GTK_TREE_VIEW (treeview), path);
	 	gtk_tree_path_free (path);

		gtk_tree_selection_select_iter (selection, &iter);

		return TRUE;
	}

	return FALSE;
}