static void _new_contents(Helper * helper) { GtkWidget * widget; GtkTreeModel * model; GtkCellRenderer * renderer; GtkTreeViewColumn * column; widget = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); model = gtk_tree_model_filter_new(GTK_TREE_MODEL(helper->store), NULL); gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(model), _helper_filter_contents, NULL, NULL); model = gtk_tree_model_sort_new_with_model(model); helper->contents = gtk_tree_view_new_with_model(model); gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(helper->contents), FALSE); gtk_tree_view_set_search_column(GTK_TREE_VIEW(helper->contents), HSC_CONTENTS_PACKAGE); renderer = gtk_cell_renderer_pixbuf_new(); column = gtk_tree_view_column_new_with_attributes(NULL, renderer, "pixbuf", HSC_ICON, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(helper->contents), column); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes(_("Package"), renderer, "text", HSC_CONTENTS_PACKAGE, NULL); gtk_tree_view_column_set_sort_column_id(column, HSC_CONTENTS_PACKAGE); gtk_tree_view_append_column(GTK_TREE_VIEW(helper->contents), column); gtk_tree_view_column_clicked(column); g_signal_connect(helper->contents, "row-activated", G_CALLBACK( _helper_on_contents_row_activated), helper); gtk_container_add(GTK_CONTAINER(widget), helper->contents); gtk_notebook_append_page(GTK_NOTEBOOK(helper->notebook), widget, gtk_label_new(_("Contents"))); }
static void add_columns (GtkTreeView *treeview) { GtkCellRenderer *renderer; GtkTreeViewColumn *column; column = gtk_tree_view_column_new (); /* Checkbox */ renderer = gtk_cell_renderer_toggle_new (); g_signal_connect (G_OBJECT (renderer), "toggled", G_CALLBACK (on_service_toggled), tool); g_object_set (G_OBJECT (renderer), "xpad", 12, NULL); gtk_tree_view_insert_column_with_attributes (treeview, -1, "", renderer, "active", COL_ACTIVE, NULL); /* Image */ renderer = gtk_cell_renderer_pixbuf_new (); gtk_tree_view_column_pack_start (column, renderer, FALSE); gtk_tree_view_column_set_attributes (column, renderer, "pixbuf", COL_IMAGE, NULL); /* Text */ renderer = gtk_cell_renderer_text_new (); gtk_tree_view_column_pack_start (column, renderer, TRUE); gtk_tree_view_column_set_attributes (column, renderer, "markup", COL_DESC, NULL); g_object_set (G_OBJECT (renderer), "yalign", 0, NULL); gtk_tree_view_insert_column (treeview, column, -1); gtk_tree_view_column_set_sort_column_id (column, 1); gtk_tree_view_column_clicked (column); }
void EntityList::populateWindow() { // Create the treeview _treeView = GTK_TREE_VIEW(gtk_tree_view_new()); gtk_tree_view_set_headers_visible(_treeView, FALSE); gtk_tree_view_set_model(_treeView, _treeModel); GtkTreeViewColumn* column = gtkutil::TextColumn(_("Name"), GraphTreeModel::COL_NAME); gtk_tree_view_column_pack_start(column, gtk_cell_renderer_text_new(), TRUE); _selection = gtk_tree_view_get_selection(_treeView); gtk_tree_selection_set_mode(_selection, GTK_SELECTION_MULTIPLE); gtk_tree_selection_set_select_function(_selection, onSelection, this, 0); g_signal_connect(G_OBJECT(_treeView), "row-expanded", G_CALLBACK(onRowExpand), this); gtk_tree_view_append_column (_treeView, column); gtk_tree_view_column_set_sort_column_id(column, GraphTreeModel::COL_NAME); gtk_tree_view_column_clicked(column); // Create the toggle item _focusOnSelectedEntityToggle = gtk_check_button_new_with_label(_("Focus camera on selected entity.")); // Update the toggle item status according to the registry bool isActive = GlobalRegistry().get(RKEY_ENTITYLIST_FOCUS_SELECTION) == "1"; gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(_focusOnSelectedEntityToggle), isActive); // Connect the toggle button's "toggled" signal g_signal_connect(G_OBJECT(_focusOnSelectedEntityToggle), "toggled", G_CALLBACK(onFocusSelectionToggle), this); // Create a VBOX GtkWidget* vbox = gtk_vbox_new(FALSE, 6); gtk_box_pack_start(GTK_BOX(vbox), gtkutil::ScrolledFrame(GTK_WIDGET(_treeView)), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), _focusOnSelectedEntityToggle, FALSE, FALSE, 0); // Pack the VBOX into the window gtk_container_add(GTK_CONTAINER(getWindow()), vbox); }
static VALUE tvc_clicked(VALUE self) { gtk_tree_view_column_clicked(_SELF(self)); return self; }
void VectorTableToDialog (vector_table_options_D *dialog, BUS_LAYOUT *bus_layout, int *sim_type, VectorTable *pvt) { GList *llCols = NULL, *llItr = NULL ; int Nix ; GtkTreeModel *model = NULL ; GtkWidget *tbtn = NULL ; GtkTreeViewColumn *col = NULL ; if (NULL == dialog || NULL == sim_type || NULL == pvt) return ; g_object_set_data (G_OBJECT (dialog->dialog), "user_sim_type", sim_type) ; g_object_set_data (G_OBJECT (dialog->dialog), "user_pvt", pvt) ; g_object_set_data (G_OBJECT (dialog->dialog), "user_bus_layout", bus_layout) ; g_object_set_data (G_OBJECT (dialog->dialog), "idxVector", (gpointer)-1) ; if (0 == bus_layout->inputs->icUsed) (*sim_type) = EXHAUSTIVE_VERIFICATION ; gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (tbtn = (VECTOR_TABLE == (*sim_type) ? dialog->tbtnVT : dialog->tbtnExhaustive)), TRUE) ; g_object_set_data (G_OBJECT (dialog->crActive), "pvt", pvt) ; if (NULL != (model = GTK_TREE_MODEL (design_bus_layout_tree_store_new (bus_layout, ROW_TYPE_INPUT, 1, G_TYPE_BOOLEAN)))) { gboolean bActive = FALSE ; GtkTreeIter itr, itrChild ; int row_type = -1, idx = -1 ; QCADCell *cell = NULL ; gboolean bBusActive = FALSE ; // First reflect the active_flag of current cell inputs if (gtk_tree_model_get_iter_first (model, &itr)) while (TRUE) { gtk_tree_model_get (model, &itr, BUS_LAYOUT_MODEL_COLUMN_TYPE, &row_type, BUS_LAYOUT_MODEL_COLUMN_CELL, &cell, -1) ; if (ROW_TYPE_CELL_INPUT == row_type && NULL != cell) if (-1 != (idx = VectorTable_find_input_idx (pvt, cell))) gtk_tree_store_set (GTK_TREE_STORE (model), &itr, VECTOR_TABLE_MODEL_COLUMN_ACTIVE, exp_array_index_1d (pvt->inputs, VT_INPUT, idx).active_flag, -1) ; if (!gtk_tree_model_iter_next_dfs (model, &itr)) break ; } // For any given bus, if any of its cells are active, then the bus is active. Reflect this. if (gtk_tree_model_get_iter_first (model, &itr)) while (TRUE) { bBusActive = FALSE ; if (gtk_tree_model_iter_children (model, &itrChild, &itr)) { while (TRUE) { gtk_tree_model_get (model, &itrChild, VECTOR_TABLE_MODEL_COLUMN_ACTIVE, &bActive, -1) ; if ((bBusActive = bActive)) break ; if (!gtk_tree_model_iter_next (model, &itrChild)) break ; } gtk_tree_store_set (GTK_TREE_STORE (model), &itr, VECTOR_TABLE_MODEL_COLUMN_ACTIVE, bBusActive, -1) ; } if (!gtk_tree_model_iter_next (model, &itr)) break ; } llCols = gtk_tree_view_get_columns (GTK_TREE_VIEW (dialog->tv)) ; for (Nix = 0, llItr = llCols ; Nix < 2 && NULL != llItr ; Nix++, llItr = llItr->next) ; for (; llItr != NULL ; llItr = llItr->next) gtk_tree_view_remove_column (GTK_TREE_VIEW (dialog->tv), GTK_TREE_VIEW_COLUMN (llItr->data)) ; g_list_free (llCols) ; gtk_tree_view_set_model (GTK_TREE_VIEW (dialog->tv), model) ; } gtk_tree_view_expand_all (GTK_TREE_VIEW (dialog->tv)) ; for (Nix = 0 ; Nix < pvt->vectors->icUsed ; Nix++) { if (NULL == col) col = add_vector_to_dialog (dialog, pvt, Nix) ; else add_vector_to_dialog (dialog, pvt, Nix) ; // Give the dialog a chance to update itself if (0 == Nix % 10) while (gtk_events_pending ()) gtk_main_iteration () ; } if (NULL != col) gtk_tree_view_column_clicked (col) ; if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (tbtn))) vector_table_options_dialog_btnSimType_clicked (tbtn, dialog) ; vector_table_options_dialog_reflect_state (dialog) ; }
/** * vik_trw_layer_waypoint_list_internal: * @dialog: The dialog to create the widgets in * @waypoints_and_layers: The list of waypoints (and it's layer) to be shown * @show_layer_names: Show the layer names that each waypoint belongs to * * Create a table of waypoints with corresponding waypoint information * This table does not support being actively updated */ static void vik_trw_layer_waypoint_list_internal ( GtkWidget *dialog, GList *waypoints_and_layers, gboolean show_layer_names ) { if ( !waypoints_and_layers ) return; // It's simple storing the gdouble values in the tree store as the sort works automatically // Then apply specific cell data formatting (rather default double is to 6 decimal places!) // However not storing any doubles for waypoints ATM // TODO: Consider adding the waypoint icon into this store for display in the list GtkTreeStore *store = gtk_tree_store_new ( WPT_LIST_COLS, G_TYPE_STRING, // 0: Layer Name G_TYPE_STRING, // 1: Waypoint Name G_TYPE_STRING, // 2: Date G_TYPE_BOOLEAN, // 3: Visible G_TYPE_STRING, // 4: Comment G_TYPE_INT, // 5: Height GDK_TYPE_PIXBUF, // 6: Symbol Icon G_TYPE_POINTER, // 7: TrackWaypoint Layer pointer G_TYPE_POINTER ); // 8: Waypoint pointer //gtk_tree_selection_set_select_function ( gtk_tree_view_get_selection (GTK_TREE_VIEW(vt)), vik_treeview_selection_filter, vt, NULL ); vik_units_height_t height_units = a_vik_get_units_height (); //GList *gl = get_waypoints_and_layers_cb ( vl, user_data ); //g_list_foreach ( waypoints_and_layers, (GFunc) trw_layer_waypoint_list_add, store ); GList *gl = waypoints_and_layers; while ( gl ) { trw_layer_waypoint_list_add ( (vik_trw_waypoint_list_t*)gl->data, store, height_units ); gl = g_list_next ( gl ); } GtkWidget *view = gtk_tree_view_new(); GtkCellRenderer *renderer = gtk_cell_renderer_text_new(); g_object_set (G_OBJECT (renderer), "xalign", 0.0, "ellipsize", PANGO_ELLIPSIZE_END, NULL); GtkTreeViewColumn *column; GtkTreeViewColumn *sort_by_column; gint column_runner = 0; if ( show_layer_names ) { // Insert column for the layer name when viewing multi layers column = my_new_column_text ( _("Layer"), renderer, view, column_runner++ ); g_object_set (G_OBJECT (renderer), "xalign", 0.0, "ellipsize", PANGO_ELLIPSIZE_END, NULL); gtk_tree_view_column_set_expand ( column, TRUE ); // remember the layer column so we can sort by it later sort_by_column = column; } else column_runner++; column = my_new_column_text ( _("Name"), renderer, view, column_runner++ ); gtk_tree_view_column_set_expand ( column, TRUE ); if ( !show_layer_names ) // remember the name column so we can sort by it later sort_by_column = column; column = my_new_column_text ( _("Date"), renderer, view, column_runner++ ); gtk_tree_view_column_set_resizable ( column, TRUE ); GtkCellRenderer *renderer_toggle = gtk_cell_renderer_toggle_new (); column = gtk_tree_view_column_new_with_attributes ( _("Visible"), renderer_toggle, "active", column_runner, NULL ); gtk_tree_view_column_set_sort_column_id ( column, column_runner ); gtk_tree_view_append_column ( GTK_TREE_VIEW(view), column ); column_runner++; column = my_new_column_text ( _("Comment"), renderer, view, column_runner++ ); gtk_tree_view_column_set_expand ( column, TRUE ); if ( height_units == VIK_UNITS_HEIGHT_FEET ) column = my_new_column_text ( _("Max Height\n(Feet)"), renderer, view, column_runner++ ); else column = my_new_column_text ( _("Max Height\n(Metres)"), renderer, view, column_runner++ ); GtkCellRenderer *renderer_pixbuf = gtk_cell_renderer_pixbuf_new (); g_object_set (G_OBJECT (renderer_pixbuf), "xalign", 0.5, NULL); column = gtk_tree_view_column_new_with_attributes ( _("Symbol"), renderer_pixbuf, "pixbuf", column_runner++, NULL ); // Special sort required for pixbufs gtk_tree_sortable_set_sort_func ( GTK_TREE_SORTABLE(store), column_runner, sort_pixbuf_compare_func, NULL, NULL ); gtk_tree_view_column_set_sort_column_id ( column, column_runner ); gtk_tree_view_append_column ( GTK_TREE_VIEW(view), column ); gtk_tree_view_set_model ( GTK_TREE_VIEW(view), GTK_TREE_MODEL(store) ); gtk_tree_selection_set_mode ( gtk_tree_view_get_selection(GTK_TREE_VIEW(view)), GTK_SELECTION_BROWSE ); // GTK_SELECTION_MULTIPLE gtk_tree_view_set_rules_hint ( GTK_TREE_VIEW(view), TRUE ); g_object_unref(store); GtkWidget *scrolledwindow = gtk_scrolled_window_new ( NULL, NULL ); gtk_scrolled_window_set_policy ( GTK_SCROLLED_WINDOW(scrolledwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC ); gtk_container_add ( GTK_CONTAINER(scrolledwindow), view ); g_object_set ( view, "has-tooltip", TRUE, NULL); g_signal_connect ( view, "query-tooltip", G_CALLBACK (trw_layer_waypoint_tooltip_cb), NULL ); //g_signal_connect ( gtk_tree_view_get_selection (GTK_TREE_VIEW(view)), "changed", G_CALLBACK(trw_layer_waypoint_select_cb), view ); g_signal_connect ( view, "popup-menu", G_CALLBACK(trw_layer_waypoint_menu_popup), waypoints_and_layers ); g_signal_connect ( view, "button-press-event", G_CALLBACK(trw_layer_waypoint_button_pressed), waypoints_and_layers ); gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), scrolledwindow, TRUE, TRUE, 0); // Set ordering of the initial view by one of the name columns gtk_tree_view_column_clicked ( sort_by_column ); // Ensure a reasonable number of items are shown // TODO: may be save window size, column order, sorted by between invocations. gtk_window_set_default_size ( GTK_WINDOW(dialog), show_layer_names ? 700 : 500, 400 ); }
void gkrellm_plugins_config_create(GtkWidget *tab_vbox) { GtkWidget *tabs; GtkWidget *vbox; GtkWidget *hbox; GtkWidget *scrolled; GtkWidget *view; GtkTreeModel *model; GtkCellRenderer *renderer; GtkTreeSelection *selection; GtkTreeViewColumn *column; GtkTextIter iter; GtkTextBuffer *buffer; row_reference = NULL; tabs = gtk_notebook_new(); gtk_notebook_set_tab_pos(GTK_NOTEBOOK(tabs), GTK_POS_TOP); gtk_box_pack_start(GTK_BOX(tab_vbox), tabs, TRUE, TRUE, 0); /* -- Plugins tab */ vbox = gkrellm_gtk_framed_notebook_page(tabs, _("Plugins")); scrolled = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start(GTK_BOX(vbox), scrolled, TRUE, TRUE, 2); model = create_model(); treeview = GTK_TREE_VIEW(gtk_tree_view_new_with_model(model)); g_object_unref(G_OBJECT(model)); gtk_tree_view_set_rules_hint(treeview, TRUE); renderer = gtk_cell_renderer_toggle_new(); gtk_tree_view_insert_column_with_attributes(treeview, -1, _("Enable"), renderer, "active", ENABLE_COLUMN, NULL); g_signal_connect (G_OBJECT(renderer), "toggled", G_CALLBACK(cb_enable_plugin), model); renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes (_("Plugin"), renderer, "text", NAME_COLUMN, NULL); gtk_tree_view_append_column(treeview, column); gtk_tree_view_column_set_sort_column_id(column, NAME_COLUMN); gtk_tree_view_column_clicked(column); /* Sort it */ /* gtk_tree_sortable_set_sort_column_id(model, NAME_COLUMN, GTK_ORDER_ASCENDING); */ gtk_container_add(GTK_CONTAINER(scrolled), GTK_WIDGET(treeview)); selection = gtk_tree_view_get_selection(treeview); gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); g_signal_connect(G_OBJECT(selection), "changed", G_CALLBACK(cb_tree_selection_changed), NULL); hbox = gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX(hbox), GTK_BUTTONBOX_START); gtk_box_set_spacing(GTK_BOX(hbox), 5); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 2); place_button = gtk_button_new_with_label(_("Place")); gtk_box_pack_start(GTK_BOX(hbox), place_button, TRUE, TRUE, 0); g_signal_connect(G_OBJECT(GTK_BUTTON(place_button)), "clicked", G_CALLBACK(cb_place_button), NULL); gtk_widget_set_sensitive(place_button, FALSE); /* --Plugins detect log tab */ vbox = gkrellm_gtk_framed_notebook_page(tabs, _("Install Log")); view = gkrellm_gtk_scrolled_text_view(vbox, NULL, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(view)); gtk_text_buffer_get_end_iter(buffer, &iter); if (plugin_install_log) gtk_text_buffer_insert(buffer, &iter, plugin_install_log, -1); else gtk_text_buffer_insert(buffer, &iter, _("No plugins found."), -1); }