;ò òxFc@sdZdklZdkZdkZdklZdkZdkZdkZei dde dƒe a de d„Z d fd „ƒYZd efd „ƒYZd efd„ƒYZdefd„ƒYZdefd„ƒYZd„Zdfd„ƒYZdS(sñThe Menu widget provides an easy way to create menus that allow the user to define keyboard shortcuts, and saves the shortcuts automatically. You only define each Menu once, and attach it to windows as required. Example: from rox.Menu import Menu, set_save_name, Action, Separator, SubMenu set_save_name('Edit') menu = Menu('main', [ SubMenu('File', Menu([ Action('Save', 'save'), Action('Open Parent', 'up'), Action('Close', 'close'), Separator(), Action('New', 'new') ])), SubMenu('/Edit', Menu([ Action('Undo', 'undo'), Action('Redo', 'redo'), Separator(), Action('Search...', 'search'), Action('Goto line...', 'goto'), Separator(), Action('Process...', 'process'), ])), Action('Options', 'show_options', 'F1', stock=g.STOCK_HELP)), Action('Quit', 'quit', stock=g.STOCK_QUIT), ]) There is also an older syntax, where you pass tuples of strings to the Menu constructor. This has not been required since 1.9.13. (s generatorsN(sgsignoresuse gtk.UIManagersroxsmenuscCs|||fadS(sóSet the directory/leafname (see choices) used to save the menu keys. Call this before creating any menus. If 'site' is given, the basedir module is used for saving bindings (the new system). Otherwise, the deprecated choices module is used.N(ssitesprogsleafs _save_name(sprogsleafssite((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pys set_save_name0ssMenuItemcBs)tZdZdeed„Zd„ZRS(sKBase class for menu items. You should normally use one of the subclasses...scCsZ|o|ddjo|d|_n ||_||_||_||_||_dS(Nis/i(slabelsselfs callback_namesfnstypeskeysstock(sselfslabels callback_namestypeskeysstock((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pys__init__:s    cCst||iƒƒdS(N(sgetattrscallersselfsfn(sselfscaller((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pysactivateDs(s__name__s __module__s__doc__sNones__init__sactivate(((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pysMenuItem8s  sActioncBs)tZdZeefd„Zd„ZRS(sPA leaf menu item, possibly with a stock icon, which calls a method when clicked.cCsM|o ti|||d||ƒnti|||d|ƒ||_dS(s>object.callback(*values) is called when the item is activated.s sN(sstocksMenuItems__init__sselfslabels callback_nameskeysvalues(sselfslabels callback_nameskeysstocksvalues((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pys__init__Is  cCst||iƒ|iŒdS(N(sgetattrscallersselfsfnsvalues(sselfscaller((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pysactivateQs(s__name__s __module__s__doc__sNones__init__sactivate(((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pysActionGs s ToggleItemcBs)tZdZd„Zd„Zd„ZRS(sNA menu item that has a check icon and toggles state each time it is activated.cCs#ti|||dƒt|_dS(sµproperty_name is a boolean property on the caller object. You can use the built-in Python class property() if you want to perform calculations when getting or setting the value.s N(sMenuItems__init__sselfslabels property_namesFalsesupdating(sselfslabels property_name((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pys__init__VscCs8t|_t|i|iƒ}|i |ƒt |_dS(s Called when then menu is opened.N( sTruesselfsupdatingsgetattrsmenuscallersfnsstateswidgets set_activesFalse(sselfsmenuswidgetsstate((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pysupdate]s   cCs3|i o$t||it||iƒ ƒndS(N(sselfsupdatingssetattrscallersfnsgetattr(sselfscaller((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pysactivateds (s__name__s __module__s__doc__s__init__supdatesactivate(((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pys ToggleItemTs   sSubMenucBstZdZd„ZRS(s(A branch menu item leading to a submenu.cCs#ti||tdƒ||_dS(Ns(sMenuItems__init__sselfslabelsNonessubmenu(sselfslabelssubmenu((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pys__init__js(s__name__s __module__s__doc__s__init__(((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pysSubMenuhs s SeparatorcBstZdZd„ZRS(s&A line dividing two parts of the menu.cCsti|dtdƒdS(Nss (sMenuItems__init__sselfsNone(sself((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pys__init__ps(s__name__s __module__s__doc__s__init__(((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pys Separatorns ccsoxh|D]`}d|i|fVt|tƒo9x6t|iƒD]!\}}d|i||fVq>WqqWdS(Ns/( sitemssxslabels isinstancesSubMenus_walkssubmenuslsy(sitemsslsysx((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pys_walkss sMenucBsVtZdZeZeZeZeZd„Zd„Z d„Z ed„Z d„Z RS(sA popup menu. This wraps GtkMenu. It handles setting, loading and saving of keyboard-shortcuts, applies translations, and has a simpler API.csœt otdƒ‚ntiƒ}|ˆ_titid||ƒ}t\}} } |oti|| | ƒ} nti| | ƒ} g}gˆ_|ot|dtƒ o1gi}|D]}|t|ŒƒqÃ~}ng}xàt|ƒD]Ò\}}|ioˆii|ƒˆi }nt"}|i#o9|i||i$|t%ˆiƒd|i&|i#fƒn0|i||i$|t%ˆiƒd|i&fƒt'|dƒo|i||fƒqùqùW|i(|ƒ|ˆ_ gˆ_)xH|D]@\}}|i*|ƒ} |i,} ˆi)i| | ‡d†ƒqõW| oti-| ƒnt"ˆ_.|i*d|ƒˆ_/d„}dk1}|i2i3|d |ƒdS( s$names should be unique (eg, 'popup', 'main', etc). items is a list of menu items: [(name, callback_name, type, key), ...]. 'name' is the item's path. 'callback_name' is the NAME of a method to call. 'type' is as for g.ItemFactory. 'key' is only used if no bindings are in Choices.s$Call rox.Menu.set_save_name() first!s<%s>iisupdatecs |ˆ|ƒS(N(sfsselfsw(sfsw(sself(sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pys³scGs’t\}}}|o+ti||ƒ}tii ||ƒ}nt i ||ƒ}|o4yt i |ƒWqŽtj odG|GHqŽXndS(NsError saving keybindings to(s _save_namessitesprogramsnamesbasedirssave_config_pathsdsosspathsjoinschoicesssavesgsaccel_map_savesAttributeError(sunusedsdssitesprogramspathsname((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pys keys_changed»sNs accel_changed(4s _save_names Exceptionsgs AccelGroupsagsselfs accel_groups ItemFactorysMenusnamesfactoryssitesprograms save_leafsbasedirsload_first_configs accel_pathschoicessloadsoutsfnssitemss isinstancesMenuItemsappends_[1]stsitems_with_updates_walkspathsitemsfns _activatescbsNonesstockskeyslenstypeshasattrs create_itemssupdate_callbackss get_widgetswidgetsupdatesaccel_map_loadscallersmenus keys_changedsgobjectsGObjectsconnect(sselfsnamesitemssagscbssitesitems_with_updatesoutsfactorysprogramsfns accel_paths save_leafswidgets keys_changedspaths_[1]sitemstsgobject((sselfsR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pys__init__‚sR   1    9/         cs3‡‡d†}|id|ƒ|iˆiƒdS(szKeypresses on this window will be treated as menu shortcuts for this object, calling 'object.' when used.csˆˆ_dSdS(Ni(sobjectsselfscaller(swsk(sobjectsself(sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pyskevÐs skey-press-eventN(skevswindowsconnectsadd_accel_groupsselfs accel_group(sselfswindowsobjectskev((sselfsobjectsR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pysattachÍscCsQtiiƒiƒ\}}}|iƒ\}}||dd|dt fSdS(Niii( sgsgdksget_default_root_windows get_pointersxsysmodssmenus size_requestswidthsheightsTrue(sselfsmenusmodssheightswidthsysx((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pys _positionÖscCsz||_tt|iƒ|o0|iitt|p|i |i |i ƒn'|iitt|p|i ddƒdS(s†Display the menu. Call 'caller.' when an item is chosen. For applets, position_fn should be my_applet.position_menu).iN( scallersselfsmapsapplysupdate_callbacksseventsmenuspopupsNones position_fns _positionsbuttonstime(sselfscallersevents position_fn((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pyspopupÛs  0cCsM|io3y|i|i|iƒWqItiƒqIXn tdƒ‚dS(NsNo caller for menu!(sselfscallersfnssactionsactivatesroxsreport_exceptions Exception(sselfsactionswidget((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pys _activateås  ( s__name__s __module__s__doc__sNonesfnssupdate_callbackss accel_groupsmenus__init__sattachs _positionspopups _activate(((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pysMenuzs  K  (s__doc__s __future__s generatorssossroxsgschoicessbasedirswarningssfilterwarningssDeprecationWarningsNones _save_names set_save_namesMenuItemsActions ToggleItemsSubMenus Separators_walksMenu(sSubMenus ToggleItemsgswarningssMenusbasedirs set_save_nameschoicessroxsActions generatorssMenuItems Separatorsoss_walk((sR/mnt/gmirror/ports/devel/py-roxlib/work/rox-lib2-2.0.5/ROX-Lib2/python/rox/Menu.pys?"s"