__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
# Orca # # Copyright 2012 Igalia, S.L. # # Author: Joanmarie Diggs <[email protected]> # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the # Free Software Foundation, Inc., Franklin Street, Fifth Floor, # Boston MA 02110-1301 USA. """Displays a GUI for Orca navigation list dialogs""" __id__ = "$Id$" __version__ = "$Revision$" __date__ = "$Date$" __copyright__ = "Copyright (c) 2012 Igalia, S.L." __license__ = "LGPL" import time import gi gi.require_version("Gdk", "3.0") gi.require_version("Gtk", "3.0") from gi.repository import GObject, Gdk, Gtk from . import debug from . import guilabels from . import script_manager from .ax_event_synthesizer import AXEventSynthesizer from .ax_object import AXObject class OrcaNavListGUI: def __init__(self, title, columnHeaders, rows, selectedRow): self._tree = None self._activateButton = None self._jumpToButton = None self._gui = self._createNavListDialog(columnHeaders, rows, selectedRow) self._gui.set_title(title) self._gui.set_modal(True) self._gui.set_keep_above(True) self._gui.set_focus_on_map(True) self._gui.set_accept_focus(True) self._script = script_manager.get_manager().get_active_script() self._document = None def _createNavListDialog(self, columnHeaders, rows, selectedRow): dialog = Gtk.Dialog() dialog.set_default_size(500, 400) grid = Gtk.Grid() contentArea = dialog.get_content_area() contentArea.add(grid) scrolledWindow = Gtk.ScrolledWindow() grid.add(scrolledWindow) self._tree = Gtk.TreeView() self._tree.set_hexpand(True) self._tree.set_vexpand(True) scrolledWindow.add(self._tree) cols = [GObject.TYPE_OBJECT, GObject.TYPE_INT] cols.extend(len(columnHeaders) * [GObject.TYPE_STRING]) model = Gtk.ListStore(*cols) cell = Gtk.CellRendererText() column = Gtk.TreeViewColumn("Accessible", cell, text=0) column.set_visible(False) self._tree.append_column(column) cell = Gtk.CellRendererText() column = Gtk.TreeViewColumn("offset", cell, text=1) column.set_visible(False) self._tree.append_column(column) for i, header in enumerate(columnHeaders): cell = Gtk.CellRendererText() column = Gtk.TreeViewColumn(header, cell, text=i+2) column.set_sort_column_id(i+2) self._tree.append_column(column) for row in rows: rowIter = model.append(None) for i, cell in enumerate(row): model.set_value(rowIter, i, cell) self._tree.set_model(model) selection = self._tree.get_selection() selection.select_path(selectedRow) btn = dialog.add_button(guilabels.BTN_CANCEL, Gtk.ResponseType.CANCEL) btn.connect('clicked', self._onCancelClicked) self._jumpToButton = dialog.add_button(guilabels.BTN_JUMP_TO, Gtk.ResponseType.APPLY) self._jumpToButton.connect('clicked', self._onJumpToClicked) self._activateButton = dialog.add_button( guilabels.ACTIVATE, Gtk.ResponseType.OK) self._activateButton.connect('clicked', self._onActivateClicked) self._activateButton.grab_default() self._tree.connect('key-release-event', self._onKeyRelease) self._tree.connect('cursor-changed', self._onCursorChanged) self._tree.set_search_column(2) return dialog def showGUI(self): self._gui.show_all() self._gui.present_with_time(time.time()) def _onCursorChanged(self, widget): obj, offset = self._getSelectedAccessibleAndOffset() n_actions = AXObject.get_n_actions(obj) self._activateButton.set_sensitive(n_actions > 0) if n_actions > 0: self._activateButton.grab_default() else: self._jumpToButton.grab_default() def _onKeyRelease(self, widget, event): keycode = event.hardware_keycode keymap = Gdk.Keymap.get_default() entries_for_keycode = keymap.get_entries_for_keycode(keycode) entries = entries_for_keycode[-1] eventString = Gdk.keyval_name(entries[0]) if eventString == 'Return': self._gui.activate_default() def _onCancelClicked(self, widget): self._gui.destroy() def _onJumpToClicked(self, widget): obj, offset = self._getSelectedAccessibleAndOffset() self._gui.destroy() self._script.utilities.setCaretPosition(obj, offset, self._document) def _onActivateClicked(self, widget): obj, offset = self._getSelectedAccessibleAndOffset() self._gui.destroy() if not obj: return self._script.utilities.setCaretPosition(obj, offset) if not AXEventSynthesizer.try_all_clickable_actions(obj): tokens = ["INFO: Attempting a synthesized click on", obj] debug.print_tokens(debug.LEVEL_INFO, tokens, True) AXEventSynthesizer.click_object(obj) def _getSelectedAccessibleAndOffset(self): if not self._tree: msg = "ERROR: Could not get navlist tree" debug.print_message(debug.LEVEL_INFO, msg, True) return None, -1 selection = self._tree.get_selection() if not selection: msg = "ERROR: Could not get selection for navlist tree" debug.print_message(debug.LEVEL_INFO, msg, True) return None, -1 model, paths = selection.get_selected_rows() if not paths: msg = "ERROR: Could not get paths for navlist tree" debug.print_message(debug.LEVEL_INFO, msg, True) return None, -1 obj = model.get_value(model.get_iter(paths[0]), 0) offset = model.get_value(model.get_iter(paths[0]), 1) return obj, max(0, offset) def showUI(title='', columnHeaders=[], rows=[()], selectedRow=0): gui = OrcaNavListGUI(title, columnHeaders, rows, selectedRow) gui.showGUI()
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| __pycache__ | Folder | 0755 |
|
|
| backends | Folder | 0755 |
|
|
| scripts | Folder | 0755 |
|
|
| __init__.py | File | 115 B | 0644 |
|
| acss.py | File | 3.85 KB | 0644 |
|
| action_presenter.py | File | 8.65 KB | 0644 |
|
| ax_collection.py | File | 6.16 KB | 0644 |
|
| ax_component.py | File | 14.93 KB | 0644 |
|
| ax_document.py | File | 9.36 KB | 0644 |
|
| ax_event_synthesizer.py | File | 17.39 KB | 0644 |
|
| ax_hypertext.py | File | 8.36 KB | 0644 |
|
| ax_object.py | File | 47.84 KB | 0644 |
|
| ax_selection.py | File | 4.54 KB | 0644 |
|
| ax_table.py | File | 47.98 KB | 0644 |
|
| ax_text.py | File | 45.13 KB | 0644 |
|
| ax_utilities.py | File | 28.24 KB | 0644 |
|
| ax_utilities_application.py | File | 7.17 KB | 0644 |
|
| ax_utilities_collection.py | File | 86.79 KB | 0644 |
|
| ax_utilities_debugging.py | File | 10.12 KB | 0644 |
|
| ax_utilities_event.py | File | 32.78 KB | 0644 |
|
| ax_utilities_relation.py | File | 15.2 KB | 0644 |
|
| ax_utilities_role.py | File | 91.79 KB | 0644 |
|
| ax_utilities_state.py | File | 11.63 KB | 0644 |
|
| ax_value.py | File | 6.83 KB | 0644 |
|
| bookmarks.py | File | 11.95 KB | 0644 |
|
| braille.py | File | 74.03 KB | 0644 |
|
| braille_generator.py | File | 55.79 KB | 0644 |
|
| braille_rolenames.py | File | 10.23 KB | 0644 |
|
| brlmon.py | File | 6.53 KB | 0644 |
|
| brltablenames.py | File | 7.3 KB | 0644 |
|
| bypass_mode_manager.py | File | 4.79 KB | 0644 |
|
| caret_navigation.py | File | 19.51 KB | 0644 |
|
| chat.py | File | 32.03 KB | 0644 |
|
| clipboard.py | File | 20.45 KB | 0644 |
|
| cmdnames.py | File | 61.77 KB | 0644 |
|
| colornames.py | File | 39.22 KB | 0644 |
|
| debug.py | File | 3.95 KB | 0644 |
|
| debugging_tools_manager.py | File | 10.69 KB | 0644 |
|
| event_manager.py | File | 36.07 KB | 0644 |
|
| flat_review.py | File | 48.89 KB | 0644 |
|
| flat_review_finder.py | File | 20.2 KB | 0644 |
|
| flat_review_presenter.py | File | 45.94 KB | 0644 |
|
| focus_manager.py | File | 11.52 KB | 0644 |
|
| generator.py | File | 67.07 KB | 0644 |
|
| guilabels.py | File | 56.38 KB | 0644 |
|
| highlighter.py | File | 6.95 KB | 0644 |
|
| input_event.py | File | 30.05 KB | 0644 |
|
| input_event_manager.py | File | 35.66 KB | 0644 |
|
| keybindings.py | File | 24.87 KB | 0644 |
|
| keynames.py | File | 9.55 KB | 0644 |
|
| label_inference.py | File | 19.77 KB | 0644 |
|
| learn_mode_presenter.py | File | 14.72 KB | 0644 |
|
| liveregions.py | File | 25.77 KB | 0644 |
|
| mathsymbols.py | File | 88.65 KB | 0644 |
|
| messages.py | File | 152.28 KB | 0644 |
|
| mouse_review.py | File | 23.34 KB | 0644 |
|
| notification_presenter.py | File | 14.17 KB | 0644 |
|
| object_navigator.py | File | 13.24 KB | 0644 |
|
| object_properties.py | File | 33.86 KB | 0644 |
|
| orca.py | File | 9.83 KB | 0644 |
|
| orca_gtkbuilder.py | File | 5.42 KB | 0644 |
|
| orca_gui_navlist.py | File | 6.51 KB | 0644 |
|
| orca_gui_prefs.py | File | 141.9 KB | 0644 |
|
| orca_gui_profile.py | File | 3.98 KB | 0644 |
|
| orca_i18n.py | File | 3.13 KB | 0644 |
|
| orca_modifier_manager.py | File | 13.76 KB | 0644 |
|
| orca_platform.py | File | 1.43 KB | 0644 |
|
| phonnames.py | File | 2.76 KB | 0644 |
|
| pronunciation_dict.py | File | 2.55 KB | 0644 |
|
| script.py | File | 11.11 KB | 0644 |
|
| script_manager.py | File | 14.68 KB | 0644 |
|
| script_utilities.py | File | 64.21 KB | 0644 |
|
| settings.py | File | 10.66 KB | 0644 |
|
| settings_manager.py | File | 27.13 KB | 0644 |
|
| sleep_mode_manager.py | File | 5.04 KB | 0644 |
|
| sound.py | File | 5.51 KB | 0644 |
|
| sound_generator.py | File | 48.88 KB | 0644 |
|
| speech.py | File | 8.87 KB | 0644 |
|
| speech_and_verbosity_manager.py | File | 27.71 KB | 0644 |
|
| speech_generator.py | File | 163.53 KB | 0644 |
|
| speechdispatcherfactory.py | File | 24.68 KB | 0644 |
|
| speechserver.py | File | 8 KB | 0644 |
|
| spellcheck.py | File | 18.11 KB | 0644 |
|
| spiel.py | File | 25.59 KB | 0644 |
|
| ssml.py | File | 6.71 KB | 0644 |
|
| structural_navigation.py | File | 77.63 KB | 0644 |
|
| system_information_presenter.py | File | 7.44 KB | 0644 |
|
| table_navigator.py | File | 29.78 KB | 0644 |
|
| text_attribute_names.py | File | 27.31 KB | 0644 |
|
| where_am_i_presenter.py | File | 21.59 KB | 0644 |
|