Andrew has proposed merging lp:~and471/activity-log-manager/ui-tweaks into 
lp:activity-log-manager.

Requested reviews:
  Activity Log Manager (activity-log-manager)

For more details, see:
https://code.launchpad.net/~and471/activity-log-manager/ui-tweaks/+merge/61427

Just some small tweaks of the UI, I tried to make better use of the space 
available and just some small fixes.

Results can be seen here http://i.imgur.com/V8ZoO.png
-- 
https://code.launchpad.net/~and471/activity-log-manager/ui-tweaks/+merge/61427
Your team Activity Log Manager is requested to review the proposed merge of 
lp:~and471/activity-log-manager/ui-tweaks into lp:activity-log-manager.
=== modified file 'src/window.py'
--- src/window.py	2011-05-17 17:29:23 +0000
+++ src/window.py	2011-05-18 15:29:23 +0000
@@ -25,6 +25,7 @@
 import pango
 import logging
 import time
+import glib
 
 from datetime import date
 
@@ -45,13 +46,13 @@
         self.is_incognito = self.zg.get_incognito()
         self.incognito_disabled_text = _("Logging stopped")
         self.incognito_enabled_text = _("Logging active")
-        self.set_border_width(6)
+        self.set_border_width(12)
         self._set_up_ui()
         self.show_all()
 
     def _set_up_ui(self):
         self.set_title(_("Activity Log Manager"))
-        self.set_default_size(600, 400)
+        self.set_default_size(500, 400)
         self.set_position(gtk.WIN_POS_CENTER_ALWAYS)
         
         self._notebook = gtk.Notebook()
@@ -62,9 +63,9 @@
         self._set_up_file_tab()
 
         self.pix_indicator_disabled = gtk.image_new_from_stock(gtk.STOCK_NO,
-                                      gtk.ICON_SIZE_LARGE_TOOLBAR)
+                                      gtk.ICON_SIZE_MENU)
         self.pix_indicator_enabled = gtk.image_new_from_stock(gtk.STOCK_YES,
-                                     gtk.ICON_SIZE_LARGE_TOOLBAR)
+                                     gtk.ICON_SIZE_MENU)
         
         self.incognito_bar = IncognitoBar()
         if not self.zg.get_incognito():
@@ -78,7 +79,7 @@
 
         self.incognito_bar.connect('clicked', self._on_incognito_toggled)
         
-        general_vbox = gtk.VBox(False)
+        general_vbox = gtk.VBox(False, 6)
         hbox = gtk.HBox()
         hbox.pack_end(self.incognito_bar, False, False)
         general_vbox.pack_end(hbox, False, False)
@@ -134,19 +135,23 @@
     
 
     def __init__(self):
-        gtk.VBox.__init__(self, spacing=4)
+        gtk.VBox.__init__(self, spacing=12)
         self.zg = ZG
         self._set_up_ui()
         
     def _set_up_ui(self):
-        self.set_border_width(10)
+        self.set_border_width(12)
+        
+        recent_past_records_vbox = gtk.VBox(False, 6)
+        self.pack_start(recent_past_records_vbox, False, False)
+        
         label = gtk.Label()
-        label.set_markup("<b>%s</b>" % _("Forget my activities for the last..."))
+        label.set_markup("<b>%s</b>" % _("Forget my activities for the last:"))
         label.set_alignment(0.0, 0.5)
-        self.pack_start(label, False, False, 6)
+        recent_past_records_vbox.pack_start(label, False, False)
         
-        self._past_records_box = gtk.HBox(False, 6)
-        self.pack_start(self._past_records_box, False, False, 6)
+        recent_past_records_hbox = gtk.HBox(False, 6)
+        recent_past_records_vbox.pack_start(recent_past_records_hbox, False, False)
         
         self._combo_box = gtk.combo_box_new_text()
         temp_records = self._past_records.keys()
@@ -155,30 +160,34 @@
             self._combo_box.append_text(self._past_records[record])
         self._combo_box.set_active(0)
         
-        self.clear_button = gtk.Button(stock=gtk.STOCK_DELETE)
+        self.clear_button = gtk.Button(label=_("Forget"))
         self.clear_button.connect("clicked", self._on_clear_button_clicked)
-        self._past_records_box.pack_start(self._combo_box, False)
-        self._past_records_box.pack_start(self.clear_button, False)
-
-        separator = gtk.HSeparator()
-        self.pack_start(separator, False, True)
+        hbuttonbox = gtk.HButtonBox()
+        hbuttonbox.pack_start(self.clear_button, False, False);
+        
+        recent_past_records_hbox.pack_start(self._combo_box, False)
+        recent_past_records_hbox.pack_start(hbuttonbox, False)
+        
+        old_past_records_vbox = gtk.VBox(False, 6)
+        self.pack_start(old_past_records_vbox, False, False)
         
         label = gtk.Label()
         label.set_markup("<b>%s</b>" % \
             _("Forget my activities in the following timerange:"))
         label.set_alignment(0.0, 0.5)
-        self.pack_start(label, False, False, 6)
-        
-        markup = '<span size="smaller" font-weight="bold" >%s</span>'
+        old_past_records_vbox.pack_start(label, False, False, 6)
+        
+        old_past_records_hbox = gtk.HBox(False, 12)
+        old_past_records_vbox.pack_start(old_past_records_hbox, False, False)
+        
         from_label = gtk.Label()
-        from_label.set_markup(markup % _("From:"))
-        from_label.set_alignment(0.0, 0.5)
+        from_label.set_markup(_("From:"))
+        from_label.set_alignment(1, 0.5)
         to_label = gtk.Label()
-        to_label.set_markup(markup % _("To:"))
-        to_label.set_alignment(0.0, 0.5)
+        to_label.set_markup(_("To:"))
+        to_label.set_alignment(1, 0.5)
         
         self.from_entry = gtk.Entry()
-        self.from_entry.set_width_chars(30)
         self.from_button = gtk.Button()
         arrow = gtk.Arrow(gtk.ARROW_DOWN, gtk.SHADOW_IN)
         self.from_button.add(arrow)
@@ -187,7 +196,6 @@
         self.from_button.connect("clicked", self.show_calendar, 0)
         
         self.to_entry = gtk.Entry()
-        self.to_entry.set_width_chars(30)
         self.to_button = gtk.Button()
         arrow = gtk.Arrow(gtk.ARROW_DOWN, gtk.SHADOW_IN)
         self.to_button.add(arrow)
@@ -195,35 +203,37 @@
         self.to_entry.set_editable(False)
         self.to_button.connect("clicked", self.show_calendar, 1)
 
-        hbox = gtk.HBox(False)
-        hbox.pack_start(self.from_entry, False)
-        hbox.pack_start(self.from_button, False)
-        vbox_from = gtk.VBox(False, 5)
-        vbox_from.pack_start(from_label, False)
-        vbox_from.pack_start(hbox, False)
-        
-        hbox = gtk.HBox(False)
-        hbox.pack_start(self.to_entry, False)
-        hbox.pack_start(self.to_button, False)
-        vbox_to = gtk.VBox(False, 5)
-        vbox_to.pack_start(to_label, False)
-        vbox_to.pack_end(hbox, False)
-        
-        self.clear_button2 = gtk.Button(stock=gtk.STOCK_DELETE)
+        old_past_records_table = gtk.Table(2, 3, False);
+        old_past_records_table.set_row_spacings(6);
+        old_past_records_table.attach(from_label, 0, 1, 0, 1, xpadding=6)
+        old_past_records_table.attach(self.from_entry, 1, 2, 0, 1)
+        old_past_records_table.attach(self.from_button, 2, 3, 0, 1)
+        old_past_records_table.attach(to_label, 0, 1, 1, 2, xpadding=6)
+        old_past_records_table.attach(self.to_entry, 1, 2, 1, 2)
+        old_past_records_table.attach(self.to_button, 2, 3, 1, 2)
+        
+        self.clear_button2 = gtk.Button(label=_("Forget"))
         self.clear_button2.connect("clicked", self._on_clear_button2_clicked)
         self.clear_button2.set_sensitive(False)
-        align = gtk.Alignment(xalign=0.0)
-        align.add(self.clear_button2)
+        
+        hbuttonbox2 = gtk.HButtonBox()
+        hbuttonbox2.pack_start(self.clear_button2, False, False);
+        align = gtk.Alignment(yalign=0.5)
+        align.add(hbuttonbox2)
         
         self._error_label = gtk.Label()
         
-        hbox_delete = gtk.HBox(False, 4)
+        hbox_delete = gtk.HBox(False, 6)
         hbox_delete.pack_start(align, False)
         hbox_delete.pack_start(self._error_label, False, padding=10)
         
-        self.pack_start(vbox_from, False)
-        self.pack_start(vbox_to, False)
-        self.pack_start(hbox_delete, False, padding=10)
+        calendar_sizegroup = gtk.SizeGroup(gtk.SIZE_GROUP_VERTICAL);
+        for widget in [self.to_entry, self.to_button, 
+                        self.from_entry, self.from_button]:
+            calendar_sizegroup.add_widget(widget);
+        
+        old_past_records_hbox.pack_start(old_past_records_table, False)
+        old_past_records_hbox.pack_start(hbox_delete, False)
         
         #used for discriminate if the user is choosing the from or to date entry
         self._n_current_entry = -1
@@ -341,38 +351,36 @@
 class ApplicationsTab(gtk.VBox):
     
     def __init__(self):
-        gtk.VBox.__init__(self, spacing=10)
+        gtk.VBox.__init__(self, spacing=6)
         self.app_chooser_dialog = ApplicationsChooserDialog()
         self.zg = ZG
         self._set_up_ui()
         self.buttons = {}
 
     def _set_up_ui(self):
-        self.set_border_width(10)
+        self.set_border_width(12)
         
         self.treeview = _ApplicationsTreeView()
-        button_box = gtk.VButtonBox()
+        button_box = gtk.HButtonBox()
+        button_box.set_spacing(6)
         button_box.set_layout(gtk.BUTTONBOX_START)
         
         self.add_button = gtk.Button(stock=gtk.STOCK_ADD)
         self.add_button.connect("clicked", self._on_add_application)
         button_box.pack_start(self.add_button)
         
-        self.delete_button = gtk.Button(stock=gtk.STOCK_DELETE)
+        self.delete_button = gtk.Button(stock=gtk.STOCK_REMOVE)
         self.delete_button.connect("clicked", self._on_delete_application)
         button_box.pack_start(self.delete_button)
         
         label = gtk.Label()
         label.set_markup("<b>%s</b>" % \
             _("Do not log the activity of these applications:"))
-        align = gtk.Alignment(xalign=0, yalign=1)
-        align.add(label)
-        self.pack_start(align, False)
+        label.set_alignment(0, 0.5)
         
-        general_hbox = gtk.HBox(False, 5)
-        general_hbox.pack_start(self.treeview)
-        general_hbox.pack_start(button_box, False)
-        self.pack_start(general_hbox)
+        self.pack_start(label, False, False)
+        self.pack_start(self.treeview, True, True)
+        self.pack_start(button_box, False, False)
         
         self._applications = [t[4:] for t in self.zg.all_templates.iterkeys() \
             if t.startswith("app-")]
@@ -392,8 +400,8 @@
             if app is not None and not self.duplicate:
                 self.treeview.store.append(app)
                 e = Event()
-                e.actor = "application://"+app[3]
-                self.zg.add_blacklist_template("app-"+app[3], e)
+                e.actor = "application://"+app[2]
+                self.zg.add_blacklist_template("app-"+app[2], e)
                 
         self.app_chooser_dialog.hide()
 
@@ -419,7 +427,16 @@
                 self.treeview.store.foreach(self._is_duplicate, app_name)
                 if app_info is not None and not self.duplicate:
                     pix = self.treeview._get_pixbuf_from_gio_icon(app_info.get_icon())
-                    self.treeview.store.append([app_name, app_info.get_description(), pix, app_info.get_id()])
+                    
+                    name = app_name
+                    description = app_info.get_description()
+                    
+                    if description == None:
+                        description = _("No description provided")
+                    
+                    markup = "<b>%s</b>\n%s" % (glib.markup_escape_text(name),
+                                glib.markup_escape_text(description))
+                    self.treeview.store.append([markup, pix, app_info.get_id()])
             except RuntimeError:
                 log.warning(_("Failed to load %s") % app)
                 continue
@@ -455,21 +472,23 @@
     dirs_blacklist_dict = {}
     
     def __init__(self):
-        gtk.VBox.__init__(self, spacing=10)
+        gtk.VBox.__init__(self, spacing=12)
         self.zg = ZG
         self._set_up_ui()
 
     def _set_up_ui(self):
-        self.set_border_width(10)
+        self.set_border_width(12)
+        
+        vbox_file_types = gtk.VBox(False, 6)
+        self.pack_start(vbox_file_types, False, False)
         
         label = gtk.Label()
         label.set_markup("<b>%s</b>" % \
             _("Prevent logging for the following file types:"))
-        align = gtk.Alignment(xalign=0, yalign=1)
-        align.add(label)
-        self.pack_start(align, False)
+        label.set_alignment(0, 0.5)
+        vbox_file_types.pack_start(label, False)
         
-        checkbox_table = gtk.Table(3,3)
+        checkbox_table = gtk.Table(3, 3)
         i = 0
         self.button_list = []
         for t in sorted(self.mime_dict.keys()):
@@ -477,33 +496,28 @@
             self.button_list.append(button)
             if "interpretation-%s" % t.lower() in self.zg.all_templates:
                 button.set_active(True)
-            button.connect("toggled", self._on_ckeckbox_toggled, t)
+            button.connect("toggled", self._on_checkbox_toggled, t)
             if i == 3: checkbox_table.attach(button, 0, 1, 1, 2)
             elif i == 7: checkbox_table.attach(button, 1, 2, 2, 3)
             else: checkbox_table.attach(button, i%3, (i%3) + 1 , i%4, (i%4) + 1)
             i += 1
         
-        self.pack_start(checkbox_table, False)
+        vbox_file_types.pack_start(checkbox_table, False)
+
+        vbox_folders = gtk.VBox(False, 6)
+        self.pack_start(vbox_folders, True, True)
 
         label = gtk.Label()
         label.set_markup("<b>%s</b>" % \
             _("Prevent logging files in the following folders:"))
-        align = gtk.Alignment(xalign=0, yalign=1)
-        align.add(label)
-        self.pack_start(align, False)
-        
-        file_chooser_hbox = gtk.HBox(False, 5)
-        file_chooser_dialog = gtk.FileChooserDialog(
-            _("Select a directory to blacklist"),
-            action = gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
-            buttons = (gtk.STOCK_OK, gtk.RESPONSE_OK, gtk.STOCK_CANCEL,
-                gtk.RESPONSE_CANCEL))
-        self.file_chooser = gtk.FileChooserButton(file_chooser_dialog)
-        file_chooser_hbox.pack_start(self.file_chooser, True)
-        add_button = gtk.Button(stock=gtk.STOCK_ADD)
-        add_button.connect("clicked", self._on_add_blacklist_dir)
-        #file_chooser_hbox.pack_end(add_button, False)
-        #self.pack_start(file_chooser_hbox, False)
+        label.set_alignment(0, 0.5)
+        vbox_folders.pack_start(label, False)
+        
+        file_chooser_vbox = gtk.VBox(False, 6)
+        vbox_folders.pack_start(file_chooser_vbox, True, True)
+        
+        add_button = gtk.Button(label=_("Add..."))
+        add_button.connect("clicked", self._on_add_button_clicked)
         
         #Store fields:
         #1) Directory's Path
@@ -526,37 +540,25 @@
         scroll.add(self.treeview)
         scroll.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
         scroll.set_shadow_type(gtk.SHADOW_IN)
-        scroll.set_border_width(1)
-        
-        hbox_other = gtk.HBox(False, 5)
-        button_box = gtk.VButtonBox()
+        
+        file_chooser_vbox.pack_start(scroll, True, True)
+        
+        button_box = gtk.HButtonBox()
+        button_box.set_spacing(6)
         button_box.set_layout(gtk.BUTTONBOX_START)
-        remove_button = gtk.Button(stock=gtk.STOCK_DELETE)
+        remove_button = gtk.Button(stock=gtk.STOCK_REMOVE)
         remove_button.connect("clicked", self._on_remove_blacklist_dir)
-        #hbox_other.pack_start(scroll, True)
-        #button_box.pack_start(remove_button)
-        #hbox_other.pack_start(button_box, False)
-        
-        #self.pack_start(hbox_other, True)
-        
-        hbox = gtk.HBox(False, 6)
-        self.pack_start(hbox)
-        
-        vbox = gtk.VBox()
-        hbox.pack_start(vbox)
-        vbox.pack_start(file_chooser_hbox, False, False)
-        vbox.pack_start(scroll, True, True)
-        
-        vbox = gtk.VBox()
-        hbox.pack_start(vbox, False, False)
-        vbox.pack_start(add_button, False, False)
-        vbox.pack_start(remove_button, False, False)
+
+        button_box.pack_start(add_button, False, False)
+        button_box.pack_start(remove_button, False, False)
+        
+        file_chooser_vbox.pack_start(button_box, False, False)
         
         for t in self.zg.all_templates.iterkeys():
             if t.startswith("dir-"):
                 self.store.append([t[4:]])
     
-    def _on_ckeckbox_toggled(self, checkbox, label):
+    def _on_checkbox_toggled(self, checkbox, label):
         is_active = checkbox.get_active()
         self.blacklist_dict[self.mime_dict[label]] = is_active
         if is_active:
@@ -568,14 +570,27 @@
         else:
             self.zg.remove_blacklist_template("interpretation-"+label.lower())
 
-    def _on_add_blacklist_dir(self, button):
+    def _on_add_button_clicked(self, button):
+        file_chooser = gtk.FileChooserDialog(
+            _("Select a directory to blacklist"),
+            action = gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
+            buttons = (gtk.STOCK_OK, gtk.RESPONSE_OK, gtk.STOCK_CANCEL,
+                gtk.RESPONSE_CANCEL))
+        
+        result = file_chooser.run()
+        file_chooser.hide()
+        
+        if result == gtk.RESPONSE_OK:
+            self._on_add_blacklist_dir(file_chooser)
+
+    def _on_add_blacklist_dir(self, file_chooser):
         def is_duplicate(model, path, iter, user_data):
             if model.get_value(iter, 0) == user_data:
                 self.duplicate = True
                 return True
             
         self.duplicate = False
-        filename = self.file_chooser.get_filename()
+        filename = file_chooser.get_filename()
         self.store.foreach(is_duplicate, filename)
         if not self.duplicate:
             self.dirs_blacklist_dict[filename] = True
@@ -631,11 +646,10 @@
         gtk.VBox.__init__(self)
         self._icon_theme = gtk.icon_theme_get_default()
         #Store fields:
-        #1) Name
-        #2) Description
-        #3) Pixbuf
-        #4) Desktop file
-        self.store = gtk.ListStore(str, str, gtk.gdk.Pixbuf, str)
+        #1) Name and Description
+        #2) Pixbuf
+        #3) Desktop file
+        self.store = gtk.ListStore(str, gtk.gdk.Pixbuf, str)
         self.treeview = gtk.TreeView(self.store)
         self.treeview.set_headers_visible(False)
         self.treeview.set_rules_hint(True)
@@ -645,20 +659,13 @@
         column_pix_name = gtk.TreeViewColumn(_('Name'))
         self.treeview.append_column(column_pix_name)
         pix_rend = gtk.CellRendererPixbuf()
-        column_pix_name.pack_start(pix_rend)
-        column_pix_name.add_attribute(pix_rend, "pixbuf", 2)
+        column_pix_name.pack_start(pix_rend, False)
+        column_pix_name.add_attribute(pix_rend, "pixbuf", 1)
         name_rend = gtk.CellRendererText()
+        name_rend.set_property("ellipsize", pango.ELLIPSIZE_END)
         column_pix_name.pack_start(name_rend)
-        column_pix_name.add_attribute(name_rend, "text", 0)
+        column_pix_name.add_attribute(name_rend, "markup", 0)
         column_pix_name.set_resizable(True)
-        column_pix_name.set_max_width(350)
-        
-        column_desc = gtk.TreeViewColumn(_('Description'))
-        self.treeview.append_column(column_desc)
-        desc_rend = gtk.CellRendererText()
-        desc_rend.set_property("ellipsize", pango.ELLIPSIZE_END)
-        column_desc.pack_start(desc_rend)
-        column_desc.add_attribute(desc_rend, "text", 1)
         
         scroll = gtk.ScrolledWindow()
         scroll.add(self.treeview)
@@ -686,20 +693,28 @@
                     pix = self._get_pixbuf_from_gio_icon(icon)
                 else:
                     pix = None
-                self.store.append([app.get_name(), app.get_description(), pix, app.get_id()])
+
+                name = app.get_name()
+                description = app.get_description()
+                if description == None:
+                    description = _("No description provided")
+
+                markup = "<b>%s</b>\n%s" % (glib.markup_escape_text(name),
+                                glib.markup_escape_text(description))
+                self.store.append([markup, pix, app.get_id()])
 
     def get_selected_app(self):
         selection = self.treeview.get_selection()
         model,_iter = selection.get_selected()
         if _iter is not None:
-            return model.get(_iter, 0, 1, 2, 3)
+            return model.get(_iter, 0, 1, 2)
         return None
     
     def remove_selected_app(self):
         selection = self.treeview.get_selection()
         model,_iter = selection.get_selected()
         if _iter is not None:
-            app = model[_iter][3]
+            app = model[_iter][2]
             return model.remove(_iter), app
 
 class ApplicationsChooserDialog(gtk.Dialog):
@@ -710,6 +725,7 @@
         self.set_destroy_with_parent(True)
         self.set_size_request(600, 400)
         self.set_skip_taskbar_hint(True)
+        self.set_border_width(12)
         self._set_up_ui()
 
     def _set_up_ui(self):
@@ -730,18 +746,15 @@
         self.message_image = gtk.Image()
         
         self.set_relief(gtk.RELIEF_NONE)
-        self.markup = '<span size="smaller" font-weight="bold">%s</span>'
         
-        self.message_hbox = gtk.HBox()
-        #self.message_hbox.pack_start(gtk.Label())
-        self.message_hbox.pack_end(self.message_image, False, False, 3)
-        self.message_hbox.pack_end(self.message_label, False, False, 3)
-        #self.message_hbox.pack_start(gtk.Label())
+        self.message_hbox = gtk.HBox(False, 6)
+        self.message_hbox.pack_start(self.message_image, False, False)
+        self.message_hbox.pack_start(self.message_label, False, False)
         self.add(self.message_hbox)
 
     def set_text(self, text):
         if text is not None:
-            self.message_label.set_markup(self.markup % text)
+            self.message_label.set_markup(text)
         
     def set_image(self, pix):
         if pix is not None:
@@ -749,10 +762,8 @@
                 self.message_hbox.remove(i)
             
             self.message_image = pix
-            #self.message_hbox.pack_start(gtk.Label())
-            self.message_hbox.pack_end(self.message_image, False, False, 3)
-            self.message_hbox.pack_end(self.message_label, False, False, 3)
-            #self.message_hbox.pack_start(gtk.Label())
+            self.message_hbox.pack_start(self.message_image, False, False)
+            self.message_hbox.pack_start(self.message_label, False, False)
         self.show_all()
     
     def set_in_incognito(self, in_incognito):

_______________________________________________
Mailing list: https://launchpad.net/~zeitgeist
Post to     : zeitgeist@lists.launchpad.net
Unsubscribe : https://launchpad.net/~zeitgeist
More help   : https://help.launchpad.net/ListHelp

Reply via email to