def onToggle(self, ev): """Handle a wxWidgets toggle button click event.""" # Since this is supposed to be a normal button and not a # toggle button, return to the Off-state automatically. self.getWxWidget().SetValue(False) events.send(events.Command(self.widgetId)) # This causes a reaction. self.react()
def startGame(profile): """Start the game using the specified profile. @param profile A profiles.Profile object. """ setLaunchMessage(language.translate('launch-message')) options = generateOptions(profile) if options == None: return # Locate the paths and binaries. Most of these are configured in # the .conf files. engineBin = st.getSystemString('doomsday-binary') userPath = paths.getUserPath(paths.RUNTIME) options += ' -userdir ' + paths.quote(userPath) # Put the response file in the user's runtime directory. responseFile = os.path.join(userPath, 'Options.rsp') file(responseFile, 'w').write(options + "\n") # Execute the command line. if host.isWindows(): spawnFunc = os.spawnv else: spawnFunc = os.spawnvp if host.isWindows(): spawnFunc(os.P_NOWAIT, engineBin, [engineBin, '@' + paths.quote(responseFile)]) else: spawnFunc(os.P_NOWAIT, engineBin, [engineBin, '@' + responseFile]) # Shut down if the configuration settings say so. value = profile.getValue('quit-on-launch') if not value or value.getValue() == 'yes': # Quit Snowberry. events.sendAfter(events.Command('quit'))
def handleCommand(event): if event.hasId('show-addon-paths'): events.send(events.Command('show-snowberry-settings')) prefTabs.selectTab('addon-paths') pathList.focus()
def onPopupCommand(self, ev): events.send(events.Command(self.commandMap[ev.GetId()]))
def handleCommand(event): """This is called when someone sends a command event. @param event An events.Command object.""" # Figure out which addon has been currently selected in the addons # tree. The action will target this addon. selected = '' if event.hasId('refresh-addon-database'): ao.refresh() elif event.hasId('install-addon'): tab30.installer.run() elif event.hasId('uninstall-addon'): selectedItems = addonList.getSelectedItems() # Only take the uninstallable addons. addons = filter(lambda i: ao.isUninstallable(i), selectedItems) if len(addons) == 0: return # Make sure the user wants to uninstall. dialog, area = sb.util.dialog.createButtonDialog( 'uninstall-addon-dialog', ['no', 'yes'], 'no', resizable=False) if len(addons) == 1: text = language.translate('uninstall-addon-query') area.setExpanding(True) area.createRichText( language.expand(text, language.translate(addons[0]))) else: area.setWeight(0) area.createText('uninstall-addon-query-several') msg = '<html><ul>' for addon in addons: msg += '<li>' + language.translate(addon) + '</li>' msg += '</ul></html>' ft = area.createFormattedText() ft.setText(msg) ft.setMinSize(400, 150) if dialog.run() == 'yes': for addon in addons: ao.uninstall(addon) ao.refresh() elif event.hasId('addon-info'): sel = addonList.getSelectedItems() if len(sel) > 0: # Show the Addon Inspector. tab30.inspector.run(ao.get(sel[0])) elif event.hasId('addon-settings'): sel = addonList.getSelectedItems() if len(sel) > 0: command = events.Command('show-addon-settings') command.addon = sel[0] events.send(command) elif event.hasId('load-order'): # Open the Load Order dialog. tab30.loadorder.run(pr.getActive()) elif event.hasId('addon-list-check-selected'): for addon in addonList.getSelectedItems(): pr.getActive().useAddon(addon) elif event.hasId('addon-list-uncheck-selected'): for addon in addonList.getSelectedItems(): pr.getActive().dontUseAddon(addon) elif event.hasId('addon-list-check-all'): for addon in addonList.getItems(): pr.getActive().useAddon(addon) elif event.hasId('addon-list-uncheck-all'): for addon in addonList.getItems(): pr.getActive().dontUseAddon(addon) elif event.hasId('addon-show-parent-box'): for addon in addonList.getSelectedItems(): a = ao.get(addon) if a.getBox(): showInAddonList(a.getBox().getId()) break elif event.hasId('addon-show-box-category'): for addon in addonList.getSelectedItems(): a = ao.get(addon) if a.getType() == 'addon-type-box': addonList.deselectAllItems() tree.selectItem(a.getContentCategoryLongId()) refreshListIfVisible() break
def notifyHandler(event): "This is called when a Notify event is broadcasted." # We are interested in notifications that concern profiles. if event.hasId('quit'): # Save the current profile configuration. pr.save() elif event.hasId('language-changed'): # Just update the Defaults, because it's the only profile whose name # is translated. addListItem(pr.getDefaults()) elif event.hasId('profile-updated'): # A profile has been loaded or updated. Make sure it's in the # list. p = event.getProfile() # The Defaults profile should be first in the list. if p is pr.getDefaults(): destIndex = 0 else: # The new profile will be added to wherever the widget # wants to put it. destIndex = None if profileList.hasItem(p.getId()): # This already exists in the list. if p.isHidden(): # Remove it completely. profileList.removeItem(p.getId()) # Update the selected item since the active one is now # hidden. pr.setActive(pr.get(profileList.getSelectedItem())) else: # Just update the item. addListItem(p) elif not p.isHidden(): # The item does not yet exist in the list. addListItem(p, toIndex=destIndex) elif event.hasId('active-profile-changed') and not profileListDisabled: # Highlight the correct profile in the list. profileList.selectItem(pr.getActive().getId()) if pr.getActive() is pr.getDefaults(): if deleteButton: deleteButton.disable() if dupeButton: dupeButton.disable() ui.disableMenuCommand('rename-profile') ui.disableMenuCommand('delete-profile') ui.disableMenuCommand('hide-profile') ui.disableMenuCommand('duplicate-profile') profileList.setPopupMenu(defaultsMenu) else: isSystem = pr.getActive().isSystemProfile() if deleteButton: deleteButton.enable(not isSystem) if dupeButton: dupeButton.enable() ui.enableMenuCommand('rename-profile') ui.enableMenuCommand('delete-profile', not isSystem) ui.enableMenuCommand('hide-profile') ui.enableMenuCommand('duplicate-profile') if isSystem: menu = systemMenu else: menu = normalMenu profileList.setPopupMenu(menu) # Update the banner image. if bannerImage: bannerImage.setImage(pr.getActive().getBanner()) elif event.hasId('profile-list-selected'): # Change the currently active profile. p = pr.get(event.getSelection()) pr.setActive(p) # Double-clicking causes a Play command. if event.isDoubleClick() and p is not pr.getDefaults(): events.sendAfter(events.Command('play'))
def onClick(self, ev): """Handle a wxWidgets button click event.""" events.send(events.Command(self.widgetId)) # This causes a reaction. self.react()
def OnLinkClicked(self, link): """Handle a hypertext link click by sending a command event. @param link A wxHtmlLinkInfo object. """ events.send(events.Command(link.GetHref()))
def onPopupCommand(self, ev): """Called when a selection is made in the popup menu.""" events.send(events.Command(self.menuCommandMap[ev.GetId()]))