def __init__(self, client, *a, **kw):
        Frame.__init__(self, *a, **kw)

        self._client = client

        self.rowconfigure(0, weight=1)
        self.columnconfigure(0, weight=1)

        self._addresses_w = a_w = Frame(self, width=100)
        a_w.grid(row=0, column=0, sticky="NESW")

        a_w.rowconfigure(0, weight=1)
        a_w.columnconfigure(0, weight=1)

        self._addresses_tv = a_tv = Treeview(a_w, columns=("address", ))
        a_tv.heading("#0", text="#")
        a_tv.heading("address", text="Sender")
        a_tv.column("#0", minwidth=50, width=50)
        a_tv.column("address", minwidth=100, width=100)

        a_tv.grid(row=0, column=0, sticky="NESW")
        add_scrollbars(a_w, a_tv)

        a_tv.bind("<<TreeviewSelect>>", self._on_address_tv_select)

        self.columnconfigure(1, weight=10)

        # ConversationView(DoubleScrollbarFrame) uses `pack` layout manager.
        # This frame handles this.
        self._conversation_w_holder = conv_w = Frame(self)
        conv_w.grid(row=0, column=1, sticky="NESW")

        self._invalidate()
        client.watch_sms_added(self._on_sms_added)
示例#2
0
    def _init_corpus_select(self, parent):
        innerframe = Frame(parent, background=self._BACKGROUND_COLOUR)
        self.var = StringVar(innerframe)
        self.var.set(self.model.DEFAULT_CORPUS)
        Label(
            innerframe,
            justify=LEFT,
            text=' Corpus: ',
            background=self._BACKGROUND_COLOUR,
            padx=2,
            pady=1,
            border=0,
        ).pack(side='left')

        other_corpora = list(self.model.CORPORA.keys()).remove(
            self.model.DEFAULT_CORPUS)
        om = OptionMenu(innerframe,
                        self.var,
                        self.model.DEFAULT_CORPUS,
                        command=self.corpus_selected,
                        *self.model.non_default_corpora())
        om['borderwidth'] = 0
        om['highlightthickness'] = 1
        om.pack(side='left')
        innerframe.pack(side='top', fill='x', anchor='n')
示例#3
0
 def _create_buttons(self):
     frame = Frame(self)
     self._create_button(frame, self._left_button,
                         self._left_button_clicked)
     self._create_button(frame, self._right_button,
                         self._right_button_clicked)
     frame.pack()
    def __init__(self, master):
        '''Create a new panel with the given parent.'''

        Frame.__init__(self, master)
        self._ship_name = StringVar()
        self._create_ui()
        self.reset()
示例#5
0
    def __init__(self, parent, title=None, content=""):
        Toplevel.__init__(self, parent)
        self.transient(parent)
        self.log = logging.getLogger(__name__)

        if title:
            self.title(title)

        self.parent = parent
        self.body = Frame(self)
        self.fill_body(content)
        self.body.pack(padx=5, pady=5)

        self.create_buttonbox()

        self.grab_set()

        self.protocol("WM_DELETE_WINDOW", self.ok)

        self.geometry("+%d+%d" %
                      (parent.winfo_rootx() + 50, parent.winfo_rooty() + 50))

        self.focus_set()

        self.wait_window(self)
 def _create_buttons(self):
     frame = Frame(self)
     self._create_button(frame, self._left_button,
                         self._left_button_clicked)
     self._create_button(frame, self._right_button,
                         self._right_button_clicked)
     frame.pack()
 def _init_paging(self, parent):
     innerframe = Frame(parent, background=self._BACKGROUND_COLOUR)
     self.prev = prev = Button(innerframe, text='Previous', command=self.previous, width='10', borderwidth=1, highlightthickness=1, state='disabled')
     prev.pack(side='left', anchor='center')
     self.next = next = Button(innerframe, text='Next', command=self.__next__, width='10', borderwidth=1, highlightthickness=1, state='disabled')
     next.pack(side='right', anchor='center')
     innerframe.pack(side='top', fill='y')
     self.current_page = 0
 def _create_body(self, message, value, **extra):
     frame = Frame(self)
     Label(frame, text=message, anchor=W, justify=LEFT, wraplength=800).pack(fill=BOTH)
     selector = self._create_selector(frame, value, **extra)
     if selector:
         selector.pack(fill=BOTH)
         selector.focus_set()
     frame.pack(padx=5, pady=5, expand=1, fill=BOTH)
示例#9
0
文件: tk.py 项目: VanDeng95/WaveSyn
 def __init__(self, *args, **kwargs):
     Frame.__init__(self, *args, **kwargs)
     self.__label = Label(self)
     self.__label.pack(side=LEFT)
     self.__entry = Entry(self)
     self.__entry.pack(fill=X, expand=YES)
     self.__checker_function = None
     self.__image = None
示例#10
0
 def _init_paging(self, parent):
     innerframe = Frame(parent, background=self._BACKGROUND_COLOUR)
     self.prev = prev = Button(innerframe, text='Previous', command=self.previous, width='10', borderwidth=1, highlightthickness=1, state='disabled')
     prev.pack(side='left', anchor='center')
     self.next = next = Button(innerframe, text='Next', command=self.__next__, width='10', borderwidth=1, highlightthickness=1, state='disabled')
     next.pack(side='right', anchor='center')
     innerframe.pack(side='top', fill='y')
     self.current_page = 0
示例#11
0
 def _init_widgets(self, parent):
     self.main_frame = Frame(parent, dict(background=self._BACKGROUND_COLOUR, padx=1, pady=1, border=1))
     self._init_corpus_select(self.main_frame)
     self._init_query_box(self.main_frame)
     self._init_results_box(self.main_frame)
     self._init_paging(self.main_frame)
     self._init_status(self.main_frame)
     self.main_frame.pack(fill='both', expand=True)
示例#12
0
    def __init__(self, conv, *a, **kw):
        Frame.__init__(self, *a, **kw)

        self._conv = conv
        self._s_conv = s_conv = sorted(conv, key = lambda i : i["date"])

        self.columnconfigure(0, weight = 1)
        self.rowconfigure(0, weight = 1)

        self._text = text = Text(self, wrap = WORD)
        text.grid(row = 0, column = 0, sticky = "NESW")

        add_scrollbars(self, text)

        # incoming
        text.tag_config("itime",
            foreground = "grey",
            background = "#eeeeee",
            selectbackground = "SystemHighlight",
            selectforeground = "SystemHighlightText"
        )
        text.tag_config("imessage",
            rmargin = 100
        )

        text.tag_config("otime",
            justify = RIGHT,
            foreground = "grey",
            background = "#eeeeee",
            selectbackground = "SystemHighlight",
            selectforeground = "SystemHighlightText"
        )
        text.tag_config("omessage",
            lmargin1 = 100,
            lmargin2 = 100,
            background = "#f8f8f8",
            selectbackground = "SystemHighlight",
        )

        # separator
        text.tag_config("sep",
            font = ("Arial", 1),
            background = "#dddddd",
            selectbackground = "SystemHighlight",
        )

        for item in s_conv:
            prefix = "i" if item.incoming else "o"

            text.insert(END,
                item.datetime.strftime("%Y.%m.%d %H:%M:%S") + "\n",
                prefix + "time"
            )
            text.insert(END, item.message + "\n", prefix + "message")
            text.insert(END, "\n", "sep")

        text.config(state = DISABLED)
        text.see("end-1c")
示例#13
0
 def _create_body(self, message, value, **extra):
     frame = Frame(self)
     Label(frame, text=message, anchor=W, justify=LEFT,
           wraplength=800).pack(fill=BOTH)
     selector = self._create_selector(frame, value, **extra)
     if selector:
         selector.pack(fill=BOTH)
         selector.focus_set()
     frame.pack(padx=5, pady=5, expand=1, fill=BOTH)
示例#14
0
 def _make_buttons(self):
     '''Create action buttons at the bottom.'''
 
     button_row = self.my_grid.size + self.Y_PADDING + (self.BUTTON_PANEL_HEIGHT - 2 * self.BUTTON_PADDING)
     button_frame = Frame(self)
     button_frame.place(x=self.my_grid.size - self.X_PADDING, y=button_row)
     
     self.play_game_button = Button(button_frame, text="Play")
     self.play_game_button.pack(side=LEFT, padx=self.BUTTON_PADDING, pady=self.BUTTON_PADDING)
示例#15
0
文件: tk.py 项目: VanDeng95/WaveSyn
    def __init__(self, *args, **kwargs):
        Frame.__init__(self, *args, **kwargs)
        Observable.__init__(self)
        self._text = text = Text(self, wrap=NONE, height=1.2, relief=SOLID)
        text.bind('<Configure>', self._on_resize)
        text.bind('<KeyPress>', self._on_key_press)
        text.pack(fill=X, expand=YES, side=LEFT)
        self._default_cursor = text['cursor']
        self._default_background_color = text['background']

        # History
        self._history = []
        text.tag_config('back_button', foreground='grey')
        text.tag_bind('back_button', '<Button-1>', self._on_back_click)
        text.tag_bind('back_button', '<Button-3>', self._on_back_right_click)
        text.tag_bind('back_button', '<Enter>',
                      lambda *args: self._change_cursor_to_hand(True))
        text.tag_bind('back_button', '<Leave>',
                      lambda *args: self._change_cursor_to_hand(False))
                      
        text.insert('1.0', u'\u2190 ', 'back_button')
        # End History

        # Browse Button
        text.tag_config('browse_button', foreground='orange')
        text.tag_bind('browse_button', '<Button-1>', self._on_button_click)
        text.tag_bind('browse_button', '<Enter>',
                      lambda *args: self._change_cursor_to_hand(True))
        text.tag_bind('browse_button', '<Leave>',
                      lambda *args: self._change_cursor_to_hand(False))
        # End Browse Button
                      
        # WinOpen Button
        sys_name = platform.system().lower()
        try:
            __mod = __import__(eval_format('wavesynlib.interfaces.os.{sys_name}.shell.winopen'), globals(), locals(), ['winopen'], -1)
            winopen_func = getattr(__mod, 'winopen')
            def on_winopen_click(*args):
                winopen_func(self._directory)
        except (ImportError, AttributeError):
            def on_winopen_click(*args):
                pass                      
                      
        text.tag_config('winopen_button', foreground='orange')
        text.tag_bind('winopen_button', '<Button-1>', on_winopen_click)
        text.tag_bind('winopen_button', '<Enter>',
                      lambda *args: self._change_cursor_to_hand(True))
        text.tag_bind('winopen_button', '<Leave>',
                      lambda *args: self._change_cursor_to_hand(False))    
        # End WinOpen Button
                
        self._blank_len = 2
        self._browse_text = u'\u25a1'
        self._winopen_text = u'\u25a0'
        self._coding = sys.getfilesystemencoding()
        self._directory = None
示例#16
0
 def __init__(self, master):
     '''Create the UI for a game of battleship.'''
 
     Frame.__init__(self, master)
     
     self._create_ui()
     
     # these are 'controller' elements that should really be in another class
     self.ai = ShipAI(self.their_grid._model, self.my_grid._model)
     self.reset()
示例#17
0
文件: tk.py 项目: VanDeng95/WaveSyn
 def __init__(self, *args, **kwargs):
     Frame.__init__(self, *args, **kwargs)
     self.pack(expand=YES, fill=BOTH)
     self._make_widgets()
     self.__on_item_double_click = FunctionChain()
     def dbclick_callback(event):
         item_id = self.tree.identify('item', event.x, event.y)
         item_properties = self.tree.item(item_id)
         self.__on_item_double_click(item_id, item_properties)
     self.tree.bind('<Double-1>', dbclick_callback)
示例#18
0
    def __init__(self, master):
        '''Create the UI for a game of battleship.'''

        Frame.__init__(self, master)

        self._create_ui()

        # these are 'controller' elements that should really be in another class
        self.ai = ShipAI(self.their_grid._model, self.my_grid._model)
        self.reset()
示例#19
0
    def _make_buttons(self):
        '''Create action buttons at the bottom.'''

        button_row = self.my_grid.size + self.Y_PADDING + (
            self.BUTTON_PANEL_HEIGHT - 2 * self.BUTTON_PADDING)
        button_frame = Frame(self)
        button_frame.place(x=self.my_grid.size - self.X_PADDING, y=button_row)

        self.play_game_button = Button(button_frame, text="Play")
        self.play_game_button.pack(side=LEFT,
                                   padx=self.BUTTON_PADDING,
                                   pady=self.BUTTON_PADDING)
    def _init_corpus_select(self, parent):
        innerframe = Frame(parent, background=self._BACKGROUND_COLOUR)
        self.var = StringVar(innerframe)
        self.var.set(self.model.DEFAULT_CORPUS)
        Label(innerframe, justify=LEFT, text=' Corpus: ', background=self._BACKGROUND_COLOUR, padx = 2, pady = 1, border = 0).pack(side='left')

        other_corpora = list(self.model.CORPORA.keys()).remove(self.model.DEFAULT_CORPUS)
        om = OptionMenu(innerframe, self.var, self.model.DEFAULT_CORPUS, command=self.corpus_selected, *self.model.non_default_corpora())
        om['borderwidth'] = 0
        om['highlightthickness'] = 1
        om.pack(side='left')
        innerframe.pack(side='top', fill='x', anchor='n')
示例#21
0
文件: tk.py 项目: VanDeng95/WaveSyn
    def __init__(self, *args, **kwargs):
        self.__i_range   =   i_range  = kwargs.pop('i_range')
        self.__q_range   =   q_range  = kwargs.pop('q_range')
        Frame.__init__(self, *args, **kwargs)
        Observable.__init__(self)
                       
        self.__canvas   = canvas    = ComplexCanvas(self)

        canvas.grid(row=0, column=0, sticky='wens')
        canvas['bg']    = 'black'

        self.__q_slider  = q_slider   = Scale(self, from_=q_range, to=-q_range, orient='vertical')

        q_slider.grid(row=0, column=1, sticky='e')
        self.__i_slider  = i_slider   = Scale(self, from_=-i_range, to=i_range, orient='horizontal')        

        i_slider.grid(row=1, column=0, sticky='s')
        
        self.grid_rowconfigure(0, weight=1)
        self.grid_columnconfigure(0, weight=1)
        
        self.__pad  = 10        
        self.__width    = 0
        self.__height   = 0
        self.__center   = None
        self.__radius   = 0
        self.__bbox     = None
        
        self.__complex_magnitude  = 0 + 0j
        
        canvas.bind('<Configure>', self._on_resize)
        self.__borderBox    = canvas.create_rectangle(0, 0, 10, 10, outline='green')        
        self.__borderCircle = canvas.create_oval(0, 0, 10, 10, outline='green', dash=[1, 2])
        self.__middleCircle = canvas.create_oval(0, 0, 10, 10, outline='green', dash=[1, 2])
        self.__vLine        = canvas.create_line(0, 0, 10, 10, fill='green', dash=[1, 2])
        self.__hLine        = canvas.create_line(0, 0, 10, 10, fill='green', dash=[1, 2])
        self.__dLine        = canvas.create_line(0, 0, 10, 10, fill='green', dash=[1, 2])
        self.__cdLine       = canvas.create_line(0, 0, 10, 10, fill='green', dash=[1, 2])
        self.__scale_circles = []
        for k in range(60):
            if k % 5 == 0:
                color   = 'gold'
            else:
                color   = 'green'
            self.__scale_circles.append(canvas.create_oval(0, 0, 10, 10, fill=color))
            
        self.__indicator1   = self.Indicator(self, solid=False)
        self.__indicator2   = self.Indicator(self)
        
        canvas.bind('<Motion>', self._on_mouse_move)
        canvas.bind('<Button-1>', self._on_click)
        i_slider['command']  = self._on_iq_scale
        q_slider['command']  = self._on_iq_scale
示例#22
0
    def pack(self, **kwargs):
        '''
          Pack the scrollbar and canvas correctly in order to recreate the
          same look as MFC's windows.
        '''

        self.hscrollbar.pack(side=BOTTOM, fill=X, expand=FALSE)
        self.vscrollbar.pack(side=RIGHT, fill=Y, expand=FALSE)
        self.sizegrip.pack(in_=self.hscrollbar, side=BOTTOM, anchor="se")
        self.canvas.pack(side=LEFT, padx=5, pady=5, fill=BOTH, expand=TRUE)

        Frame.pack(self, **kwargs)
示例#23
0
    def create_buttonbox(self):
        # add standard button box. override if you don't want the
        # standard buttons

        box = Frame(self)

        w = Button(box, text="OK", width=10, command=self.ok, default=ACTIVE)
        w.pack(side=LEFT, padx=5, pady=5)

        self.bind("&<Return>", self.ok)
        self.bind("&<Escape>", self.ok)

        box.pack()
示例#24
0
文件: tk.py 项目: VanDeng95/WaveSyn
 def __init__(self, *args, **kwargs):
     Frame.__init__(self, *args, **kwargs)
     sbar = Scrollbar(self)
     list = Listbox(self)
     sbar.config(command=list.yview)
     list.config(yscrollcommand=sbar.set)
     sbar.pack(side=RIGHT, fill=Y)
     list.pack(side=LEFT, expand=YES, fill=BOTH)
     list.bind('<<ListboxSelect>>', self._on_listbox_click)
     
     self.__list_click_callback = None
     self.__list = list
     self.__sbar = sbar
示例#25
0
 def _init_feedback(self, parent):
     self._feedbackframe = feedbackframe = Frame(parent)
     feedbackframe.pack(fill='x', side='bottom', padx=3, pady=3)
     self._lastoper_label = Label(feedbackframe, text='Last Operation:',
                                  font=self._font)
     self._lastoper_label.pack(side='left')
     lastoperframe = Frame(feedbackframe, relief='sunken', border=1)
     lastoperframe.pack(fill='x', side='right', expand=1, padx=5)
     self._lastoper1 = Label(lastoperframe, foreground='#007070',
                             background='#f0f0f0', font=self._font)
     self._lastoper2 = Label(lastoperframe, anchor='w', width=30,
                             foreground='#004040', background='#f0f0f0',
                             font=self._font)
     self._lastoper1.pack(side='left')
     self._lastoper2.pack(side='left', fill='x', expand=1)
 def _init_feedback(self, parent):
     self._feedbackframe = feedbackframe = Frame(parent)
     feedbackframe.pack(fill='x', side='bottom', padx=3, pady=3)
     self._lastoper_label = Label(feedbackframe, text='Last Operation:',
                                  font=self._font)
     self._lastoper_label.pack(side='left')
     lastoperframe = Frame(feedbackframe, relief='sunken', border=1)
     lastoperframe.pack(fill='x', side='right', expand=1, padx=5)
     self._lastoper1 = Label(lastoperframe, foreground='#007070',
                             background='#f0f0f0', font=self._font)
     self._lastoper2 = Label(lastoperframe, anchor='w', width=30,
                             foreground='#004040', background='#f0f0f0',
                             font=self._font)
     self._lastoper1.pack(side='left')
     self._lastoper2.pack(side='left', fill='x', expand=1)
示例#27
0
    def _init_readingListbox(self, parent):
        self._readingFrame = listframe = Frame(parent)
        self._readingFrame.pack(fill="both", side="left", padx=2)
        self._readingList_label = Label(self._readingFrame,
                                        font=self._boldfont,
                                        text="Readings")
        self._readingList_label.pack()
        self._readingList = Listbox(
            self._readingFrame,
            selectmode="single",
            relief="groove",
            background="white",
            foreground="#909090",
            font=self._font,
            selectforeground="#004040",
            selectbackground="#c0f0c0",
        )

        self._readingList.pack(side="right", fill="both", expand=1)

        # Add a scrollbar if there are more than 25 examples.
        listscroll = Scrollbar(self._readingFrame, orient="vertical")
        self._readingList.config(yscrollcommand=listscroll.set)
        listscroll.config(command=self._readingList.yview)
        listscroll.pack(side="right", fill="y")

        self._populate_readingListbox()
 def __init__(self, image, initialField, initialText):
     frm = Frame(root)
     frm.config(background="white")
     self.image = PhotoImage(format='gif',data=images[image.upper()])
     self.imageDimmed = PhotoImage(format='gif',data=images[image])
     self.img = Label(frm)
     self.img.config(borderwidth=0)
     self.img.pack(side = "left")
     self.fld = Text(frm, **fieldParams)
     self.initScrollText(frm,self.fld,initialField)
     frm = Frame(root)
     self.txt = Text(frm, **textParams)
     self.initScrollText(frm,self.txt,initialText)
     for i in range(2):
         self.txt.tag_config(colors[i], background = colors[i])
         self.txt.tag_config("emph"+colors[i], foreground = emphColors[i])
示例#29
0
    def _init_grammar(self, parent):
        # Grammar view.
        self._prodframe = listframe = Frame(parent)
        self._prodframe.pack(fill="both", side="left", padx=2)
        self._prodlist_label = Label(self._prodframe,
                                     font=self._boldfont,
                                     text="Available Expansions")
        self._prodlist_label.pack()
        self._prodlist = Listbox(
            self._prodframe,
            selectmode="single",
            relief="groove",
            background="white",
            foreground="#909090",
            font=self._font,
            selectforeground="#004040",
            selectbackground="#c0f0c0",
        )

        self._prodlist.pack(side="right", fill="both", expand=1)

        self._productions = list(self._parser.grammar().productions())
        for production in self._productions:
            self._prodlist.insert("end", ("  %s" % production))
        self._prodlist.config(height=min(len(self._productions), 25))

        # Add a scrollbar if there are more than 25 productions.
        if len(self._productions) > 25:
            listscroll = Scrollbar(self._prodframe, orient="vertical")
            self._prodlist.config(yscrollcommand=listscroll.set)
            listscroll.config(command=self._prodlist.yview)
            listscroll.pack(side="left", fill="y")

        # If they select a production, apply it.
        self._prodlist.bind("<<ListboxSelect>>", self._prodlist_select)
 def _init_widgets(self, parent):
     self.main_frame = Frame(parent, dict(background=self._BACKGROUND_COLOUR, padx=1, pady=1, border=1))
     self._init_corpus_select(self.main_frame)
     self._init_results_box(self.main_frame)
     self._init_paging(self.main_frame)
     self._init_status(self.main_frame)
     self.main_frame.pack(fill='both', expand=True)
示例#31
0
文件: cfg.py 项目: wurentidai/nltk
 def _init_buttons(self):
     frame = self._buttonframe = Frame(self._top)
     Button(frame, text='Ok', command=self._ok, underline=0,
            takefocus=0).pack(side='left')
     Button(frame,
            text='Apply',
            command=self._apply,
            underline=0,
            takefocus=0).pack(side='left')
     Button(
         frame,
         text='Reset',
         command=self._reset,
         underline=0,
         takefocus=0,
     ).pack(side='left')
     Button(frame,
            text='Cancel',
            command=self._cancel,
            underline=0,
            takefocus=0).pack(side='left')
     Button(frame,
            text='Help',
            command=self._help,
            underline=0,
            takefocus=0).pack(side='right')
示例#32
0
文件: cfg.py 项目: zlpmichelle/nltk
 def _init_startframe(self):
     frame = self._startframe = Frame(self._top)
     self._start = Entry(frame)
     self._start.pack(side="right")
     Label(frame, text="Start Symbol:").pack(side="right")
     Label(frame, text="Productions:").pack(side="left")
     self._start.insert(0, self._cfg.start().symbol())
示例#33
0
    def _init_exampleListbox(self, parent):
        self._exampleFrame = listframe = Frame(parent)
        self._exampleFrame.pack(fill="both", side="left", padx=2)
        self._exampleList_label = Label(self._exampleFrame,
                                        font=self._boldfont,
                                        text="Examples")
        self._exampleList_label.pack()
        self._exampleList = Listbox(
            self._exampleFrame,
            selectmode="single",
            relief="groove",
            background="white",
            foreground="#909090",
            font=self._font,
            selectforeground="#004040",
            selectbackground="#c0f0c0",
        )

        self._exampleList.pack(side="right", fill="both", expand=1)

        for example in self._examples:
            self._exampleList.insert("end", ("  %s" % example))
        self._exampleList.config(height=min(len(self._examples), 25), width=40)

        # Add a scrollbar if there are more than 25 examples.
        if len(self._examples) > 25:
            listscroll = Scrollbar(self._exampleFrame, orient="vertical")
            self._exampleList.config(yscrollcommand=listscroll.set)
            listscroll.config(command=self._exampleList.yview)
            listscroll.pack(side="left", fill="y")

        # If they select a example, apply it.
        self._exampleList.bind("<<ListboxSelect>>", self._exampleList_select)
示例#34
0
 def _init_buttons(self, parent):
     # Set up the frames.
     self._buttonframe = buttonframe = Frame(parent)
     buttonframe.pack(fill="none", side="bottom")
     Button(
         buttonframe,
         text="Step",
         background="#90c0d0",
         foreground="black",
         command=self.step,
     ).pack(side="left")
     Button(
         buttonframe,
         text="Shift",
         underline=0,
         background="#90f090",
         foreground="black",
         command=self.shift,
     ).pack(side="left")
     Button(
         buttonframe,
         text="Reduce",
         underline=0,
         background="#90f090",
         foreground="black",
         command=self.reduce,
     ).pack(side="left")
     Button(
         buttonframe,
         text="Undo",
         underline=0,
         background="#f0a0a0",
         foreground="black",
         command=self.undo,
     ).pack(side="left")
示例#35
0
    def _init_exampleListbox(self, parent):
        self._exampleFrame = listframe = Frame(parent)
        self._exampleFrame.pack(fill='both', side='left', padx=2)
        self._exampleList_label = Label(self._exampleFrame,
                                        font=self._boldfont,
                                        text='Examples')
        self._exampleList_label.pack()
        self._exampleList = Listbox(self._exampleFrame,
                                    selectmode='single',
                                    relief='groove',
                                    background='white',
                                    foreground='#909090',
                                    font=self._font,
                                    selectforeground='#004040',
                                    selectbackground='#c0f0c0')

        self._exampleList.pack(side='right', fill='both', expand=1)

        for example in self._examples:
            self._exampleList.insert('end', ('  %s' % example))
        self._exampleList.config(height=min(len(self._examples), 25), width=40)

        # Add a scrollbar if there are more than 25 examples.
        if len(self._examples) > 25:
            listscroll = Scrollbar(self._exampleFrame, orient='vertical')
            self._exampleList.config(yscrollcommand=listscroll.set)
            listscroll.config(command=self._exampleList.yview)
            listscroll.pack(side='left', fill='y')

        # If they select a example, apply it.
        self._exampleList.bind('<<ListboxSelect>>', self._exampleList_select)
示例#36
0
    def _init_readingListbox(self, parent):
        self._readingFrame = listframe = Frame(parent)
        self._readingFrame.pack(fill='both', side='left', padx=2)
        self._readingList_label = Label(self._readingFrame,
                                        font=self._boldfont,
                                        text='Readings')
        self._readingList_label.pack()
        self._readingList = Listbox(self._readingFrame,
                                    selectmode='single',
                                    relief='groove',
                                    background='white',
                                    foreground='#909090',
                                    font=self._font,
                                    selectforeground='#004040',
                                    selectbackground='#c0f0c0')

        self._readingList.pack(side='right', fill='both', expand=1)

        # Add a scrollbar if there are more than 25 examples.
        listscroll = Scrollbar(self._readingFrame, orient='vertical')
        self._readingList.config(yscrollcommand=listscroll.set)
        listscroll.config(command=self._readingList.yview)
        listscroll.pack(side='right', fill='y')

        self._populate_readingListbox()
示例#37
0
    def _init_grammar(self, parent):
        # Grammar view.
        self._prodframe = listframe = Frame(parent)
        self._prodframe.pack(fill='both', side='left', padx=2)
        self._prodlist_label = Label(
            self._prodframe, font=self._boldfont, text='Available Expansions'
        )
        self._prodlist_label.pack()
        self._prodlist = Listbox(
            self._prodframe,
            selectmode='single',
            relief='groove',
            background='white',
            foreground='#909090',
            font=self._font,
            selectforeground='#004040',
            selectbackground='#c0f0c0',
        )

        self._prodlist.pack(side='right', fill='both', expand=1)

        self._productions = list(self._parser.grammar().productions())
        for production in self._productions:
            self._prodlist.insert('end', ('  %s' % production))
        self._prodlist.config(height=min(len(self._productions), 25))

        # Add a scrollbar if there are more than 25 productions.
        if len(self._productions) > 25:
            listscroll = Scrollbar(self._prodframe, orient='vertical')
            self._prodlist.config(yscrollcommand=listscroll.set)
            listscroll.config(command=self._prodlist.yview)
            listscroll.pack(side='left', fill='y')

        # If they select a production, apply it.
        self._prodlist.bind('<<ListboxSelect>>', self._prodlist_select)
示例#38
0
文件: cfg.py 项目: EricChh20/EZ-Mail
 def _init_startframe(self):
     frame = self._startframe = Frame(self._top)
     self._start = Entry(frame)
     self._start.pack(side='right')
     Label(frame, text='Start Symbol:').pack(side='right')
     Label(frame, text='Productions:').pack(side='left')
     self._start.insert(0, self._cfg.start().symbol())
 def _init_buttons(self, parent):
     # Set up the frames.
     self._buttonframe = buttonframe = Frame(parent)
     buttonframe.pack(fill='none', side='bottom')
     Button(
         buttonframe,
         text='Step',
         background='#90c0d0',
         foreground='black',
         command=self.step,
     ).pack(side='left')
     Button(
         buttonframe,
         text='Shift',
         underline=0,
         background='#90f090',
         foreground='black',
         command=self.shift,
     ).pack(side='left')
     Button(
         buttonframe,
         text='Reduce',
         underline=0,
         background='#90f090',
         foreground='black',
         command=self.reduce,
     ).pack(side='left')
     Button(
         buttonframe,
         text='Undo',
         underline=0,
         background='#f0a0a0',
         foreground='black',
         command=self.undo,
     ).pack(side='left')
示例#40
0
    def __init__(self, server, *a, **kw):
        Frame.__init__(self, *a, **kw)

        self._srv = server

        self.rowconfigure(0, weight=1)
        self.columnconfigure(0, weight=1)

        self._nb = nb = Notebook(self)
        nb.grid(row=0, column=0, sticky="NESW")

        self._clients2tabs = {}

        self._update_tabs()

        server.watch_new_client(self._on_new_client)
示例#41
0
文件: tk.py 项目: VanDeng95/WaveSyn
 def __init__(self, *args, **kwargs):
     from_ = kwargs.pop('from_')
     to = kwargs.pop('to')
     name = kwargs.pop('name')
     formatter = kwargs.pop('formatter', str)
     self.__formatter = formatter
     Frame.__init__(self, *args, **kwargs)
     
     if name is not None:
         Label(self, text=name).pack(side=LEFT)
     
     self.__scale = Scale(self, from_=from_, to=to, 
                             command=self._on_change)
     self.__scale.pack(side=LEFT, fill=X, expand=YES)
     
     self.__value_label = value_label = Label(self)
     value_label.pack(side=LEFT)
示例#42
0
文件: tk.py 项目: VanDeng95/WaveSyn
 def __init__(self, *args, **kwargs):
     Frame.__init__(self, *args, **kwargs)
     canvas = Canvas(self)        
     
     xbar = Scrollbar(self, orient=HORIZONTAL)
     xbar.config(command=canvas.xview)
     canvas.config(xscrollcommand=xbar.set)
     xbar.pack(side=BOTTOM, fill=X)
     
     ybar = Scrollbar(self)
     ybar.config(command=canvas.yview)
     canvas.config(yscrollcommand=ybar.set)
     ybar.pack(side=RIGHT, fill=Y)
     
     canvas.pack(expand=YES, fill=BOTH)
     
     self.__canvas = canvas
示例#43
0
文件: cfg.py 项目: EricChh20/EZ-Mail
    def _init_prodframe(self):
        self._prodframe = Frame(self._top)

        # Create the basic Text widget & scrollbar.
        self._textwidget = Text(self._prodframe, background='#e0e0e0',
                                exportselection=1)
        self._textscroll = Scrollbar(self._prodframe, takefocus=0,
                                     orient='vertical')
        self._textwidget.config(yscrollcommand = self._textscroll.set)
        self._textscroll.config(command=self._textwidget.yview)
        self._textscroll.pack(side='right', fill='y')
        self._textwidget.pack(expand=1, fill='both', side='left')

        # Initialize the colorization tags.  Each nonterminal gets its
        # own tag, so they aren't listed here.
        self._textwidget.tag_config('terminal', foreground='#006000')
        self._textwidget.tag_config('arrow', font='symbol')
        self._textwidget.tag_config('error', background='red')

        # Keep track of what line they're on.  We use that to remember
        # to re-analyze a line whenever they leave it.
        self._linenum = 0

        # Expand "->" to an arrow.
        self._top.bind('>', self._replace_arrows)

        # Re-colorize lines when appropriate.
        self._top.bind('<<Paste>>', self._analyze)
        self._top.bind('<KeyPress>', self._check_analyze)
        self._top.bind('<ButtonPress>', self._check_analyze)

        # Tab cycles focus. (why doesn't this work??)
        def cycle(e, textwidget=self._textwidget):
            textwidget.tk_focusNext().focus()
        self._textwidget.bind('<Tab>', cycle)

        prod_tuples = [(p.lhs(),[p.rhs()]) for p in self._cfg.productions()]
        for i in range(len(prod_tuples)-1,0,-1):
            if (prod_tuples[i][0] == prod_tuples[i-1][0]):
                if () in prod_tuples[i][1]: continue
                if () in prod_tuples[i-1][1]: continue
                print(prod_tuples[i-1][1])
                print(prod_tuples[i][1])
                prod_tuples[i-1][1].extend(prod_tuples[i][1])
                del prod_tuples[i]

        for lhs, rhss in prod_tuples:
            print(lhs, rhss)
            s = '%s ->' % lhs
            for rhs in rhss:
                for elt in rhs:
                    if isinstance(elt, Nonterminal): s += ' %s' % elt
                    else: s += ' %r' % elt
                s += ' |'
            s = s[:-2] + '\n'
            self._textwidget.insert('end', s)

        self._analyze()
示例#44
0
 def _init_query_box(self, parent):
     innerframe = Frame(parent, background=self._BACKGROUND_COLOUR)
     another = Frame(innerframe, background=self._BACKGROUND_COLOUR)
     self.query_box = Entry(another, width=60)
     self.query_box.pack(side='left', fill='x', pady=25, anchor='center')
     self.search_button = Button(another, text='Search', command=self.search, borderwidth=1, highlightthickness=1)
     self.search_button.pack(side='left', fill='x', pady=25, anchor='center')
     self.query_box.bind('<KeyPress-Return>', self.search_enter_keypress_handler)
     another.pack()
     innerframe.pack(side='top', fill='x', anchor='n')
示例#45
0
 def initScrollText(self, frm, txt, contents):
     scl = Scrollbar(frm)
     scl.config(command=txt.yview)
     scl.pack(side="right", fill="y")
     txt.pack(side="left", expand=True, fill="x")
     txt.config(yscrollcommand=scl.set)
     txt.insert("1.0", contents)
     frm.pack(fill="x")
     Frame(height=2, bd=1, relief="ridge").pack(fill="x")
示例#46
0
    def configure(self, cnf={}, **kw):
        """
        Configure this widget.  Use ``label_*`` to configure all
        labels; and ``listbox_*`` to configure all listboxes.  E.g.:

                >>> mlb = MultiListbox(master, 5)
                >>> mlb.configure(label_foreground='red')
                >>> mlb.configure(listbox_foreground='red')
        """
        cnf = dict(list(cnf.items()) + list(kw.items()))
        for (key, val) in list(cnf.items()):
            if key.startswith('label_') or key.startswith('label-'):
                for label in self._labels:
                    label.configure({key[6:]: val})
            elif key.startswith('listbox_') or key.startswith('listbox-'):
                for listbox in self._listboxes:
                    listbox.configure({key[8:]: val})
            else:
                Frame.configure(self, {key: val})
示例#47
0
    def configure(self, cnf={}, **kw):
        """
        Configure this widget.  Use ``label_*`` to configure all
        labels; and ``listbox_*`` to configure all listboxes.  E.g.:

                >>> mlb = MultiListbox(master, 5)
                >>> mlb.configure(label_foreground='red')
                >>> mlb.configure(listbox_foreground='red')
        """
        cnf = dict(list(cnf.items()) + list(kw.items()))
        for (key, val) in list(cnf.items()):
            if key.startswith('label_') or key.startswith('label-'):
                for label in self._labels:
                    label.configure({key[6:]: val})
            elif key.startswith('listbox_') or key.startswith('listbox-'):
                for listbox in self._listboxes:
                    listbox.configure({key[8:]: val})
            else:
                Frame.configure(self, {key:val})
示例#48
0
文件: tk.py 项目: VanDeng95/WaveSyn
    def __init__(self, *args, **kwargs):
        pil_image = kwargs.pop('pil_image')
        photo = ImageTk.PhotoImage(pil_image)
        self.__photo = photo
        self.__origin_image = pil_image
        self.__zoomed_image = pil_image
        Frame.__init__(self, *args, **kwargs)

        frame = Frame(self)
        frame.pack(fill='x')
        
        save_dlg = lambda: asksaveasfilename(filetypes=[('JPEG', '.jpg'), ('PNG', '.png')], defaultextension='.jpg')        
                        
        def on_save(image):
            filename = save_dlg()
            if filename:
                image.save(filename)
        
        Label(frame, text=eval_format('id={id(self)}')).pack(side='left')
        Button(frame, text='Save Origin', command=lambda:on_save(self.__origin_image)).pack(side='left')
        Button(frame, text='Save Zoomed', command=lambda:on_save(self.__zoomed_image)).pack(side='left')

        scale = Scale(frame, from_=0, to=100, orient='horizontal', value=100)
        scale.pack(side='left')
        zoomed_label = Label(frame, text='100%')
        zoomed_label.pack(side='left')
        
        self.__label = label = Label(self, image=photo)
        label.pack(expand=YES, fill=BOTH)
        
        def on_scale(val):
            val = float(val)
            width, height = self.__origin_image.size
            width = int(width * val / 100)
            height = int(height * val / 100)
            zoomed_image = self.__origin_image.resize((width, height), 
                                                      Image.ANTIALIAS)
            self.__zoomed_image = zoomed_image
            self.__photo = ImageTk.PhotoImage(zoomed_image)
            self.__label['image'] = self.__photo
            zoomed_label['text'] = '{}%'.format(int(val))
            
        scale['command'] = on_scale
示例#49
0
文件: tk.py 项目: VanDeng95/WaveSyn
 def __init__(self, master=None, **kw):
     Frame.__init__(self, master, **kw)
     
     # Font selector
     selector_frame = LabelFrame(self, text='Font Selector')
     selector_frame.pack(side=LEFT)
     # Font face
     face_frame = LabelFrame(selector_frame, text='Font Face')
     face_frame.pack()
     face_list = ScrolledList(face_frame)
     face_list.pack()
     fonts = list(tkFont.families(self))
     fonts.sort()
     for font in fonts:
         face_list.insert(END, font)
     face_list.list_click_callback = self._on_face_select
     self.face_list = face_list
         
     # Font size
     size_frame = LabelFrame(selector_frame, text='Font Size')
     size_frame.pack()
     size_combo = Combobox(size_frame, takefocus=1, stat='readonly')
     size_combo.pack()
     size_combo['value'] = range(7, 23)
     size_combo.current(0)
     size_combo.bind('<<ComboboxSelected>>', self._on_size_select)
     self.size_combo = size_combo
     
     # Font Sample
     default_font = ('Courier', 10, tkFont.NORMAL)
     sample_frame = LabelFrame(self, text='Samples')
     sample_frame.pack(side=RIGHT, expand=YES, fill=Y)
     sample_label = Label(sample_frame, 
                          text='\tabcdefghij\t\n\tABCDEFGHIJ\t\n\t0123456789\t', 
                          font=default_font)
     sample_label.pack(expand=YES)
     self.sample_label = sample_label
     
     self.face = default_font[0]
     self.size = default_font[1]
     size_combo.current(self.size - 7)
示例#50
0
    def set_matplotlib_style(self, style_name=''):
        import matplotlib.pyplot as plt
        
        if style_name is self.constants.ASK_DIALOG:
            dialog = True
        else:
            dialog = False

        ret = [None]
        if dialog:
            win = Toplevel()
    
            Label(win, text='Select a style for newly-created figures.').pack()
    
            combo = Combobox(win, stat='readonly')
            combo['values'] = plt.style.available
            combo.current(0)
            combo.pack()
            
            ret = [None]
            
            def on_ok():
                ret[0] = combo.get()
                win.quit()
                
            def on_cancel():
                win.quit()
                
            frame = Frame(win)
            frame.pack()
            Button(win, text='Cancel', command=on_cancel).pack(side='right')            
            Button(win, text='Ok', command=on_ok).pack(side='right')
                
            win.protocol('WM_DELETE_WINDOW', win.quit)
            win.focus_set()
            win.grab_set()
            win.mainloop()
            win.destroy()        
            
        style = ret[0] if ret[0] is not None else style_name
        plt.style.use(style)
示例#51
0
 def __init__(self, package_name, base_class, display_base_class=False):
     self.__package_name = package_name
     self.__base_class = base_class
     self.__display_base_class = display_base_class
     self.__window = window = Toplevel()
     window.title('Class Selector')
     self.__selected_class_name = ''
     self.__selected_module_name = ''
     
     self.__tree = tree = ScrolledTree(window)
     tree.pack()
     # If a module print something while being loaded, the stdout of this
     # script will be contaminated. 
     # The dumb_stream prevents the contamination. 
     with dumb_stream():
         classes = self.load_modules()
     for package in classes:
         packageNode = tree.insert('', 'end', text=package)
         for class_name in classes[package]:
             tree.insert(packageNode, 'end', text=class_name, values=package)
             
     button_frame = Frame(window)
     button_frame.pack()
     def _on_click(module_name, class_name):
         self.__selected_module_name   = module_name
         self.__selected_class_name    = class_name
         window.destroy()
     cancel_button = Button(button_frame, text='Cancel', command=lambda: _on_click('', ''))
     cancel_button.pack(side='right')
     ok_button     = Button(
         button_frame, 
         text='OK', 
         command=lambda: _on_click(
             tree.item(tree.selection(), 'values')[0],
             tree.item(tree.selection(), 'text')
         )
     )
     ok_button.pack(side='right')
示例#52
0
文件: cfg.py 项目: prz3m/kind2anki
    def __init__(self, grammar, text):
        self._grammar = grammar
        self._text = text

        # Set up the main window.
        self._top = Tk()
        self._top.title('Context Free Grammar Demo')

        # Base font size
        self._size = IntVar(self._top)
        self._size.set(12)  # = medium

        # Set up the key bindings
        self._init_bindings(self._top)

        # Create the basic frames
        frame1 = Frame(self._top)
        frame1.pack(side='left', fill='y', expand=0)
        self._init_menubar(self._top)
        self._init_buttons(self._top)
        self._init_grammar(frame1)
        self._init_treelet(frame1)
        self._init_workspace(self._top)
示例#53
0
文件: tk.py 项目: VanDeng95/WaveSyn
def ask_font():
    win = Toplevel()
    win.title('Font Dialog')

    buttonFrame = Frame(win)
    retval = [None]
    def onClick(ret=None):
        win.destroy()
        retval[0] = ret
    
    buttonFrame.pack(side=BOTTOM)
    btnCancel = Button(buttonFrame, text='Cancel', command=lambda: onClick())
    btnCancel.pack(side=RIGHT)
    btnOk = Button(buttonFrame, text='OK', command=lambda: onClick((fontFrame.face, fontFrame.size)))
    btnOk.pack(side=RIGHT)    
            
    fontFrame = FontFrame(win)
    fontFrame.pack()
    
    win.focus_set()
    win.grab_set()
    win.wait_window()
    return retval[0]
示例#54
0
文件: tk.py 项目: hekejian/WaveSyn
    def __init__(self, *args, **kwargs):
        Frame.__init__(self, *args, **kwargs)
        Observable.__init__(self)
        self._text = text = Text(self, wrap=NONE, height=1.2, relief=SOLID)
        text.bind('<Configure>', self._on_resize)
        text.bind('<KeyPress>', self._on_key_press)
        text.pack(fill=X, expand=YES, side=LEFT)
        self._default_cursor = text['cursor']
        self._default_background_color = text['background']


        # Browse Button
        text.tag_config('browse_button', foreground='orange')
        text.tag_bind('browse_button', '<Button-1>', self._on_button_click)
        text.tag_bind('browse_button', '<Enter>',
                      lambda *args: self._change_cursor_to_hand(True))
        text.tag_bind('browse_button', '<Leave>',
                      lambda *args: self._change_cursor_to_hand(False))
        # End Browse Button
                
        self._blank_len = 2
        self._browse_text = 'BROWSE'
        self._coding = sys.getfilesystemencoding()
        self._directory          = None
 def _init_results_box(self, parent):
     innerframe = Frame(parent)
     i1 = Frame(innerframe)
     i2 = Frame(innerframe)
     vscrollbar = Scrollbar(i1, borderwidth=1)
     hscrollbar = Scrollbar(i2, borderwidth=1, orient='horiz')
     self.results_box = Text(i1,
                 font=Font(family='courier', size='16'),
                 state='disabled', borderwidth=1,
                 yscrollcommand=vscrollbar.set,
                 xscrollcommand=hscrollbar.set, wrap='none', width='40', height = '20', exportselection=1)
     self.results_box.pack(side='left', fill='both', expand=True)
     vscrollbar.pack(side='left', fill='y', anchor='e')
     vscrollbar.config(command=self.results_box.yview)
     hscrollbar.pack(side='left', fill='x', expand=True, anchor='w')
     hscrollbar.config(command=self.results_box.xview)
     #there is no other way of avoiding the overlap of scrollbars while using pack layout manager!!!
     Label(i2, text='   ', background=self._BACKGROUND_COLOUR).pack(side='left', anchor='e')
     i1.pack(side='top', fill='both', expand=True, anchor='n')
     i2.pack(side='bottom', fill='x', anchor='s')
     innerframe.pack(side='top', fill='both', expand=True)
 def _init_query_box(self, parent):
     innerframe = Frame(parent, background=self._BACKGROUND_COLOUR)
     another = Frame(innerframe, background=self._BACKGROUND_COLOUR)
     self.query_box = Entry(another, width=60)
     self.query_box.pack(side='left', fill='x', pady=25, anchor='center')
     self.search_button = Button(another, text='Search', command=self.search, borderwidth=1, highlightthickness=1)
     self.search_button.pack(side='left', fill='x', pady=25, anchor='center')
     self.query_box.bind('<KeyPress-Return>', self.search_enter_keypress_handler)
     another.pack()
     innerframe.pack(side='top', fill='x', anchor='n')
示例#57
0
    def __init__(self):
        # The instance of this class is the root of the model tree. Thus is_root is set to True
        super(Application, self).__init__(node_name=Scripting.root_name, is_root=True)
        Scripting.name_space['locals'][Scripting.root_name] = self
        Scripting.name_space['globals'] = globals()
        Scripting.root_node = self
        self.homepage = 'https://github.com/xialulee/WaveSyn'
        
        file_path    = getsourcefile(type(self))
        dir_path     = os.path.split(file_path)[0]
        
        # load config file
        config_file_path  = os.path.join(dir_path, 'config.json')
        with open(config_file_path) as f:
            config  = json.load(f)
        console_menu = config['ConsoleMenu']
        self.editor_info   = config['EditorInfo']
        self.lock_attribute('editor_info')
        self.prompt_symbols  = config['PromptSymbols']

        tag_defs = config['TagDefs']
        # End load config file

        root = Tix.Tk()
        root.protocol("WM_DELETE_WINDOW", self._on_exit)
        main_thread_id = thread.get_ident()
        Scripting.main_thread_id = main_thread_id
        
        # To Do: WaveSyn will have a uniform command slot system.
        from wavesynlib.interfaces.xmlrpc.server import CommandSlot
        
        # Construct Constants        
        from wavesynlib.languagecenter.wavesynscript import Constant        
        
        class Constants(object): 
            __slots__ = (
                'ASK_DIALOG',
                'ASK_OPEN_FILENAME',
                'ASK_SAVEAS_FILENAME',
                'ASK_FILES',
                'ASK_ORDERED_FILES',
                'ASK_SLICE'
            )
            
            for name in __slots__:
                locals()[name] = Constant(name)
        # End Construct Constants
        
        value_checker    = ValueChecker(root)
        
        
        # File Utils Node             
        
        class TarFileManipulator(ModelNode):
            def __init__(self, *args, **kwargs):
                filename = kwargs.pop('filename')
                ModelNode.__init__(self, *args, **kwargs)
                with self.attribute_lock:
                    self.filename = filename
                    
            @property
            def node_path(self):
                return eval_format('{self.parent_node.node_path}["{self.filename}"]')
                
            @Scripting.printable
            def extract_all(self, directory):
                if directory is self.root_node.constants.ASK_DIALOG:
                    directory = askdirectory(initialdir=os.getcwd())
                if not directory:
                    return
                    
                tar = tarfile.open(self.filename)
                tar.extractall(directory)
        
        class TarFileManager(ModelNode):
            def __init__(self, *args, **kwargs):
                ModelNode.__init__(self, *args, **kwargs)
                
            def __getitem__(self, filename):
                if filename is self.root_node.constants.ASK_DIALOG:
                    filename = askopenfilename(filetypes=[('TAR Files', ('*.tar', '*.tar.gz', '*.tgz')), ('All Files', '*.*')])
                if not filename:
                    return
                    
                manipulator = TarFileManipulator(filename=filename)
                object.__setattr__(manipulator, 'parent_node', self)
                manipulator.lock_attribute('parent_node')
                return manipulator
                
        
        class FileUtils(ModelNode):
            def __init__(self, *args, **kwargs):
                ModelNode.__init__(self, *args, **kwargs)                
                self.pdf_files = ModelNode(is_lazy=True, module_name='wavesynlib.interfaces.pdf.modelnode', class_name='PDFFileManager')
                self.touchstone_files = ModelNode(is_lazy=True, module_name='wavesynlib.interfaces.devcomm.touchstone.modelnode', class_name='TouchstoneFileManager')
                self.tar_files = ModelNode(is_lazy=True, class_object=TarFileManager)
                
        self.file_utils = FileUtils()
        # End File Utils Node
                
        
        with self.attribute_lock:
            set_attributes(self,
                # UI elements
                root = root,
                tk_root = root,
                balloon = Tix.Balloon(root),
                taskbar_icon = TaskbarIcon(root),
                interrupter = InterrupterNode(),
                dialogs = Dialogs(self),
                # End UI elements
                
                # Constants
                constants = Constants,
                # End Constants
                
                # OS interfaces
                os = OperatingSystem(),
                # End OS interfaces
                
                # Thread related
                main_thread_id = main_thread_id,
                exec_thread_lock = threading.RLock(),
                # End
                
                model_tree_monitor = model_tree_monitor,

                # To Do: WaveSyn will have a uniform command slot system.
                xmlrpc_command_slot = CommandSlot(),

                lang_center = LangCenterNode(),
            
                # Validation Functions
                value_checker = value_checker,
                check_int = value_checker.check_int,
                check_float = value_checker.check_float,
                check_positive_float = value_checker.check_positive_float,
                # End Validation Functions
                
                file_path = file_path,
                dir_path = dir_path,
                                
                stream_manager = StreamManager(),                
                
                config_file_path = config_file_path
                
#                cudaWorker      = CUDAWorker()
            )        

        # Timer utils
        self.timer = timeutils.ActionManager()              
        self.timer.after = timeutils.TimerActionNode(type_='after')
        self.timer.every = timeutils.TimerActionNode(type_='every')        
        # End Timer utils
                        
        from wavesynlib.toolwindows.basewindow import WindowDict                                  
        self.windows    = WindowDict() # Instance of ModelNode can be locked automatically.
        self.editors    = EditorDict()
        
        with self.attribute_lock:
            # The below one is the core of the new command system:
            self.command_queue = Queue.Queue()
            # The timer shown as follows checks the command queue
            # extracts command and execute.
            self.command_queue_timer = self.create_timer(interval=50, active=False)
        
        @SimpleObserver
        def command_queue_observer():
            try:
                while True:
                    command_slot = self.command_queue.get_nowait()
                    if command_slot.source == 'local':
                        node = command_slot.node_list[-1]
                        if callable(node):
                            node(*command_slot.args, **command_slot.kwargs)
                        elif isinstance(node, ModelNode):
                            getattr(node, command_slot.method_name)(*command_slot.args, **command_slot.kwargs)
                        else:
                            raise TypeError('The given object is not a ModelNode.')
            except Queue.Empty:
                return
                
        self.command_queue_timer.add_observer(command_queue_observer)
        self.command_queue_timer.active = True
        
        class EditorObserver(object): # use SimpleObserver instead
            def __init__(self, wavesyn):
                self.wavesyn    = wavesyn

            def update(self, editor):
                wavesyn = self.wavesyn                
                code    = editor.code
                if not code:
                    return
                wavesyn.stream_manager.write('WaveSyn: executing code from editor {0} listed as follows:\n'.format(id(editor)), 'TIP')
                wavesyn.stream_manager.write(code, 'HISTORY')
                wavesyn.stream_manager.write('\n')
                wavesyn.execute(code)

        self.editors.manager.add_observer(EditorObserver(self))

        with self.attribute_lock:
            self.monitor_timer = self.create_timer(interval=100, active=False)
            
        # Make wavesyn.editors.manager check wavesyn.editors every 100ms
        self.monitor_timer.add_observer(self.editors.manager) 
        
        # Check std streams every 100ms
        self.monitor_timer.add_observer(self.stream_manager)
        
        frm = Frame(root)
        frm.pack(side=TOP, fill=X)                

        self.console = ConsoleWindow(menu=console_menu, tag_defs=tag_defs)
        self.stream_manager.add_observer(self.console.stream_observer) #!
             
        #self.clipboard = Clipboard()
        self.scripting = Scripting(self)
        self.no_tip = False

        self.monitor_timer.active    = True
        
        self._add_env_path()
示例#58
0
    def __init__(self, *args, **kwargs):
        Frame.__init__(self, *args, **kwargs)
        timer = TkTimer(widget=self, interval=200, active=False)
        
        balloon = Scripting.root_node.balloon
                
        self.__busy_lamp = six.moves.tkinter.Label(self, bg='forestgreen', width=1)
        self.__busy_lamp.pack(side=RIGHT, fill='y')
        
        self.__membar = IntVar(0)
        self._make_mem_status()

        # Transparent Scale {
        def on_scale(val):
            Scripting.root_node.console.set_transparency(val)
        trans_scale = Scale(self, from_=0.2, to=1.0, orient='horizontal', value=1, command=on_scale)
        trans_scale.pack(side='right')
        balloon.bind_widget(trans_scale, balloonmsg='Set the transparency of the console.')
        # } End Transparent Scale

        # Topmost Button {
        import six.moves.tkinter as tkinter
        topmost_button = tkinter.Button(self, text='TOP', relief='groove') 
        topmost_button.pack(side='right')
        
        def on_click():
            tk_root = Scripting.root_node.tk_root
            b = bool(tk_root.wm_attributes('-topmost'))
            fg = 'black' if b else 'lime green'
            topmost_button['fg'] = fg
            tk_root.wm_attributes('-topmost', not b)
            
        topmost_button['command'] = on_click
        balloon.bind_widget(topmost_button, balloonmsg='Set the console as a topmost window.')
        # } End Topmost Button 
        
        #{ Window Combo
        window_combo = Combobox(self, value=[], takefocus=1, stat='readonly')
        def on_selected(event):
            text = event.widget.get()
            wid = int(text.split(':')[1].strip())
            Scripting.root_node.windows[wid].tk_object.deiconify()
        window_combo.bind('<<ComboboxSelected>>', on_selected)
        window_combo.pack(side='right', fill='y') # deiconify a window
        
        @SimpleObserver
        def on_windows_change(node, command):
            values = window_combo['values']
            if values == '':
                values = []
            if isinstance(values, tuple):
                values = list(values)
            node_id = id(node)
            if command == 'new':
                type_name = node.__class__.__name__
                values.append(eval_format('{type_name}: {node_id}'))
            elif command == 'del':
                for index, value in enumerate(values):
                    wid = int(value.split(':')[1].strip())
                    if node_id == wid:
                        del values[index]
            window_combo['values'] = values
            if len(values) > 0:
                window_combo.current(len(values)-1)
            else:
                window_combo.set('')
            
        Scripting.root_node.windows.add_observer(on_windows_change)
        #} End Window Combo
                
        self.__lock = thread.allocate_lock()
        self.__busy = False
             
        get_memory_usage = Scripting.root_node.os.get_memory_usage
        
        @SimpleObserver
        def check_busy():
            self._set_busy_light()
            
        @SimpleObserver
        def check_mem():
            self.__membar.set(get_memory_usage())
            
        timer.add_observer(check_busy)
        timer.divider(divide_by=10).add_observer(check_mem)
        timer.active = True
示例#59
0
 def __init__(self, *args, **kwargs):
     TkToolWindow.__init__(self, *args, **kwargs)
     Observable.__init__(self)
     
     self.__serialmap = None
     
     # Temporarily
     self.inst = Inst()
     # End Temporarily
     
     #window = self.tk_object
     tooltab = Frame(self._tool_tabs)
     self._tool_tabs.add(tooltab, text='SPI')
     #tooltab.pack(expand='yes', fill='x')        
     
 # Group OPEN 
     open_group = Group(tooltab)
     open_group.name = 'Open Device'
     open_group.pack(side='left', fill='y', expand='yes')
     
     self.__dev_combo = dev_combo = Combobox(open_group, value=[], takefocus=1, stat='readonly', width=12)
     dev_combo.bind('<<ComboboxSelected>>', self._on_dev_change)
     self.__current_serialno = None
     dev_combo.pack(side='top')
     
     self.__is_opened = IntVar(0)
     self.__open_check = open_check = Checkbutton(open_group, text='Open', 
         variable=self.__is_opened,
         command=self._on_open_click)
     open_check.pack(expand='yes', fill='y', side='top')
 # End Group Open
     
 # Group Parameters
     param_group = Group(tooltab)
     param_group.name = 'Parameters'
     param_group.pack(side='left')
     Button(param_group, text='Configure', command=self._on_param_change).pack(side='bottom')        
     
     param_frame = Frame(param_group)
     param_frame.pack()
     
     self.__CPOL = CPOL = IntVar(0)
     self.__CPHA = CPHA = IntVar(0)
     Checkbutton(param_frame, text='CPOL', variable=CPOL).grid(row=0, column=0)
     Checkbutton(param_frame, text='CPHA', variable=CPHA).grid(row=1, column=0)
     
     self.__baud_combo = baud_combo = Combobox(param_frame, value=[], takefocus=1, stat='readonly', width=8)
     baud_combo.grid(row=0, column=1, columnspan=2)
     
     self.__read_timeout_str = r_timeout = StringVar()
     self.__write_timeout_str = w_timeout = StringVar()
     Entry(param_frame, textvariable=r_timeout, width=5).grid(row=1, column=1)
     Entry(param_frame, textvariable=w_timeout, width=5).grid(row=1, column=2)
 # End Group Parameters
     
 # Write Group
     write_group = Group(tooltab)
     write_group.name = 'Write'
     write_group.pack(side='left', fill='y', expand='yes')
     
     self.__writebuf = writebuf = StringVar()
     Entry(write_group, textvariable=writebuf).pack()
     Button(write_group, text='Write', command=self._on_write_click).pack()
 # End Write Group
     
     self._make_window_manager_tab()
     
     # To Do: a driver group for loading specified spi bus driver
     converter = USBSPIConverter()
     converter.add_observer(self)
     self.add_observer(converter)
示例#60
0
文件: gui.py 项目: 173210/depot_tools
    def init_gui(self):
        """init helper"""

        window = PanedWindow(self.root, orient="vertical")
        window.pack(side=TOP, fill=BOTH, expand=True)

        top_pane = Frame(window)
        window.add(top_pane)
        mid_pane = Frame(window)
        window.add(mid_pane)
        bottom_pane = Frame(window)
        window.add(bottom_pane)

        #setting up frames
        top_frame = Frame(top_pane)
        mid_frame = Frame(top_pane)
        history_frame = Frame(top_pane)
        radio_frame = Frame(mid_pane)
        rating_frame = Frame(mid_pane)
        res_frame = Frame(mid_pane)
        check_frame = Frame(bottom_pane)
        msg_frame = Frame(bottom_pane)
        btn_frame = Frame(bottom_pane)
        top_frame.pack(side=TOP, fill=X)
        mid_frame.pack(side=TOP, fill=X)
        history_frame.pack(side=TOP, fill=BOTH, expand=True)
        radio_frame.pack(side=TOP, fill=X)
        rating_frame.pack(side=TOP, fill=X)
        res_frame.pack(side=TOP, fill=BOTH, expand=True)
        check_frame.pack(side=TOP, fill=X)
        msg_frame.pack(side=TOP, fill=BOTH, expand=True)
        btn_frame.pack(side=TOP, fill=X)

        # Binding F5 application-wide to run lint
        self.root.bind('<F5>', self.run_lint)

        #Message ListBox
        rightscrollbar = Scrollbar(msg_frame)
        rightscrollbar.pack(side=RIGHT, fill=Y)
        bottomscrollbar = Scrollbar(msg_frame, orient=HORIZONTAL)
        bottomscrollbar.pack(side=BOTTOM, fill=X)
        self.lb_messages = Listbox(
            msg_frame,
            yscrollcommand=rightscrollbar.set,
            xscrollcommand=bottomscrollbar.set,
            bg="white")
        self.lb_messages.bind("<Double-Button-1>", self.show_sourcefile)
        self.lb_messages.pack(expand=True, fill=BOTH)
        rightscrollbar.config(command=self.lb_messages.yview)
        bottomscrollbar.config(command=self.lb_messages.xview)

        #History ListBoxes
        rightscrollbar2 = Scrollbar(history_frame)
        rightscrollbar2.pack(side=RIGHT, fill=Y)
        bottomscrollbar2 = Scrollbar(history_frame, orient=HORIZONTAL)
        bottomscrollbar2.pack(side=BOTTOM, fill=X)
        self.showhistory = Listbox(
            history_frame,
            yscrollcommand=rightscrollbar2.set,
            xscrollcommand=bottomscrollbar2.set,
            bg="white")
        self.showhistory.pack(expand=True, fill=BOTH)
        rightscrollbar2.config(command=self.showhistory.yview)
        bottomscrollbar2.config(command=self.showhistory.xview)
        self.showhistory.bind('<Double-Button-1>', self.select_recent_file)
        self.set_history_window()

        #status bar
        self.status = Label(self.root, text="", bd=1, relief=SUNKEN, anchor=W)
        self.status.pack(side=BOTTOM, fill=X)

        #labelbl_ratingls
        lbl_rating_label = Label(rating_frame, text='Rating:')
        lbl_rating_label.pack(side=LEFT)
        lbl_rating = Label(rating_frame, textvariable=self.rating)
        lbl_rating.pack(side=LEFT)
        Label(mid_frame, text='Recently Used:').pack(side=LEFT)
        Label(top_frame, text='Module or package').pack(side=LEFT)

        #file textbox
        self.txt_module = Entry(top_frame, background='white')
        self.txt_module.bind('<Return>', self.run_lint)
        self.txt_module.pack(side=LEFT, expand=True, fill=X)

        #results box
        rightscrollbar = Scrollbar(res_frame)
        rightscrollbar.pack(side=RIGHT, fill=Y)
        bottomscrollbar = Scrollbar(res_frame, orient=HORIZONTAL)
        bottomscrollbar.pack(side=BOTTOM, fill=X)
        self.results = Listbox(
            res_frame,
            yscrollcommand=rightscrollbar.set,
            xscrollcommand=bottomscrollbar.set,
            bg="white", font="Courier")
        self.results.pack(expand=True, fill=BOTH, side=BOTTOM)
        rightscrollbar.config(command=self.results.yview)
        bottomscrollbar.config(command=self.results.xview)

        #buttons
        Button(top_frame, text='Open', command=self.file_open).pack(side=LEFT)
        Button(top_frame, text='Open Package',
               command=(lambda: self.file_open(package=True))).pack(side=LEFT)

        self.btnRun = Button(top_frame, text='Run', command=self.run_lint)
        self.btnRun.pack(side=LEFT)
        Button(btn_frame, text='Quit', command=self.quit).pack(side=BOTTOM)

        #radio buttons
        self.information_box = IntVar()
        self.convention_box = IntVar()
        self.refactor_box = IntVar()
        self.warning_box = IntVar()
        self.error_box = IntVar()
        self.fatal_box = IntVar()
        i = Checkbutton(check_frame, text="Information", fg=COLORS['(I)'],
                        variable=self.information_box, command=self.refresh_msg_window)
        c = Checkbutton(check_frame, text="Convention", fg=COLORS['(C)'],
                        variable=self.convention_box, command=self.refresh_msg_window)
        r = Checkbutton(check_frame, text="Refactor", fg=COLORS['(R)'],
                        variable=self.refactor_box, command=self.refresh_msg_window)
        w = Checkbutton(check_frame, text="Warning", fg=COLORS['(W)'],
                        variable=self.warning_box, command=self.refresh_msg_window)
        e = Checkbutton(check_frame, text="Error", fg=COLORS['(E)'],
                        variable=self.error_box, command=self.refresh_msg_window)
        f = Checkbutton(check_frame, text="Fatal", fg=COLORS['(F)'],
                        variable=self.fatal_box, command=self.refresh_msg_window)
        i.select()
        c.select()
        r.select()
        w.select()
        e.select()
        f.select()
        i.pack(side=LEFT)
        c.pack(side=LEFT)
        r.pack(side=LEFT)
        w.pack(side=LEFT)
        e.pack(side=LEFT)
        f.pack(side=LEFT)

        #check boxes
        self.box = StringVar()
        # XXX should be generated
        report = Radiobutton(
            radio_frame, text="Report", variable=self.box,
            value="Report", command=self.refresh_results_window)
        raw_met = Radiobutton(
            radio_frame, text="Raw metrics", variable=self.box,
            value="Raw metrics", command=self.refresh_results_window)
        dup = Radiobutton(
            radio_frame, text="Duplication", variable=self.box,
            value="Duplication", command=self.refresh_results_window)
        ext = Radiobutton(
            radio_frame, text="External dependencies",
            variable=self.box, value="External dependencies",
            command=self.refresh_results_window)
        stat = Radiobutton(
            radio_frame, text="Statistics by type",
            variable=self.box, value="Statistics by type",
            command=self.refresh_results_window)
        msg_cat = Radiobutton(
            radio_frame, text="Messages by category",
            variable=self.box, value="Messages by category",
            command=self.refresh_results_window)
        msg = Radiobutton(
            radio_frame, text="Messages", variable=self.box,
            value="Messages", command=self.refresh_results_window)
        source_file = Radiobutton(
            radio_frame, text="Source File", variable=self.box,
            value="Source File", command=self.refresh_results_window)
        report.select()
        report.grid(column=0, row=0, sticky=W)
        raw_met.grid(column=1, row=0, sticky=W)
        dup.grid(column=2, row=0, sticky=W)
        msg.grid(column=3, row=0, sticky=W)
        stat.grid(column=0, row=1, sticky=W)
        msg_cat.grid(column=1, row=1, sticky=W)
        ext.grid(column=2, row=1, sticky=W)
        source_file.grid(column=3, row=1, sticky=W)

        #dictionary for check boxes and associated error term
        self.msg_type_dict = {
            'I': lambda: self.information_box.get() == 1,
            'C': lambda: self.convention_box.get() == 1,
            'R': lambda: self.refactor_box.get() == 1,
            'E': lambda: self.error_box.get() == 1,
            'W': lambda: self.warning_box.get() == 1,
            'F': lambda: self.fatal_box.get() == 1
        }
        self.txt_module.focus_set()