kconfig: gconf: migrate to GTK 3

This commit switches from GTK 2.x to GTK 3, applying the following
necessary changes:

 - Do not include individual headers
 - GtkObject is gone
 - Convert Glade to GtkBuilder

Link: https://docs.gtk.org/gtk3/migrating-2to3.html
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Acked-by: Randy Dunlap <rdunlap@infradead.org>
Tested-by: Randy Dunlap <rdunlap@infradead.org>
This commit is contained in:
Masahiro Yamada 2025-06-30 03:43:31 +09:00
parent e06030c1ae
commit 9755d167bf
3 changed files with 135 additions and 146 deletions

View File

@ -6,7 +6,7 @@ set -eu
cflags=$1 cflags=$1
libs=$2 libs=$2
PKG="gtk+-2.0 gmodule-2.0 libglade-2.0" PKG=gtk+-3.0
if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then
echo >&2 "*" echo >&2 "*"
@ -18,18 +18,11 @@ fi
if ! ${HOSTPKG_CONFIG} --exists $PKG; then if ! ${HOSTPKG_CONFIG} --exists $PKG; then
echo >&2 "*" echo >&2 "*"
echo >&2 "* Unable to find the GTK+ installation. Please make sure that" echo >&2 "* Unable to find the GTK+ installation. Please make sure that"
echo >&2 "* the GTK+ 2.0 development package is correctly installed." echo >&2 "* the GTK 3 development package is correctly installed."
echo >&2 "* You need $PKG" echo >&2 "* You need $PKG"
echo >&2 "*" echo >&2 "*"
exit 1 exit 1
fi fi
if ! ${HOSTPKG_CONFIG} --atleast-version=2.0.0 gtk+-2.0; then
echo >&2 "*"
echo >&2 "* GTK+ is present but version >= 2.0.0 is required."
echo >&2 "*"
exit 1
fi
${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags} ${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags}
${HOSTPKG_CONFIG} --libs ${PKG} > ${libs} ${HOSTPKG_CONFIG} --libs ${PKG} > ${libs}

View File

@ -7,10 +7,7 @@
#include "lkc.h" #include "lkc.h"
#include "images.h" #include "images.h"
#include <glade/glade.h>
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <glib.h>
#include <gdk/gdkkeysyms.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
@ -601,7 +598,7 @@ static void on_expand_clicked(GtkButton *button, gpointer user_data)
/* Main Windows Callbacks */ /* Main Windows Callbacks */
static void on_window1_destroy(GtkObject *object, gpointer user_data) static void on_window1_destroy(GtkWidget *widget, gpointer user_data)
{ {
gtk_main_quit(); gtk_main_quit();
} }
@ -1001,15 +998,15 @@ static void replace_button_icon(GtkWidget *widget, const char * const xpm[])
static void init_main_window(const gchar *glade_file) static void init_main_window(const gchar *glade_file)
{ {
GladeXML *xml; GtkBuilder *builder;
GtkWidget *widget; GtkWidget *widget;
GtkTextBuffer *txtbuf; GtkTextBuffer *txtbuf;
xml = glade_xml_new(glade_file, "window1", NULL); builder = gtk_builder_new_from_file(glade_file);
if (!xml) if (!builder)
g_error("GUI loading failed !\n"); g_error("GUI loading failed !\n");
main_wnd = glade_xml_get_widget(xml, "window1"); main_wnd = GTK_WIDGET(gtk_builder_get_object(builder, "window1"));
g_signal_connect(main_wnd, "destroy", g_signal_connect(main_wnd, "destroy",
G_CALLBACK(on_window1_destroy), NULL); G_CALLBACK(on_window1_destroy), NULL);
g_signal_connect(main_wnd, "configure-event", g_signal_connect(main_wnd, "configure-event",
@ -1017,9 +1014,9 @@ static void init_main_window(const gchar *glade_file)
g_signal_connect(main_wnd, "delete_event", g_signal_connect(main_wnd, "delete_event",
G_CALLBACK(on_window1_delete_event), NULL); G_CALLBACK(on_window1_delete_event), NULL);
hpaned = glade_xml_get_widget(xml, "hpaned1"); hpaned = GTK_WIDGET(gtk_builder_get_object(builder, "hpaned1"));
vpaned = glade_xml_get_widget(xml, "vpaned1"); vpaned = GTK_WIDGET(gtk_builder_get_object(builder, "vpaned1"));
tree1_w = glade_xml_get_widget(xml, "treeview1"); tree1_w = GTK_WIDGET(gtk_builder_get_object(builder, "treeview1"));
g_signal_connect(tree1_w, "cursor_changed", g_signal_connect(tree1_w, "cursor_changed",
G_CALLBACK(on_treeview2_cursor_changed), NULL); G_CALLBACK(on_treeview2_cursor_changed), NULL);
g_signal_connect(tree1_w, "button_press_event", g_signal_connect(tree1_w, "button_press_event",
@ -1027,7 +1024,7 @@ static void init_main_window(const gchar *glade_file)
g_signal_connect(tree1_w, "key_press_event", g_signal_connect(tree1_w, "key_press_event",
G_CALLBACK(on_treeview2_key_press_event), NULL); G_CALLBACK(on_treeview2_key_press_event), NULL);
tree2_w = glade_xml_get_widget(xml, "treeview2"); tree2_w = GTK_WIDGET(gtk_builder_get_object(builder, "treeview2"));
g_signal_connect(tree2_w, "cursor_changed", g_signal_connect(tree2_w, "cursor_changed",
G_CALLBACK(on_treeview2_cursor_changed), NULL); G_CALLBACK(on_treeview2_cursor_changed), NULL);
g_signal_connect(tree2_w, "button_press_event", g_signal_connect(tree2_w, "button_press_event",
@ -1035,101 +1032,101 @@ static void init_main_window(const gchar *glade_file)
g_signal_connect(tree2_w, "key_press_event", g_signal_connect(tree2_w, "key_press_event",
G_CALLBACK(on_treeview2_key_press_event), NULL); G_CALLBACK(on_treeview2_key_press_event), NULL);
text_w = glade_xml_get_widget(xml, "textview3"); text_w = GTK_WIDGET(gtk_builder_get_object(builder, "textview3"));
/* menubar */ /* menubar */
widget = glade_xml_get_widget(xml, "load1"); widget = GTK_WIDGET(gtk_builder_get_object(builder, "load1"));
g_signal_connect(widget, "activate", g_signal_connect(widget, "activate",
G_CALLBACK(on_load1_activate), NULL); G_CALLBACK(on_load1_activate), NULL);
save_menu_item = glade_xml_get_widget(xml, "save1"); save_menu_item = GTK_WIDGET(gtk_builder_get_object(builder, "save1"));
g_signal_connect(save_menu_item, "activate", g_signal_connect(save_menu_item, "activate",
G_CALLBACK(on_save_activate), NULL); G_CALLBACK(on_save_activate), NULL);
widget = glade_xml_get_widget(xml, "save_as1"); widget = GTK_WIDGET(gtk_builder_get_object(builder, "save_as1"));
g_signal_connect(widget, "activate", g_signal_connect(widget, "activate",
G_CALLBACK(on_save_as1_activate), NULL); G_CALLBACK(on_save_as1_activate), NULL);
widget = glade_xml_get_widget(xml, "quit1"); widget = GTK_WIDGET(gtk_builder_get_object(builder, "quit1"));
g_signal_connect(widget, "activate", g_signal_connect(widget, "activate",
G_CALLBACK(on_quit1_activate), NULL); G_CALLBACK(on_quit1_activate), NULL);
widget = glade_xml_get_widget(xml, "show_name1"); widget = GTK_WIDGET(gtk_builder_get_object(builder, "show_name1"));
g_signal_connect(widget, "activate", g_signal_connect(widget, "activate",
G_CALLBACK(on_show_name1_activate), NULL); G_CALLBACK(on_show_name1_activate), NULL);
gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget, gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget,
show_name); show_name);
widget = glade_xml_get_widget(xml, "show_range1"); widget = GTK_WIDGET(gtk_builder_get_object(builder, "show_range1"));
g_signal_connect(widget, "activate", g_signal_connect(widget, "activate",
G_CALLBACK(on_show_range1_activate), NULL); G_CALLBACK(on_show_range1_activate), NULL);
gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget, gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget,
show_range); show_range);
widget = glade_xml_get_widget(xml, "show_data1"); widget = GTK_WIDGET(gtk_builder_get_object(builder, "show_data1"));
g_signal_connect(widget, "activate", g_signal_connect(widget, "activate",
G_CALLBACK(on_show_data1_activate), NULL); G_CALLBACK(on_show_data1_activate), NULL);
gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget, gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget,
show_value); show_value);
widget = glade_xml_get_widget(xml, "set_option_mode1"); widget = GTK_WIDGET(gtk_builder_get_object(builder, "set_option_mode1"));
g_signal_connect(widget, "activate", g_signal_connect(widget, "activate",
G_CALLBACK(on_set_option_mode1_activate), NULL); G_CALLBACK(on_set_option_mode1_activate), NULL);
widget = glade_xml_get_widget(xml, "set_option_mode2"); widget = GTK_WIDGET(gtk_builder_get_object(builder, "set_option_mode2"));
g_signal_connect(widget, "activate", g_signal_connect(widget, "activate",
G_CALLBACK(on_set_option_mode2_activate), NULL); G_CALLBACK(on_set_option_mode2_activate), NULL);
widget = glade_xml_get_widget(xml, "set_option_mode3"); widget = GTK_WIDGET(gtk_builder_get_object(builder, "set_option_mode3"));
g_signal_connect(widget, "activate", g_signal_connect(widget, "activate",
G_CALLBACK(on_set_option_mode3_activate), NULL); G_CALLBACK(on_set_option_mode3_activate), NULL);
widget = glade_xml_get_widget(xml, "introduction1"); widget = GTK_WIDGET(gtk_builder_get_object(builder, "introduction1"));
g_signal_connect(widget, "activate", g_signal_connect(widget, "activate",
G_CALLBACK(on_introduction1_activate), NULL); G_CALLBACK(on_introduction1_activate), NULL);
widget = glade_xml_get_widget(xml, "about1"); widget = GTK_WIDGET(gtk_builder_get_object(builder, "about1"));
g_signal_connect(widget, "activate", g_signal_connect(widget, "activate",
G_CALLBACK(on_about1_activate), NULL); G_CALLBACK(on_about1_activate), NULL);
widget = glade_xml_get_widget(xml, "license1"); widget = GTK_WIDGET(gtk_builder_get_object(builder, "license1"));
g_signal_connect(widget, "activate", g_signal_connect(widget, "activate",
G_CALLBACK(on_license1_activate), NULL); G_CALLBACK(on_license1_activate), NULL);
/* toolbar */ /* toolbar */
back_btn = glade_xml_get_widget(xml, "button1"); back_btn = GTK_WIDGET(gtk_builder_get_object(builder, "button1"));
g_signal_connect(back_btn, "clicked", g_signal_connect(back_btn, "clicked",
G_CALLBACK(on_back_clicked), NULL); G_CALLBACK(on_back_clicked), NULL);
gtk_widget_set_sensitive(back_btn, FALSE); gtk_widget_set_sensitive(back_btn, FALSE);
widget = glade_xml_get_widget(xml, "button2"); widget = GTK_WIDGET(gtk_builder_get_object(builder, "button2"));
g_signal_connect(widget, "clicked", g_signal_connect(widget, "clicked",
G_CALLBACK(on_load_clicked), NULL); G_CALLBACK(on_load_clicked), NULL);
save_btn = glade_xml_get_widget(xml, "button3"); save_btn = GTK_WIDGET(gtk_builder_get_object(builder, "button3"));
g_signal_connect(save_btn, "clicked", g_signal_connect(save_btn, "clicked",
G_CALLBACK(on_save_clicked), NULL); G_CALLBACK(on_save_clicked), NULL);
single_btn = glade_xml_get_widget(xml, "button4"); single_btn = GTK_WIDGET(gtk_builder_get_object(builder, "button4"));
g_signal_connect(single_btn, "clicked", g_signal_connect(single_btn, "clicked",
G_CALLBACK(on_single_clicked), NULL); G_CALLBACK(on_single_clicked), NULL);
replace_button_icon(single_btn, xpm_single_view); replace_button_icon(single_btn, xpm_single_view);
split_btn = glade_xml_get_widget(xml, "button5"); split_btn = GTK_WIDGET(gtk_builder_get_object(builder, "button5"));
g_signal_connect(split_btn, "clicked", g_signal_connect(split_btn, "clicked",
G_CALLBACK(on_split_clicked), NULL); G_CALLBACK(on_split_clicked), NULL);
replace_button_icon(split_btn, xpm_split_view); replace_button_icon(split_btn, xpm_split_view);
full_btn = glade_xml_get_widget(xml, "button6"); full_btn = GTK_WIDGET(gtk_builder_get_object(builder, "button6"));
g_signal_connect(full_btn, "clicked", g_signal_connect(full_btn, "clicked",
G_CALLBACK(on_full_clicked), NULL); G_CALLBACK(on_full_clicked), NULL);
replace_button_icon(full_btn, xpm_tree_view); replace_button_icon(full_btn, xpm_tree_view);
widget = glade_xml_get_widget(xml, "button7"); widget = GTK_WIDGET(gtk_builder_get_object(builder, "button7"));
g_signal_connect(widget, "clicked", g_signal_connect(widget, "clicked",
G_CALLBACK(on_collapse_clicked), NULL); G_CALLBACK(on_collapse_clicked), NULL);
widget = glade_xml_get_widget(xml, "button8"); widget = GTK_WIDGET(gtk_builder_get_object(builder, "button8"));
g_signal_connect(widget, "clicked", g_signal_connect(widget, "clicked",
G_CALLBACK(on_expand_clicked), NULL); G_CALLBACK(on_expand_clicked), NULL);
@ -1144,7 +1141,9 @@ static void init_main_window(const gchar *glade_file)
gtk_window_set_title(GTK_WINDOW(main_wnd), rootmenu.prompt->text); gtk_window_set_title(GTK_WINDOW(main_wnd), rootmenu.prompt->text);
gtk_widget_show(main_wnd); gtk_widget_show_all(main_wnd);
g_object_unref(builder);
conf_set_changed_callback(conf_changed); conf_set_changed_callback(conf_changed);
} }
@ -1322,7 +1321,6 @@ int main(int ac, char *av[])
/* GTK stuffs */ /* GTK stuffs */
gtk_init(&ac, &av); gtk_init(&ac, &av);
glade_init();
/* Determine GUI path */ /* Determine GUI path */
env = getenv(SRCTREE); env = getenv(SRCTREE);

View File

@ -1,8 +1,8 @@
<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> <?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
<glade-interface> <interface>
<widget class="GtkWindow" id="window1"> <object class="GtkWindow" id="window1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="title" translatable="yes">Gtk Kernel Configurator</property> <property name="title" translatable="yes">Gtk Kernel Configurator</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property> <property name="type">GTK_WINDOW_TOPLEVEL</property>
@ -19,193 +19,193 @@
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<child> <child>
<widget class="GtkVBox" id="vbox1"> <object class="GtkVBox" id="vbox1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="homogeneous">False</property> <property name="homogeneous">False</property>
<property name="spacing">0</property> <property name="spacing">0</property>
<child> <child>
<widget class="GtkMenuBar" id="menubar1"> <object class="GtkMenuBar" id="menubar1">
<property name="visible">True</property> <property name="visible">True</property>
<child> <child>
<widget class="GtkMenuItem" id="file1"> <object class="GtkMenuItem" id="file1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">_File</property> <property name="label" translatable="yes">_File</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<child> <child type="submenu">
<widget class="GtkMenu" id="file1_menu"> <object class="GtkMenu" id="file1_menu">
<child> <child>
<widget class="GtkImageMenuItem" id="load1"> <object class="GtkImageMenuItem" id="load1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="tooltip-text" translatable="yes">Load a config file</property> <property name="tooltip-text" translatable="yes">Load a config file</property>
<property name="label" translatable="yes">_Load</property> <property name="label" translatable="yes">_Load</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<accelerator key="L" modifiers="GDK_CONTROL_MASK" signal="activate"/> <accelerator key="L" modifiers="GDK_CONTROL_MASK" signal="activate"/>
</widget> </object>
</child> </child>
<child> <child>
<widget class="GtkImageMenuItem" id="save1"> <object class="GtkImageMenuItem" id="save1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="tooltip-text" translatable="yes">Save the config in .config</property> <property name="tooltip-text" translatable="yes">Save the config in .config</property>
<property name="label" translatable="yes">_Save</property> <property name="label" translatable="yes">_Save</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<accelerator key="S" modifiers="GDK_CONTROL_MASK" signal="activate"/> <accelerator key="S" modifiers="GDK_CONTROL_MASK" signal="activate"/>
</widget> </object>
</child> </child>
<child> <child>
<widget class="GtkImageMenuItem" id="save_as1"> <object class="GtkImageMenuItem" id="save_as1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="tooltip-text" translatable="yes">Save the config in a file</property> <property name="tooltip-text" translatable="yes">Save the config in a file</property>
<property name="label" translatable="yes">Save _as</property> <property name="label" translatable="yes">Save _as</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
</widget> </object>
</child> </child>
<child> <child>
<widget class="GtkSeparatorMenuItem" id="separator1"> <object class="GtkSeparatorMenuItem" id="separator1">
<property name="visible">True</property> <property name="visible">True</property>
</widget> </object>
</child> </child>
<child> <child>
<widget class="GtkImageMenuItem" id="quit1"> <object class="GtkImageMenuItem" id="quit1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">_Quit</property> <property name="label" translatable="yes">_Quit</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<accelerator key="Q" modifiers="GDK_CONTROL_MASK" signal="activate"/> <accelerator key="Q" modifiers="GDK_CONTROL_MASK" signal="activate"/>
</widget> </object>
</child> </child>
</widget> </object>
</child> </child>
</widget> </object>
</child> </child>
<child> <child>
<widget class="GtkMenuItem" id="options1"> <object class="GtkMenuItem" id="options1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">_Options</property> <property name="label" translatable="yes">_Options</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<child> <child type="submenu">
<widget class="GtkMenu" id="options1_menu"> <object class="GtkMenu" id="options1_menu">
<child> <child>
<widget class="GtkCheckMenuItem" id="show_name1"> <object class="GtkCheckMenuItem" id="show_name1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="tooltip-text" translatable="yes">Show name</property> <property name="tooltip-text" translatable="yes">Show name</property>
<property name="label" translatable="yes">Show _name</property> <property name="label" translatable="yes">Show _name</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">False</property> <property name="active">False</property>
</widget> </object>
</child> </child>
<child> <child>
<widget class="GtkCheckMenuItem" id="show_range1"> <object class="GtkCheckMenuItem" id="show_range1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="tooltip-text" translatable="yes">Show range (Y/M/N)</property> <property name="tooltip-text" translatable="yes">Show range (Y/M/N)</property>
<property name="label" translatable="yes">Show _range</property> <property name="label" translatable="yes">Show _range</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">False</property> <property name="active">False</property>
</widget> </object>
</child> </child>
<child> <child>
<widget class="GtkCheckMenuItem" id="show_data1"> <object class="GtkCheckMenuItem" id="show_data1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="tooltip-text" translatable="yes">Show value of the option</property> <property name="tooltip-text" translatable="yes">Show value of the option</property>
<property name="label" translatable="yes">Show _data</property> <property name="label" translatable="yes">Show _data</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">False</property> <property name="active">False</property>
</widget> </object>
</child> </child>
<child> <child>
<widget class="GtkSeparatorMenuItem" id="separator2"> <object class="GtkSeparatorMenuItem" id="separator2">
<property name="visible">True</property> <property name="visible">True</property>
</widget> </object>
</child> </child>
<child> <child>
<widget class="GtkRadioMenuItem" id="set_option_mode1"> <object class="GtkRadioMenuItem" id="set_option_mode1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="tooltip-text" translatable="yes">Show normal options</property> <property name="tooltip-text" translatable="yes">Show normal options</property>
<property name="label" translatable="yes">Show normal options</property> <property name="label" translatable="yes">Show normal options</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">True</property> <property name="active">True</property>
</widget> </object>
</child> </child>
<child> <child>
<widget class="GtkRadioMenuItem" id="set_option_mode2"> <object class="GtkRadioMenuItem" id="set_option_mode2">
<property name="visible">True</property> <property name="visible">True</property>
<property name="tooltip-text" translatable="yes">Show all options</property> <property name="tooltip-text" translatable="yes">Show all options</property>
<property name="label" translatable="yes">Show all _options</property> <property name="label" translatable="yes">Show all _options</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">False</property> <property name="active">False</property>
<property name="group">set_option_mode1</property> <property name="group">set_option_mode1</property>
</widget> </object>
</child> </child>
<child> <child>
<widget class="GtkRadioMenuItem" id="set_option_mode3"> <object class="GtkRadioMenuItem" id="set_option_mode3">
<property name="visible">True</property> <property name="visible">True</property>
<property name="tooltip-text" translatable="yes">Show all options with prompts</property> <property name="tooltip-text" translatable="yes">Show all options with prompts</property>
<property name="label" translatable="yes">Show all prompt options</property> <property name="label" translatable="yes">Show all prompt options</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="active">False</property> <property name="active">False</property>
<property name="group">set_option_mode1</property> <property name="group">set_option_mode1</property>
</widget> </object>
</child> </child>
</widget> </object>
</child> </child>
</widget> </object>
</child> </child>
<child> <child>
<widget class="GtkMenuItem" id="help1"> <object class="GtkMenuItem" id="help1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">_Help</property> <property name="label" translatable="yes">_Help</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<child> <child type="submenu">
<widget class="GtkMenu" id="help1_menu"> <object class="GtkMenu" id="help1_menu">
<child> <child>
<widget class="GtkImageMenuItem" id="introduction1"> <object class="GtkImageMenuItem" id="introduction1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">_Introduction</property> <property name="label" translatable="yes">_Introduction</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<accelerator key="I" modifiers="GDK_CONTROL_MASK" signal="activate"/> <accelerator key="I" modifiers="GDK_CONTROL_MASK" signal="activate"/>
</widget> </object>
</child> </child>
<child> <child>
<widget class="GtkImageMenuItem" id="about1"> <object class="GtkImageMenuItem" id="about1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">_About</property> <property name="label" translatable="yes">_About</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<accelerator key="A" modifiers="GDK_CONTROL_MASK" signal="activate"/> <accelerator key="A" modifiers="GDK_CONTROL_MASK" signal="activate"/>
</widget> </object>
</child> </child>
<child> <child>
<widget class="GtkImageMenuItem" id="license1"> <object class="GtkImageMenuItem" id="license1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="label" translatable="yes">_License</property> <property name="label" translatable="yes">_License</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
</widget> </object>
</child> </child>
</widget> </object>
</child> </child>
</widget> </object>
</child> </child>
</widget> </object>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
<property name="expand">False</property> <property name="expand">False</property>
@ -214,14 +214,14 @@
</child> </child>
<child> <child>
<widget class="GtkToolbar" id="toolbar1"> <object class="GtkToolbar" id="toolbar1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="orientation">GTK_ORIENTATION_HORIZONTAL</property> <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
<property name="toolbar_style">GTK_TOOLBAR_BOTH</property> <property name="toolbar_style">GTK_TOOLBAR_BOTH</property>
<property name="show_arrow">True</property> <property name="show_arrow">True</property>
<child> <child>
<widget class="GtkToolButton" id="button1"> <object class="GtkToolButton" id="button1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="tooltip-text" translatable="yes">Goes up one level (single view)</property> <property name="tooltip-text" translatable="yes">Goes up one level (single view)</property>
<property name="label" translatable="yes">Back</property> <property name="label" translatable="yes">Back</property>
@ -230,7 +230,7 @@
<property name="visible_horizontal">True</property> <property name="visible_horizontal">True</property>
<property name="visible_vertical">True</property> <property name="visible_vertical">True</property>
<property name="is_important">False</property> <property name="is_important">False</property>
</widget> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="homogeneous">True</property> <property name="homogeneous">True</property>
@ -238,18 +238,18 @@
</child> </child>
<child> <child>
<widget class="GtkToolItem" id="toolitem1"> <object class="GtkToolItem" id="toolitem1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="visible_horizontal">True</property> <property name="visible_horizontal">True</property>
<property name="visible_vertical">True</property> <property name="visible_vertical">True</property>
<property name="is_important">False</property> <property name="is_important">False</property>
<child> <child>
<widget class="GtkVSeparator" id="vseparator1"> <object class="GtkVSeparator" id="vseparator1">
<property name="visible">True</property> <property name="visible">True</property>
</widget> </object>
</child> </child>
</widget> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="homogeneous">False</property> <property name="homogeneous">False</property>
@ -257,7 +257,7 @@
</child> </child>
<child> <child>
<widget class="GtkToolButton" id="button2"> <object class="GtkToolButton" id="button2">
<property name="visible">True</property> <property name="visible">True</property>
<property name="tooltip-text" translatable="yes">Load a config file</property> <property name="tooltip-text" translatable="yes">Load a config file</property>
<property name="label" translatable="yes">Load</property> <property name="label" translatable="yes">Load</property>
@ -266,7 +266,7 @@
<property name="visible_horizontal">True</property> <property name="visible_horizontal">True</property>
<property name="visible_vertical">True</property> <property name="visible_vertical">True</property>
<property name="is_important">False</property> <property name="is_important">False</property>
</widget> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="homogeneous">True</property> <property name="homogeneous">True</property>
@ -274,7 +274,7 @@
</child> </child>
<child> <child>
<widget class="GtkToolButton" id="button3"> <object class="GtkToolButton" id="button3">
<property name="visible">True</property> <property name="visible">True</property>
<property name="tooltip-text" translatable="yes">Save a config file</property> <property name="tooltip-text" translatable="yes">Save a config file</property>
<property name="label" translatable="yes">Save</property> <property name="label" translatable="yes">Save</property>
@ -283,7 +283,7 @@
<property name="visible_horizontal">True</property> <property name="visible_horizontal">True</property>
<property name="visible_vertical">True</property> <property name="visible_vertical">True</property>
<property name="is_important">False</property> <property name="is_important">False</property>
</widget> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="homogeneous">True</property> <property name="homogeneous">True</property>
@ -291,18 +291,18 @@
</child> </child>
<child> <child>
<widget class="GtkToolItem" id="toolitem2"> <object class="GtkToolItem" id="toolitem2">
<property name="visible">True</property> <property name="visible">True</property>
<property name="visible_horizontal">True</property> <property name="visible_horizontal">True</property>
<property name="visible_vertical">True</property> <property name="visible_vertical">True</property>
<property name="is_important">False</property> <property name="is_important">False</property>
<child> <child>
<widget class="GtkVSeparator" id="vseparator2"> <object class="GtkVSeparator" id="vseparator2">
<property name="visible">True</property> <property name="visible">True</property>
</widget> </object>
</child> </child>
</widget> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="homogeneous">False</property> <property name="homogeneous">False</property>
@ -310,7 +310,7 @@
</child> </child>
<child> <child>
<widget class="GtkToolButton" id="button4"> <object class="GtkToolButton" id="button4">
<property name="visible">True</property> <property name="visible">True</property>
<property name="tooltip-text" translatable="yes">Single view</property> <property name="tooltip-text" translatable="yes">Single view</property>
<property name="label" translatable="yes">Single</property> <property name="label" translatable="yes">Single</property>
@ -319,7 +319,7 @@
<property name="visible_horizontal">True</property> <property name="visible_horizontal">True</property>
<property name="visible_vertical">True</property> <property name="visible_vertical">True</property>
<property name="is_important">False</property> <property name="is_important">False</property>
</widget> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="homogeneous">True</property> <property name="homogeneous">True</property>
@ -327,7 +327,7 @@
</child> </child>
<child> <child>
<widget class="GtkToolButton" id="button5"> <object class="GtkToolButton" id="button5">
<property name="visible">True</property> <property name="visible">True</property>
<property name="tooltip-text" translatable="yes">Split view</property> <property name="tooltip-text" translatable="yes">Split view</property>
<property name="label" translatable="yes">Split</property> <property name="label" translatable="yes">Split</property>
@ -336,7 +336,7 @@
<property name="visible_horizontal">True</property> <property name="visible_horizontal">True</property>
<property name="visible_vertical">True</property> <property name="visible_vertical">True</property>
<property name="is_important">False</property> <property name="is_important">False</property>
</widget> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="homogeneous">True</property> <property name="homogeneous">True</property>
@ -344,7 +344,7 @@
</child> </child>
<child> <child>
<widget class="GtkToolButton" id="button6"> <object class="GtkToolButton" id="button6">
<property name="visible">True</property> <property name="visible">True</property>
<property name="tooltip-text" translatable="yes">Full view</property> <property name="tooltip-text" translatable="yes">Full view</property>
<property name="label" translatable="yes">Full</property> <property name="label" translatable="yes">Full</property>
@ -353,7 +353,7 @@
<property name="visible_horizontal">True</property> <property name="visible_horizontal">True</property>
<property name="visible_vertical">True</property> <property name="visible_vertical">True</property>
<property name="is_important">False</property> <property name="is_important">False</property>
</widget> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="homogeneous">True</property> <property name="homogeneous">True</property>
@ -361,18 +361,18 @@
</child> </child>
<child> <child>
<widget class="GtkToolItem" id="toolitem3"> <object class="GtkToolItem" id="toolitem3">
<property name="visible">True</property> <property name="visible">True</property>
<property name="visible_horizontal">True</property> <property name="visible_horizontal">True</property>
<property name="visible_vertical">True</property> <property name="visible_vertical">True</property>
<property name="is_important">False</property> <property name="is_important">False</property>
<child> <child>
<widget class="GtkVSeparator" id="vseparator3"> <object class="GtkVSeparator" id="vseparator3">
<property name="visible">True</property> <property name="visible">True</property>
</widget> </object>
</child> </child>
</widget> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="homogeneous">False</property> <property name="homogeneous">False</property>
@ -380,7 +380,7 @@
</child> </child>
<child> <child>
<widget class="GtkToolButton" id="button7"> <object class="GtkToolButton" id="button7">
<property name="visible">True</property> <property name="visible">True</property>
<property name="tooltip-text" translatable="yes">Collapse the whole tree in the right frame</property> <property name="tooltip-text" translatable="yes">Collapse the whole tree in the right frame</property>
<property name="label" translatable="yes">Collapse</property> <property name="label" translatable="yes">Collapse</property>
@ -389,7 +389,7 @@
<property name="visible_horizontal">True</property> <property name="visible_horizontal">True</property>
<property name="visible_vertical">True</property> <property name="visible_vertical">True</property>
<property name="is_important">False</property> <property name="is_important">False</property>
</widget> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="homogeneous">True</property> <property name="homogeneous">True</property>
@ -397,7 +397,7 @@
</child> </child>
<child> <child>
<widget class="GtkToolButton" id="button8"> <object class="GtkToolButton" id="button8">
<property name="visible">True</property> <property name="visible">True</property>
<property name="tooltip-text" translatable="yes">Expand the whole tree in the right frame</property> <property name="tooltip-text" translatable="yes">Expand the whole tree in the right frame</property>
<property name="label" translatable="yes">Expand</property> <property name="label" translatable="yes">Expand</property>
@ -406,13 +406,13 @@
<property name="visible_horizontal">True</property> <property name="visible_horizontal">True</property>
<property name="visible_vertical">True</property> <property name="visible_vertical">True</property>
<property name="is_important">False</property> <property name="is_important">False</property>
</widget> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="homogeneous">True</property> <property name="homogeneous">True</property>
</packing> </packing>
</child> </child>
</widget> </object>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
<property name="expand">False</property> <property name="expand">False</property>
@ -421,14 +421,13 @@
</child> </child>
<child> <child>
<widget class="GtkHPaned" id="hpaned1"> <object class="GtkHPaned" id="hpaned1">
<property name="width_request">1</property> <property name="width_request">1</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="position">0</property>
<child> <child>
<widget class="GtkScrolledWindow" id="scrolledwindow1"> <object class="GtkScrolledWindow" id="scrolledwindow1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
@ -436,16 +435,16 @@
<property name="window_placement">GTK_CORNER_TOP_LEFT</property> <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<child> <child>
<widget class="GtkTreeView" id="treeview1"> <object class="GtkTreeView" id="treeview1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="headers_visible">True</property> <property name="headers_visible">True</property>
<property name="rules_hint">False</property> <property name="rules_hint">False</property>
<property name="reorderable">False</property> <property name="reorderable">False</property>
<property name="enable_search">False</property> <property name="enable_search">False</property>
</widget> </object>
</child> </child>
</widget> </object>
<packing> <packing>
<property name="shrink">True</property> <property name="shrink">True</property>
<property name="resize">False</property> <property name="resize">False</property>
@ -453,13 +452,12 @@
</child> </child>
<child> <child>
<widget class="GtkVPaned" id="vpaned1"> <object class="GtkVPaned" id="vpaned1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="position">0</property>
<child> <child>
<widget class="GtkScrolledWindow" id="scrolledwindow2"> <object class="GtkScrolledWindow" id="scrolledwindow2">
<property name="visible">True</property> <property name="visible">True</property>
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
@ -467,7 +465,7 @@
<property name="window_placement">GTK_CORNER_TOP_LEFT</property> <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<child> <child>
<widget class="GtkTreeView" id="treeview2"> <object class="GtkTreeView" id="treeview2">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="has_focus">True</property> <property name="has_focus">True</property>
@ -475,9 +473,9 @@
<property name="rules_hint">False</property> <property name="rules_hint">False</property>
<property name="reorderable">False</property> <property name="reorderable">False</property>
<property name="enable_search">False</property> <property name="enable_search">False</property>
</widget> </object>
</child> </child>
</widget> </object>
<packing> <packing>
<property name="shrink">True</property> <property name="shrink">True</property>
<property name="resize">False</property> <property name="resize">False</property>
@ -485,7 +483,7 @@
</child> </child>
<child> <child>
<widget class="GtkScrolledWindow" id="scrolledwindow3"> <object class="GtkScrolledWindow" id="scrolledwindow3">
<property name="visible">True</property> <property name="visible">True</property>
<property name="hscrollbar_policy">GTK_POLICY_NEVER</property> <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
@ -493,7 +491,7 @@
<property name="window_placement">GTK_CORNER_TOP_LEFT</property> <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
<child> <child>
<widget class="GtkTextView" id="textview3"> <object class="GtkTextView" id="textview3">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="editable">False</property> <property name="editable">False</property>
@ -508,29 +506,29 @@
<property name="left_margin">0</property> <property name="left_margin">0</property>
<property name="right_margin">0</property> <property name="right_margin">0</property>
<property name="indent">0</property> <property name="indent">0</property>
</widget> </object>
</child> </child>
</widget> </object>
<packing> <packing>
<property name="shrink">True</property> <property name="shrink">True</property>
<property name="resize">True</property> <property name="resize">True</property>
</packing> </packing>
</child> </child>
</widget> </object>
<packing> <packing>
<property name="shrink">True</property> <property name="shrink">True</property>
<property name="resize">True</property> <property name="resize">True</property>
</packing> </packing>
</child> </child>
</widget> </object>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
<property name="expand">True</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
</packing> </packing>
</child> </child>
</widget> </object>
</child> </child>
</widget> </object>
</glade-interface> </interface>