diff options
author | Jiri Moskovcak <jmoskovc@redhat.com> | 2009-09-09 16:41:11 +0200 |
---|---|---|
committer | Jiri Moskovcak <jmoskovc@redhat.com> | 2009-09-09 16:41:11 +0200 |
commit | 45a0e08efabebe77a1ce6ce45510320e2278009f (patch) | |
tree | f33da998073cf7e68872b5232db878efc84734ef /src | |
parent | 320b7eae1821cb3f92a8e19d6ea6fa70be552d29 (diff) | |
download | abrt-45a0e08efabebe77a1ce6ce45510320e2278009f.tar.gz abrt-45a0e08efabebe77a1ce6ce45510320e2278009f.tar.xz abrt-45a0e08efabebe77a1ce6ce45510320e2278009f.zip |
GUI: more global settings (still "read-only")
Diffstat (limited to 'src')
-rw-r--r-- | src/Gui/CCMainWindow.py | 4 | ||||
-rw-r--r-- | src/Gui/PluginList.py | 6 | ||||
-rw-r--r-- | src/Gui/SettingsDialog.py | 231 | ||||
-rw-r--r-- | src/Gui/ccgui.glade | 11 | ||||
-rw-r--r-- | src/Gui/settings.GtkBuilder | 429 |
5 files changed, 593 insertions, 88 deletions
diff --git a/src/Gui/CCMainWindow.py b/src/Gui/CCMainWindow.py index 4fe07751..63d9b0b6 100644 --- a/src/Gui/CCMainWindow.py +++ b/src/Gui/CCMainWindow.py @@ -108,8 +108,8 @@ class MainWindow(): self.wTree.get_widget("bReport").connect("clicked", self.on_bReport_clicked) self.wTree.get_widget("miQuit").connect("activate", self.on_bQuit_clicked) self.wTree.get_widget("miAbout").connect("activate", self.on_miAbout_clicked) - self.wTree.get_widget("miPreferences").connect("activate", self.on_miPreferences_clicked) - self.wTree.get_widget("miSettings").connect("activate", self.on_miSettings_clicked) + self.wTree.get_widget("miPlugins").connect("activate", self.on_miPreferences_clicked) + self.wTree.get_widget("miPreferences").connect("activate", self.on_miSettings_clicked) # connect handlers for daemon signals self.ccdaemon.connect("crash", self.on_data_changed_cb, None) self.ccdaemon.connect("analyze-complete", self.on_analyze_complete_cb, self.pBarWindow) diff --git a/src/Gui/PluginList.py b/src/Gui/PluginList.py index 76bdf81e..005bffee 100644 --- a/src/Gui/PluginList.py +++ b/src/Gui/PluginList.py @@ -40,6 +40,12 @@ class PluginInfoList(list): def getActionPlugins(self): return [x for x in self if x["Enabled"] == 'yes' and x["Type"] == 'Action'] + + def getDatabasePlugins(self): + return [x for x in self if x["Enabled"] == 'yes' and x["Type"] == 'Database'] + + def getAnalyzerPlugins(self): + return [x for x in self if x["Enabled"] == 'yes' and x["Type"] == 'Analyzer'] diff --git a/src/Gui/SettingsDialog.py b/src/Gui/SettingsDialog.py index a2ba1f06..10a10df2 100644 --- a/src/Gui/SettingsDialog.py +++ b/src/Gui/SettingsDialog.py @@ -6,6 +6,18 @@ from CC_gui_functions import * from ABRTPlugin import PluginSettings, PluginInfo from abrt_utils import _ + +#FIXME: create a better struct, to automatize hydrate/dehydrate process +settings_dict = { "Common": + {"OpenGPGCheck":bool, + "Database":object, + "EnabledPlugins": list, + "BlackList": list, + "MaxCrashReportsSize": int, + "OpenGPGPublicKeys": list, + }, + } + class SettingsDialog: def __init__(self, parent, daemon): builderfile = "%s%ssettings.GtkBuilder" % (sys.path[0],"/") @@ -15,8 +27,43 @@ class SettingsDialog: self.window = self.builder.get_object("wGlobalSettings") print "GSD init" self.builder.get_object("bSaveSettings").connect("clicked", self.on_ok_clicked) + self.builder.get_object("bCancelSettings").connect("clicked", self.on_cancel_clicked) self.builder.get_object("bAddCronJob").connect("clicked", self.on_bAddCronJob_clicked) + # action plugin list for Cron tab + self.actionPluginsListStore = gtk.ListStore(str, object) + self.actionPluginsListStore.append([_("<b>Select plugin</b>"), None]) + # database plugin list + self.databasePluginsListStore = gtk.ListStore(str, object) + self.databasePluginsListStore.append([_("<b>Select database backend</b>"), None]) + + self.dbcombo = self.builder.get_object("cbDatabase") + self.dbcombo.set_model(self.databasePluginsListStore) + cell = gtk.CellRendererText() + self.dbcombo.pack_start(cell) + self.dbcombo.add_attribute(cell, "markup", 0) + # blacklist edit + self.builder.get_object("bEditBlackList").connect("clicked", self.on_blacklistEdit_clicked) + + self.builder.get_object("bOpenGPGPublicKeys").connect("clicked", self.on_GPGKeysEdit_clicked) + self.builder.get_object("bAddAction").connect("clicked", self.on_bAddAction_clicked) + # AnalyzerActionsAndReporters + self.analyzerPluginsListStore = gtk.ListStore(str, object) + self.analyzerPluginsListStore.append([_("<b>Select plugin</b>"), None]) + # GPG keys + self.wGPGKeys = self.builder.get_object("wGPGKeys") + self.GPGKeysListStore = gtk.ListStore(str) + self.tvGPGKeys = self.builder.get_object("tvGPGKeys") + self.tvGPGKeys.set_model(self.GPGKeysListStore) + self.builder.get_object("bCancelGPGKeys").connect("clicked", self.on_bCancelGPGKeys_clicked) + self.builder.get_object("bSaveGPGKeys").connect("clicked", self.on_bSaveGPGKeys_clicked) + + gpg_column = gtk.TreeViewColumn() + cell = gtk.CellRendererText() + gpg_column.pack_start(cell) + gpg_column.add_attribute(cell, "text", 0) + self.tvGPGKeys.append_column(gpg_column) + def filter_settings(self, model, miter, data): return True @@ -26,55 +73,169 @@ class SettingsDialog: except Exception, e: # FIXME: this should be error gui message! print e + for i in self.settings: + print "XXX", i + for key,val in self.settings[i].iteritems(): + print "\t", key, val + try: + self.pluginlist = getPluginInfoList(self.ccdaemon, refresh=True) + except Exception, e: + print e - # hydrate cron jobs: + ## hydrate cron jobs: for key,val in self.settings["Cron"].iteritems(): - try: - self.pluginlist = getPluginInfoList(self.ccdaemon, refresh=True) - except Exception, e: - print e - - hbox = gtk.HBox(homogeneous=True) - time = gtk.Entry() - plugins = gtk.ComboBox() - enabledPluginsListStore = gtk.ListStore(str, object) - cell = gtk.CellRendererText() - plugins.pack_start(cell) - plugins.add_attribute(cell, 'text', 0) - enabledPluginsListStore.append([_("Select a plugin"), None]) - for plugin in self.pluginlist.getActionPlugins(): - print "#", plugin.getName() - enabledPluginsListStore.append([plugin.getName(), plugin]) - plugins.set_model(enabledPluginsListStore) - plugins.set_active(0) - hbox.pack_start(time,False) - hbox.pack_start(plugins,False) - self.builder.get_object("vbCronJobs").pack_start(hbox,False) - hbox.show_all() - #print "\t%s:%s" % (key,val) + # actionas are separated by ',' + actions = val.split(',') + self.settings["Cron"][key] = actions + for plugin in self.pluginlist.getActionPlugins(): + it = self.actionPluginsListStore.append([plugin.getName(), plugin]) + for key,val in self.settings["Cron"].iteritems(): + if plugin.getName() in val: + cron_job = (key,it) + self.add_CronJob(cron_job) + self.settings["Cron"][key].remove(plugin.getName()) + # hydrate common + common = self.settings["Common"] + ## gpgcheck + self.builder.get_object("cbOpenGPGCheck").set_active(common["OpenGPGCheck"] == 'yes') + ## database + for dbplugin in self.pluginlist.getDatabasePlugins(): + it = self.databasePluginsListStore.append([dbplugin.getName(), dbplugin]) + if common["Database"] == dbplugin.getName(): + self.dbcombo.set_active_iter(it) + ## MaxCrashSize + self.builder.get_object("sbMaxCrashReportsSize").set_value(float(common["MaxCrashReportsSize"])) + ## GPG keys + self.builder.get_object("eOpenGPGPublicKeys").set_text(common["OpenGPGPublicKeys"]) + self.gpgkeys = common["OpenGPGPublicKeys"].split(',') + for gpgkey in self.gpgkeys: + self.GPGKeysListStore.append([gpgkey]) + + ## blacklist + self.builder.get_object("eBlacklist").set_text(common["BlackList"]) + # hydrate AnalyzerActionsAndReporters + AnalyzerActionsAndReporters = self.settings["AnalyzerActionsAndReporters"] + for analplugin in self.pluginlist.getAnalyzerPlugins(): + it = self.analyzerPluginsListStore.append([analplugin.getName(), analplugin]) + if AnalyzerActionsAndReporters.has_key(analplugin.getName()): + action = (AnalyzerActionsAndReporters[analplugin.getName()], it) + self.add_AnalyzerAction(action) + + def on_bCancelGPGKeys_clicked(self, button): + print "cancel" + self.wGPGKeys.hide() + + def on_bSaveGPGKeys_clicked(self, button): + print "save" + self.wGPGKeys.hide() + def on_bAddGPGKey_clicked(self, button): + print "add GPG key" + + def on_bRemoveGPGKey_clicked(self, button): + print "add GPG key" + + def on_blacklistEdit_clicked(self, button): + print "edit blacklist" + + def on_GPGKeysEdit_clicked(self, button): + self.wGPGKeys.show() + def on_ok_clicked(self, button): self.dehydrate() + self.window.hide() - def on_bAddCronJob_clicked(self, button): - hbox = gtk.HBox(homogeneous=True) + def on_cancel_clicked(self, button): + self.window.hide() + + def on_remove_CronJob_clicked(self, button, job_hbox): + self.removeHBoxWihtChildren(job_hbox) + + def on_remove_Action_clicked(self, button, binding_hbox): + self.removeHBoxWihtChildren(binding_hbox) + + def removeHBoxWihtChildren(self, job_hbox): + job_hbox.get_parent().remove(job_hbox) + for child in job_hbox.get_children(): + child.destroy() + job_hbox.destroy() + + def add_CronJob(self, job=None): + hbox = gtk.HBox() time = gtk.Entry() + remove_image = gtk.Image() + remove_image.set_from_stock("gtk-remove",gtk.ICON_SIZE_MENU) + remove_button = gtk.Button() + remove_button.set_image(remove_image) + remove_button.set_tooltip_text(_("Remove this job")) + remove_button.connect("clicked", self.on_remove_CronJob_clicked, hbox) plugins = gtk.ComboBox() - enabledPluginsListStore = gtk.ListStore(str, object) cell = gtk.CellRendererText() + plugins.pack_start(cell) - plugins.add_attribute(cell, 'text', 0) - for plugin in self.pluginlist.getActionPlugins(): - print "#", plugin.getName() - enabledPluginsListStore.append([plugin.getName(), plugin]) - plugins.set_model(enabledPluginsListStore) - plugins.set_active(0) - hbox.pack_start(time,False) - hbox.pack_start(plugins,False) + plugins.add_attribute(cell, 'markup', 0) + plugins.set_model(self.actionPluginsListStore) + + if job: + time.set_text(job[0]) + plugins.set_active_iter(job[1]) + else: + plugins.set_active(0) + hbox.pack_start(plugins,True) + hbox.pack_start(time,True) + hbox.pack_start(remove_button,False) self.builder.get_object("vbCronJobs").pack_start(hbox,False) + hbox.show_all() + + def on_bAddCronJob_clicked(self, button): + self.add_CronJob() print "add" + def on_bEditAction_clicked(self, button, data=None): + print "edit action" + + def add_AnalyzerAction(self, action=None): + print "add_AnalyzerAction" + hbox = gtk.HBox() + action_list = gtk.Entry() + edit_actions = gtk.Button() + edit_actions.set_tooltip_text("Edit actions") + edit_image = gtk.Image() + edit_image.set_from_stock("gtk-edit", gtk.ICON_SIZE_MENU) + edit_actions.set_image(edit_image) + edit_actions.connect("clicked", self.on_bEditAction_clicked) + + remove_image = gtk.Image() + remove_image.set_from_stock("gtk-remove",gtk.ICON_SIZE_MENU) + remove_button = gtk.Button() + remove_button.set_image(remove_image) + remove_button.set_tooltip_text(_("Remove this action")) + remove_button.connect("clicked", self.on_remove_Action_clicked, hbox) + + reporters = gtk.ComboBox() + cell = gtk.CellRendererText() + reporters.pack_start(cell) + reporters.add_attribute(cell, 'markup', 0) + reporters.set_model(self.analyzerPluginsListStore) + + if action: + action_list.set_text(action[0]) + reporters.set_active_iter(action[1]) + else: + reporters.set_active(0) + + hbox.pack_start(reporters,True) + hbox.pack_start(action_list,True) + hbox.pack_start(edit_actions,False) + hbox.pack_start(remove_button,False) + self.builder.get_object("vbActions").pack_start(hbox,False) + hbox.show_all() + + def on_bAddAction_clicked(self, button): + self.add_AnalyzerAction() + print "on_bAddActions_clicked" + def on_cancel_clicked(self,button): print "hide" self.window.hide() diff --git a/src/Gui/ccgui.glade b/src/Gui/ccgui.glade index 67bf6fa3..991b4e30 100644 --- a/src/Gui/ccgui.glade +++ b/src/Gui/ccgui.glade @@ -141,18 +141,17 @@ Zdenek Prikryl <zprikryl@redhat.com></property> <widget class="GtkMenu" id="menu1"> <property name="visible">True</property> <child> - <widget class="GtkImageMenuItem" id="miPreferences"> - <property name="label">gtk-preferences</property> + <widget class="GtkMenuItem" id="miPlugins"> <property name="visible">True</property> - <property name="use_underline">True</property> - <property name="use_stock">True</property> + <property name="label" translatable="yes">Plugins</property> </widget> </child> <child> - <widget class="GtkMenuItem" id="miSettings"> + <widget class="GtkImageMenuItem" id="miPreferences"> + <property name="label">gtk-preferences</property> <property name="visible">True</property> - <property name="label" translatable="yes">Global settings</property> <property name="use_underline">True</property> + <property name="use_stock">True</property> </widget> </child> </widget> diff --git a/src/Gui/settings.GtkBuilder b/src/Gui/settings.GtkBuilder index 676f3907..859eac9e 100644 --- a/src/Gui/settings.GtkBuilder +++ b/src/Gui/settings.GtkBuilder @@ -1,6 +1,6 @@ <?xml version="1.0"?> <interface> - <requires lib="gtk+" version="2.14"/> + <requires lib="gtk+" version="2.16"/> <!-- interface-naming-policy project-wide --> <object class="GtkWindow" id="wPluginsSettings"> <property name="title" translatable="yes">Settings</property> @@ -67,7 +67,8 @@ <child> <object class="GtkLabel" id="label4"> <property name="visible">True</property> - <property name="xalign">0.05000000074505806</property> + <property name="xalign">2.2351741291171123e-10</property> + <property name="xpad">5</property> <property name="label" translatable="yes">Web Site:</property> </object> <packing> @@ -78,7 +79,8 @@ <child> <object class="GtkLabel" id="label2"> <property name="visible">True</property> - <property name="xalign">0.05000000074505806</property> + <property name="xalign">2.2351741291171123e-10</property> + <property name="xpad">5</property> <property name="label" translatable="yes">Author:</property> </object> <packing> @@ -90,7 +92,8 @@ <child> <object class="GtkLabel" id="label3"> <property name="visible">True</property> - <property name="xalign">0.05000000074505806</property> + <property name="xalign">0</property> + <property name="xpad">5</property> <property name="label" translatable="yes">Version:</property> </object> <packing> @@ -100,7 +103,7 @@ <child> <object class="GtkLabel" id="lPluginVersion"> <property name="visible">True</property> - <property name="xalign">0.05000000074505806</property> + <property name="xalign">2.2351741291171123e-10</property> <property name="label" translatable="yes">Nothing selected</property> </object> <packing> @@ -113,7 +116,7 @@ <child> <object class="GtkLabel" id="lPluginAuthor"> <property name="visible">True</property> - <property name="xalign">0.05000000074505806</property> + <property name="xalign">2.2351741291171123e-10</property> <property name="label" translatable="yes">Nothing selected</property> </object> <packing> @@ -126,7 +129,7 @@ <child> <object class="GtkLabel" id="lPluginWebSite"> <property name="visible">True</property> - <property name="xalign">0.05000000074505806</property> + <property name="xalign">0</property> <property name="label" translatable="yes">Nothing selected</property> </object> <packing> @@ -228,36 +231,174 @@ <property name="visible">True</property> <property name="can_focus">True</property> <child> - <object class="GtkTable" id="stable1"> + <object class="GtkTable" id="common_table"> <property name="visible">True</property> - <property name="n_rows">3</property> - <property name="n_columns">3</property> + <property name="n_rows">5</property> + <property name="n_columns">2</property> <child> - <placeholder/> + <object class="GtkCheckButton" id="cbOpenGPGCheck"> + <property name="label" translatable="yes">Check package GPG signature</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="right_attach">2</property> + <property name="y_options">GTK_FILL</property> + </packing> </child> <child> - <placeholder/> + <object class="GtkLabel" id="lDatabasePlugin"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="xpad">5</property> + <property name="label" translatable="yes">Database backend: </property> + </object> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="y_options">GTK_FILL</property> + </packing> </child> <child> - <placeholder/> + <object class="GtkComboBox" id="cbDatabase"> + <property name="visible">True</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="y_options">GTK_FILL</property> + </packing> </child> <child> - <placeholder/> + <object class="GtkLabel" id="lBlacklist"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="xpad">5</property> + <property name="label" translatable="yes">Blacklisted packages: </property> + </object> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="y_options">GTK_FILL</property> + </packing> </child> <child> - <placeholder/> + <object class="GtkLabel" id="lMaxCrashReportsSize"> + <property name="visible">True</property> + <property name="xalign">2.2351741291171123e-10</property> + <property name="xpad">5</property> + <property name="label" translatable="yes">Max coredump storage size(MB):</property> + </object> + <packing> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="y_options">GTK_FILL</property> + </packing> </child> <child> - <placeholder/> + <object class="GtkLabel" id="lOpenGPGPublicKeys"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="xpad">5</property> + <property name="label" translatable="yes">GPG keys: </property> + </object> + <packing> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="y_options">GTK_FILL</property> + </packing> </child> <child> - <placeholder/> + <object class="GtkSpinButton" id="sbMaxCrashReportsSize"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="invisible_char">●</property> + <property name="adjustment">adjMaxRepSize</property> + <property name="numeric">True</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="y_options">GTK_FILL</property> + </packing> </child> <child> - <placeholder/> + <object class="GtkHBox" id="blhbox"> + <property name="visible">True</property> + <child> + <object class="GtkEntry" id="eBlacklist"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="invisible_char">●</property> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="bEditBlackList"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_text" translatable="yes">Edit blacklisted packages</property> + <property name="image">imEdit</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="y_options">GTK_FILL</property> + </packing> </child> <child> - <placeholder/> + <object class="GtkHBox" id="gpghbox"> + <property name="visible">True</property> + <child> + <object class="GtkEntry" id="eOpenGPGPublicKeys"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">False</property> + <property name="invisible_char">●</property> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="bOpenGPGPublicKeys"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="image">imEdit1</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="y_options">GTK_FILL</property> + </packing> </child> </object> </child> @@ -285,11 +426,49 @@ <property name="visible">True</property> <property name="resize_mode">queue</property> <child> - <object class="GtkVBox" id="vbCronJobs"> + <object class="GtkVBox" id="cjvbox1"> <property name="visible">True</property> <property name="orientation">vertical</property> <child> - <placeholder/> + <object class="GtkHBox" id="cjhbox1"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="lPlugin"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Plugin</b></property> + <property name="use_markup">True</property> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lTime"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Time (or period)</b></property> + <property name="use_markup">True</property> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="vbCronJobs"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> </child> </object> </child> @@ -360,36 +539,103 @@ </packing> </child> <child> - <object class="GtkTable" id="stable3"> + <object class="GtkVBox" id="actions_vbox"> <property name="visible">True</property> - <property name="n_rows">3</property> - <property name="n_columns">3</property> - <child> - <placeholder/> - </child> - <child> - <placeholder/> - </child> - <child> - <placeholder/> - </child> - <child> - <placeholder/> - </child> - <child> - <placeholder/> - </child> - <child> - <placeholder/> - </child> + <property name="orientation">vertical</property> <child> - <placeholder/> + <object class="GtkHBox" id="ahbox1"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="lReporter"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Analyzer plugin</b></property> + <property name="use_markup">True</property> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="lAssociatedActions"> + <property name="visible">True</property> + <property name="label" translatable="yes"><b>Associated action</b></property> + <property name="use_markup">True</property> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkAlignment" id="action_lbl_align"> + <property name="visible">True</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> </child> <child> - <placeholder/> + <object class="GtkVBox" id="vbActions"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> </child> <child> - <placeholder/> + <object class="GtkHBox" id="actions_button_hbox"> + <property name="visible">True</property> + <child> + <object class="GtkAlignment" id="act_align1"> + <property name="visible">True</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkAlignment" id="act_align2"> + <property name="visible">True</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="bAddAction"> + <property name="label" translatable="yes">gtk-add</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_stock">True</property> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">2</property> + </packing> </child> </object> <packing> @@ -472,4 +718,97 @@ </object> </child> </object> + <object class="GtkAdjustment" id="adjMaxRepSize"> + <property name="upper">1000000</property> + <property name="step_increment">1</property> + </object> + <object class="GtkImage" id="imEdit"> + <property name="visible">True</property> + <property name="stock">gtk-edit</property> + <property name="icon-size">1</property> + </object> + <object class="GtkImage" id="imEdit1"> + <property name="visible">True</property> + <property name="stock">gtk-edit</property> + <property name="icon-size">1</property> + </object> + <object class="GtkWindow" id="wGPGKeys"> + <property name="title" translatable="yes">GPG Keys</property> + <property name="modal">True</property> + <property name="default_width">400</property> + <property name="default_height">250</property> + <child> + <object class="GtkVBox" id="gpgkeys_vbox"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkTreeView" id="tvGPGKeys"> + <property name="visible">True</property> + <property name="can_focus">True</property> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="gpg_buttons_hbox"> + <property name="visible">True</property> + <property name="homogeneous">True</property> + <child> + <object class="GtkButton" id="bAddGPGKey"> + <property name="label" translatable="yes">gtk-add</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_stock">True</property> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="bRemoveGPGKey"> + <property name="label" translatable="yes">gtk-remove</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_stock">True</property> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="bSaveGPGKeys"> + <property name="label" translatable="yes">gtk-ok</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_stock">True</property> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="bCancelGPGKeys"> + <property name="label" translatable="yes">gtk-cancel</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_stock">True</property> + </object> + <packing> + <property name="position">3</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> </interface> |