Lightningbeam/PyGUI-2.5.3/build/lib/GUI/EditCmdHandler.py

63 lines
1.8 KiB
Python

#
# PyGUI - Edit command handling - Cocoa
#
from AppKit import NSMenuItem
from GUI import export
class EditCmdHandler(object):
# Mixin for Components whose _ns_responder handles the
# standard editing commands.
def setup_menus(self, m):
def validate(cmd_name, ns_selector):
ns_menu_item = NSMenuItem.alloc().\
initWithTitle_action_keyEquivalent_("", ns_selector, "")
m[cmd_name].enabled = ns_target.validateMenuItem_(ns_menu_item)
ns_target = self.window._ns_window
if ns_target:
validate('undo_cmd', 'undo:')
validate('redo_cmd', 'redo:')
ns_target = self._ns_edit_cmd_target()
if ns_target:
validate('cut_cmd', 'cut:')
validate('copy_cmd', 'copy:')
validate('paste_cmd', 'paste:')
validate('clear_cmd', 'delete:')
validate('select_all_cmd', 'selectAll:')
def undo_cmd(self):
ns_window = self.window._ns_window
if ns_window:
ns_window.undo_(None)
def redo_cmd(self):
ns_window = self.window._ns_window
if ns_window:
ns_window.redo_(None)
def cut_cmd(self):
self._ns_edit_cmd('cut_')
def copy_cmd(self):
self._ns_edit_cmd('copy_')
def paste_cmd(self):
self._ns_edit_cmd('paste_')
def clear_cmd(self):
self._ns_edit_cmd('delete_')
def select_all_cmd(self):
self._ns_edit_cmd('selectAll_')
def _ns_edit_cmd(self, ns_method_name):
ns_target = self._ns_edit_cmd_target()
if ns_target:
getattr(ns_target, ns_method_name)(None)
def _ns_edit_cmd_target(self):
return self._ns_responder
export(EditCmdHandler)