~manishsinha/+junk/zeitgeist-shark

« back to all changes in this revision

Viewing changes to zgexplorer/window.py

  • Committer: Manish Sinha
  • Date: 2012-03-10 23:08:16 UTC
  • Revision ID: manishsinha@ubuntu.com-20120310230816-d18l46u23r4v6cel
Create MonitorViewer which is a VBox for viewing monitor instances

* Added implementation in on_add_clicked
* Added implementeation in on_remove_clicked
* Added implementation in on_treeview_selected
* Added event handlers cursor-changed and clicked
* FilterManagerDialog's get_selected_entry now even returns index value and is_predefined flag

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
from gi.repository import Gtk, Pango
23
23
 
24
24
from filtermanager import FilterManagerDialog
 
25
from monitorviewer import MonitorViewer
25
26
 
26
27
class ExplorerMainWindow(Gtk.Window):
27
28
 
82
83
 
83
84
 
84
85
class MonitorWindow(Gtk.VBox):
 
86
    
 
87
    monitor_builtin = {}
 
88
    monitor_custom = {}
 
89
    selected_monitor_view = None
85
90
 
86
91
    def __init__(self):
87
92
        super(MonitorWindow, self).__init__()
88
93
 
89
 
        hbox = Gtk.HBox()
90
 
        self.pack_start(hbox, True, True, 12)
 
94
        self.monitor_dialog = FilterManagerDialog()
 
95
 
 
96
        self.hbox = Gtk.HBox()
 
97
        self.pack_start(self.hbox, True, True, 12)
91
98
 
92
99
        list_vbox = Gtk.VBox()
93
 
        hbox.pack_start(list_vbox, False, False, 0)
 
100
        self.hbox.pack_start(list_vbox, False, False, 0)
94
101
 
95
102
        monitor_vbox = Gtk.VBox()
96
103
        list_vbox.pack_start(monitor_vbox, True, True, 0)
97
 
        self.monitors = Gtk.ListStore(int, str)
 
104
        self.monitors = Gtk.ListStore(int, str, bool)
98
105
        self.monitor_tree = Gtk.TreeView(self.monitors)
 
106
        self.monitor_tree.connect("cursor-changed", self.on_treeview_selected)
99
107
        self.monitor_tree.set_size_request(200, 600)
100
108
        self.monitor_tree.set_border_width(1)
101
109
        self.monitor_tree.set_visible(True)
131
139
 
132
140
        filter_remove = Gtk.ToolButton.new(None, "Remove Filter")
133
141
        filter_remove.set_icon_name("list-remove-symbolic")
 
142
        filter_remove.connect("clicked", self.on_remove_clicked)
134
143
        self.toolbar.insert(filter_remove, 1)
135
144
 
136
145
    def on_add_clicked(self, button):
137
 
        print "Add Clicked"
 
146
        res = self.monitor_dialog.run()
 
147
        self.monitor_dialog.hide()
 
148
        if res == Gtk.ResponseType.OK:
 
149
            index, entry, is_predefined = self.monitor_dialog.get_selected_entry()
 
150
            if entry is not None:
 
151
                if (is_predefined and index in self.monitor_builtin.keys()) or \
 
152
                    (not is_predefined and index in self.monitor_custom.keys()):
 
153
                    return
 
154
 
 
155
                self.monitors.append([index, entry[0], is_predefined])
 
156
                # Add it in the list of ids
 
157
                monitor_inst = MonitorViewer()
 
158
                monitor_inst.map(index, is_predefined)
 
159
                if is_predefined:
 
160
                    self.monitor_builtin[index] = monitor_inst
 
161
                else:
 
162
                    self.monitor_custom[index] = monitor_inst
138
163
 
139
164
    def on_remove_clicked(self, button):
140
 
        print "Remove Clicked"
141
 
 
 
165
        selection = self.monitor_tree.get_selection()
 
166
        if selection is not None:
 
167
            model, _iter = selection.get_selected()
 
168
            if _iter is not None:
 
169
                index = model.get(_iter, 0)[0]
 
170
                is_predefined = model.get(_iter, 2)[0]
 
171
                self.monitors.remove(_iter)
 
172
                if is_predefined:
 
173
                    self.monitor_builtin.pop(index)
 
174
                else:
 
175
                    self.monitor_custom.pop(index)
 
176
 
 
177
                if self.selected_monitor_view is not None:
 
178
                    self.hbox.remove(self.selected_monitor_view)
 
179
                    self.selected_monitor_view= None
 
180
 
 
181
 
 
182
    def on_treeview_selected(self, treeview):
 
183
        selection = self.monitor_tree.get_selection()
 
184
        if selection is not None:
 
185
            model, _iter = selection.get_selected()
 
186
            if _iter is not None:
 
187
                index = model.get(_iter, 0)[0]
 
188
                is_predefined = model.get(_iter, 2)[0]
 
189
                monitor_viewer = self.monitor_builtin[index] if is_predefined \
 
190
                    else self.monitor_custom[index]
 
191
 
 
192
                if self.selected_monitor_view is not None:
 
193
                    self.hbox.remove(self.selected_monitor_view)
 
194
                self.hbox.pack_start(monitor_viewer, True, True, 12)
 
195
                self.selected_monitor_view = monitor_viewer
142
196
 
143
197
class ExplorerWindow(Gtk.VBox):
144
198