[gnome-clocks/clutter] Finish positioning of the widgets



commit 3629279d62bdedf4f966b1d27106a3cd2fcb80f3
Author: Seif Lotfy <seif lotfy com>
Date:   Fri Aug 24 22:09:41 2012 +0200

    Finish positioning of the widgets

 gnomeclocks/app.py     |   17 +++++++++++++----
 gnomeclocks/widgets.py |   45 +++++++++++++++++++++++++++++++++------------
 2 files changed, 46 insertions(+), 16 deletions(-)
---
diff --git a/gnomeclocks/app.py b/gnomeclocks/app.py
index 6139301..6cff068 100644
--- a/gnomeclocks/app.py
+++ b/gnomeclocks/app.py
@@ -58,7 +58,7 @@ class Window(Gtk.ApplicationWindow):
         self.notebook.set_show_tabs(False)
         self.notebook.set_show_border(False)
 
-        self.toolbar = ClocksToolbar()
+        self.toolbar = ClocksToolbar(embed._selectionToolbar)
 
         vbox.pack_start(self.toolbar, False, False, 0)
         vbox.pack_start(self.toolbar.selection_toolbar, False, False, 0)
@@ -141,8 +141,9 @@ class Window(Gtk.ApplicationWindow):
 
 
 class SelectionToolbar(Gtk.Toolbar):
-    def __init__(self):
+    def __init__(self, _selectionToolbar):
         Gtk.Toolbar.__init__(self)
+        self._selectionToolbar = _selectionToolbar
         self.get_style_context().add_class("clocks-toolbar")
         self.set_icon_size(Gtk.IconSize.MENU)
         self.get_style_context().add_class(Gtk.STYLE_CLASS_MENUBAR)
@@ -182,6 +183,7 @@ class SelectionToolbar(Gtk.Toolbar):
         self.doneButton.get_style_context().add_class('suggested-action')
         self.doneButton.set_label(_("Done"))
         self.doneButton.set_size_request(64, 34)
+        self.doneButton.connect("clicked", self._on_done_clicked)
 
         self.leftBox = box = Gtk.Box()
         box.pack_start(self.doneButton, False, False, 0)
@@ -207,7 +209,14 @@ class SelectionToolbar(Gtk.Toolbar):
     def _on_selection_changed(self, view):
         selection = view.get_selection()
         self.set_selection_label(len(selection))
+        if len(selection) > 0:
+            self._selectionToolbar._fade_in()
+        else:
+            self._selectionToolbar._fade_out()
 
+    def _on_done_clicked(self, widget):
+        #TODO: do something
+        self._selectionToolbar._fade_out()
 
 class ClockButton(Gtk.RadioButton):
     _group = None
@@ -239,7 +248,7 @@ class ClocksToolbar(Gtk.Toolbar):
     __gsignals__ = {'view-clock': (GObject.SignalFlags.RUN_LAST,
                     None, (Clock,))}
 
-    def __init__(self):
+    def __init__(self, selectionToolbar):
         Gtk.Toolbar.__init__(self)
 
         self.get_style_context().add_class("clocks-toolbar")
@@ -303,7 +312,7 @@ class ClocksToolbar(Gtk.Toolbar):
         box.pack_end(self.applyButton, False, False, 0)
         toolbox.pack_start(box, True, True, 0)
 
-        self.selection_toolbar = SelectionToolbar()
+        self.selection_toolbar = SelectionToolbar(selectionToolbar)
         self.selection_toolbar.doneButton.connect("clicked",
             self._on_selection_mode, False)
 
diff --git a/gnomeclocks/widgets.py b/gnomeclocks/widgets.py
index d108da3..f678c72 100644
--- a/gnomeclocks/widgets.py
+++ b/gnomeclocks/widgets.py
@@ -27,7 +27,7 @@ import os
 import cairo
 import time
 
-SELECTION_TOOLBAR_DEFAULT_WIDTH = 500;
+SELECTION_TOOLBAR_DEFAULT_WIDTH = 300;
 
 # FIXME: Use real sunrise/sunset time in the future
 def get_is_day(hour):
@@ -682,9 +682,9 @@ class SelectionToolbar():
     def __init__(self, parent_actor):
         self._parent_actor = parent_actor
         
-        self.widget = Gtk.Button()
-        self.widget.set_label("Delete") #FIXME: Make translatable
-        #self.widget.set_icon_size(Gtk.IconSize.LARGE_TOOLBAR)
+        self.widget = Gtk.Toolbar()
+        self.widget.set_show_arrow(False)
+        self.widget.set_icon_size(Gtk.IconSize.LARGE_TOOLBAR)
         self.widget.get_style_context().add_class('osd');
         self.widget.set_size_request(SELECTION_TOOLBAR_DEFAULT_WIDTH, -1);
 
@@ -696,10 +696,22 @@ class SelectionToolbar():
         constraint.set_source(self._parent_actor)
         constraint.set_align_axis(Clutter.AlignAxis.X_AXIS)
         constraint.set_factor(0.50)
+        self.actor.add_constraint(constraint)
+
         constraint = Clutter.AlignConstraint()
         constraint.set_source(self._parent_actor)
         constraint.set_align_axis(Clutter.AlignAxis.Y_AXIS)
-        constraint.set_factor(0.50)
+        constraint.set_factor(0.95)
+        self.actor.add_constraint(constraint)
+
+        self._leftBox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
+        self._leftGroup = Gtk.ToolItem()
+        self._leftGroup.set_expand(True)
+        self._leftGroup.add(self._leftBox)
+        self.widget.insert(self._leftGroup, -1);
+        self._toolbarDelete = Gtk.Button("Delete") #FIXME: Make translatable
+        self._leftBox.pack_start(self._toolbarDelete, True, True, 0);
+        self._toolbarDelete.connect('clicked', self._on_toolbar_delete)
         self.widget.show_all()
 
     def _on_toolbar_delete(self, widget, event):
@@ -715,14 +727,14 @@ class SelectionToolbar():
         if self.actor.get_opacity() != 0:
             return
         else:
-            self.actor.opacity = 0
+            self.actor.set_opacity(0)
             self.actor.show()
             # FIXME: add tween
             #Tweener.addTween(self.actor,
             #    { opacity: 255,
             #      time: 0.30,
             #      transition: 'easeOutQuad' });
-            self.actor.opacity = 255
+            self.actor.set_opacity(255)
             self.actor.show()
 
     def _fade_out(self):
@@ -735,7 +747,7 @@ class SelectionToolbar():
         #      self.actor.hide();
         #  },
         #  onCompleteScope: this });
-        self.actor.opacity = 0
+        self.actor.set_opacity(0)
         self.actor.hide()
 
 
@@ -762,6 +774,8 @@ class Embed (GtkClutter.Embed):
         self._overlayLayout.add(self._contentsActor,
             Clutter.BinAlignment.FILL, Clutter.BinAlignment.FILL)
 
+        # pack the main GtkNotebook and a spinnerbox in a BinLayout, so that
+        # we can easily bring them front/back
         self._viewLayout = Clutter.BinLayout()
         self._viewActor = Clutter.Box()
         self._viewActor.set_layout_manager(self._viewLayout)
@@ -770,16 +784,23 @@ class Embed (GtkClutter.Embed):
         self._contentsActor.add_actor(self._viewActor)
 
         self._notebook = notebook
-        self._selectionToolbar = SelectionToolbar(self._contentsActor)
         self._notebookActor = GtkClutter.Actor.new_with_contents(self._notebook)
-        self._overlayLayout.add(self._notebookActor,
-                                Clutter.BinAlignment.FILL,
-                                Clutter.BinAlignment.FILL)
+        self._viewLayout.add(self._notebookActor,
+                             Clutter.BinAlignment.FILL,
+                             Clutter.BinAlignment.FILL)
+
+        self._selectionToolbar = SelectionToolbar(self._contentsActor)
         self._overlayLayout.add(self._selectionToolbar.actor,
                                 Clutter.BinAlignment.FIXED,
                                 Clutter.BinAlignment.FIXED)
         self.show_all()
 
+    def set_show_selectionbar(show):
+        if show:
+            self._selectionToolbar._fade_in()
+        else:
+            self._selectionToolbar._fade_out()
+
 ################################################################################
 # Main
 ################################################################################



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]