1 2# Demonstration of how you would create a new skin 3# from scratch 4 5import os 6 7try: 8 from Tkinter import * 9 from tkFileDialog import * 10except ImportError: 11 from tkinter import * 12 from tkinter.filedialog import * 13 14import Pmw 15 16from pmg_tk.skins import PMGSkin 17 18class Demo(PMGSkin): 19 20 def fileOpenDialog(self): 21 if not hasattr(self,'fileOpenPath'): 22 self.fileOpenPath = os.getcwd() 23 ofile_list = askopenfilename(initialdir = self.fileOpenPath, 24 filetypes=self.app.getLoadableFileTypes(), 25 multiple=1) 26 for ofile in ofile_list: 27 if len(ofile): 28 self.fileOpenPath = os.path.dirname(ofile) 29 self.cmd.load(ofile,quiet=0) 30 31 def quit(self): 32 self.cmd.log_close() 33 self.cmd.quit() 34 35 def createMenuBar(self): 36 self.menuBar = Pmw.MenuBar(self.root, # balloon=self.balloon, 37 hull_relief=RAISED, hull_borderwidth=1) 38 self.menuBar.pack(fill=X) 39 40 self.menuBar.addmenu('File', 'File Menu',tearoff=TRUE) 41 42 self.menuBar.addmenuitem('File', 'command', 'Open file', 43 label='Open...', 44 command=self.fileOpenDialog) 45 46 self.menuBar.addcascademenu('File', 'Skin', 'Skin', 47 label='Skin',tearoff=TRUE) 48 49 self.app.addSkinMenuItems(self.menuBar,'Skin') 50 51 self.menuBar.addmenuitem('File', 'command', 'Quit PyMOL', 52 label='Quit', 53 command=self.quit) 54 55 def destroyMenuBar(self): 56 self.menuBar.pack_forget() 57 self.menuBar.destroy() 58 del self.menuBar 59 60 def createInterface(self): 61 62 # create the menu bar 63 self.createMenuBar() 64 65 def setup(self): 66 67 # call the parent method 68 PMGSkin.setup(self) 69 70 # name the application 71 self.root.title("Demonstration PyMOL Skin") 72 73 # create the user interface 74 self.createInterface() 75 76 # pack the root window 77 self.app._hull.pack(side=TOP, anchor=CENTER, expand=NO, fill=NONE, 78 padx=0, pady=0, ipadx=0, ipady=0) 79 80 def takedown(self): 81 self.destroyMenuBar() 82 PMGSkin.takedown(self) 83 84 def __init__(self,app): 85 86 PMGSkin.__init__(self,app) 87 self.app = app 88 self.pymol = app.pymol 89 self.cmd = app.pymol.cmd 90 91def __init__(app): 92 return Demo(app) 93 94