示例#1
0
    def MainNotebook(self):
        top = self.root
        w = Tix.NoteBook(top,
                         ipadx=5,
                         ipady=5,
                         options="""
        *TixNoteBook*tagPadX 6
        *TixNoteBook*tagPadY 4
        *TixNoteBook*borderWidth 2
        """)
        # This may be required if there is no *Background option
        top['bg'] = w['bg']

        w.add(
            'prob',
            label='Problem Parameters',
            underline=0,
            createcmd=lambda w=w, name='prob': self.ProblemParameters(w, name))
        w.add('sol',
              label='Solution Representation',
              underline=0,
              createcmd=lambda w=w, name='sol': self.SolutionRepresentation(
                  w, name))
        w.add(
            'opt',
            label='Optimisation',
            underline=0,
            createcmd=lambda w=w, name='opt': self.ProblemParameters(w, name))
        w.add(
            'exp',
            label='Experiment',
            underline=0,
            createcmd=lambda w=w, name='exp': self.ProblemParameters(w, name))
        return w
示例#2
0
    def createTabs(self, master):
        # definition des onglets
        self.notebook = Tix.NoteBook(master, width=660)
        self.notebook.add("ue", label="UE", raisecmd=lambda: self.goTo("UE"))
        self.notebook.add("review",
                          label="Review",
                          raisecmd=lambda: self.goTo("Review"))
        self.notebook.add("historique",
                          label="Historique des commits",
                          raisecmd=lambda: self.goTo("History"))
        self.notebook.grid(column=0, row=1, columnspan=8)

        # onglet ue
        self.ue = self.notebook.subwidget_list["ue"]
        #contient tous les widget de l'onglet question
        self.onglet_ue = Frame(self.ue)
        self.onglet_ue.grid(column=0, row=1)

        #onglet review
        self.review = self.notebook.subwidget_list["review"]
        #contient tous les widget de l'onglet commentaire
        self.onglet_review = Frame(self.review)
        self.onglet_review.grid(column=0, row=1)

        #onglet messages
        self.historiqueCommit = self.notebook.subwidget_list["historique"]
        self.onglet_historique = Frame(self.historiqueCommit)
        self.onglet_historique.grid(column=0, row=1)
示例#3
0
def MkNoteBook(w):
    msg = Tix.Message(
        w,
        relief=Tix.FLAT,
        width=240,
        anchor=Tix.N,
        text=
        'The NoteBook widget allows you to layout a complex interface into individual pages.'
    )
    prefix = Tix.OptionName(w)
    if not prefix:
        prefix = ''
    w.option_add('*' + prefix + '*TixControl*entry.width', 10)
    w.option_add('*' + prefix + '*TixControl*label.width', 18)
    w.option_add('*' + prefix + '*TixControl*label.anchor', Tix.E)
    w.option_add('*' + prefix + '*TixNoteBook*tagPadX', 8)

    nb = Tix.NoteBook(w, ipadx=6, ipady=6)
    nb.add('hard_disk', label="Hard Disk", underline=0)
    nb.add('network', label="Network", underline=0)

    # Frame for the buttons that are present on all pages
    common = Tix.Frame(nb.hard_disk)
    common.pack(side=Tix.RIGHT, padx=2, pady=2, fill=Tix.Y)
    CreateCommonButtons(common)

    # Widgets belonging only to this page
    a = Tix.Control(nb.hard_disk, value=12, label='Access Time: ')
    w = Tix.Control(nb.hard_disk, value=400, label='Write Throughput: ')
    r = Tix.Control(nb.hard_disk, value=400, label='Read Throughput: ')
    c = Tix.Control(nb.hard_disk, value=1021, label='Capacity: ')
    a.pack(side=Tix.TOP, padx=20, pady=2)
    w.pack(side=Tix.TOP, padx=20, pady=2)
    r.pack(side=Tix.TOP, padx=20, pady=2)
    c.pack(side=Tix.TOP, padx=20, pady=2)

    common = Tix.Frame(nb.network)
    common.pack(side=Tix.RIGHT, padx=2, pady=2, fill=Tix.Y)
    CreateCommonButtons(common)

    a = Tix.Control(nb.network, value=12, label='Access Time: ')
    w = Tix.Control(nb.network, value=400, label='Write Throughput: ')
    r = Tix.Control(nb.network, value=400, label='Read Throughput: ')
    c = Tix.Control(nb.network, value=1021, label='Capacity: ')
    u = Tix.Control(nb.network, value=10, label='Users: ')
    a.pack(side=Tix.TOP, padx=20, pady=2)
    w.pack(side=Tix.TOP, padx=20, pady=2)
    r.pack(side=Tix.TOP, padx=20, pady=2)
    c.pack(side=Tix.TOP, padx=20, pady=2)
    u.pack(side=Tix.TOP, padx=20, pady=2)

    msg.pack(side=Tix.TOP, padx=3, pady=3, fill=Tix.BOTH)
    nb.pack(side=Tix.TOP, padx=5, pady=5, fill=Tix.BOTH, expand=1)
示例#4
0
文件: ivy_ui.py 项目: asyaf/ivy
 def __init__(self, tk=None, frame=None):
     if tk == None:
         tk = Tix.Tk()
         tk.tk_setPalette(background='white')
         tk.wm_title("ivy")
         frame = tk
     elif frame == None:
         frame = Toplevel(tk)
     self.tk = tk
     self.frame = frame
     self.notebook = Tix.NoteBook(frame)
     self.notebook.pack(fill=BOTH, expand=1)
     self.tab_counter = 0
     self.tabs = 0
示例#5
0
 def __init__(self, tk=None, frame=None):
     if tk == None:
         tk = Tix.Tk()
         tk.tk_setPalette(background='white')
         tk.wm_title("ivy")
         frame = tk
     elif frame == None:
         frame = Toplevel(tk)
     self.tk = tk
     self.frame = frame
     self.notebook = Tix.NoteBook(frame)
     self.notebook.pack(fill=BOTH, expand=1)
     self.tab_counter = 0
     self.tabs = 0
     self.answers = []
     # pre-compile the default AnalysysGraphUI
     self.analysisGraphWidgetClass = self.wrap_art_ui(self.AGUI())
示例#6
0
def MkMainNotebook(top):
    top.option_add('*TixNoteBook*tagPadX', 6)
    top.option_add('*TixNoteBook*tagPadY', 4)
    top.option_add('*TixNoteBook*borderWidth', 2)
    top.option_add('*TixNoteBook*font',
		   '-*-helvetica-bold-o-normal-*-14-*-*-*-*-*-*-*')
    w = Tix.NoteBook(top, ipadx=5, ipady=5)
    w.add('wel', label='Welcome', underline=0,
	  createcmd=lambda w=w, name='wel': MkWelcome(w, name))
    w.add('cho', label='Choosers', underline=0,
	  createcmd=lambda w=w, name='cho': MkChoosers(w, name))
    w.add('scr', label='Scrolled Widgets', underline=0,
	  createcmd=lambda w=w, name='scr': MkScroll(w, name))
    w.add('mgr', label='Manager Widgets', underline=0,
	  createcmd=lambda w=w, name='mgr': MkManager(w, name))
    w.add('dir', label='Directory List', underline=0,
	  createcmd=lambda w=w, name='dir': MkDirList(w, name))
    w.add('exp', label='Run Sample Programs', underline=0,
	  createcmd=lambda w=w, name='exp': MkSample(w, name))
    return w
示例#7
0
    def MkMainNotebook(self):
        top = self.root
        w = Tix.NoteBook(top,
                         ipadx=5,
                         ipady=5,
                         options="""
        tagPadX 6
        tagPadY 4
        borderWidth 2
        """)
        # This may be required if there is no *Background option
        top['bg'] = w['bg']

        w.add('wel',
              label='Welcome',
              underline=0,
              createcmd=lambda w=w, name='wel': MkWelcome(w, name))
        w.add('cho',
              label='Choosers',
              underline=0,
              createcmd=lambda w=w, name='cho': MkChoosers(w, name))
        w.add('scr',
              label='Scrolled Widgets',
              underline=0,
              createcmd=lambda w=w, name='scr': MkScroll(w, name))
        w.add('mgr',
              label='Manager Widgets',
              underline=0,
              createcmd=lambda w=w, name='mgr': MkManager(w, name))
        w.add('dir',
              label='Directory List',
              underline=0,
              createcmd=lambda w=w, name='dir': MkDirList(w, name))
        w.add('exp',
              label='Run Sample Programs',
              underline=0,
              createcmd=lambda w=w, name='exp': MkSample(w, name))
        return w
示例#8
0
    def __init__(self, root, **kwargs):
        Frame.__init__(self, root, width=1000, height=1000, **kwargs)
        root.geometry("395x320")
        root.title("Pilotage")

        # Création des onglets
        monnotebook = Tix.NoteBook(root)
        monnotebook.add("page1", label="Configuration")
        monnotebook.add("page2", label="Velocity Mode")
        monnotebook.add("page3", label="Motion Task")

        p1 = monnotebook.subwidget_list["page1"]
        p2 = monnotebook.subwidget_list["page2"]
        p3 = monnotebook.subwidget_list["page3"]

        fra1 = Canvas(p1)
        fra2 = Canvas(p2)
        fra3 = Canvas(p3)

        fra1.pack(expand=1, fill=Tix.BOTH)
        fra2.pack(expand=1, fill=Tix.BOTH)
        fra3.pack(expand=1, fill=Tix.BOTH)
        # fin création des onglets

        # Début onglet 1
        # create a frame in canvas(p1)
        sous_fra = Frame(fra1, width=400, borderwidth=2, relief=GROOVE)
        self.portLabel = Label(sous_fra, text="Serial ser:")  # create a label
        # create a variable, it will contain ser selection
        self.myPortCombo = Tix.StringVar()

        self.actuatorNameCombo = Tix.StringVar()
        # create a combobox, it will contain names of ports
        self.actuatorCombo = Tix.ComboBox(sous_fra,
                                          editable=1,
                                          dropdown=1,
                                          variable=self.actuatorNameCombo)
        # configure the combobox in read only
        self.actuatorCombo.entry.config(state='readonly')
        for m in actuator_list:
            self.actuatorCombo.insert(0, m)

        self.actuatorLabel = Label(sous_fra, text="Actuator name:")
        self.portCombo = Entry(sous_fra, textvariable=self.myPortCombo)
        self.baudrateLabel = Label(sous_fra,
                                   text="Baudrate:")  # create a label
        # create a variable, it will contain baudrate selection
        self.baudCombo = Tix.StringVar()
        self.baudrateCombo = Entry(sous_fra, textvariable=self.baudCombo)
        self.num_device = Tix.IntVar()
        # create a label
        self.num_device_label = Label(sous_fra, text="Device number:")
        self.num_device_entry = Spinbox(sous_fra,
                                        from_=1,
                                        to=10,
                                        textvariable=self.num_device)
        self.actuatorNameCombo.trace('w', self.callback)
        # create connect Button
        self.connection = Button(sous_fra,
                                 text="Connect",
                                 command=self.connection)
        sous_fra1 = Frame(fra1,
                          width=400)  # create a second frame in canvas(p1)
        # create examine location button
        self.location = Button(sous_fra1,
                               text="Examine location",
                               command=self.examineLocation,
                               width=10)
        self.location.config(
            state='disabled')  # disable the state of the button
        # create 'location:' label
        locationLabel = Label(sous_fra1, text="Location:")
        # create a variable, it will contain the result of examineLocation method
        self.Resultat = StringVar()
        self.Resultat.set("0")  # set the variable to zero
        # create a label, it will show the variable
        resultatLabel = Label(sous_fra1, textvariable=self.Resultat)
        self.resetZero = Button(sous_fra1,
                                text=" Reset ",
                                command=self.reset_servostar)
        # create cancel button
        self.quit = Button(sous_fra1, text="Cancel", command=root.quit)
        # Fin onglet 1

        # Début onglet 2
        # create a frame in canvas(p2)
        sous_fra2 = Frame(fra2, width=400)
        # create a second fram in canvas(p2)
        sous_fra2bis = Frame(fra2, width=400)
        # create a variable, it will contain the value of speedEntry
        self.speedVar = StringVar()
        # create 'Velocity:' label
        speedLabel = Label(sous_fra2bis, text="Velocity:")
        # create an entry, it will contain a velocity choose by the user
        speedEntry = Entry(sous_fra2bis, textvariable=self.speedVar, width=5)
        # create a advance button
        self.advanceButton = Button(sous_fra2bis,
                                    text="advance",
                                    command=self.advance,
                                    width=10)
        # disable the state of the button
        self.advanceButton.config(state='disabled')
        # create recoil button
        self.recoilButton = Button(sous_fra2bis,
                                   text="recoil",
                                   command=self.recoil,
                                   width=10)
        # disable the state of the button
        self.recoilButton.config(state='disabled')
        # create stop button
        self.stopVMButton = Button(sous_fra2bis,
                                   text="STOP",
                                   command=self.stopMotion,
                                   width=10)
        self.stopVMButton.config(state='disabled')
        self.defineZeroButton = Button(sous_fra2bis,
                                       text="Define Zero",
                                       command=self.defineZero,
                                       width=10)
        self.defineZeroButton.config(state='disabled')
        # Début onglet 3
        sous_fra3_2 = Frame(fra3, width=400)  # create a frame in canvas(p3)
        self.moveZeroButton = Button(sous_fra3_2,
                                     text="Move Home",
                                     command=self.moveZero,
                                     width=15)  # create move home button
        # disable the state of the button
        self.moveZeroButton.config(state='disabled')

        # create 'position:' label
        positionLabel = Label(sous_fra3_2, text="position :")
        # create a variable, it will contain the value of entry2
        self.position = StringVar()
        # create an entry, it will contain the positon choose by the user
        self.entry2 = Entry(sous_fra3_2, textvariable=self.position)
        # pick out the widget that will receive keyboard events
        self.entry2.focus_set()

        speed_label = Label(sous_fra3_2,
                            text="speed:")  # create 'position:' label
        # create a variable, it will contain the value of entry2
        self.speed = StringVar()
        # create an entry, it will contain the positon choose by the user
        self.entry3 = Entry(sous_fra3_2, textvariable=self.speed)
        # pick out the widget that will receive keyboard events
        self.entry3.focus_set()

        # create 'motionType:' label
        motionTypeLabel = Label(sous_fra3_2, text="motion type :")
        # create a variable, it will contain the value of entry4
        self.motionType = StringVar()

        sous_fra3 = Frame(fra3, width=400)  # create a frame in canvas(p3)
        sous_sous_fra3 = Frame(sous_fra3,
                               width=400)  # create a frame in sous_fra3
        # create move button
        self.moveButton = Button(sous_sous_fra3,
                                 text="Move",
                                 command=self.move)
        self.moveButton.config(
            state='disabled')  # disable the state of the button
        # create STOP button
        self.stopMTButton = Button(sous_sous_fra3,
                                   text="STOP",
                                   command=self.stopMotion)
        self.stopMTButton.config(state='disabled')
        # create a second frame in sous_fra3
        sous_sous_fra3bis = Frame(sous_fra3, width=400)
        # placement des widgets onglet 1
        # show widgets on canvas(p1)
        sous_fra.grid(padx=10, pady=10)  #
        self.portLabel.grid(row=1, column=0, sticky="sw", padx=10, pady=10)
        self.portCombo.grid(row=1, column=1, sticky="sw", padx=10, pady=10)
        self.baudrateLabel.grid(row=2, column=0, sticky="sw", padx=10, pady=10)
        self.baudrateCombo.grid(row=2, column=1, sticky="sw", padx=10, pady=10)
        self.actuatorLabel.grid(row=3, column=0, sticky="sw", padx=10, pady=10)
        self.actuatorCombo.grid(row=3, column=1, sticky="sw", padx=10, pady=10)
        self.connection.grid(row=5, column=1, sticky="se")
        # placement widget sous frame onglet 1
        # show widgets on frame canvas(p1)
        sous_fra1.grid()
        # self.enable.grid(row=1, column=0,sticky= "sw", padx=10,pady=10)
        # self.disable.grid(row=2, column=0,sticky= "sw", padx=10,pady=10)
        # self.resetZero.grid(row=3, column=0,sticky= "sw", padx=10,pady=10)
        self.location.grid(row=5, column=0, sticky="s", padx=10, pady=10)
        locationLabel.grid(row=5, column=1)
        resultatLabel.grid(row=5, column=2)
        self.resetZero.grid(row=5, column=4)
        # self.quit.grid(row=4, column=4, sticky= "e")

        # placement des widgets onglet 2
        # show widgets on canvas(p2)
        sous_fra2.grid(row=0, column=0, padx=10, pady=10)
        sous_fra2bis.grid(row=1, column=0, padx=10, pady=10)
        # self.init_modeButton.grid(row=0, column=0, padx=10,pady=10)
        speedLabel.grid(row=0, column=0, sticky='w')
        speedEntry.grid(row=0, column=2, sticky='w')
        self.recoilButton.grid(row=0, column=3, sticky='w')
        self.advanceButton.grid(row=1, column=3, sticky='w')
        self.stopVMButton.grid(row=2, column=3, sticky='w')
        self.defineZeroButton.grid(row=3, column=3, sticky='w')

        # placement des widgets onglet 3
        #  show widgets on canvas(p3)
        sous_fra3_2.grid(padx=10, pady=10)
        self.moveZeroButton.grid(row=0, column=0, padx=10, pady=10)
        positionLabel.grid(row=1, column=0, sticky='w')
        speed_label.grid(row=2, column=0, sticky='w')
        motionTypeLabel.grid(row=3, column=0, sticky='w')
        self.entry2.grid(row=1, column=1, sticky='w')
        self.entry3.grid(row=2, column=1, sticky='w')
        Radiobutton(sous_fra3_2,
                    text="absolute",
                    variable=self.motionType,
                    value=True).grid()
        Radiobutton(sous_fra3_2,
                    text="relative",
                    variable=self.motionType,
                    value=False).grid()
        sous_fra3.grid(row=3, column=0)
        sous_sous_fra3.grid(row=0, column=0)
        sous_sous_fra3bis.grid(row=1, column=0)
        self.moveButton.grid(row=0, column=1)
        self.stopMTButton.grid(row=0, column=2)
        # show notebooks
        monnotebook.pack(side=LEFT, fill=Tix.BOTH, expand=1, padx=5, pady=5)
示例#9
0
 def __init__(self, path='', **options):
     #global sys
     master = Tix.Tk()
     Tix.Frame.__init__(self, master)
     master.title('PyGlossary (Tkinter)')
     master.resizable(True, False)
     ########
     #icon = Tix.BitmapImage(file=xbmLogo)
     #master.wm_iconbitmap(icon)
     #master.wm_iconbitmap(xbmLogo)
     #bit = Tix.PhotoImage(file=join(srcDir, 'pyglossary.gif'), format='gif')
     #lb = Tix.Label(None,image=bit)
     #lb.grid()
     #master.iconwindow(icon, 'pyglossary')
     #master.wm_iconimage(bit)
     #master.wm_iconname('dot')
     #help(master.wm_iconbitmap)
     #for x in dir(master):
     #    if 'wm_' in x:
     #        log.debug(x)
     master.wm_iconbitmap('@%s' % xbmLogo)
     ########
     self.pack(fill='x')
     #master.bind('<Configure>', self.resized)
     ######################
     self.running = False
     self.glos = Glossary(ui=self)
     self.pref = {}
     self.pref_load()
     self.pathI = ''
     self.pathO = ''
     self.fcd_dir = join(homeDir, 'Desktop')
     ######################
     vpaned = tk.PanedWindow(self, orient=tk.VERTICAL)
     notebook = Tix.NoteBook(vpaned)
     notebook.add('tab1', label='Convert', underline=0)
     notebook.add('tab2', label='Reverse', underline=0)
     convertFrame = Tix.Frame(notebook.tab1)
     ######################
     frame = Tix.Frame(convertFrame)
     ##
     label = Tix.Label(frame, text='Read from format')
     label.pack(side='left')
     ##
     comboVar = tk.StringVar()
     combo = tk.OptionMenu(frame, comboVar, *Glossary.readDesc)
     #comboVar.set(Glossary.readDesc[0])
     comboVar.set(noneItem)
     combo.pack(side='left')
     self.combobox_i = comboVar
     ##
     frame.pack(fill='x')
     ###################
     frame = Tix.Frame(convertFrame)
     ##
     label = Tix.Label(frame, text='  Path:')
     label.pack(side='left')
     ##
     entry = Tix.Entry(frame)
     entry.pack(side='left', fill='x', expand=True)
     entry.bind_all('<KeyPress>', self.entry_changed)
     self.entry_i = entry
     ##
     button = Tix.Button(
         frame,
         text='Browse',
         command=self.browse_i,
         bg='#f0f000',
         activebackground='#f6f622',
     )
     button.pack(side='left')
     ##
     button = Tix.Button(
         frame,
         text='Load',
         command=self.load,
         bg='#7777ff',
         activebackground='#9999ff',
     )
     button.pack(side='left')
     ###
     frame.pack(fill='x')
     ######################################
     self.running = False
     self.glos = Glossary(ui=self)
     self.pref = {}
     self.pref_load(**options)
     ######################
     frame = Tix.Frame(convertFrame)
     ##
     label = Tix.Label(frame, text='Write to format    ')
     label.pack(side='left')
     ##
     comboVar = tk.StringVar()
     combo = tk.OptionMenu(frame, comboVar, *Glossary.writeDesc)
     #comboVar.set(Glossary.writeDesc[0])
     comboVar.set(noneItem)
     combo.pack(side='left')
     combo.bind('<Configure>', self.combobox_o_changed)
     self.combobox_o = comboVar
     ##
     frame.pack(fill='x')
     ###################
     frame = Tix.Frame(convertFrame)
     ##
     label = Tix.Label(frame, text='  Path:')
     label.pack(side='left')
     ##
     entry = Tix.Entry(frame)
     entry.pack(side='left', fill='x', expand=True)
     #entry.bind_all('<KeyPress>', self.entry_changed)
     self.entry_o = entry
     ##
     button = Tix.Button(
         frame,
         text='Browse',
         command=self.browse_o,
         bg='#f0f000',
         activebackground='#f6f622',
     )
     button.pack(side='left')
     ##
     button = Tix.Button(
         frame,
         text='Convert',
         command=self.convert,
         bg='#00e000',
         activebackground='#22f022',
     )
     button.pack(side='left')
     ###
     frame.pack(fill='x')
     ######
     convertFrame.pack(fill='x')
     vpaned.add(notebook)
     #################
     console = Tix.Text(vpaned, height=15, background='#000000')
     #self.consoleH = 15
     #sbar = Tix.Scrollbar(vpaned, orien=Tix.VERTICAL, command=console.yview)
     #sbar.grid ( row=0, column=1)
     #console['yscrollcommand'] = sbar.set
     #console.grid()
     console.pack(fill='both', expand=True)
     log.addHandler(TkTextLogHandler(console), )
     console.insert('end', 'Console:\n')
     ####
     vpaned.add(console)
     vpaned.pack(fill='both', expand=True)
     self.console = console
     ##################
     frame2 = Tix.Frame(self)
     clearB = Tix.Button(
         frame2,
         text='Clear',
         command=self.console_clear,
         bg='black',
         fg='#ffff00',
         activebackground='#333333',
         activeforeground='#ffff00',
     )
     clearB.pack(side='left')
     ####
     label = Tix.Label(frame2, text='Verbosity')
     label.pack(side='left')
     ##
     comboVar = tk.StringVar()
     combo = tk.OptionMenu(
         frame2,
         comboVar,
         0,
         1,
         2,
         3,
         4,
     )
     comboVar.set(log.getVerbosity())
     comboVar.trace('w', self.verbosityChanged)
     combo.pack(side='left')
     self.verbosityCombo = comboVar
     #####
     pbar = ProgressBar(frame2, width=400)
     pbar.pack(side='left', fill='x', expand=True)
     self.pbar = pbar
     frame2.pack(fill='x')
     #############
     #vpaned.grid()
     #bottomFrame.grid()
     #self.grid()
     #####################
     #lbox = Tix.Listbox(convertFrame)
     #lbox.insert(0, 'aaaaaaaa', 'bbbbbbbbbbbbbbbbbbbb')
     #lbox.pack(fill='x')
     ##############
     frame3 = Tix.Frame(self)
     aboutB = Tix.Button(
         frame3,
         text='About',
         command=self.about_clicked,
         bg='#e000e0',
         activebackground='#f030f0',
     )
     aboutB.pack(side='right')
     closeB = Tix.Button(
         frame3,
         text='Close',
         command=self.quit,
         bg='#ff0000',
         activebackground='#ff5050',
     )
     closeB.pack(side='right')
     applyB = Tix.Button(
         frame3,
         text='Apply',
         command=self.apply_clicked,
         bg='#00e000',
         activebackground='#22f022',
     )
     ## 'underline=0' arg in Tix.Button not affect keyboard shortcut?????????????
     applyB.pack(side='right')
     frame3.pack(fill='x')
     ############### Reverse Tab ####################
     revFrame = Tix.Frame(notebook.tab2)
     revFrame.pack(fill='x')
     ######################
     frame = Tix.Frame(revFrame)
     ##
     label = Tix.Label(frame, text='Read from format')
     label.pack(side='left')
     ##
     comboVar = tk.StringVar()
     combo = tk.OptionMenu(frame, comboVar, *Glossary.readDesc)
     #comboVar.set(Glossary.readDesc[0])
     comboVar.set(noneItem)
     combo.pack(side='left')
     self.combobox_r_i = comboVar
     ##
     frame.pack(fill='x')
     ###################
     frame = Tix.Frame(revFrame)
     ##
     label = Tix.Label(frame, text='  Path:')
     label.pack(side='left')
     ##
     entry = Tix.Entry(frame)
     entry.pack(side='left', fill='x', expand=True)
     #entry.bind_all('<KeyPress>', self.entry_r_i_changed)
     self.entry_r_i = entry
     ##
     button = Tix.Button(
         frame,
         text='Browse',
         command=self.r_browse_i,
         bg='#f0f000',
         activebackground='#f6f622',
     )
     button.pack(side='left')
     ##
     button = Tix.Button(
         frame,
         text='Load',
         command=self.r_load,
         bg='#7777ff',
     )
     button.pack(side='left')
     ###
     frame.pack(fill='x')
     ###################
     frame = Tix.Frame(revFrame)
     ##
     label = Tix.Label(frame, text='Output Tabfile')
     label.pack(side='left')
     ###
     entry = Tix.Entry(frame)
     entry.pack(side='left', fill='x', expand=True)
     #entry.bind_all('<KeyPress>', self.entry_r_i_changed)
     self.entry_r_o = entry
     ##
     button = Tix.Button(
         frame,
         text='Browse',
         command=self.r_browse_o,
         bg='#f0f000',
         activebackground='#f6f622',
     )
     button.pack(side='left')
     ##
     frame.pack(fill='x')
     ##############################
     if path != '':
         self.entry_i.insert(0, path)
         self.entry_changed()
         self.load()
示例#10
0
def RunSample(w):
    global root
    root = w

    # We use these options to set the sizes of the subwidgets inside the
    # notebook, so that they are well-aligned on the screen.
    prefix = Tix.OptionName(w)
    if prefix:
        prefix = '*'+prefix
    else:
        prefix = ''
    w.option_add(prefix+'*TixControl*entry.width', 10)
    w.option_add(prefix+'*TixControl*label.width', 18)
    w.option_add(prefix+'*TixControl*label.anchor', Tix.E)
    w.option_add(prefix+'*TixNoteBook*tagPadX', 8)

    # Create the notebook widget and set its backpagecolor to gray.
    # Note that the -backpagecolor option belongs to the "nbframe"
    # subwidget.
    nb = Tix.NoteBook(w, name='nb', ipadx=6, ipady=6)
    nb['bg'] = 'gray'
    nb.nbframe['backpagecolor'] = 'gray'

    # Create the two tabs on the notebook. The -underline option
    # puts a underline on the first character of the labels of the tabs.
    # Keyboard accelerators will be defined automatically according
    # to the underlined character.
    nb.add('hard_disk', label="Hard Disk", underline=0)
    nb.add('network', label="Network", underline=0)

    nb.pack(expand=1, fill=Tix.BOTH, padx=5, pady=5 ,side=Tix.TOP)

    #----------------------------------------
    # Create the first page
    #----------------------------------------
    # Create two frames: one for the common buttons, one for the
    # other widgets
    #
    tab=nb.hard_disk
    f = Tix.Frame(tab)
    common = Tix.Frame(tab)

    f.pack(side=Tix.LEFT, padx=2, pady=2, fill=Tix.BOTH, expand=1)
    common.pack(side=Tix.RIGHT, padx=2, fill=Tix.Y)

    a = Tix.Control(f, value=12,   label='Access time: ')
    w = Tix.Control(f, value=400,  label='Write Throughput: ')
    r = Tix.Control(f, value=400,  label='Read Throughput: ')
    c = Tix.Control(f, value=1021, label='Capacity: ')

    a.pack(side=Tix.TOP, padx=20, pady=2)
    w.pack(side=Tix.TOP, padx=20, pady=2)
    r.pack(side=Tix.TOP, padx=20, pady=2)
    c.pack(side=Tix.TOP, padx=20, pady=2)

    # Create the common buttons
    createCommonButtons(common)

    #----------------------------------------
    # Create the second page
    #----------------------------------------

    tab = nb.network

    f = Tix.Frame(tab)
    common = Tix.Frame(tab)

    f.pack(side=Tix.LEFT, padx=2, pady=2, fill=Tix.BOTH, expand=1)
    common.pack(side=Tix.RIGHT, padx=2, fill=Tix.Y)

    a = Tix.Control(f, value=12,   label='Access time: ')
    w = Tix.Control(f, value=400,  label='Write Throughput: ')
    r = Tix.Control(f, value=400,  label='Read Throughput: ')
    c = Tix.Control(f, value=1021, label='Capacity: ')
    u = Tix.Control(f, value=10,   label='Users: ')

    a.pack(side=Tix.TOP, padx=20, pady=2)
    w.pack(side=Tix.TOP, padx=20, pady=2)
    r.pack(side=Tix.TOP, padx=20, pady=2)
    c.pack(side=Tix.TOP, padx=20, pady=2)
    u.pack(side=Tix.TOP, padx=20, pady=2)

    createCommonButtons(common)
示例#11
0
    def createWidgets(self):
        ## Tix tix for python 3
        if (pythVers < 3):
            self.nb = Tix.NoteBook(self)
        else:
            self.nb = tix.NoteBook(self)
        self.nb.add('appr',
                    label='APPR',
                    raisecmd=lambda self=self: self.update_page())
        self.nb.add('cruz',
                    label='CRSE',
                    raisecmd=lambda self=self: self.update_page())
        self.nb.add('wing',
                    label='WING',
                    raisecmd=lambda self=self: self.update_page())
        self.nb.add('hstb',
                    label='HSTB',
                    raisecmd=lambda self=self: self.update_page())
        self.nb.add('vstb',
                    label='VSTB',
                    raisecmd=lambda self=self: self.update_page())
        self.nb.add('ball',
                    label='BALL',
                    raisecmd=lambda self=self: self.update_page())
        self.nb.add('prop',
                    label='PROP',
                    raisecmd=lambda self=self: self.update_page())
        #
        page = PropertyPage(self.nb.appr)
        self.pages['appr'] = page
        page.addField(Va, 'ApprSpd:')
        page.addField(Aa, 'ApprAoA:')
        page.addField(Ka, 'ApprFuel:')
        page.addField(Ra, 'ApprThrt:')
        page.addField(Fa, 'ApprFlap:')
        page.addField(Vy, 'SolveAtSpd:')
        page.addField(Hy, 'SolveAtAlt:')
        #
        page = PropertyPage(self.nb.cruz)
        self.pages['cruz'] = page
        page.addField(Vc, 'CruiseSpd:')
        page.addField(Hc, 'CruiseAlt:')
        page.addField(Kc, 'CruiseFuel:')
        page.addField(Rc, 'CruiseThrt:')
        #
        page = PropertyPage(self.nb.wing)
        self.pages['wing'] = page
        page.addField(Cw, 'WingCambr:')
        page.addField(Iw, 'WingIDrag:')
        page.addField(Aw, 'WingStAoA:')
        page.addField(Ww, 'WingStWid:')
        page.addField(Pw, 'WingStlPk:')
        page.addField(Lf, 'WFlapLift:')
        page.addField(Df, 'WFlapDrag:')
        page.addField(Lr, 'AilrnLift:')
        page.addField(Dr, 'AilrnDrag:')
        #
        page = PropertyPage(self.nb.hstb)
        self.pages['hstb'] = page
        page.addField(Ch, 'HstbCambr:')
        page.addField(Ih, 'HstbIDrag:')
        page.addField(Ah, 'HstbStAoA:')
        page.addField(Wh, 'HstbStWid:')
        page.addField(Ph, 'HstbStlPk:')
        page.addField(Lh, 'HFlapLift:')
        page.addField(Dh, 'HFlapDrag:')
        #
        page = PropertyPage(self.nb.vstb)
        self.pages['vstb'] = page
        page.addField(Cv, 'VstbCambr:')
        page.addField(Iv, 'VstbIDrag:')
        page.addField(Av, 'VstbStAoA:')
        page.addField(Wv, 'VstbStWid:')
        page.addField(Pv, 'VstbStlPk:')
        page.addField(Lv, 'VFlapLift:')
        page.addField(Dv, 'VFlapDrag:')
        #
        page = PropertyPage(self.nb.ball)
        self.pages['ball'] = page
        page.addField(Mb, 'BallMass :')
        page.addField(Xb, 'BallXloc :')
        page.addField(Yb, 'BallYloc :')
        page.addField(Zb, 'BallZloc :')
        #
        page = PropertyPage(self.nb.prop)
        self.pages['prop'] = page
        page.addField(Mp, 'PropMass :')
        page.addField(Rp, 'PropRadi :')
        page.addField(Ap, 'PropMomt :')
        page.addField(Np, 'PropMinR :')
        page.addField(Xp, 'PropMaxR :')
        page.addField(Ip, 'PropFine :')
        page.addField(Op, 'PropCoar :')
        page.addField(Vp, 'PropCSpd :')
        page.addField(Cp, 'PropCRpm :')
        page.addField(Tp, 'PropTRpm :')
        #
        ## Tix tix for python 3
        if (pythVers < 3):
            self.nb.pack(expand=1, fill=Tix.BOTH, padx=5, pady=5, side=Tix.TOP)
        else:
            self.nb.pack(expand=1, fill=tix.BOTH, padx=5, pady=5, side=tix.TOP)

        ## Tix tix for python 3
        if (pythVers < 3):
            self.QUIT = Tix.Button(self)
        else:
            self.QUIT = tix.Button(self)
        self.QUIT['text'] = 'Quit'
        self.QUIT['command'] = self.quitCmd
        self.QUIT.pack({"side": "right"})

        ## Tix tix for python 3
        if (pythVers < 3):
            self.PLOT = Tix.Button(self)
        else:
            self.PLOT = tix.Button(self)
        self.PLOT['text'] = 'Plot'
        self.PLOT['command'] = self.plotCmd
        self.PLOT.pack({"side": "left"})
示例#12
0
    def createWidgets(self):
        self.nb = Tix.NoteBook(self)
        self.nb.add( 'sim', label='Simulation',
                     raisecmd= lambda self=self: self.update_page() )
        self.nb.add( 'view', label='View',
                     raisecmd= lambda self=self: self.update_page() )
        self.nb.add( 'loc', label='Location',
                     raisecmd= lambda self=self: self.update_page() )
        self.nb.add( 'weather', label='Weather',
                     raisecmd= lambda self=self: self.update_page() )
        self.nb.add( 'clouds', label='Clouds',
                     raisecmd= lambda self=self: self.update_page() )
        self.nb.add( 'velocities', label='Velocities',
                     raisecmd= lambda self=self: self.update_page() )

        page = PropertyPage( self.nb.sim, self.fgfs )
        self.pages['sim'] = page
        page.addField( '/sim/aircraft', 'Aircraft:')
        page.addField( '/sim/startup/airport-id', 'Airport ID:')
        page.addField( '/sim/time/gmt', 'Current time (GMT):')
        page.addField( '/sim/startup/trim', 'Trim on ground (true/false):')
        page.addField( '/sim/sound/audible', 'Sound enabled (true/false):')
        page.addField( '/sim/startup/browser-app', 'Web browser:')

        page = PropertyPage( self.nb.view, self.fgfs )
        self.pages['view'] = page
        page.addField( '/sim/view-mode', 'View mode:')
        page.addField( "/sim/current-view/field-of-view", "Field of view (deg):" )
        page.addField( "/sim/current-view/pitch-offset-deg", "View pitch offset (deg):" )
        page.addField( "/sim/current-view/heading-offset-deg", "View heading offset (deg):" )

        page = PropertyPage( self.nb.loc, self.fgfs )
        self.pages['loc'] = page
        page.addField( "/position/altitude-ft", "Altitude (ft):" )
        page.addField( "/position/longitude-deg", "Longitude (deg):" )
        page.addField( "/position/latitude-deg", "Latitude (deg):" )
        page.addField( "/orientation/roll-deg", "Roll (deg):" )
        page.addField( "/orientation/pitch-deg", "Pitch (deg):" )
        page.addField( "/orientation/heading-deg", "Heading (deg):" )

        page = PropertyPage( self.nb.weather, self.fgfs )
        self.pages['weather'] = page
        page.addField("/environment/wind-from-heading-deg",
                      "Wind direction (deg FROM):")
        page.addField("/environment/params/base-wind-speed-kt",
                      "Wind speed (kt):")
        page.addField("/environment/params/gust-wind-speed-kt",
                      "Maximum gust (kt):")
        page.addField("/environment/wind-from-down-fps",
                      "Updraft (fps):")
        page.addField("/environment/temperature-degc", "Temperature (degC):")
        page.addField("/environment/dewpoint-degc", "Dewpoint (degC):")
        page.addField("/environment/pressure-sea-level-inhg",
                      "Altimeter setting (inHG):")

        page = PropertyPage( self.nb.clouds, self.fgfs )
        self.pages['clouds'] = page
        page.addField("/environment/clouds/layer[0]/type",
                      "Layer 0 type:")
        page.addField("/environment/clouds/layer[0]/elevation-ft",
                      "Layer 0 height (ft):")
        page.addField("/environment/clouds/layer[0]/thickness-ft",
                      "Layer 0 thickness (ft):")
        page.addField("/environment/clouds/layer[1]/type",
                      "Layer 1 type:")
        page.addField("/environment/clouds/layer[1]/elevation-ft",
                      "Layer 1 height (ft):")
        page.addField("/environment/clouds/layer[1]/thickness-ft",
                      "Layer 1 thickness (ft):")
        page.addField("/environment/clouds/layer[2]/type",
                      "Layer 2 type:")
        page.addField("/environment/clouds/layer[2]/elevation-ft",
                      "Layer 2 height (ft):")
        page.addField("/environment/clouds/layer[2]/thickness-ft",
                      "Layer 2 thickness (ft):")
        page.addField("/environment/clouds/layer[3]/type",
                      "Layer 3 type:")
        page.addField("/environment/clouds/layer[3]/elevation-ft",
                      "Layer 3 height (ft):")
        page.addField("/environment/clouds/layer[3]/thickness-ft",
                      "Layer 3 thickness (ft):")
        page.addField("/environment/clouds/layer[4]/type",
                      "Layer 4 type:")
        page.addField("/environment/clouds/layer[4]/elevation-ft",
                      "Layer 4 height (ft):")
        page.addField("/environment/clouds/layer[4]/thickness-ft",
                      "Layer 4 thickness (ft):")

        page = PropertyPage( self.nb.velocities, self.fgfs )
        self.pages['velocities'] = page
        page.addField("/velocities/airspeed-kt", "Airspeed (kt):")
        page.addField("/velocities/speed-down-fps", "Descent speed (fps):")

        self.nb.pack( expand=1, fill=Tix.BOTH, padx=5, pady=5, side=Tix.TOP )
        
        self.QUIT = Tix.Button(self)
        self.QUIT['text'] = 'Quit'
        self.QUIT['command'] = self.quitcmd
        self.QUIT.pack({"side": "bottom"})
示例#13
0
    def __init__(self, parent=None):
        if __name__ == '__main__':
            self.myparent = self.myroot = parent
            self.myparent.rowconfigure(0, weight=1)
            self.myparent.columnconfigure(0, weight=1)
            self.outputfr = tk.Frame(self.myparent, width=640, height=480)
            self.outputfr.rowconfigure(0, weight=1)
            self.outputfr.rowconfigure(1, weight=0)
            self.outputfr.columnconfigure(0, weight=1)
            self.outputfr.grid(row=0, column=0, sticky='nesw')
            self.nb = tk.NoteBook(self.outputfr, width=640, height=400)
            self.nb.rowconfigure(0, weight=1)
            self.nb.columnconfigure(0, weight=1)
            self.outputbuttons = tk.ButtonBox(self.outputfr, width=640, height=80)
            self.outputbuttons.add('ok', text='OK', command=self.ok)
            self.outputbuttons.add('cancel', text='Cancel', command=self.cancel)
            self.outputbuttons.add('apply', text='Apply', command=self.apply)
            self.outputbuttons.add('play', text='Play', command=self.audition)
            self.outputbuttons.add('newinst', text='New Instrument', command=self.newinstrument)
            self.outputbuttons.grid(row=1, column=0, sticky='')
        else:
            self.myparent = parent
            self.myroot = self.myparent.myparent
            self.instmaybe = copy.deepcopy(self.myparent.instlist)
            self.outputfr = tk.Toplevel(self.myroot, width=640, height=480)
            self.outputfr.bind("<Return>", self.ok)
            self.outputfr.bind("<Escape>", self.cancel)
            self.outputfr.title("Output")
            self.outputfr.rowconfigure(0, weight=1)
            self.outputfr.rowconfigure(1, weight=0)
            self.outputfr.columnconfigure(0, weight=1)
            self.nb = tk.NoteBook(self.outputfr, width=640, height=480)
            self.nb.rowconfigure(0, weight=1)
            self.nb.columnconfigure(0, weight=1)
            self.nb.grid(row=0, column=0, sticky='nesw')
            self.outputbuttons = tk.ButtonBox(self.outputfr, width=640, height=80)
            self.outputbuttons.add('ok', text='OK', command=self.ok)
            self.outputbuttons.add('cancel', text='Cancel', command=self.cancel)
            self.outputbuttons.add('apply', text='Apply', command=self.apply)
            self.outputbuttons.add('play', text='Play', command=self.audition)
            self.outputbuttons.add('newinst', text='New Instrument', command=self.newinstrument)
            self.outputbuttons.grid(row=1, column=0, sticky='')

        self.instpagelist = []
        self.csdpage = self.nb.add('csd', label='CSD')
        self.csdpage.rowconfigure(0, weight=1)
        self.csdpage.rowconfigure(1, weight=0)
        self.csdpage.columnconfigure(0, weight=1)
        self.csdpage.columnconfigure(1, weight=1)
        self.csdtext = tk.Text(self.csdpage)
        self.csdtext.grid(row=0, column=0, columnspan=2, sticky='nesw')
        self.csdtext.insert('0.0', self.myparent.csdimported)
        for i in range(1, len(self.instmaybe)):
            inst = self.instmaybe[i]
            newpage = self.addinstpage(inst)
            for out in inst.outlist:
                if out.__class__.__name__ == 'csdout':
                    newline = csdline(newpage, out)
                elif out.__class__.__name__ == 'sf2out':
                    newline = sf2line(newpage, out)
        self.autoload = tk.BooleanVar()
        self.autoload.set(self.myparent.outautoload)
        self.autocheck = tk.Checkbutton(self.csdpage, variable=self.autoload)
        self.autocheck.grid(row=1, column=0, sticky='e')
        self.csdloadbutton = tk.Button(self.csdpage, text="Load", command=self.csdload)
        self.csdloadbutton.grid(row=1, column=1, sticky='w')
示例#14
0
#!/usr/local/bin/python
示例#15
0
	def fillInUI(self, parent):
		parent.columnconfigure(0, pad=2)
		parent.columnconfigure(1, pad=2)
		import itertools
		row = itertools.count()

		self.showBackbone = BackboneOption(parent, row.next(),
					'Show backbone as', 'ribbon', None)
		self.showSide = SideOption(parent, row.next(),
				'Show side (sugar/base) as', 'fill/slab',
				self._showSideCB)
		self.showOrientation = BooleanOption(parent, row.next(),
				'Show base orientation', default.ORIENT, None)

		import Tix
		self.nb = Tix.NoteBook(parent)
		self.nb.grid(row=row.next(), column=0, columnspan=2, sticky=Tk.EW, padx=2)

		# ladder page
		self.nb.add("ladder", label="Ladder Options")
		f = self.nb.page("ladder")
		if Tk.TkVersion >= 8.5:
			parent.tk.call('grid', 'anchor', f._w, Tk.N)

		prow = itertools.count()
		self.skipNonBase = BooleanOption(f, prow.next(),
				'Ignore non-base H-bonds', default.IGNORE, None)
		self.showStubs = BooleanOption(f, prow.next(),
					'Show stubs', default.STUBS, None)
		self.rungRadius = FloatOption(f, prow.next(), 'Rung radius',
							default.RADIUS, None)
		self.rungRadius.min = 0.0
		self.useExisting = BooleanOption(f, prow.next(),
			'Using existing H-bonds', default.USE_EXISTING,
			self._useExistingCB)
		from FindHBond.gui import RelaxParams
		self.relaxParams = RelaxParams(f, None, colorOptions=False)
		#self.relaxParams.relaxConstraints = False
		self.relaxParams.grid(row=prow.next(), columnspan=2,
							sticky='nsew', padx=2)

		# slab page
		self.nb.add("slab", label="Slab Options")
		f = self.nb.page("slab")
		if Tk.TkVersion >= 8.5:
			parent.tk.call('grid', 'anchor', f._w, Tk.N)

		prow = itertools.count()
		self.thickness = FloatOption(f, prow.next(), 'Thickness',
						default.THICKNESS, None)
		self.thickness.min = 0.01
		self.shape = ShapeOption(f, prow.next(), 'Slab object',
							default.SHAPE, None)
		self.hideBases = BooleanOption(f, prow.next(),
					'Hide base atoms', default.HIDE, None)
		self.showGlycosidic = BooleanOption(f, prow.next(),
				'Separate glycosidic bond', default.GLYCOSIDIC,
				None)

		self.nb.add("style", label="Slab Style", raisecmd=self.map)
		# style page
		f = self.nb.page("style")
		if Tk.TkVersion >= 8.5:
			f.tk.call('grid', 'anchor', f._w, Tk.N)

		info = NA.findStyle(self.currentStyle)
		from chimera.preferences import saveui
		f2 = Tk.Frame(f)
		self.saveui = saveui.SaveUI(f2, self)
		f2.grid(row=prow.next(), column=0, columnspan=2, sticky=Tk.EW,
								padx=2, pady=2)

		self.anchor = AnchorOption(f, prow.next(), 'Anchor',
					info[NA.ANCHOR], self._drawStyle)

		f2 = Pmw.Group(f, tag_text=NA.PURINE.title())
		f2.grid(row=prow.next(), column=0, columnspan=2, sticky=Tk.EW,
									padx=2)
		f2 = f2.interior()
		f2.columnconfigure(0, weight=1, pad=2, uniform='a')
		f2.columnconfigure(1, weight=1, uniform='a')
		f2.columnconfigure(2, weight=1)

		self.purine_canvas = Tk.Canvas(f2, width=1, height=1) #,
						#borderwidth=2, relief=Tk.RIDGE)
		r = prow.next()
		self.purine_canvas.grid(row=r, column=0, rowspan=3,
						sticky=Tk.NSEW, padx=2, pady=2)
		corners = info[NA.PURINE]
		self.puLL = Float2Option(f2, prow.next(), 'Lower left',
					corners[0], self._drawStyle, startCol=1)
		self.puUR = Float2Option(f2, prow.next(), 'Upper right',
					corners[1], self._drawStyle, startCol=1)

		f3 = Pmw.Group(f, tag_text="%s, %s" % (NA.PYRIMIDINE.title(),
						NA.PSEUDO_PYRIMIDINE.title()))
		r = prow.next()
		f3.grid(row=r, column=0, columnspan=2, sticky=Tk.EW, padx=2)
		f3 = f3.interior()
		f3.columnconfigure(0, weight=1, pad=2, uniform='a')
		f3.columnconfigure(1, weight=1, uniform='a')
		f3.columnconfigure(2, weight=1)

		self.pyrimidine_canvas = Tk.Canvas(f3, width=1, height=1) #,
						#borderwidth=2, relief=Tk.RIDGE)
		r = prow.next()
		self.pyrimidine_canvas.grid(row=r, column=0, rowspan=3,
						sticky=Tk.NSEW, padx=2, pady=2)

		corners = info[NA.PYRIMIDINE]
		self.pyLL = Float2Option(f3, prow.next(), 'Lower left',
					corners[0], self._drawStyle, startCol=1)
		self.pyUR = Float2Option(f3, prow.next(), 'Upper right',
					corners[1], self._drawStyle, startCol=1)

		self.restrict = Tk.IntVar(parent)
		self.restrict.set(1)
		cb = Tk.Checkbutton(parent, variable=self.restrict,
		    text="Restrict OK/Apply to current selection, if any")
		cb.grid(row=row.next(), columnspan=2)

		parent.pack(ipady=2)

		self._showSideCB()
		chimera.triggers.addHandler(NA.TRIGGER_SLAB_STYLES,
						self._updateStyles, None)
示例#16
0
# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*-