accerciser r592 - in trunk: . src/lib/accerciser src/lib/accerciser/plugin
- From: eitani svn gnome org
- To: svn-commits-list gnome org
- Subject: accerciser r592 - in trunk: . src/lib/accerciser src/lib/accerciser/plugin
- Date: Tue, 8 Jul 2008 18:40:34 +0000 (UTC)
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]