accerciser r592 - in trunk: . src/lib/accerciser src/lib/accerciser/plugin



Author: eitani
Date: Tue Jul  8 18:40:34 2008
New Revision: 592
URL: http://svn.gnome.org/viewvc/accerciser?rev=592&view=rev

Log:
    * src/lib/accerciser/accessible_treeview.py:
    * src/lib/accerciser/main_window.py:
    * src/lib/accerciser/plugin/plugin_manager.py:
    * src/lib/accerciser/tools.py:
    * src/lib/accerciser/ui_manager.py: Added a context menu to the
    main tree.


Modified:
   trunk/ChangeLog
   trunk/src/lib/accerciser/accessible_treeview.py
   trunk/src/lib/accerciser/main_window.py
   trunk/src/lib/accerciser/plugin/plugin_manager.py
   trunk/src/lib/accerciser/tools.py
   trunk/src/lib/accerciser/ui_manager.py

Modified: trunk/src/lib/accerciser/accessible_treeview.py
==============================================================================
--- trunk/src/lib/accerciser/accessible_treeview.py	(original)
+++ trunk/src/lib/accerciser/accessible_treeview.py	Tue Jul  8 18:40:34 2008
@@ -16,9 +16,10 @@
 import gobject
 import pyatspi
 import atk, os
+import ui_manager
 from icons import getIcon
 from node import Node
-from tools import Tools
+from tools import Tools, getTreePathBoundingBox
 from i18n import _
 
 COL_ICON = 0
@@ -426,16 +427,62 @@
 
     self.action_group = gtk.ActionGroup('TreeActions')
     self.action_group.add_actions([
-        ('RefreshAll', gtk.STOCK_REFRESH, None,
-         None, 'Refresh all', self._refreshTopLevel),
+        ('RefreshAll', gtk.STOCK_REFRESH, _('_Refresh Registry'),
+        # Translators: Appears as tooltip
+        #
+         None, _('Refresh all'), self._refreshTopLevel),
         # Translators: Refresh current tree node's children.
         #
-        ('RefreshCurrent', gtk.STOCK_JUMP_TO, _('Refresh _Current'),
-         None, 'Refresh selected node\'s children', self._refreshCurrentLevel)])  
+        ('RefreshCurrent', gtk.STOCK_JUMP_TO, _('Refresh _Node'),
+        # Translators: Appears as tooltip
+        #
+         None, _('Refresh selected node\'s children'), 
+         self._refreshCurrentLevel)])  
 
     self.refresh_current_action = self.action_group.get_action('RefreshCurrent')
     self.refresh_current_action.set_sensitive(False)
 
+    self.connect('popup-menu', self._onPopup)
+    self.connect('button-press-event', self._onPopup)
+
+    self.connect('cursor-changed', self._onCursorChanged)
+
+  def _onCursorChanged(self, tree):
+    '''
+    Set sensitivity of refresh function only if the tree cursor is 
+    on an accessible.
+    '''
+    path = self.get_cursor()[0]
+    self.refresh_current_action.set_sensitive(path is not None)      
+
+  def _onPopup(self, w, event=None):
+    '''
+    Callback for popup button or right mouse button. Brings up a context
+    menu.
+    '''
+    if event:
+      if event.button != 3:
+        return False
+      path = self.get_path_at_pos(int(event.x), int(event.y))[0]
+      selection = self.get_selection()
+      selection.set_mode(gtk.SELECTION_NONE)
+      self.set_cursor(path)
+      selection.set_mode(gtk.SELECTION_SINGLE)      
+      time = event.time
+      button = event.button
+      func = None
+      extra_data = None
+    else:
+      path, col= self.get_cursor()
+      time = gtk.get_current_event_time()
+      button = 0
+      extra_data = getTreePathBoundingBox(self, path, col)
+      func = lambda m, b: (b.x, b.y + (b.height/2), True)
+      
+    menu = ui_manager.uimanager.get_widget(ui_manager.POPUP_MENU_PATH)
+    menu.popup(None, None, func, button, time, extra_data)
+    return True
+
   def _refreshTopLevel(self, action=None):
     '''
     Refreshes the entire tree at the desktop level.
@@ -454,13 +501,12 @@
     @param action: Action object that emitted this signal, if any.
     @type: gtk.Action
     '''
-    selection = self.get_selection()
-    model, iter = selection.get_selected()
-    is_expanded = self.row_expanded(self.model.get_path(iter))
-    self._refreshChildren(iter)
+    path = self.get_cursor()[0]
+    is_expanded = self.row_expanded(path)
+    self._refreshChildren(self.model.get_iter(path))
     if is_expanded:
-      self.expand_row(self.model.get_path(iter), False)
-      self._onExpanded(self, iter, self.model.get_path(iter))
+      self.expand_row(path, False)
+      self._onExpanded(self, self.model.get_iter(path), path)
 
   def _onExpanded(self, treeview, iter, path):
     '''
@@ -607,10 +653,8 @@
     model, iter = selection.get_selected()
     if iter:
       new_acc = model[iter][COL_ACC]
-      self.refresh_current_action.set_sensitive(True)
     else:
       new_acc = self.desktop
-      self.refresh_current_action.set_sensitive(False)
     if new_acc == self.node.acc:
       return
     self.node.handler_block(self._changed_handler)

Modified: trunk/src/lib/accerciser/main_window.py
==============================================================================
--- trunk/src/lib/accerciser/main_window.py	(original)
+++ trunk/src/lib/accerciser/main_window.py	Tue Jul  8 18:40:34 2008
@@ -90,6 +90,12 @@
       ui_manager.uimanager.add_ui(merge_id, ui_manager.TREE_ACTIONS_PATH, 
                                   action_name, action_name, 
                                   gtk.UI_MANAGER_MENUITEM, False)
+    
+    merge_id = ui_manager.uimanager.new_merge_id()
+    action_name = self.treeview.refresh_current_action.get_name()
+    ui_manager.uimanager.add_ui(merge_id, ui_manager.POPUP_MENU_PATH,
+                                 action_name, action_name,
+                                 gtk.UI_MANAGER_MENUITEM, False)
 
     sw.add(self.treeview)
     self._hpaned.add1(sw)

Modified: trunk/src/lib/accerciser/plugin/plugin_manager.py
==============================================================================
--- trunk/src/lib/accerciser/plugin/plugin_manager.py	(original)
+++ trunk/src/lib/accerciser/plugin/plugin_manager.py	Tue Jul  8 18:40:34 2008
@@ -15,7 +15,7 @@
 import gobject
 from base_plugin import Plugin
 from view import ViewManager
-from accerciser.tools import Tools, GConfListWrapper
+from accerciser.tools import Tools, GConfListWrapper, getTreePathBoundingBox
 from message import MessageManager
 import os
 import sys
@@ -407,17 +407,7 @@
       @rtype: boolean
       '''
       path, col = self.get_cursor()
-      gdkwindow = self.window
-      x, y = self.allocation.x, self.allocation.y
-      while gdkwindow:
-        window_x, window_y = gdkwindow.get_position()
-        x += window_x
-        y += window_y
-        gdkwindow = gdkwindow.get_parent()
-      rect = self.get_cell_area(path, col)
-      rect.x, rect.y = self.tree_to_widget_coords(rect.x, rect.y)
-      rect.x += x
-      rect.y += y
+      rect = getTreePathBoundingBox(self, path, col)
       self._showPopup(0, gtk.get_current_event_time(), 
                       path, lambda m, r: (r.x, r.y, True), rect)
       return True

Modified: trunk/src/lib/accerciser/tools.py
==============================================================================
--- trunk/src/lib/accerciser/tools.py	(original)
+++ trunk/src/lib/accerciser/tools.py	Tue Jul  8 18:40:34 2008
@@ -169,3 +169,21 @@
     Inverse of __eq__.
     '''
     return not self.__eq__(other)
+
+def getTreePathBoundingBox(treeview, path, col):
+  '''
+  Get bounding box of given tree path.
+  '''
+  gdkwindow = treeview.window
+  x, y = treeview.allocation.x, treeview.allocation.y
+  while gdkwindow:
+    window_x, window_y = gdkwindow.get_position()
+    x += window_x
+    y += window_y
+    gdkwindow = gdkwindow.get_parent()
+  rect = treeview.get_cell_area(path, col)
+  rect.x, rect.y = treeview.tree_to_widget_coords(rect.x, rect.y)
+  rect.x += x
+  rect.y += y
+  return rect
+

Modified: trunk/src/lib/accerciser/ui_manager.py
==============================================================================
--- trunk/src/lib/accerciser/ui_manager.py	(original)
+++ trunk/src/lib/accerciser/ui_manager.py	Tue Jul  8 18:40:34 2008
@@ -42,6 +42,8 @@
     <menu action="Help">
     </menu>
   </menubar>
+  <popup name="AccTreePopup">
+  </popup>
 </ui>
 '''
 
@@ -53,6 +55,7 @@
 PLUGIN_LAYOUT_PATH = VIEW_MENU_PATH+'/PluginLayout'
 TREE_ACTIONS_PATH = VIEW_MENU_PATH+'/TreeActions'
 HELP_MENU_PATH = MAIN_MENU_PATH+'/Help'
+POPUP_MENU_PATH = '/AccTreePopup'
 
 uimanager = gtk.UIManager()
 uimanager.insert_action_group(menu_actions, 0)



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