⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 migrating-gnomeuiinfo.html

📁 最新gtk中文资料集
💻 HTML
📖 第 1 页 / 共 2 页
字号:
  { GNOME_APP_UI_ITEM, "Zoom _Out", "Zoom away from the image",    zoom_out_callback, NULL, NULL, GNOME_APP_PIXMAP_STOCK, GTK_STOCK_ZOOM_OUT,    GDK_MINUS, 0, NULL },  { GNOME_APP_UI_SEPARATOR },  { GNOME_APP_UI_TOGGLEITEM, "_Full Screen", "Switch between full screen and windowed mode",    full_screen_callback, NULL, NULL, GNOME_APP_PIXMAP_NONE, NULL,    GDK_F11, 0, NULL },  { GNOME_APP_UI_SEPARATOR },  { GNOME_APP_UI_RADIOITEMS, NULL, NULL, view_radio_items },  { GNOME_APP_UI_ENDOFINFO }};static GnomeUIInfo menubar[] = {  { GNOME_APP_UI_SUBTREE, "_File", NULL, file_menu_items },  { GNOME_APP_UI_SUBTREE, "_View", NULL, view_menu_items },  { GNOME_APP_UI_ENDOFINFO }}      </pre></div></div><br class="example-break"><div class="example"><a name="gnomeuiinfo-action-entries"></a><p class="title"><b>Example&#160;57.&#160;<span class="structname">GtkActionEntry</span> Structures</b></p><div class="example-contents"><p>	The following code is the set of actions that are present in	the <a class="link" href="migrating-gnomeuiinfo.html#gnomeuiinfo-example" title="Example&#160;56.&#160;GnomeUIInfo Example">previous	example</a>.  Note that the toggle and radio entries are	separate from normal actions.  Also, note that <a class="link" href="GtkActionGroup.html#GtkActionEntry"><span class="type">GtkActionEntry</span></a>         structures take key names in the format of <code class="function">gdk_accelerator_parse()</code>         rather than key values plus modifiers; you will have to convert these	values by hand.  For example, <code class="literal">GDK_F11</code> with no modifiers is equivalent         to a key name of <code class="literal">"F11"</code>.  Likewise, <code class="literal">"o"</code>	with <ahref="/usr/share/gtk-doc/html/gdk/gdk-Windows.html#GDK-CONTROL-MASK:CAPS"><code class="literal">GDK_CONTROL_MASK</code></a> is equivalent to <code class="literal">"&lt;ontrol&gt;O"</code>.      </p><pre class="programlisting">/* Normal items */static const GtkActionEntry entries[] = {  { "FileMenu", NULL, "_File" },  { "ViewMenu", NULL, "_View" },  { "Open", GTK_STOCK_OPEN, "_Open", "&lt;control&gt;O", "Open a file", open_action_callback },  { "Exit", GTK_STOCK_QUIT, "E_xit", "&lt;control&gt;Q", "Exit the program", exit_action_callback },  { "ZoomIn", GTK_STOCK_ZOOM_IN, "Zoom _In", "plus", "Zoom into the image", zoom_in_action_callback },  { "ZoomOut", GTK_STOCK_ZOOM_OUT, "Zoom _Out", "minus", "Zoom away from the image", zoom_out_action_callback },};/* Toggle items */static const GtkToggleActionEntry toggle_entries[] = {  { "FullScreen", NULL, "_Full Screen", "F11", "Switch between full screen and windowed mode", full_screen_action_callback, FALSE }};/* Radio items */static const GtkRadioActionEntry radio_entries[] = {  { "HighQuality", "my-stock-high-quality", "_High Quality", NULL, "Display images in high quality, slow mode", 0 },  { "NormalQuality", "my-stock-normal-quality", "_Normal Quality", NULL, "Display images in normal quality", 1 },  { "LowQuality", "my-stock-low-quality", "_Low Quality", NULL, "Display images in low quality, fast mode", 2 }};      </pre></div></div><br class="example-break"><div class="example"><a name="gnomeuiinfo-xml"></a><p class="title"><b>Example&#160;58.&#160;XML Description</b></p><div class="example-contents"><p>	After extracting the actions, you will need to create an XML	description of the actual layout of your menus and toolbars	for use with <a class="link" href="GtkUIManager.html" title="GtkUIManager"><span class="type">GtkUIManager</span></a>. The following code shows a simple         menu bar that corresponds to the <a class="link" href="migrating-gnomeuiinfo.html#gnomeuiinfo-example" title="Example&#160;56.&#160;GnomeUIInfo Example">previous	example</a>.  Note that the <span class="guimenu">File</span> and	<span class="guimenu">View</span> menus have their names specified in	the <a class="link" href="migrating-gnomeuiinfo.html#gnomeuiinfo-action-entries" title="Example&#160;57.&#160;GtkActionEntry Structures">action	entries</a>, not in the XML itself.  This is because the	XML description only contains <span class="emphasis"><em>identifiers</em></span>	for the items in the GUI, rather than human-readable names.      </p><pre class="programlisting">static const char *ui_description ="&lt;ui&gt;""  &lt;menubar name='MainMenu'&gt;""    &lt;menu action='FileMenu'&gt;""      &lt;menuitem action='Open'/&gt;""      &lt;menuitem action='Exit'/&gt;""    &lt;/menu&gt;""    &lt;menu action='ViewMenu'&gt;""      &lt;menuitem action='ZoomIn'/&gt;""      &lt;menuitem action='ZoomOut'/&gt;""      &lt;separator/&gt;""      &lt;menuitem action='FullScreen'/&gt;""      &lt;separator/&gt;""      &lt;menuitem action='HighQuality'/&gt;""      &lt;menuitem action='NormalQuality'/&gt;""      &lt;menuitem action='LowQuality'/&gt;""    &lt;/menu&gt;""  &lt;/menubar&gt;""&lt;/ui&gt;";      </pre></div></div><br class="example-break"><div class="example"><a name="gnomeuiinfo-code"></a><p class="title"><b>Example&#160;59.&#160;Creating the Menu Bar</b></p><div class="example-contents"><p>	In this last example, we will create a <a class="link" href="GtkActionGroup.html" title="GtkActionGroup"><span class="type">GtkActionGroup</span></a> based on the	<a class="link" href="migrating-gnomeuiinfo.html#gnomeuiinfo-action-entries" title="Example&#160;57.&#160;GtkActionEntry Structures">action entries</a>         we created above.  We will then create a <a class="link" href="GtkUIManager.html" title="GtkUIManager"><span class="type">GtkUIManager</span></a> with the <a class="link" href="migrating-gnomeuiinfo.html#gnomeuiinfo-xml" title="Example&#160;58.&#160;XML Description">XML description</a> of the menu	layout.  We will also extract the accelerator group and the	widgets from the <a class="link" href="GtkUIManager.html" title="GtkUIManager"><span class="type">GtkUIManager</span></a> put them into a window.      </p><pre class="programlisting">GtkWidget *window;GtkWidget *vbox;GtkWidget *menubar;GtkActionGroup *action_group;GtkUIManager *ui_manager;GtkAccelGroup *accel_group;GError *error;register_my_stock_icons ();window = gtk_window_new (GTK_WINDOW_TOPLEVEL);vbox = gtk_vbox_new (FALSE, 0);gtk_container_add (GTK_CONTAINER (window), vbox);action_group = gtk_action_group_new ("MenuActions");gtk_action_group_add_actions (action_group, entries, G_N_ELEMENTS (entries), window);gtk_action_group_add_toggle_actions (action_group, toggle_entries, G_N_ELEMENTS (toggle_entries), window);gtk_action_group_add_radio_actions (action_group, radio_entries, G_N_ELEMENTS (radio_entries), 0, radio_action_callback, window);ui_manager = gtk_ui_manager_new ();gtk_ui_manager_insert_action_group (ui_manager, action_group, 0);accel_group = gtk_ui_manager_get_accel_group (ui_manager);gtk_window_add_accel_group (GTK_WINDOW (window), accel_group);error = NULL;if (!gtk_ui_manager_add_ui_from_string (ui_manager, ui_description, -1, &amp;error))  {    g_message ("building menus failed: %s", error-&gt;message);    g_error_free (error);    exit (EXIT_FAILURE);  }menubar = gtk_ui_manager_get_widget (ui_manager, "/MainMenu");gtk_box_pack_start (GTK_BOX (vbox), menubar, FALSE, FALSE, 0);gtk_widget_show_all (window);      </pre></div></div><br class="example-break"><div class="example"><a name="gnomeuiinfo-icons"></a><p class="title"><b>Example&#160;60.&#160;Registering the icons</b></p><div class="example-contents"><p>	Here we show how the <code class="function">register_my_stock_icons()</code> function        used in the previous example could look like.      </p><pre class="programlisting">static struct {   gchar *filename;  gchar *stock_id;} stock_icons[] = {  { "high-quality.png", "my-stock-high-quality" },  { "normal-quality.png", "my-stock-normal-quality" },  { "low-quality.png", "my-stock-low-quality" },}; static gint n_stock_icons = G_N_ELEMENTS (stock_icons);static voidregister_my_stock_icons (void){   GtkIconFactory *icon_factory;   GtkIconSet *icon_set;    GtkIconSource *icon_source;   gint i;   icon_factory = gtk_icon_factory_new ();      for (i = 0; i &lt; n_stock_icons; i++)     {      icon_set = gtk_icon_set_new ();      icon_source = gtk_icon_source_new ();      gtk_icon_source_set_filename (icon_source, stock_icons[i].filename);      gtk_icon_set_add_source (icon_set, icon_source);      gtk_icon_source_free (icon_source);      gtk_icon_factory_add (icon_factory, stock_icons[i].stock_id, icon_set);      gtk_icon_set_unref (icon_set);    }   gtk_icon_factory_add_default (icon_factory);    g_object_unref (icon_factory);}      </pre></div></div><br class="example-break"></div></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -