summaryrefslogtreecommitdiffstats
path: root/src/Gui/SettingsDialog.py
blob: a2ba1f06f47ef0d4ca3b16e30e168cd5ec37d599 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import sys
import gtk
from PluginList import getPluginInfoList, PluginInfoList
from CC_gui_functions import *
#from PluginSettingsUI import PluginSettingsUI
from ABRTPlugin import PluginSettings, PluginInfo
from abrt_utils import _

class SettingsDialog:
    def __init__(self, parent, daemon):
        builderfile = "%s%ssettings.GtkBuilder" % (sys.path[0],"/")
        self.ccdaemon = daemon
        self.builder = gtk.Builder()
        self.builder.add_from_file(builderfile)
        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("bAddCronJob").connect("clicked", self.on_bAddCronJob_clicked)
        
    def filter_settings(self, model, miter, data):
        return True
        
    def hydrate(self):
        try:
            self.settings = self.ccdaemon.getSettings()
        except Exception, e:
            # FIXME: this should be error gui message!
            print e
        
        # 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)
        
    def on_ok_clicked(self, button):
        self.dehydrate()
        
    def on_bAddCronJob_clicked(self, button):
        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)
        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 "add"
        
    def on_cancel_clicked(self,button):
        print "hide"
        self.window.hide()
        
    def dehydrate(self):
        self.ccdaemon.setSettings(self.settings)
        print "dehydrate"
        
    def show(self):
        print "show"
        self.window.show()