def __addMenuItem__(self, name, command, parent, enabled=1, accelerator=None): """Adds a new menu item name (string) - name for the menu item command (function) - command to be runned on item click parent (string) - name of the parent menu enabled (boolean) - if true the item can be clicked accelerator (char) - key to be used has a keyboard shortcut""" self.actions[name]=command mi=swing.JMenuItem(name) mi.actionPerformed=lambda e: self.__menuAction__(e, command) mi.setEnabled(enabled) if accelerator: mi.setAccelerator(getKeyStroke(accelerator, KeyEvent.CTRL_MASK)) self.menu[parent][name]=mi self.menu[parent]['menu'].add(mi)
def __addMenuItem__(self, name, command, parent, enabled=1, accelerator=None): """Adds a new menu item name (string) - name for the menu item command (function) - command to be runned on item click parent (string) - name of the parent menu enabled (boolean) - if true the item can be clicked accelerator (char) - key to be used has a keyboard shortcut""" self.actions[name] = command mi = swing.JMenuItem(name) mi.actionPerformed = lambda e: self.__menuAction__(e, command) mi.setEnabled(enabled) if accelerator: mi.setAccelerator(getKeyStroke(accelerator, KeyEvent.CTRL_MASK)) self.menu[parent][name] = mi self.menu[parent]['menu'].add(mi)
def __init__(self, locals={}, doc_url={'default' : "file:///C:/java2/docs/api"}, size=(640, 480), exitOnClose=0, ownFrame=1, filename="untitled.py"): #~ def show_in_frame(self, ): self.locals=locals self.tempdir=tempfile.mkdtemp('_Py4IJSandbox_') sys.path.append(self.tempdir) def close_frame(event): w = event.getWindow() w.dispose() def exit_app(event): #sys.exit(0) pass if exitOnClose==1: close_func = exit_app else: close_func = close_frame self.test_console = JScrapbook.JScrapbook(locals=locals) self.console_pane = self.test_console self.doc_browser = DocBrowser(doc_url) self.doc_pane = self.doc_browser.get_pane() self.nodeinfo_pane = InfoDisplay(doc_browser=self.doc_browser) self.nodeinfo_pane.setPreferredSize(java.awt.Dimension(150, 150)) self.o_tree = ObjectTree(info_display=self.nodeinfo_pane) self.o_tree.set_locals(locals) self.o_tree.init_model() self.test_console.diff_func = self.o_tree.update_changes self.tree = self.o_tree.getComponent() scroll_tree = swing.JScrollPane(self.tree) scroll_tree.setMinimumSize(java.awt.Dimension(180, 200)) # define input, output, documentation, tree, value and edit panes input=self.console_pane.input output=self.console_pane.output doc=self.doc_pane tree=scroll_tree value=swing.JScrollPane(self.nodeinfo_pane) # define main frame{'default' : "file:///C:/java2/docs/api"} self.frame = swing.JFrame("Py4IJ - QuickPALM edition", windowClosing=close_func) self.frame.contentPane.add(self) cp=self.frame.getContentPane() cp.setLayout(java.awt.BorderLayout()) # define console self.jconsole = console.Console(self.frame, namespace=self.locals) # define tabbed pane self.tabPane=swing.JTabbedPane() self.tabPane.addTab("Console",swing.JScrollPane(self.jconsole.text_pane)) self.tabPane.addTab("Editor",input) self.editor=input.text_pane font_family = "Monospaced" # jEdit.getProperty("jython.font", "Monospaced") font_size = 14 #jEdit.getIntegerProperty("jython.fontsize", 14) font_style = Font.PLAIN #jEdit.getIntegerProperty("jython.fontstyle", Font.PLAIN) self.editor.setFont(Font(font_family,font_style,font_size)) self.filename=filename if filename!="untitled.py": self.frame.title=self.filename text=open(self.filename).read() self.editor.text=text #self.tabPane.addTab("Doc",doc) # tabPane.addTab("Value",value) # tabPane.addTab("Editor",swing.JScrollPane(editor)) # rightPane=swing.JSplitPane(swing.JSplitPane.VERTICAL_SPLIT,self.tabPane,output) # cp.add(swing.JSplitPane(swing.JSplitPane.HORIZONTAL_SPLIT,tree,rightPane)) cp.add(swing.JSplitPane(swing.JSplitPane.HORIZONTAL_SPLIT,tree,self.tabPane)) self.frame.pack() # define menu bar mb=swing.JMenuBar() m1,m2=map(swing.JMenu,["File","Edit"]) map(mb.add,[m1,m2]) self.frame.setJMenuBar(mb) mFile,mEdit=m1,m2 miNew, miOpen, miSave, miSaveAs, miExit, miRunCodeConsole, \ miPasteAsString, miPasteAsFloat, miPasteAsInteger, miRefresh\ = map(swing.JMenuItem,\ ["New", "Open", "Save", "Save as...", "Exit","Run Code in Console", \ "Paste as String", "Paste as Float", "Paste as Integer","Refresh"]) mItems=\ [miNew, miOpen, miSave, miSaveAs, miExit, \ miPasteAsString, miPasteAsFloat, miPasteAsInteger,miRefresh] map(mFile.add,[miNew, miOpen, miSave, miSaveAs, miRunCodeConsole, miExit]) map(mEdit.add,[miPasteAsString, miPasteAsFloat, miPasteAsInteger,miRefresh]) # define menu actions self.consolePane=self.console_pane self.consoleFrame=self.frame miNew.actionPerformed=self.actionNew miOpen.actionPerformed=self.actionOpen miOpen.setAccelerator(getKeyStroke(KeyEvent.VK_O, KeyEvent.CTRL_MASK)) miSave.actionPerformed=self.actionSave miSave.setAccelerator(getKeyStroke(KeyEvent.VK_Z, KeyEvent.CTRL_MASK)) miSaveAs.actionPerformed=self.actionSaveAs miSaveAs.setAccelerator(getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_MASK)) miExit.actionPerformed=lambda e:sys.exit() miPasteAsString.actionPerformed=self.actionPasteAsString miPasteAsFloat.actionPerformed=self.actionPasteAsFloat miPasteAsInteger.actionPerformed=self.actionPasteAsInteger miRunCodeConsole.actionPerformed=self.actionRunCodeConsole miRunCodeConsole.setAccelerator(getKeyStroke(KeyEvent.VK_R, KeyEvent.CTRL_MASK)) miRefresh.actionPerformed=self.actionRefresh #~ refresh_button = javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F5, 0) #~ refresh_button_action = RefreshAction() #~ inputMap = self.getInputMap(javax.swing.JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) #~ actionMap = self.getActionMap() #~ inputMap.put(refresh_button, "refresh_button_pressed") #~ actionMap.put("refresh_button_pressed", refresh_button_action) #~ refresh_button_action.setRefreshFunc(self.o_tree.refresh) self.frame_size=size self.frame.setSize(apply(java.awt.Dimension, size)) self.frame.setVisible(1)