Пример #1
0
    def _set_gui(self):
        """Method sets graphical interface

        Args:
            none

        Returns:
            void

        """

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

        # treeview
        self._tree = ttk.Treeview(
            self,
            columns=('path', 'type'),
            show='tree',
            displaycolumns=(),
            height=20,
            selectmode='browse',
            xscrollcommand=lambda f, l: self._autoscroll(self._hsb, f, l),
            yscrollcommand=lambda f, l: self._autoscroll(self._vsb, f, l))
        self._tree.grid(in_=self, row=0, column=0, sticky=tk.NSEW)

        # scrollbars
        self._vsb = ttk.Scrollbar(self,
                                  orient=tk.VERTICAL,
                                  command=self._tree.yview)
        self._vsb.grid(in_=self, row=0, column=1, sticky=tk.NS)
        self._hsb = ttk.Scrollbar(self,
                                  orient=tk.HORIZONTAL,
                                  command=self._tree.xview)
        self._hsb.grid(in_=self, row=1, column=0, sticky=tk.EW)

        self._tree['yscroll'] = self._vsb.set
        self._tree['xscroll'] = self._hsb.set
        self._tree.heading('#0', text='File', anchor='w')
        self._tree.column('#0', stretch=True, minwidth=300, width=250)

        # events
        self._tree.bind('<<TreeviewOpen>>', self._update_tree)
        self._tree.bind('<Double-1>', self._open)
        self._tree.bind('<Control-c>', self._copy)
        self._tree.bind('<Control-v>', self._paste)
        self._tree.bind('<Delete>', self._delete)
        self._tree.bind('<F5>', self.refresh)

        self._set_menu()
Пример #2
0
    def _set_gui(self):
        """Method sets graphical interface

        Args:
            none

        Returns:
            void

        """

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

        # treeview
        self._tree = ttk.Treeview(
            self,
            columns=('content'),
            show='tree',
            displaycolumns=('content'),
            height=20,
            selectmode='browse',
            xscrollcommand=lambda f, l: self._autoscroll(self._hsb, f, l),
            yscrollcommand=lambda f, l: self._autoscroll(self._vsb, f, l))
        self._tree.grid(in_=self, row=0, column=0, sticky=tk.NSEW)

        # scrollbars
        self._vsb = ttk.Scrollbar(self,
                                  orient=tk.VERTICAL,
                                  command=self._tree.yview)
        self._vsb.grid(in_=self, row=0, column=1, sticky=tk.NS)
        self._hsb = ttk.Scrollbar(self,
                                  orient=tk.HORIZONTAL,
                                  command=self._tree.xview)
        self._hsb.grid(in_=self, row=1, column=0, sticky=tk.EW)

        self._tree['yscroll'] = self._vsb.set
        self._tree['xscroll'] = self._hsb.set
        self._tree.heading('#0', text='Element', anchor='w')
        self._tree.column('#0', stretch=False, width=170)
        self._tree.column('content', stretch=True, minwidth=200, width=100)

        # events
        self._tree.bind('<ButtonRelease-1>', self._highlight_item)
        self._tree.bind('<Any-KeyRelease>', self._highlight_item)
        self._tree.bind('<Button-3>', self._context_menu)
Пример #3
0
    def _set_gui(self, completions):
        """Method sets graphical interface

        Args:
            completions (list): code completions

        Returns:
            void

        """

        self._win = tk.Toplevel(self.root)
        self._win.title('')
        self._win.geometry('+%d+%d' % (self.root.winfo_screenwidth() / 3,
                                       self.root.winfo_screenheight() / 3))
        self._win.tk.call('wm', 'iconphoto', self._win._w,
                          self.root.images['logo'])

        self._vbar = ttk.Scrollbar(self._win, orient=tk.VERTICAL)
        self._tree = ttk.Treeview(self._win,
                                  columns=('complete', 'type', 'params'),
                                  show='tree',
                                  displaycolumns=(),
                                  height=10,
                                  selectmode='browse',
                                  yscrollcommand=self._vbar.set)
        self._vbar.config(command=self._tree.yview)
        self._vbar.pack(side=tk.RIGHT, fill=tk.Y)
        self._tree.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)

        self._win.bind('<Escape>', lambda f: self._win.destroy())
        self._tree.bind('<Double-1>', self._complete)
        self._tree.bind('<Return>', self._complete)

        for c in completions:
            try:
                params = []
                for p in c.params:
                    params.append(p.name)
                params = ','.join(params)
                self._tree.insert('',
                                  'end',
                                  text=c.name,
                                  values=(c.complete, c.type, params))
            except (AttributeError, NotImplementedError):
                self._tree.insert('',
                                  'end',
                                  text=c.name,
                                  values=(c.complete, c.type, ''))

        self._tree.focus(self._tree.get_children()[0])
        self._tree.focus_set()
Пример #4
0
    def _set_tree(self):
        """Method sets tree gui

        Args:
           none

        Returns:
           void

        """

        self._vbar = ttk.Scrollbar(self._frame_left, orient=tk.VERTICAL)
        self._tree = ttk.Treeview(self._frame_left,
                                  columns=(),
                                  show='tree',
                                  displaycolumns=(),
                                  height=10,
                                  selectmode='browse',
                                  yscrollcommand=self._vbar.set)
        self._vbar.config(command=self._tree.yview)
        self._vbar.pack(side=tk.RIGHT, fill=tk.Y)
        self._tree.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)

        for name, cfg in self.explorer._projects.items():
            if ('git' in cfg):
                self._tree.insert('', 'end', text=name)

        # context menu
        self._menu = tk.Menu(self._tree, tearoff=False)
        self._menu.add_command(
            label=self.trn.msg('htk_gitclient_repomanager_push'),
            command=self._push)
        self._menu.add_command(
            label=self.trn.msg('htk_gitclient_repomanager_pull'),
            command=self._pull)

        # events
        self._tree.bind('<ButtonRelease-1>', self._fill_repo_detail)
        self._tree.bind('<Any-KeyRelease>', self._fill_repo_detail)
        self._tree.bind('<Button-3>', self._context_menu)
Пример #5
0
    def _set_commit(self):
        """Method sets commit gui

        Args:
           none

        Returns:
           void

        """

        row = 7
        font = ('Arial', 10, 'bold')
        tk.Label(self._frame_right,
                 text=self.trn.msg('htk_gitclient_repomanager_commit_title'),
                 font=font).grid(row=row, column=0, sticky='w')

        tk.Label(self._frame_right,
                 text=self.trn.msg(
                     'htk_gitclient_repomanager_commit_message')).grid(
                         row=row + 1, column=0, sticky='e')
        self._msg = tk.Text(self._frame_right,
                            background='#FFFFFF',
                            height=7,
                            width=50)
        self._msg.grid(row=row + 1, column=1, rowspan=2, sticky='w')
        row += 1

        tk.Label(
            self._frame_right,
            text=self.trn.msg('htk_gitclient_repomanager_commit_author')).grid(
                row=row + 3, column=0, sticky='e')
        self._author = tk.Entry(self._frame_right, width=40)
        self._author.grid(row=row + 3, column=1, padx=3, pady=3, sticky='w')

        push = tk.BooleanVar(value=True)
        tk.Checkbutton(
            self._frame_right,
            text=self.trn.msg('htk_gitclient_repomanager_commit_push'),
            variable=push).grid(row=row + 3, column=2, sticky='e')

        error = tk.Label(self._frame_right, text='', foreground='#FF0000')
        error.grid(row=row + 4, column=1, sticky='w')
        btn = tk.Button(
            self._frame_right,
            text=self.trn.msg('htk_gitclient_repomanager_commit_commit'),
            command=lambda: self._commit(self._msg.get(
                '1.0', 'end-1c'), self._author.get(), [], push.get(), error))
        btn.grid(row=row + 4, column=2, padx=3, pady=3, sticky='e')

        tk.Label(self._frame_right,
                 text=self.trn.msg('htk_gitclient_repomanager_commit_files'),
                 font=font).grid(row=row + 5, column=0, sticky='w')

        select_all = tk.BooleanVar(value=False)
        tk.Checkbutton(
            self._frame_right,
            text=self.trn.msg('htk_gitclient_repomanager_commit_select_all'),
            variable=select_all,
            command=lambda: self._select_all_files(select_all.get())).grid(
                row=row + 6, column=1, sticky='w')

        self._files_bar = ttk.Scrollbar(self._frame_right, orient=tk.VERTICAL)
        self._files = ttk.Treeview(self._frame_right,
                                   columns=('operation', 'file'),
                                   show='tree',
                                   displaycolumns=('operation', 'file'),
                                   height=10,
                                   selectmode='browse',
                                   yscrollcommand=self._files_bar.set)
        self._files_bar.configure(command=self._files.yview)
        self._files.grid(row=row + 7, column=1, sticky=tk.NSEW)
        self._files_bar.grid(row=row + 7, column=2, sticky='nsw')

        self._files.column('#0', stretch=False, width=40)
        self._files.column('operation', stretch=False, width=50)
        self._files.column('file', stretch=True, width=200)

        self._files.bind('<ButtonRelease-1>', self._select_file)
        self._files.bind('<Any-KeyRelease>', self._select_file)
Пример #6
0
    def _set_gui(self, content=None):
        """Method sets graphical interface

        Args:
            content (str): file content

        Returns:
            void

        """

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

        self._vbar = ttk.Scrollbar(self, orient=tk.VERTICAL)
        self._hbar = ttk.Scrollbar(self, orient=tk.HORIZONTAL)

        # line number bar
        self._ln_bar = tk.Text(self, background='#FFFFFF', width=5, padx=3, takefocus=0, state=tk.DISABLED, yscrollcommand=self._vbar.set)
        self._ln_bar.grid(in_=self, row=0, column=0, sticky=tk.NSEW)

        # text area
        self._text = tk.Text(self, wrap=tk.NONE, background='#FFFFFF', xscrollcommand=self._hbar.set, yscrollcommand=self._vbar.set)
        self.set_font(self.editor.font['family'], self.editor.font['size'], self.editor.font['style'])
        self._text.grid(in_=self, row=0, column=1, sticky=tk.NSEW)

        # scrollbars
        self._vbar.configure(command=self._text.yview)
        self._vbar.grid(in_=self, row=0, column=2, sticky=tk.NS)
        self._hbar.configure(command=self._text.xview)
        self._hbar.grid(in_=self, row=1, column=1, sticky=tk.EW)

        # info bar
        info_text = '1 : 1' if (self.editor.var_show_info_bar.get()) else ''
        self._info_bar = tk.Label(self._text, text=info_text)
        self._info_bar.pack(side=tk.RIGHT, anchor=tk.SE)

        self._text.focus_set()

        # initial text content
        if (content != None):
            self._text.insert(tk.END, content)
            self._text.edit_modified(False)
            self._text.mark_set(tk.INSERT, 1.0)
            self.update_line_numbers()
            self.update_info_bar()
            self.colorize()

        # events
        self._text.configure(undo=True)
        self._text.bind('<Control-v>', self.editor.paste)
        self._text.bind('<Control-F4>', self.nb.close_tab)
        self._text.bind('<Any-KeyPress>', self._on_key_press)
        self._text.bind('<Any-KeyRelease>', self._on_key_release)
        self._text.bind('<ButtonRelease-1>', self._on_mouse_click)
        self._vbar.configure(command=self._on_vsb)

        if (c_os == 'Windows'):
            self._ln_bar.bind('<MouseWheel>', self._on_mouse_wheel)
            self._text.bind('<MouseWheel>', self._on_mouse_wheel)
            self._text.bind('<Control-MouseWheel>', self._change_font_size)
        else:
            self._ln_bar.bind('<Button-4>', self._on_mouse_wheel)
            self._ln_bar.bind('<Button-5>', self._on_mouse_wheel)
            self._text.bind('<Button-4>', self._on_mouse_wheel)
            self._text.bind('<Button-5>', self._on_mouse_wheel)
            self._text.bind('<Control-Button-4>', self._change_font_size)
            self._text.bind('<Control-Button-5>', self._change_font_size)

        self._text.bind('<F3>', self.find)
        self._text.bind('<Control-z>', self.editor.undo)
        self._text.bind('<Control-y>', self.editor.redo)
        self._text.bind('<Control-space>', self._show_autocomplete)

        self._set_menu()