def __init__(self, master, click_handler): super(BreadcrumbsBar, self).__init__( master, borderwidth=0, relief="flat", height=1, font="TkDefaultFont", wrap="word", padx=6, pady=5, insertwidth=0, highlightthickness=0, background=lookup_style_option("ViewToolbar.TFrame", "background"), read_only=True, ) self._changing = False self.bind("<Configure>", self.update_height, True) self.tag_configure("_link", foreground=lookup_style_option("Url.TLabel", "foreground")) self.tag_configure("_underline", underline=True) self.tag_bind("_link", "<1>", self._link_click) self.tag_bind("_link", "<Enter>", self._link_enter) self.tag_bind("_link", "<Leave>", self._link_leave) self.tag_bind("_link", "<Motion>", self._link_motion) self._click_handler = click_handler
def __init__(self, master=None): tk.PanedWindow.__init__(self, master, orient="vertical", borderwidth=0) self.configure(sashwidth=lookup_style_option("Sash", "sashthickness", 4)) self.configure(background=lookup_style_option("TPanedWindow", "background")) self.local_files = MainFileBrowser(self) self.add(self.local_files) self.remote_files = RemoteFileBrowser(self) self.add(self.remote_files)
def __init__(self): super().__init__(get_workbench(), background=lookup_style_option("TFrame", "background")) ui_utils.set_zoomed(self, True) self.main_pw = ReplayerPanedWindow(self, orient=tk.HORIZONTAL, sashwidth=10) self.center_pw = ReplayerPanedWindow(self.main_pw, orient=tk.VERTICAL, sashwidth=10) self.right_frame = ttk.Frame(self.main_pw) self.right_pw = ReplayerPanedWindow(self.right_frame, orient=tk.VERTICAL, sashwidth=10) self.editor_notebook = ReplayerEditorNotebook(self.center_pw) shell_book = ttk.Notebook(self.main_pw) self.shell = ShellFrame(shell_book) self.details_frame = EventDetailsFrame(self.right_pw) self.log_frame = LogFrame( self.right_pw, self.editor_notebook, self.shell, self.details_frame ) self.browser = ReplayerFileBrowser(self.main_pw, self.log_frame) self.control_frame = ControlFrame(self.right_frame) self.main_pw.grid(padx=10, pady=10, sticky=tk.NSEW) self.main_pw.add(self.browser, width=200) self.main_pw.add(self.center_pw, width=1000) self.main_pw.add(self.right_frame, width=200) self.center_pw.add(self.editor_notebook, height=700) self.center_pw.add(shell_book, height=300) shell_book.add(self.shell, text="Shell") self.right_pw.grid(sticky=tk.NSEW) self.control_frame.grid(sticky=tk.NSEW) self.right_pw.add(self.log_frame, height=600) self.right_pw.add(self.details_frame, height=200) self.right_frame.columnconfigure(0, weight=1) self.right_frame.rowconfigure(0, weight=1) self.columnconfigure(0, weight=1) self.rowconfigure(0, weight=1)
def __init__(self, master=None): tk.PanedWindow.__init__(self, master, orient="vertical", borderwidth=0) self.remote_added = False self.configure(sashwidth=lookup_style_option("Sash", "sashthickness", 4)) self.configure(background=lookup_style_option("TPanedWindow", "background")) get_workbench().bind("BackendRestart", self.on_backend_restart, True) get_workbench().bind("WorkbenchClose", self.on_workbench_close, True) self.local_files = ActiveLocalFileBrowser(self) self.local_files.check_update_focus() self.add(self.local_files, minsize=minsize) self.remote_files = ActiveRemoteFileBrowser(self) self.reset_remote()
def __init__(self, master): MemoryFrame.__init__(self, master, ("name", "id", "value")) self.tree.column("name", width=120, anchor=tk.W, stretch=False) self.tree.column("id", width=450, anchor=tk.W, stretch=True) self.tree.column("value", width=450, anchor=tk.W, stretch=True) self.tree.heading("name", text="Name", anchor=tk.W) self.tree.heading("id", text="Value ID", anchor=tk.W) self.tree.heading("value", text="Value", anchor=tk.W) get_workbench().bind("ShowView", self._update_memory_model, True) get_workbench().bind("HideView", self._update_memory_model, True) self._update_memory_model() self.tree.tag_configure( "group_title", font="BoldTkDefaultFont", background=ui_utils.lookup_style_option(".", "background"), )
def init_path_bar(self): self.path_bar.set_read_only(True) self.path_bar.bind("<Configure>", self.resize_path_bar, True) self.path_bar.tag_configure("dir", foreground=lookup_style_option( "Url.TLabel", "foreground")) self.path_bar.tag_configure("underline", underline=True) def get_dir_range(event): mouse_index = self.path_bar.index("@%d,%d" % (event.x, event.y)) return self.path_bar.tag_prevrange("dir", mouse_index + "+1c") def dir_tag_motion(event): self.path_bar.tag_remove("underline", "1.0", "end") dir_range = get_dir_range(event) if dir_range: range_start, range_end = dir_range self.path_bar.tag_add("underline", range_start, range_end) def dir_tag_enter(event): self.path_bar.config(cursor="hand2") def dir_tag_leave(event): self.path_bar.config(cursor="") self.path_bar.tag_remove("underline", "1.0", "end") def dir_tag_click(event): mouse_index = self.path_bar.index("@%d,%d" % (event.x, event.y)) print(mouse_index) lineno = int(float(mouse_index)) if lineno == 1: print("select root") else: assert lineno == 2 dir_range = get_dir_range(event) if dir_range: _, end_index = dir_range print("select", self.path_bar.get("2.0", end_index)) self.path_bar.tag_bind("dir", "<1>", dir_tag_click) self.path_bar.tag_bind("dir", "<Enter>", dir_tag_enter) self.path_bar.tag_bind("dir", "<Leave>", dir_tag_leave) self.path_bar.tag_bind("dir", "<Motion>", dir_tag_motion)
def init_header(self, row, column): header_frame = ttk.Frame(self, style="ViewToolbar.TFrame") header_frame.grid(row=row, column=column, sticky="nsew") header_frame.columnconfigure(0, weight=1) self.path_bar = tktextext.TweakableText( header_frame, borderwidth=0, relief="flat", height=1, font="TkDefaultFont", wrap="word", padx=6, pady=5, insertwidth=0, highlightthickness=0, background=lookup_style_option("ViewToolbar.TFrame", "background"), ) self.path_bar.grid(row=0, column=0, sticky="nsew") self.path_bar.set_read_only(True) self.path_bar.bind("<Configure>", self.resize_path_bar, True) self.path_bar.tag_configure("dir", foreground=lookup_style_option( "Url.TLabel", "foreground")) self.path_bar.tag_configure("underline", underline=True) def get_dir_range(event): mouse_index = self.path_bar.index("@%d,%d" % (event.x, event.y)) return self.path_bar.tag_prevrange("dir", mouse_index + "+1c") def dir_tag_motion(event): self.path_bar.tag_remove("underline", "1.0", "end") dir_range = get_dir_range(event) if dir_range: range_start, range_end = dir_range self.path_bar.tag_add("underline", range_start, range_end) def dir_tag_enter(event): self.path_bar.config(cursor="hand2") def dir_tag_leave(event): self.path_bar.config(cursor="") self.path_bar.tag_remove("underline", "1.0", "end") def dir_tag_click(event): mouse_index = self.path_bar.index("@%d,%d" % (event.x, event.y)) lineno = int(float(mouse_index)) if lineno == 1: self.request_focus_into("") else: assert lineno == 2 dir_range = get_dir_range(event) if dir_range: _, end_index = dir_range path = self.path_bar.get("2.0", end_index) if path.endswith(":"): path += "\\" self.request_focus_into(path) self.path_bar.tag_bind("dir", "<1>", dir_tag_click) self.path_bar.tag_bind("dir", "<Enter>", dir_tag_enter) self.path_bar.tag_bind("dir", "<Leave>", dir_tag_leave) self.path_bar.tag_bind("dir", "<Motion>", dir_tag_motion) # self.menu_button = ttk.Button(header_frame, text="≡ ", style="ViewToolbar.Toolbutton") self.menu_button = ttk.Button(header_frame, text=" ≡ ", style="ViewToolbar.Toolbutton", command=self.post_button_menu) # self.menu_button.grid(row=0, column=1, sticky="ne") self.menu_button.place(anchor="ne", rely=0, relx=1)
def _create_widgets(self, parent): header_frame = ttk.Frame(parent) header_frame.grid(row=1, column=0, sticky="nsew", padx=15, pady=(15, 0)) header_frame.columnconfigure(0, weight=1) header_frame.rowconfigure(1, weight=1) name_font = tk.font.nametofont("TkDefaultFont").copy() name_font.configure(size=16) self.search_box = ttk.Entry(header_frame) self.search_box.grid(row=1, column=0, sticky="nsew") self.search_box.bind("<Return>", self._on_search, False) self.search_button = ttk.Button( header_frame, text=_("Find package from PyPI"), command=self._on_search, width=25, ) self.search_button.grid(row=1, column=1, sticky="nse", padx=(10, 0)) main_pw = tk.PanedWindow( parent, orient=tk.HORIZONTAL, background=lookup_style_option("TPanedWindow", "background"), sashwidth=15, ) main_pw.grid(row=2, column=0, sticky="nsew", padx=15, pady=15) parent.rowconfigure(2, weight=1) parent.columnconfigure(0, weight=1) listframe = ttk.Frame(main_pw, relief="flat", borderwidth=1) listframe.rowconfigure(0, weight=1) listframe.columnconfigure(0, weight=1) self.listbox = ui_utils.ThemedListbox( listframe, activestyle="dotbox", width=20, height=18, selectborderwidth=0, relief="flat", # highlightthickness=4, # highlightbackground="red", # highlightcolor="green", borderwidth=0, ) self.listbox.insert("end", " <INSTALL>") self.listbox.bind("<<ListboxSelect>>", self._on_listbox_select, True) self.listbox.grid(row=0, column=0, sticky="nsew") list_scrollbar = AutoScrollbar(listframe, orient=tk.VERTICAL, style=scrollbar_style("Vertical")) list_scrollbar.grid(row=0, column=1, sticky="ns") list_scrollbar["command"] = self.listbox.yview self.listbox["yscrollcommand"] = list_scrollbar.set info_frame = ttk.Frame(main_pw) info_frame.columnconfigure(0, weight=1) info_frame.rowconfigure(1, weight=1) main_pw.add(listframe) main_pw.add(info_frame) self.name_label = ttk.Label(info_frame, text="", font=name_font) self.name_label.grid(row=0, column=0, sticky="w", padx=5) info_text_frame = tktextext.TextFrame( info_frame, read_only=True, horizontal_scrollbar=False, background=lookup_style_option("TFrame", "background"), vertical_scrollbar_class=AutoScrollbar, vertical_scrollbar_style=scrollbar_style("Vertical"), horizontal_scrollbar_style=scrollbar_style("Horizontal"), width=60, height=10, ) info_text_frame.configure(borderwidth=0) info_text_frame.grid(row=1, column=0, columnspan=4, sticky="nsew", pady=(0, 10)) self.info_text = info_text_frame.text link_color = lookup_style_option("Url.TLabel", "foreground", "red") self.info_text.tag_configure("url", foreground=link_color, underline=True) self.info_text.tag_bind("url", "<ButtonRelease-1>", self._handle_url_click) self.info_text.tag_bind( "url", "<Enter>", lambda e: self.info_text.config(cursor="hand2")) self.info_text.tag_bind("url", "<Leave>", lambda e: self.info_text.config(cursor="")) self.info_text.tag_configure("install_file", foreground=link_color, underline=True) self.info_text.tag_bind("install_file", "<ButtonRelease-1>", self._handle_install_file_click) self.info_text.tag_bind( "install_file", "<Enter>", lambda e: self.info_text.config(cursor="hand2")) self.info_text.tag_bind("install_file", "<Leave>", lambda e: self.info_text.config(cursor="")) default_font = tk.font.nametofont("TkDefaultFont") self.info_text.configure(font=default_font, wrap="word") bold_font = default_font.copy() # need to explicitly copy size, because Tk 8.6 on certain Ubuntus use bigger font in copies bold_font.configure(weight="bold", size=default_font.cget("size")) self.info_text.tag_configure("caption", font=bold_font) self.info_text.tag_configure("bold", font=bold_font) self.command_frame = ttk.Frame(info_frame) self.command_frame.grid(row=2, column=0, sticky="w") self.install_button = ttk.Button(self.command_frame, text=_(" Upgrade "), command=self._on_click_install) self.install_button.grid(row=0, column=0, sticky="w", padx=0) self.uninstall_button = ttk.Button( self.command_frame, text=_("Uninstall"), command=lambda: self._perform_action("uninstall"), ) self.uninstall_button.grid(row=0, column=1, sticky="w", padx=(5, 0)) self.advanced_button = ttk.Button( self.command_frame, text="...", width=3, command=lambda: self._perform_action("advanced"), ) self.advanced_button.grid(row=0, column=2, sticky="w", padx=(5, 0)) self.close_button = ttk.Button(info_frame, text=_("Close"), command=self._on_close) self.close_button.grid(row=2, column=3, sticky="e")
def __init__(self, master=None, cnf={}, **kw): cnf = cnf.copy() cnf.update(kw) cnf["background"] = lookup_style_option("TFrame", "background") super().__init__(master=master, cnf=cnf)
def __init__(self, master, show_hidden_files=False, last_folder_setting_name=None, breadcrumbs_pady=(5, 7)): ttk.Frame.__init__(self, master, borderwidth=0, relief="flat") self.vert_scrollbar = ttk.Scrollbar(self, orient=tk.VERTICAL, style=scrollbar_style("Vertical")) self.vert_scrollbar.grid(row=0, column=1, sticky=tk.NSEW, rowspan=3) tktextext.fixwordbreaks(tk._default_root) self.building_breadcrumbs = False self.path_bar = tktextext.TweakableText(self, borderwidth=0, relief="flat", height=1, font="TkDefaultFont", wrap="word", padx=6, pady=5, insertwidth=0, background=lookup_style_option( "ViewToolbar.TFrame", "background")) self.init_path_bar() self.path_bar.grid(row=0, sticky="nsew") spacer = ttk.Frame(self, height=1) spacer.grid(row=1, sticky="nsew") self.tree = ttk.Treeview( self, columns=["#0", "kind", "path"], displaycolumns=(0, ), yscrollcommand=self.vert_scrollbar.set, ) self.tree["show"] = "headings" self.tree.grid(row=2, column=0, sticky=tk.NSEW) self.vert_scrollbar["command"] = self.tree.yview self.columnconfigure(0, weight=1) self.rowconfigure(2, weight=1) self.show_hidden_files = show_hidden_files self.tree["show"] = ("tree", ) wb = get_workbench() self.folder_icon = wb.get_image("folder") self.python_file_icon = wb.get_image("python-file") self.text_file_icon = wb.get_image("text-file") self.generic_file_icon = wb.get_image("generic-file") self.hard_drive_icon = wb.get_image("hard-drive") self.tree.column("#0", width=500, anchor=tk.W) # set-up root node self.tree.set("", "kind", "root") self.tree.set("", "path", "") self.refresh_tree() self.tree.bind("<<TreeviewOpen>>", self.on_open_node) self._last_folder_setting_name = last_folder_setting_name self.open_initial_folder()