// Create and bind the tree model to the tree view for the queue list // Also, connect up the signal that lets us know the selection has changed static void bind_queue_tree_model(signal_user_data_t *ud) { GtkCellRenderer *cell, *textcell; GtkTreeViewColumn *column; GtkTreeStore *treestore; GtkTreeView *treeview; GtkTreeSelection *selection; GtkTargetEntry SrcEntry; SrcEntry.target = "DATA"; SrcEntry.flags = GTK_TARGET_SAME_WIDGET; g_debug("bind_queue_tree_model()\n"); treeview = GTK_TREE_VIEW(GHB_WIDGET(ud->builder, "queue_list")); selection = gtk_tree_view_get_selection(treeview); treestore = gtk_tree_store_new(5, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT); gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(treestore)); column = gtk_tree_view_column_new(); gtk_tree_view_column_set_title(column, _("Job Information")); cell = gtk_cell_renderer_spinner_new(); gtk_tree_view_column_pack_start(column, cell, FALSE); gtk_tree_view_column_add_attribute(column, cell, "active", 0); gtk_tree_view_column_add_attribute(column, cell, "pulse", 4); cell = gtk_cell_renderer_pixbuf_new(); gtk_tree_view_column_pack_start(column, cell, FALSE); gtk_tree_view_column_add_attribute(column, cell, "icon-name", 1); textcell = gtk_cell_renderer_text_new(); g_object_set(textcell, "wrap-mode", PANGO_WRAP_CHAR, NULL); g_object_set(textcell, "wrap-width", 500, NULL); gtk_tree_view_column_pack_start(column, textcell, TRUE); gtk_tree_view_column_add_attribute(column, textcell, "markup", 2); gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column)); gtk_tree_view_column_set_expand(column, TRUE); gtk_tree_view_column_set_max_width(column, 550); g_signal_connect(treeview, "size-allocate", queue_list_size_allocate_cb, textcell); cell = custom_cell_renderer_button_new(); column = gtk_tree_view_column_new_with_attributes( _(""), cell, "icon-name", 3, NULL); gtk_tree_view_column_set_min_width(column, 24); gtk_tree_view_append_column(treeview, GTK_TREE_VIEW_COLUMN(column)); gtk_tree_view_enable_model_drag_dest(treeview, &SrcEntry, 1, GDK_ACTION_MOVE); gtk_tree_view_enable_model_drag_source(treeview, GDK_BUTTON1_MASK, &SrcEntry, 1, GDK_ACTION_MOVE); g_signal_connect(selection, "changed", queue_list_selection_changed_cb, ud); g_signal_connect(cell, "clicked", queue_remove_clicked_cb, ud); g_signal_connect(treeview, "drag_data_received", queue_drag_cb, ud); g_signal_connect(treeview, "drag_motion", queue_drag_motion_cb, ud); }
JNIEXPORT jlong JNICALL Java_org_gnome_gtk_GtkCellRendererSpinner_gtk_1cell_1renderer_1spinner_1new ( JNIEnv* env, jclass cls ) { GtkCellRenderer* result; jlong _result; // call function result = gtk_cell_renderer_spinner_new(); // translate return value to JNI type _result = (jlong) result; // cleanup return value if (result != NULL) { bindings_java_memory_cleanup((GObject*)result, TRUE); } // and finally return _result; }
static void add_columns (GtkTreeView *treeview) { GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkTreeModel *model = gtk_tree_view_get_model (treeview); /* column for fixed toggles */ renderer = gtk_cell_renderer_toggle_new (); g_signal_connect (renderer, "toggled", G_CALLBACK (fixed_toggled), model); column = gtk_tree_view_column_new_with_attributes ("Fixed?", renderer, "active", COLUMN_FIXED, NULL); /* set this column to a fixed sizing (of 50 pixels) */ gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column), GTK_TREE_VIEW_COLUMN_FIXED); gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 50); gtk_tree_view_append_column (treeview, column); /* column for bug numbers */ renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("Bug number", renderer, "text", COLUMN_NUMBER, NULL); gtk_tree_view_column_set_sort_column_id (column, COLUMN_NUMBER); gtk_tree_view_append_column (treeview, column); /* column for severities */ renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("Severity", renderer, "text", COLUMN_SEVERITY, NULL); gtk_tree_view_column_set_sort_column_id (column, COLUMN_SEVERITY); gtk_tree_view_append_column (treeview, column); /* column for description */ renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("Description", renderer, "text", COLUMN_DESCRIPTION, NULL); gtk_tree_view_column_set_sort_column_id (column, COLUMN_DESCRIPTION); gtk_tree_view_append_column (treeview, column); /* column for spinner */ renderer = gtk_cell_renderer_spinner_new (); column = gtk_tree_view_column_new_with_attributes ("Spinning", renderer, "pulse", COLUMN_PULSE, "active", COLUMN_ACTIVE, NULL); gtk_tree_view_column_set_sort_column_id (column, COLUMN_PULSE); gtk_tree_view_append_column (treeview, column); /* column for symbolic icon */ renderer = gtk_cell_renderer_pixbuf_new (); column = gtk_tree_view_column_new_with_attributes ("Symbolic icon", renderer, "icon-name", COLUMN_ICON, "sensitive", COLUMN_SENSITIVE, NULL); gtk_tree_view_column_set_sort_column_id (column, COLUMN_ICON); gtk_tree_view_append_column (treeview, column); }
static VALUE rg_initialize(VALUE self) { RBGTK_INITIALIZE(self, gtk_cell_renderer_spinner_new()); return Qnil; }
static void git_log_pane_init (GitLogPane *self) { gchar *objects[] = {"log_pane", "log_branch_combo_model", "log_loading_model", "find_button_image", NULL}; GError *error = NULL; GtkWidget *log_pane; GtkWidget *path_entry; GtkTreeView *log_view; GtkTreeViewColumn *ref_icon_column; GtkTreeViewColumn *graph_column; GtkTreeViewColumn *short_log_column; GtkTreeViewColumn *author_column; GtkTreeViewColumn *date_column; GtkCellRenderer *ref_icon_renderer; GtkCellRenderer *short_log_renderer; GtkCellRenderer *author_renderer; GtkCellRenderer *date_renderer; GtkTreeViewColumn *loading_spinner_column; GtkCellRenderer *loading_spinner_renderer; GtkCellRenderer *loading_indicator_renderer; GtkComboBox *branch_combo; GtkTreeSelection *selection; self->priv = g_new0 (GitLogPanePriv, 1); self->priv->builder = gtk_builder_new (); if (!gtk_builder_add_objects_from_file (self->priv->builder, BUILDER_FILE, objects, &error)) { g_warning ("Couldn't load builder file: %s", error->message); g_error_free (error); } log_pane = GTK_WIDGET (gtk_builder_get_object (self->priv->builder, "log_pane")); path_entry = GTK_WIDGET (gtk_builder_get_object (self->priv->builder, "path_entry")); log_view = GTK_TREE_VIEW (gtk_builder_get_object (self->priv->builder, "log_view")); ref_icon_column = GTK_TREE_VIEW_COLUMN (gtk_builder_get_object (self->priv->builder, "ref_icon_column")); graph_column = GTK_TREE_VIEW_COLUMN (gtk_builder_get_object (self->priv->builder, "graph_column")); short_log_column = GTK_TREE_VIEW_COLUMN (gtk_builder_get_object (self->priv->builder, "short_log_column")); author_column = GTK_TREE_VIEW_COLUMN (gtk_builder_get_object (self->priv->builder, "author_column")); date_column = GTK_TREE_VIEW_COLUMN (gtk_builder_get_object (self->priv->builder, "date_column")); ref_icon_renderer = GTK_CELL_RENDERER (gtk_builder_get_object (self->priv->builder, "ref_icon_renderer")); author_renderer = GTK_CELL_RENDERER (gtk_builder_get_object (self->priv->builder, "author_renderer")); date_renderer = GTK_CELL_RENDERER (gtk_builder_get_object (self->priv->builder, "date_renderer")); branch_combo = GTK_COMBO_BOX (gtk_builder_get_object (self->priv->builder, "branch_combo")); loading_spinner_column = GTK_TREE_VIEW_COLUMN (gtk_builder_get_object (self->priv->builder, "loading_spinner_column")); selection = gtk_tree_view_get_selection (log_view); /* Path entry */ g_signal_connect (G_OBJECT (path_entry), "icon-release", G_CALLBACK (on_path_entry_icon_release), self); /* Set up the log model */ self->priv->log_model = gtk_list_store_new (1, GIT_TYPE_REVISION); /* Ref icon column */ gtk_tree_view_column_set_cell_data_func (ref_icon_column, ref_icon_renderer, (GtkTreeCellDataFunc) ref_icon_cell_function, self, NULL); /* Graph column */ self->priv->graph_renderer = giggle_graph_renderer_new (); gtk_tree_view_column_pack_start (graph_column, self->priv->graph_renderer, TRUE); gtk_tree_view_column_add_attribute (graph_column, self->priv->graph_renderer, "revision", 0); /* Short log column. We have to create this render ouselves becuause Glade * doesn't seem to give us to option to pack it with expand */ short_log_renderer = gtk_cell_renderer_text_new (); g_object_set (G_OBJECT (short_log_renderer), "ellipsize", PANGO_ELLIPSIZE_END, NULL); gtk_tree_view_column_pack_start (short_log_column, short_log_renderer, TRUE); gtk_tree_view_column_set_cell_data_func (short_log_column, short_log_renderer, (GtkTreeCellDataFunc) short_log_cell_function, NULL, NULL); /* Author column */ gtk_tree_view_column_set_cell_data_func (author_column, author_renderer, (GtkTreeCellDataFunc) author_cell_function, NULL, NULL); /* Date column */ gtk_tree_view_column_set_cell_data_func (date_column, date_renderer, (GtkTreeCellDataFunc) date_cell_function, NULL, NULL); gtk_tree_view_set_model (log_view, GTK_TREE_MODEL (self->priv->log_model)); /* Ref icon tooltip */ g_signal_connect (G_OBJECT (log_view), "query-tooltip", G_CALLBACK (on_log_view_query_tooltip), self); /* Loading indicator. The loading indicator is a second tree view display * that looks just like the real log display, except that it displays a * spinner renderer and the text "Loading..." in the Short Log column. */ self->priv->log_loading_model = GTK_LIST_STORE (gtk_builder_get_object (self->priv->builder, "log_loading_model")); loading_spinner_renderer = gtk_cell_renderer_spinner_new (); loading_indicator_renderer = gtk_cell_renderer_text_new (); g_object_set (G_OBJECT (loading_spinner_renderer), "active", TRUE, NULL); gtk_tree_view_column_pack_start (loading_spinner_column, loading_spinner_renderer, FALSE); gtk_tree_view_column_pack_start (loading_spinner_column, loading_indicator_renderer, TRUE); gtk_tree_view_column_add_attribute (loading_spinner_column, loading_spinner_renderer, "pulse", LOADING_COL_PULSE); gtk_tree_view_column_add_attribute (loading_spinner_column, loading_indicator_renderer, "text", LOADING_COL_INDICATOR); /* DnD source */ gtk_tree_view_enable_model_drag_source (log_view, GDK_BUTTON1_MASK, drag_source_targets, G_N_ELEMENTS (drag_source_targets), GDK_ACTION_COPY); g_signal_connect (G_OBJECT (log_view), "drag-data-get", G_CALLBACK (on_log_view_drag_data_get), self); /* DnD target. Use this as a means of selecting a file to view the * log of. Files or folders would normally be dragged in from the file * manager, but they can come from any source that supports URI's. */ gtk_drag_dest_set (log_pane, GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_HIGHLIGHT, drag_target_targets, G_N_ELEMENTS (drag_target_targets), GDK_ACTION_COPY | GDK_ACTION_MOVE); g_signal_connect (G_OBJECT (log_pane), "drag-data-received", G_CALLBACK (on_log_pane_drag_data_received), self); g_signal_connect (G_OBJECT (log_pane), "drag-drop", G_CALLBACK (on_log_pane_drag_drop), self); /* Pop up menu */ g_signal_connect (G_OBJECT (log_view), "button-press-event", G_CALLBACK (on_log_view_button_press_event), self); /* The loading view always has one row. Cache a copy of its iter for easy * access. */ gtk_tree_model_get_iter_first (GTK_TREE_MODEL (self->priv->log_loading_model), &(self->priv->spinner_iter)); /* FIXME: GtkSpinner doesn't have those anymore */ self->priv->spin_cycle_duration = 1000; self->priv->spin_cycle_steps = 12; g_object_set (G_OBJECT (loading_spinner_renderer), "active", TRUE, NULL); /* Log message display */ gtk_tree_selection_set_select_function (selection, (GtkTreeSelectionFunc) on_log_view_row_selected, self, NULL); /* Branch handling */ self->priv->branches_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) gtk_tree_path_free); g_signal_connect (G_OBJECT (branch_combo), "changed", G_CALLBACK (on_branch_combo_changed), self); }