コード例 #1
0
ファイル: gtk-types.c プロジェクト: Chiheb-Nexus/pygtk
static int
pygtk_tree_model_row_setitem(PyGtkTreeModelRow *self, Py_ssize_t column,
			     PyObject *pyvalue)
{
    gint n_columns;
    GValue value = { 0, };

    if (!GTK_IS_LIST_STORE(self->model) && !GTK_IS_TREE_STORE(self->model)) {
	PyErr_SetString(PyExc_TypeError,
			"can not set cells in this tree model");
	return -1;
    }

    n_columns = gtk_tree_model_get_n_columns(self->model);
    if (column < 0 || column >= n_columns) {
	PyErr_SetString(PyExc_IndexError, "column index out of range");
        return -1;
    }
    g_value_init(&value, gtk_tree_model_get_column_type(self->model, column));
    if (pyg_value_from_pyobject(&value, pyvalue)) {
	PyErr_SetString(PyExc_TypeError,
			"value is of wrong type for this column");
	return -1;
    }
    if (GTK_IS_LIST_STORE(self->model))
	gtk_list_store_set_value(GTK_LIST_STORE(self->model), &self->iter,
				 column, &value);
    else if (GTK_IS_TREE_STORE(self->model))
	gtk_tree_store_set_value(GTK_TREE_STORE(self->model), &self->iter,
				 column, &value);
    g_value_unset(&value);
    return 0;
}
コード例 #2
0
ファイル: testtreeview.c プロジェクト: Pfiver/gtk
static void
edited_callback (GtkCellRendererText *renderer,
		 const gchar   *path_string,
		 const gchar   *new_text,
		 GtkTreeView  *tree_view)
{
  GtkTreeModel *model = NULL;
  GtkTreeModelSort *sort_model = NULL;
  GtkTreePath *path;
  GtkTreeIter iter;
  guint value = atoi (new_text);
  
  g_return_if_fail (GTK_IS_TREE_VIEW (tree_view));

  model = gtk_tree_view_get_model (tree_view);
  
  if (GTK_IS_TREE_MODEL_SORT (model))
    {
      sort_model = GTK_TREE_MODEL_SORT (model);
      model = gtk_tree_model_sort_get_model (sort_model);
    }

  if (model == NULL)
    return;

  if (sort_model)
    {
      g_warning ("FIXME implement conversion from TreeModelSort iter to child model iter");
      return;
    }
      
  path = gtk_tree_path_new_from_string (path_string);
  if (!gtk_tree_model_get_iter (model,
                                &iter, path))
    {
      g_warning ("%s: bad path?", G_STRLOC);
      return;
    }
  gtk_tree_path_free (path);

  if (GTK_IS_LIST_STORE (model))
    {
      gtk_list_store_set (GTK_LIST_STORE (model),
                          &iter,
                          4,
                          value,
                          -1);
    }
  else if (GTK_IS_TREE_STORE (model))
    {
      gtk_tree_store_set (GTK_TREE_STORE (model),
                          &iter,
                          4,
                          value,
                          -1);
    }
  else
    g_warning ("don't know how to actually toggle value for model type %s",
               g_type_name (G_TYPE_FROM_INSTANCE (model)));
}
コード例 #3
0
ファイル: treestore.c プロジェクト: amery/clip-angelo
/******************************************************************************
* gtk_TreeStoreIterDepth(tree, path_string)-->gint depth
******************************************************************************/
int
clip_GTK_TREESTOREITERDEPTH(ClipMachine * ClipMachineMemory)
{

   C_object *cstree = _fetch_co_arg(ClipMachineMemory);

   gchar    *path = _clip_parc(ClipMachineMemory, 2);

   GtkTreeIter iter;

   gint      ret;

   CHECKARG2(1, MAP_type_of_ClipVarType, NUMERIC_type_of_ClipVarType);
   CHECKCOBJ(cstree, GTK_IS_TREE_STORE(cstree->object));
   CHECKARG(2, CHARACTER_type_of_ClipVarType);
   CHECKARG(3, CHARACTER_type_of_ClipVarType);

   gtk_tree_model_get_iter(GTK_TREE_MODEL(GTK_TREE_STORE(cstree->object)), &iter, gtk_tree_path_new_from_string(path));

   ret = gtk_tree_store_iter_depth(GTK_TREE_STORE(cstree->object), &iter);
   _clip_retni(ClipMachineMemory, ret);

   return 0;
 err:
   return 1;
}
コード例 #4
0
ファイル: treestore.c プロジェクト: amery/clip-angelo
/******************************************************************************
* gtk_TreeStoreIsAncestor(tree, ancestor_path_string, descendant_path_string)-->TRUE or FALSE
******************************************************************************/
int
clip_GTK_TREESTOREISANCESTOR(ClipMachine * ClipMachineMemory)
{

   C_object *cstree = _fetch_co_arg(ClipMachineMemory);

   gchar    *ancestor = _clip_parc(ClipMachineMemory, 2);

   gchar    *descendant = _clip_parc(ClipMachineMemory, 3);

   GtkTreeIter aiter;

   GtkTreeIter diter;

   gboolean  ret;

   CHECKARG2(1, MAP_type_of_ClipVarType, NUMERIC_type_of_ClipVarType);
   CHECKCOBJ(cstree, GTK_IS_TREE_STORE(cstree->object));
   CHECKARG(2, CHARACTER_type_of_ClipVarType);
   CHECKARG(3, CHARACTER_type_of_ClipVarType);

   gtk_tree_model_get_iter(GTK_TREE_MODEL(GTK_TREE_STORE(cstree->object)), &aiter, gtk_tree_path_new_from_string(ancestor));

   gtk_tree_model_get_iter(GTK_TREE_MODEL(GTK_TREE_STORE(cstree->object)), &diter, gtk_tree_path_new_from_string(descendant));

   ret = gtk_tree_store_is_ancestor(GTK_TREE_STORE(cstree->object), &aiter, &diter);
   _clip_retl(ClipMachineMemory, ret);

   return 0;
 err:
   return 1;
}
コード例 #5
0
ファイル: gtk-types.c プロジェクト: Chiheb-Nexus/pygtk
int
_pygtk_tree_model_remove_row(GtkTreeModel *model, GtkTreeIter *iter)
{
    GtkTreeModel *child;
    GtkTreeIter citer;

    if (GTK_IS_LIST_STORE(model)) {
        gtk_list_store_remove(GTK_LIST_STORE(model), iter);
        return 0;
    }

    if (GTK_IS_TREE_STORE(model)) {
        gtk_tree_store_remove(GTK_TREE_STORE(model), iter);
        return 0;
    }

    if (GTK_IS_TREE_MODEL_SORT(model)) {
        child = gtk_tree_model_sort_get_model(GTK_TREE_MODEL_SORT(model));
        gtk_tree_model_sort_convert_iter_to_child_iter(
            GTK_TREE_MODEL_SORT(model), &citer, iter);
        return _pygtk_tree_model_remove_row(child, &citer);
    }

    if (GTK_IS_TREE_MODEL_FILTER(model)) {
        child = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(model));
        gtk_tree_model_filter_convert_iter_to_child_iter(
            GTK_TREE_MODEL_FILTER(model), &citer, iter);
        return _pygtk_tree_model_remove_row(child, &citer);
    }

    PyErr_SetString(PyExc_TypeError,
                    "cannot remove rows in this tree model");
    return -1;
}
コード例 #6
0
ファイル: treestore.c プロジェクト: amery/clip-angelo
/******************************************************************************
* gtk_TreeStoreSetColumnTypes(tree, ncolumns, type1, ...)
******************************************************************************/
int
clip_GTK_TREESTORESETCOLUMNTYPES(ClipMachine * ClipMachineMemory)
{
   C_object *cstree = _fetch_co_arg(ClipMachineMemory);

   gint      ncolumns = _clip_parni(ClipMachineMemory, 2);

   GType     types[ncolumns];

   ClipVar  *utypes;

   CHECKOPT(1, MAP_type_of_ClipVarType);
   CHECKCOBJ(cstree, GTK_IS_TREE_STORE(cstree->object));
   CHECKARG(2, NUMERIC_type_of_ClipVarType);

   memset(types, 0, sizeof(types));
   utypes = NEW(ClipVar);

   __tree_store_set_types(ClipMachineMemory, ncolumns, types, utypes);

   gtk_tree_store_set_column_types(GTK_TREE_STORE(cstree->object), ncolumns, types);

   _clip_madd(ClipMachineMemory, &cstree->obj, HASH_UTYPES, utypes);

   return 0;
 err:
   return 1;
}
コード例 #7
0
ファイル: treestore.c プロジェクト: amery/clip-angelo
int
clip_GTK_TREESTOREREORDER(ClipMachine * ClipMachineMemory)
{
   C_object *cstree = _fetch_co_arg(ClipMachineMemory);

   C_object *citer = _fetch_cobject(ClipMachineMemory, _clip_spar(ClipMachineMemory, 2));

   ClipArrVar *arr = (ClipArrVar *) _clip_vptr(_clip_spar(ClipMachineMemory, 3));

   gint      n;

   CHECKARG2(1, MAP_type_of_ClipVarType, NUMERIC_type_of_ClipVarType);
   CHECKCOBJ(cstree, GTK_IS_TREE_STORE(cstree->object));
   CHECKCOBJ(citer, GTK_IS_TREE_ITER(citer->object));
   CHECKARG(3, ARRAY_type_of_ClipVarType);

   n = arr->count_of_ClipArrVar;
   if (arr)
    {
       gint     *order, i;

       order = malloc(n * sizeof(gint));
       for (i = 0; i < n; i++)
	  order[i] = arr->ClipVar_items_of_ClipArrVar[i].ClipNumVar_n_of_ClipVar.double_of_ClipNumVar;
       gtk_tree_store_reorder(GTK_TREE_STORE(cstree->object), GTK_TREE_ITER(citer->object), order);

       free(order);
    }
   return 0;
 err:
   return 1;
}
コード例 #8
0
ファイル: panel-addto.c プロジェクト: gfunkmonk2/mate-panel
static gboolean
panel_addto_filter_func (GtkTreeModel *model,
			 GtkTreeIter  *iter,
			 gpointer      userdata)
{
	PanelAddtoDialog   *dialog;
	PanelAddtoItemInfo *data;

	dialog = (PanelAddtoDialog *) userdata;

	if (!dialog->search_text || !dialog->search_text[0])
		return TRUE;

	gtk_tree_model_get (model, iter, COLUMN_DATA, &data, -1);

	if (data == NULL)
		return FALSE;

	/* This is more a workaround than anything else: show all the root
	 * items in a tree store */
	if (GTK_IS_TREE_STORE (model) &&
	    gtk_tree_store_iter_depth (GTK_TREE_STORE (model), iter) == 0)
		return TRUE;

	return (panel_g_utf8_strstrcase (data->name,
					 dialog->search_text) != NULL ||
	        panel_g_utf8_strstrcase (data->description,
					 dialog->search_text) != NULL);
}
コード例 #9
0
/* Frees model returned from @mateweather_xml_load_locations. It contains allocated
   WeatherLocation-s, thus this takes care of the freeing of that memory. */
void
mateweather_xml_free_locations (GtkTreeModel *locations)
{
	if (locations && GTK_IS_TREE_STORE (locations)) {
		gtk_tree_model_foreach (locations, free_locations, NULL);
		g_object_unref (locations);
	}
}
コード例 #10
0
ファイル: configplugin.c プロジェクト: morenko/sven
static void add_print_plugins(GtkTreeView *plugins_tree_view,Sven *sven)
{
	GtkTreeIter iter;
	GtkTreeIter selected;
	GtkTreeModel *model;
	GSList *l = NULL;
	
	 gtk_tree_store_clear(GTK_TREE_STORE (plugins_model));
	 
	for (l = sven->plugin->list; l; l=l->next)
	{
		SvenPluginPriv *plug = (SvenPluginPriv *)l->data;
		if((plug!=NULL))
		{
		
			model = gtk_tree_view_get_model (plugins_tree_view);
			if (gtk_tree_selection_get_selected (gtk_tree_view_get_selection (GTK_TREE_VIEW (plugins_tree_view)), NULL, &selected))
			{
				if (GTK_IS_TREE_STORE (model))
				{
					gtk_tree_store_append (GTK_TREE_STORE (model), &iter, NULL);
					print_plugins_list (&iter,plug->name,plug->filename,plug->enable);
				}
			}
			else
			{
				if (GTK_IS_TREE_STORE (model))
				{
					gtk_tree_store_append (GTK_TREE_STORE (model), &iter, NULL);
					print_plugins_list (&iter,plug->name,plug->filename,plug->enable);
				}
			}
		}
	}

	gtk_widget_set_sensitive(prefs_plugins_config_wid, 0);
	gtk_widget_set_sensitive(prefs_plugins_about_wid, 0);
	gtk_label_set_markup(GTK_LABEL(infotext),_("Not information"));
}
コード例 #11
0
ファイル: remmina_main.c プロジェクト: BillTheBest/Remmina
static void remmina_main_save_expanded_group(RemminaMain *remminamain)
{
	if (GTK_IS_TREE_STORE(remminamain->priv->file_model))
	{
		if (remminamain->priv->expanded_group)
		{
			remmina_string_array_free(remminamain->priv->expanded_group);
		}
		remminamain->priv->expanded_group = remmina_string_array_new();
		gtk_tree_view_map_expanded_rows(GTK_TREE_VIEW(remminamain->priv->file_list),
				(GtkTreeViewMappingFunc) remmina_main_save_expanded_group_func, remminamain);
	}
}
コード例 #12
0
ファイル: treestore.c プロジェクト: amery/clip-angelo
/******************************************************************************
* gtk_TreeStoreInsertAfter(tree, parent_path_string/NULL, sibling_path_string/NULL, ncol, val, ....)-->path_string
******************************************************************************/
int
clip_GTK_TREESTOREINSERTAFTER(ClipMachine * ClipMachineMemory)
{

   C_object *cstree = _fetch_co_arg(ClipMachineMemory);

   gchar    *parent = _clip_parc(ClipMachineMemory, 2);

   gchar    *sibling = _clip_parc(ClipMachineMemory, 3);

   GtkTreeIter iter;

   GtkTreeIter parentiter;

   GtkTreeIter siblingiter;

   GtkTreePath *path;

   gchar    *path_string;

   CHECKARG2(1, MAP_type_of_ClipVarType, NUMERIC_type_of_ClipVarType);
   CHECKCOBJ(cstree, GTK_IS_TREE_STORE(cstree->object));
   CHECKOPT(2, CHARACTER_type_of_ClipVarType);
   CHECKOPT(3, CHARACTER_type_of_ClipVarType);

   if (parent)
      gtk_tree_model_get_iter(GTK_TREE_MODEL(GTK_TREE_STORE(cstree->object)),
			      &parentiter, gtk_tree_path_new_from_string(parent));

   if (sibling)
      gtk_tree_model_get_iter(GTK_TREE_MODEL(GTK_TREE_STORE(cstree->object)),
			      &siblingiter, gtk_tree_path_new_from_string(sibling));

   gtk_tree_store_insert_after(GTK_TREE_STORE(cstree->object), &iter,
			       (parent ? &parentiter : NULL), (sibling ? &siblingiter : NULL));

   __tree_store_set(ClipMachineMemory, &iter, 4);

   path = gtk_tree_model_get_path(GTK_TREE_MODEL(GTK_TREE_STORE(cstree->object)), &iter);

   path_string = gtk_tree_path_to_string(path);

   _clip_retc(ClipMachineMemory, path_string);

   g_free(path_string);

   return 0;
 err:
   return 1;
}
コード例 #13
0
ファイル: treestore.c プロジェクト: amery/clip-angelo
int
clip_GTK_TREESTORECLEAR(ClipMachine * ClipMachineMemory)
{
   C_object *cstree = _fetch_co_arg(ClipMachineMemory);

   CHECKARG2(1, MAP_type_of_ClipVarType, NUMERIC_type_of_ClipVarType);
   CHECKCOBJ(cstree, GTK_IS_TREE_STORE(cstree->object));

   gtk_tree_store_clear(GTK_TREE_STORE(cstree->object));

   return 0;
 err:
   return 1;
}
コード例 #14
0
ファイル: glade-treeview-editor.c プロジェクト: kugel-/glade
static void
glade_tree_view_editor_load (GladeEditable * editable, GladeWidget * widget)
{
  GladeTreeViewEditor *view_editor = GLADE_TREE_VIEW_EDITOR (editable);
  GladeWidget *model_widget;

  /* Chain up to default implementation */
  parent_editable_iface->load (editable, widget);

  /* load the embedded editable... */
  if (view_editor->embed)
    glade_editable_load (GLADE_EDITABLE (view_editor->embed), widget);

  if (view_editor->embed_list_store && view_editor->embed_tree_store)
    {
      gtk_widget_hide (view_editor->no_model_message);
      gtk_widget_hide (view_editor->embed_list_store);
      gtk_widget_hide (view_editor->embed_tree_store);
      glade_editable_load (GLADE_EDITABLE (view_editor->embed_list_store),
                           NULL);
      glade_editable_load (GLADE_EDITABLE (view_editor->embed_tree_store),
                           NULL);

      /* Finalize safe code here... */
      if (widget && (model_widget = get_model_widget (widget)))
        {
          if (GTK_IS_LIST_STORE (glade_widget_get_object (model_widget)))
            {
              gtk_widget_show (view_editor->embed_list_store);
              glade_editable_load (GLADE_EDITABLE
                                   (view_editor->embed_list_store),
                                   model_widget);
            }
          else if (GTK_IS_TREE_STORE (glade_widget_get_object (model_widget)))
            {
              gtk_widget_show (view_editor->embed_tree_store);
              glade_editable_load (GLADE_EDITABLE
                                   (view_editor->embed_tree_store),
                                   model_widget);
            }
          else
            gtk_widget_show (view_editor->no_model_message);
        }
      else
        gtk_widget_show (view_editor->no_model_message);
    }
}
コード例 #15
0
ファイル: treestore.c プロジェクト: amery/clip-angelo
int
clip_GTK_TREESTOREITERISVALID(ClipMachine * ClipMachineMemory)
{
   C_object *cstree = _fetch_co_arg(ClipMachineMemory);

   C_object *citer = _fetch_cobject(ClipMachineMemory, _clip_spar(ClipMachineMemory, 2));

   CHECKARG2(1, MAP_type_of_ClipVarType, NUMERIC_type_of_ClipVarType);
   CHECKCOBJ(cstree, GTK_IS_TREE_STORE(cstree->object));
   CHECKCOBJ(citer, GTK_IS_TREE_ITER(citer->object));

   gtk_tree_store_iter_is_valid(GTK_TREE_STORE(cstree->object), GTK_TREE_ITER(citer->object));

   return 0;
 err:
   return 1;
}
コード例 #16
0
ファイル: treestore.c プロジェクト: amery/clip-angelo
int
clip_GTK_TREESTORESWAP(ClipMachine * ClipMachineMemory)
{
   C_object *cstree = _fetch_co_arg(ClipMachineMemory);

   C_object *citer1 = _fetch_cobject(ClipMachineMemory, _clip_spar(ClipMachineMemory, 2));

   C_object *citer2 = _fetch_cobject(ClipMachineMemory, _clip_spar(ClipMachineMemory, 3));

   CHECKARG2(1, MAP_type_of_ClipVarType, NUMERIC_type_of_ClipVarType);
   CHECKCOBJ(cstree, GTK_IS_TREE_STORE(cstree->object));
   CHECKCOBJ(citer1, GTK_IS_TREE_ITER(citer1->object));
   CHECKCOBJ(citer2, GTK_IS_TREE_ITER(citer2->object));

   gtk_tree_store_swap(GTK_TREE_STORE(cstree->object), GTK_TREE_ITER(citer1->object), GTK_TREE_ITER(citer2->object));

   return 0;
 err:
   return 1;
}
コード例 #17
0
ファイル: treestore.c プロジェクト: amery/clip-angelo
int
clip_GTK_TREESTOREAPPEND(ClipMachine * ClipMachineMemory)
{
   C_object *cstree = _fetch_co_arg(ClipMachineMemory);

   gchar    *parent = _clip_parc(ClipMachineMemory, 2);

   GtkTreeIter iter;

   GtkTreeIter parentiter;

   GtkTreePath *path;

   gchar    *path_string;

   CHECKCOBJ(cstree, GTK_IS_TREE_STORE(cstree->object));
   CHECKOPT(2, CHARACTER_type_of_ClipVarType);

   memset(&parentiter, 0, sizeof(parentiter));
   if (parent)
      gtk_tree_model_get_iter(GTK_TREE_MODEL(GTK_TREE_STORE(cstree->object)),
			      &parentiter, gtk_tree_path_new_from_string(parent));

   gtk_tree_store_append(GTK_TREE_STORE(cstree->object), &iter, (parent ? &parentiter : NULL));

   __tree_store_set(ClipMachineMemory, &iter, 3);

   path = gtk_tree_model_get_path(GTK_TREE_MODEL(GTK_TREE_STORE(cstree->object)), &iter);

   path_string = gtk_tree_path_to_string(path);

   _clip_retc(ClipMachineMemory, path_string);

   g_free(path_string);

   return 0;
 err:
   return 1;
}
コード例 #18
0
ファイル: layers.c プロジェクト: Pitinets/poppler
GtkWidget *
pgd_layers_create_widget (PopplerDocument *document)
{
	PgdLayersDemo    *demo;
	GtkWidget        *swindow;
	GtkWidget        *treeview;
	GtkTreeModel     *model;
	GtkCellRenderer  *renderer;
	GtkTreeSelection *selection;
	GtkWidget        *hpaned, *viewer;

	demo = g_new0 (PgdLayersDemo, 1);
	demo->doc = g_object_ref (document);
	
	hpaned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);

	viewer = pgd_layers_create_viewer (demo);
	
	swindow = gtk_scrolled_window_new (NULL, NULL);
	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swindow),
					GTK_POLICY_AUTOMATIC,
					GTK_POLICY_AUTOMATIC);

	model = pgd_layers_create_model (document);
	treeview = gtk_tree_view_new_with_model (model);
	demo->treeview = treeview;
	g_object_unref (model);

	renderer = gtk_cell_renderer_text_new ();
	gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),
						     0, "Layer",
						     renderer,
						     "markup", LAYERS_TITLE_COLUMN,
						     NULL);
	g_object_set (G_OBJECT (renderer), "ellipsize", PANGO_ELLIPSIZE_END, NULL);
	g_object_set (G_OBJECT (gtk_tree_view_get_column (GTK_TREE_VIEW (treeview), 0)),
		      "expand", TRUE, NULL);

	if (GTK_IS_TREE_STORE (model)) {
		renderer = gtk_cell_renderer_toggle_new ();
		gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),
							     1, "Show/Hide",
							     renderer,
							     "active", LAYERS_VISIBILITY_COLUMN,
							     "activatable", LAYERS_ENABLE_COLUMN,
							     "visible", LAYERS_SHOWTOGGLE_COLUMN,
							     NULL);

		g_signal_connect (renderer, "toggled",
				  G_CALLBACK (pgd_layers_visibility_changed),
				  (gpointer)demo);
		gtk_tree_view_column_set_clickable (gtk_tree_view_get_column (GTK_TREE_VIEW (treeview), 1),
						    TRUE);
	}

	gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)),
				     GTK_SELECTION_NONE);

	gtk_container_add (GTK_CONTAINER (swindow), treeview);
	gtk_widget_show (treeview);

	gtk_paned_add1 (GTK_PANED (hpaned), swindow);
	gtk_widget_show (swindow);

	gtk_paned_add2 (GTK_PANED (hpaned), viewer);
	gtk_widget_show (viewer);

	gtk_paned_set_position (GTK_PANED (hpaned), 150);

	g_object_weak_ref (G_OBJECT (hpaned),
			   (GWeakNotify)pgd_layers_free,
			   (gpointer)demo);

	return hpaned;
}
コード例 #19
0
ファイル: glade-gtksheet-editor.c プロジェクト: 2tim/gtkextra
static void
    glade_sheet_editor_load (GladeEditable *editable, GladeWidget   *widget)
{
    GladeSheetEditor *view_editor = GLADE_SHEET_EDITOR (editable);
    GladeWidget *model_widget;

    /* Since we watch the project*/
    if (view_editor->loaded_widget)
    {
        g_signal_handlers_disconnect_by_func (G_OBJECT (view_editor->loaded_widget->project),
                                              G_CALLBACK (project_changed), view_editor);

        /* The widget could die unexpectedly... */
        g_object_weak_unref (G_OBJECT (view_editor->loaded_widget->project),
                             (GWeakNotify)project_finalized,
                             view_editor);
    }

    /* Mark our widget... */
    view_editor->loaded_widget = widget;

    if (view_editor->loaded_widget)
    {
        /* This fires for undo/redo */
        g_signal_connect (G_OBJECT (view_editor->loaded_widget->project), "changed",
                          G_CALLBACK (project_changed), view_editor);

        /* The widget/project could die unexpectedly... */
        g_object_weak_ref (G_OBJECT (view_editor->loaded_widget->project),
                           (GWeakNotify) project_finalized,
                           view_editor);
    }

    /* load the embedded editable... */
    if (view_editor->embed)
        glade_editable_load (GLADE_EDITABLE (view_editor->embed), widget);

    if (view_editor->embed_list_store && view_editor->embed_tree_store)
    {
        gtk_widget_hide (view_editor->no_model_message);
        gtk_widget_hide (view_editor->embed_list_store);
        gtk_widget_hide (view_editor->embed_tree_store);
        glade_editable_load (GLADE_EDITABLE (view_editor->embed_list_store), NULL);
        glade_editable_load (GLADE_EDITABLE (view_editor->embed_tree_store), NULL);

        /* Finalize safe code here... */
        if (widget && (model_widget = get_model_widget (widget)))
        {
            if (GTK_IS_LIST_STORE (model_widget->object))
            {
                gtk_widget_show (view_editor->embed_list_store);
                glade_editable_load (GLADE_EDITABLE (view_editor->embed_list_store), model_widget);
            }
            else if (GTK_IS_TREE_STORE (model_widget->object))
            {
                gtk_widget_show (view_editor->embed_tree_store);
                glade_editable_load (GLADE_EDITABLE (view_editor->embed_tree_store), model_widget);
            }
            else
                gtk_widget_show (view_editor->no_model_message);
        }
        else
            gtk_widget_show (view_editor->no_model_message);
    }
}
コード例 #20
0
ファイル: gtk-types.c プロジェクト: Chiheb-Nexus/pygtk
int
_pygtk_tree_model_set_row(GtkTreeModel *model, GtkTreeIter *iter,
			  PyObject *items)
{
    gint n_columns, i;
    GtkTreeModel *child;
    GtkTreeIter citer;

    if (!GTK_IS_LIST_STORE(model) && !GTK_IS_TREE_STORE(model) &&
        !GTK_IS_TREE_MODEL_SORT(model) && !GTK_IS_TREE_MODEL_FILTER(model)) {
	PyErr_SetString(PyExc_TypeError,
			"cannot set cells in this tree model");
	return -1;
    }

    if (GTK_IS_TREE_MODEL_SORT(model)) {
        child = gtk_tree_model_sort_get_model(GTK_TREE_MODEL_SORT(model));
        gtk_tree_model_sort_convert_iter_to_child_iter(
            GTK_TREE_MODEL_SORT(model), &citer, iter);
        return _pygtk_tree_model_set_row(child, &citer, items);
    }

    if (GTK_IS_TREE_MODEL_FILTER(model)) {
        child = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(model));
        gtk_tree_model_filter_convert_iter_to_child_iter(
            GTK_TREE_MODEL_FILTER(model), &citer, iter);
        return _pygtk_tree_model_set_row(child, &citer, items);
    }

    if (!PySequence_Check(items)) {
	PyErr_SetString(PyExc_TypeError, "expecting a sequence");
	return -1;
    }
    n_columns = gtk_tree_model_get_n_columns(model);
    if (PySequence_Length(items) != n_columns) {
	PyErr_SetString(PyExc_ValueError, "row sequence has wrong length");
	return -1;
    }
    for (i = 0; i < n_columns; i++) {
	GValue value = { 0, };
	PyObject *item;

	item = PySequence_GetItem(items, i);
	if (!item)
	    return -1;
	g_value_init(&value, gtk_tree_model_get_column_type(model, i));
	if (pyg_value_from_pyobject(&value, item)) {
	    Py_DECREF(item);
	    PyErr_SetString(PyExc_TypeError,
			    "value is of wrong type for this column");
	    return -1;
	}

	if (GTK_IS_LIST_STORE(model))
	    gtk_list_store_set_value(GTK_LIST_STORE(model), iter, i, &value);
	else if (GTK_IS_TREE_STORE(model))
	    gtk_tree_store_set_value(GTK_TREE_STORE(model), iter, i, &value);

	g_value_unset(&value);
	Py_DECREF(item);
    }
    return 0;
}
コード例 #21
0
ファイル: treestore.c プロジェクト: amery/clip-angelo
/******************************************************************************
* gtk_TreeStoreSetValue(tree,path_string,  ncol, val)
******************************************************************************/
int
clip_GTK_TREESTORESETVALUE(ClipMachine * ClipMachineMemory)
{
   C_object *cstree = _fetch_co_arg(ClipMachineMemory);

   gchar    *path = _clip_parc(ClipMachineMemory, 2);

   gint      column = _clip_parni(ClipMachineMemory, 3);

   ClipVar  *val = _clip_par(ClipMachineMemory, 4);;
   GtkTreeIter iter;

   ClipArrVar *utypes;

   GValue    value;

   C_object *cobj;

   gchar    *str;

   int       j, n;

   double    d;

   CHECKARG2(1, MAP_type_of_ClipVarType, NUMERIC_type_of_ClipVarType);
   CHECKCOBJ(cstree, GTK_IS_TREE_STORE(cstree->object));
   CHECKARG(2, CHARACTER_type_of_ClipVarType);
   CHECKARG(3, NUMERIC_type_of_ClipVarType);

   gtk_tree_model_get_iter(GTK_TREE_MODEL(GTK_TREE_STORE(cstree->object)), &iter, gtk_tree_path_new_from_string(path));

   utypes = (ClipArrVar *) _clip_vptr(_clip_mget(ClipMachineMemory, &cstree->obj, HASH_UTYPES));
   column--;

   memset(&value, 0, sizeof(value));
   switch ((int) utypes->ClipVar_items_of_ClipArrVar[column].ClipNumVar_n_of_ClipVar.double_of_ClipNumVar)
    {
    case TREE_TYPE_NUMERIC:
       g_value_init(&value, G_TYPE_INT);
       if (val->ClipType_t_of_ClipVar.ClipVartype_type_of_ClipType == NUMERIC_type_of_ClipVarType)
	  g_value_set_int(&value, (int) val->ClipNumVar_n_of_ClipVar.double_of_ClipNumVar);
       else
	{
	   n = _clip_strtod(val->ClipStrVar_s_of_ClipVar.ClipBuf_str_of_ClipStrVar.buf_of_ClipBuf, &j);
	   g_value_set_int(&value, n);
	}
       break;
    case TREE_TYPE_NUMERIC_FLOAT:
       g_value_init(&value, G_TYPE_FLOAT);
       if (val->ClipType_t_of_ClipVar.ClipVartype_type_of_ClipType == NUMERIC_type_of_ClipVarType)
	  g_value_set_float(&value, val->ClipNumVar_n_of_ClipVar.double_of_ClipNumVar);
       else
	{
	   d = _clip_strtod(val->ClipStrVar_s_of_ClipVar.ClipBuf_str_of_ClipStrVar.buf_of_ClipBuf, &j);
	   g_value_set_float(&value, d);
	}
       break;
    case TREE_TYPE_STRING:
       str = val->ClipStrVar_s_of_ClipVar.ClipBuf_str_of_ClipStrVar.buf_of_ClipBuf;
       LOCALE_TO_UTF(str);
       g_value_init(&value, G_TYPE_STRING);
       g_value_set_string(&value, str);
       FREE_TEXT(str);
       break;
    case TREE_TYPE_LOGICAL:
       g_value_init(&value, G_TYPE_BOOLEAN);
       g_value_set_boolean(&value, val->ClipLogVar_l_of_ClipVar.value_of_ClipLogVar);
       break;
    case TREE_TYPE_DATE:
       g_value_init(&value, G_TYPE_STRING);
       if (val->ClipType_t_of_ClipVar.ClipVartype_type_of_ClipType == DATE_type_of_ClipVarType)
	  str = _clip_date_to_str(val->ClipLongVar_lv_of_ClipVar.long_of_ClipLongVar, ClipMachineMemory->date_format);
       else
	  str =
	   _clip_date_to_str(_clip_str_to_date
			     (val->ClipStrVar_s_of_ClipVar.ClipBuf_str_of_ClipStrVar.buf_of_ClipBuf,
			      ClipMachineMemory->date_format, ClipMachineMemory->epoch), ClipMachineMemory->date_format);
       g_value_set_string(&value, str);
       break;
    case TREE_TYPE_PIXBUF:
       g_value_init(&value, GDK_TYPE_PIXBUF);
       cobj = _fetch_cobject(ClipMachineMemory, val);
       g_value_set_object(&value, cobj->object);
       break;
    }
   gtk_tree_store_set_value(GTK_TREE_STORE(cstree->object), &iter, column, &value);

   return 0;
 err:
   return 1;
}
コード例 #22
0
ファイル: treestore.c プロジェクト: amery/clip-angelo
int static
__tree_store_set(ClipMachine * ClipMachineMemory, GtkTreeIter * iter, gint startDataParam)
{
   C_object *cstree = _fetch_co_arg(ClipMachineMemory);

   ClipArrVar *utypes;

   gint      i;

   CHECKCOBJ(cstree, GTK_IS_TREE_STORE(cstree->object));

   utypes = (ClipArrVar *) _clip_vptr(_clip_mget(ClipMachineMemory, &cstree->obj, HASH_UTYPES));
   for (i = startDataParam; i <= _clip_parinfo(ClipMachineMemory, 0); i += 2)
    {
       gint      column = _clip_parni(ClipMachineMemory, i);

       ClipVar  *val;

       GValue    value;

       C_object *cobj;

       gchar    *str;

       int       j, n;

       double    d;

       CHECKARG(i, NUMERIC_type_of_ClipVarType);

       if (column == -1)
	  break;

       column--;
       val = _clip_par(ClipMachineMemory, i + 1);
       memset(&value, 0, sizeof(value));
       switch ((int) utypes->ClipVar_items_of_ClipArrVar[column].ClipNumVar_n_of_ClipVar.double_of_ClipNumVar)
	{
	case TREE_TYPE_NUMERIC:
	   g_value_init(&value, G_TYPE_INT);
	   if (val->ClipType_t_of_ClipVar.ClipVartype_type_of_ClipType == NUMERIC_type_of_ClipVarType)
	      g_value_set_int(&value, (int) val->ClipNumVar_n_of_ClipVar.double_of_ClipNumVar);
	   else
	    {
	       n = _clip_strtod(val->ClipStrVar_s_of_ClipVar.ClipBuf_str_of_ClipStrVar.buf_of_ClipBuf, &j);
	       g_value_set_int(&value, n);
	    }
	   break;
	case TREE_TYPE_NUMERIC_FLOAT:
	   g_value_init(&value, G_TYPE_FLOAT);
	   if (val->ClipType_t_of_ClipVar.ClipVartype_type_of_ClipType == NUMERIC_type_of_ClipVarType)
	      g_value_set_float(&value, val->ClipNumVar_n_of_ClipVar.double_of_ClipNumVar);
	   else
	    {
	       d = _clip_strtod(val->ClipStrVar_s_of_ClipVar.ClipBuf_str_of_ClipStrVar.buf_of_ClipBuf, &j);
	       g_value_set_float(&value, d);
	    }
	   break;
	case TREE_TYPE_STRING:
	   str = val->ClipStrVar_s_of_ClipVar.ClipBuf_str_of_ClipStrVar.buf_of_ClipBuf;
	   LOCALE_TO_UTF(str);
	   g_value_init(&value, G_TYPE_STRING);
	   g_value_set_string(&value, str);
	   FREE_TEXT(str);
	   break;
	case TREE_TYPE_LOGICAL:
	   g_value_init(&value, G_TYPE_BOOLEAN);
	   g_value_set_boolean(&value, val->ClipLogVar_l_of_ClipVar.value_of_ClipLogVar);
	   break;
	case TREE_TYPE_DATE:
	   g_value_init(&value, G_TYPE_STRING);
	   if (val->ClipType_t_of_ClipVar.ClipVartype_type_of_ClipType == DATE_type_of_ClipVarType)
	      str = _clip_date_to_str(val->ClipLongVar_lv_of_ClipVar.long_of_ClipLongVar, ClipMachineMemory->date_format);
	   else
	      str =
	       _clip_date_to_str(_clip_str_to_date
				 (val->ClipStrVar_s_of_ClipVar.ClipBuf_str_of_ClipStrVar.buf_of_ClipBuf,
				  ClipMachineMemory->date_format, ClipMachineMemory->epoch), ClipMachineMemory->date_format);
	   g_value_set_string(&value, str);
	   break;
	case TREE_TYPE_PIXBUF:
	   g_value_init(&value, GDK_TYPE_PIXBUF);
	   cobj = _fetch_cobject(ClipMachineMemory, val);
	   g_value_set_object(&value, cobj->object);
	   break;
	}
       gtk_tree_store_set_value(GTK_TREE_STORE(cstree->object), iter, column, &value);
    }
   return 0;
 err:
   return 1;
}