📄 stock_browser.c
字号:
gchar *str; gtk_tree_model_get (model, &iter, 0, &info, -1); if (info->small_icon && info->item.label) gtk_label_set_text (GTK_LABEL (display->type_label), "Icon and Item"); else if (info->small_icon) gtk_label_set_text (GTK_LABEL (display->type_label), "Icon Only"); else if (info->item.label) gtk_label_set_text (GTK_LABEL (display->type_label), "Item Only"); else gtk_label_set_text (GTK_LABEL (display->type_label), "???????"); gtk_label_set_text (GTK_LABEL (display->macro_label), info->macro); gtk_label_set_text (GTK_LABEL (display->id_label), info->id); if (info->item.label) { str = g_strdup_printf ("%s %s", info->item.label, info->accel_str); gtk_label_set_text_with_mnemonic (GTK_LABEL (display->label_accel_label), str); g_free (str); } else { gtk_label_set_text (GTK_LABEL (display->label_accel_label), ""); } if (info->small_icon) gtk_image_set_from_stock (GTK_IMAGE (display->icon_image), info->id, get_largest_size (info->id)); else gtk_image_set_from_pixbuf (GTK_IMAGE (display->icon_image), NULL); stock_item_info_free (info); } else { gtk_label_set_text (GTK_LABEL (display->type_label), "No selected item"); gtk_label_set_text (GTK_LABEL (display->macro_label), ""); gtk_label_set_text (GTK_LABEL (display->id_label), ""); gtk_label_set_text (GTK_LABEL (display->label_accel_label), ""); gtk_image_set_from_pixbuf (GTK_IMAGE (display->icon_image), NULL); }}static voidmacro_set_func_text (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkTreeModel *model, GtkTreeIter *iter, gpointer data){ StockItemInfo *info; gtk_tree_model_get (model, iter, 0, &info, -1); g_object_set (GTK_CELL_RENDERER (cell), "text", info->macro, NULL); stock_item_info_free (info);}static voidid_set_func (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkTreeModel *model, GtkTreeIter *iter, gpointer data){ StockItemInfo *info; gtk_tree_model_get (model, iter, 0, &info, -1); g_object_set (GTK_CELL_RENDERER (cell), "text", info->id, NULL); stock_item_info_free (info);}static voidaccel_set_func (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkTreeModel *model, GtkTreeIter *iter, gpointer data){ StockItemInfo *info; gtk_tree_model_get (model, iter, 0, &info, -1); g_object_set (GTK_CELL_RENDERER (cell), "text", info->accel_str, NULL); stock_item_info_free (info);}static voidlabel_set_func (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkTreeModel *model, GtkTreeIter *iter, gpointer data){ StockItemInfo *info; gtk_tree_model_get (model, iter, 0, &info, -1); g_object_set (GTK_CELL_RENDERER (cell), "text", info->item.label, NULL); stock_item_info_free (info);}GtkWidget *do_stock_browser (GtkWidget *do_widget){ if (!window) { GtkWidget *frame; GtkWidget *vbox; GtkWidget *hbox; GtkWidget *sw; GtkWidget *treeview; GtkWidget *align; GtkTreeModel *model; GtkCellRenderer *cell_renderer; StockItemDisplay *display; GtkTreeSelection *selection; GtkTreeViewColumn *column; window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_screen (GTK_WINDOW (window), gtk_widget_get_screen (do_widget)); gtk_window_set_title (GTK_WINDOW (window), "Stock Icons and Items"); gtk_window_set_default_size (GTK_WINDOW (window), -1, 500); g_signal_connect (window, "destroy", G_CALLBACK (gtk_widget_destroyed), &window); gtk_container_set_border_width (GTK_CONTAINER (window), 8); hbox = gtk_hbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (window), hbox); sw = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_box_pack_start (GTK_BOX (hbox), sw, FALSE, FALSE, 0); model = create_model (); treeview = gtk_tree_view_new_with_model (model); g_object_unref (model); gtk_container_add (GTK_CONTAINER (sw), treeview); column = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (column, "Macro"); cell_renderer = gtk_cell_renderer_pixbuf_new (); gtk_tree_view_column_pack_start (column, cell_renderer, FALSE); gtk_tree_view_column_set_attributes (column, cell_renderer, "stock_id", 1, NULL); cell_renderer = gtk_cell_renderer_text_new (); gtk_tree_view_column_pack_start (column, cell_renderer, TRUE); gtk_tree_view_column_set_cell_data_func (column, cell_renderer, macro_set_func_text, NULL, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); cell_renderer = gtk_cell_renderer_text_new (); gtk_tree_view_insert_column_with_data_func (GTK_TREE_VIEW (treeview), -1, "Label", cell_renderer, label_set_func, NULL, NULL); cell_renderer = gtk_cell_renderer_text_new (); gtk_tree_view_insert_column_with_data_func (GTK_TREE_VIEW (treeview), -1, "Accel", cell_renderer, accel_set_func, NULL, NULL); cell_renderer = gtk_cell_renderer_text_new (); gtk_tree_view_insert_column_with_data_func (GTK_TREE_VIEW (treeview), -1, "ID", cell_renderer, id_set_func, NULL, NULL); align = gtk_alignment_new (0.5, 0.0, 0.0, 0.0); gtk_box_pack_end (GTK_BOX (hbox), align, FALSE, FALSE, 0); frame = gtk_frame_new ("Selected Item"); gtk_container_add (GTK_CONTAINER (align), frame); vbox = gtk_vbox_new (FALSE, 8); gtk_container_set_border_width (GTK_CONTAINER (vbox), 4); gtk_container_add (GTK_CONTAINER (frame), vbox); display = g_new (StockItemDisplay, 1); g_object_set_data_full (G_OBJECT (treeview), "stock-display", display, g_free); /* free display with treeview */ display->type_label = gtk_label_new (NULL); display->macro_label = gtk_label_new (NULL); display->id_label = gtk_label_new (NULL); display->label_accel_label = gtk_label_new (NULL); display->icon_image = gtk_image_new_from_pixbuf (NULL); /* empty image */ gtk_box_pack_start (GTK_BOX (vbox), display->type_label, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), display->icon_image, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), display->label_accel_label, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), display->macro_label, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), display->id_label, FALSE, FALSE, 0); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); g_signal_connect (selection, "changed", G_CALLBACK (selection_changed), NULL); } if (!GTK_WIDGET_VISIBLE (window)) { gtk_widget_show_all (window); } else { gtk_widget_destroy (window); window = NULL; } return window;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -