def populate_tree(self, node=""): if self.tree.set(node, "type") != 'directory': return path = self.tree.set(node, "fullpath") # path = self.project_path self.tree.delete(*self.tree.get_children(node)) #parent = self.tree.parent(node) special_dirs = [] #if parent else glob.glob('.') + glob.glob('..') for p in special_dirs + os.listdir(path): ptype = None p = os.path.join(path, p).replace('\\', '/') if os.path.isdir(p): ptype = "directory" elif os.path.isfile(p): ptype = "file" fname = os.path.split(p)[1] id_ = self.tree.insert(node, "end", text=fname, values=[p, ptype]) if ptype == 'directory': if fname not in ('.', '..'): self.images.append( tk.BitmapImage("assets/folder.xbm", **config.get_theme().bitmapimage)) self.tree.insert(id_, 0, text="dummy") self.tree.item(id_, text=fname, image=self.images[-1], tags=("base", )) elif ptype == 'file': extension = fname.split(".")[-1] if extension in ("png", "jpg", "image"): img = tk.BitmapImage("assets/imagefile.xbm", **config.get_theme().bitmapimage) elif extension in ("webm", "mp4", "avi", "movie"): img = tk.BitmapImage("assets/moviefile.xbm", **config.get_theme().bitmapimage) elif extension in ("mp3", "wav", "opus", "music"): img = tk.BitmapImage("assets/musicfile.xbm", **config.get_theme().bitmapimage) else: img = tk.BitmapImage("assets/textfile.xbm", **config.get_theme().bitmapimage) self.images.append(img) self.tree.item(id_, image=self.images[-1], tags=("base", ))
def __init__(self, *args, **kwargs): super(MainWindowView, self).__init__(*args, **kwargs) self.config(orient=tk.VERTICAL) self.config(**config.get_theme().ui["frame"]) self.texts = tk.PanedWindow(self) self.left_nb = CloseableNotebook(self, side="left") self.right_nb = CloseableNotebook(self, side="right") self.bottom_nb = ttk.Notebook(self) self.texts.add(self.left_nb) self.texts.add(self.right_nb) self.add(self.texts) self.add(self.bottom_nb) self.console_ui = ConsoleView(self.bottom_nb) self.bottom_nb.add(self.console_ui, text=tr("Console")) self.variable_viewer_ui = VariableViewerView(self.bottom_nb) self.bottom_nb.add(self.variable_viewer_ui, text=tr("Variable Viewer")) self.debugger_ui = DebuggerView(master=self.bottom_nb) self.bottom_nb.add(self.debugger_ui, text=tr("Debugger")) self.notes_view = NotesView(master=self, project=self.master.controller.project) self.bottom_nb.add(self.notes_view, text=tr("Notes")) self.left_tabs = [] self.right_tabs = []
def init_treeview(self): global config self.vsb = ttk.Scrollbar(orient="vertical") self.hsb = ttk.Scrollbar(orient="horizontal") style = ttk.Style() style.configure("Custom.Treeview", **config.get_theme().ui["treeview"]["base"]) style.configure("Custom.Treeview.Heading", **config.get_theme().ui["treeview"]["heading"], relief='flat') style.element_create("Custom.Treeheading.border", "from", "default") style.layout("Custom.Treeview.Heading", [ ("Custom.Treeheading.cell", {'sticky': 'nswe'}), ("Custom.Treeheading.border", {'sticky': 'nswe', 'children': [ ("Custom.Treeheading.padding", {'sticky': 'nswe', 'children': [ ("Custom.Treeheading.image", {'side': 'right', 'sticky': ''}), ("Custom.Treeheading.text", {'sticky': 'we'}) ]}) ]}), ]) style.layout("Custom.Treeview", [('Custom.Treeview.treearea', {'sticky': 'nswe'})]) style.map("Custom.Treeview.Heading", relief=[('active', 'groove'), ('pressed', 'sunken')]) self.tree = ttk.Treeview(self, columns=("fullpath", "type", "size"), displaycolumns=(), height=config.wm_height // 20, selectmode="browse", yscrollcommand=lambda f, l: autoscroll(self.vsb, f, l), xscrollcommand=lambda f, l: autoscroll(self.hsb, f, l), style='Custom.Treeview', ) self.tree.heading("#0", text="Directory Structure", anchor='w') self.tree.heading("size", text="File Size", anchor='w') self.tree.column("size", stretch=0, width=100) self.vsb['command'] = self.tree.yview self.hsb['command'] = self.tree.xview self.tree.grid(row=0, column=0) self.vsb.grid(row=0, column=1, sticky="ns") self.hsb.grid(row=1, column=0, sticky="ns") self.tree.bind('<<TreeviewOpen>>', self.update_tree) self.tree.bind('<Double-Button-1>', self.on_double_click) self.images = {} self.tree.tag_configure("base", **config.get_theme().ui["treeview"]["base"])
def __init__(self, master=None, file_=None): super(EditorFrame, self).__init__(master) self.master = master self.window_side = file_.window_side self.file = file_ self.text = CustomText(self) self.vsb = tk.Scrollbar(self, orient="vertical", command=self.text.yview) self.hsb = tk.Scrollbar(self, orient="horizontal", command=self.text.xview) self.text.configure(yscrollcommand=self.vsb.set, xscrollcommand=self.hsb.set, wrap=tk.NONE, undo=True) self.linenumbers = TextLineNumbers(self, width=30) self.linenumbers.attach(self.text) if self.file is not None: self.file.widget = self.text self.parse_blocks() self.linenumbers.redraw() self.vsb.pack(side="right", fill="y") self.hsb.pack(side="bottom", fill="x") self.linenumbers.pack(side="left", fill="y") self.text.pack(side="right", fill="both", expand=True) self.text.bind("<<Change>>", self._on_change) self.text.bind("<Configure>", self._on_change) self.text.bind("<Tab>", self._tab_key_pressed) self.text.bind("<Shift-Tab>", self._shift_tab_key_pressed) self.text.bind("<Key-space>", lambda event: self.on_key_whitespace(self.text, ' ')) self.text.bind("<BackSpace>", self._on_backspace_pressed) self.text.bind("<Return>", self._on_return_key_pressed) self.text.bind( "<FocusIn>", lambda event: self.master.master.controller. set_last_entered_side(self.window_side)) self.text.mark_set("highlight_start", "1.0") self.text.mark_set("highlight_end", "1.0") self.text.tag_configure("hidden", elide=True) self.theme = config.get_theme() self.showinvis = config.show_whitespace_characters self.init_theme() self.loop()
def __init__(self, master=None): super().__init__(master) self.master = master self.master.protocol("WM_DELETE_WINDOW", self.quit) self.controller = Controller(self) self.__setup_variables() self.__setup_menu() self.__setup_ui() self.__setup_binds() self.config(**config.get_theme().ui["frame"]) self.loop() self.slowloop() return
def __init__(self, master=None, project=None, **kwargs): super().__init__(master, **kwargs) self.text = CustomText(self, **config.get_theme().ui["text"]) self.close_btn = tk.Button( self, command=self.on_close, image=tk.BitmapImage("assets/button-close.xbm")) self.project = project w = config.wm_width - config.side_notebook_width - config.scrollbar_width font = tkfont.Font(font=self.text["font"]) self.text.bind('<<Change>>', self.on_change) self.vsb = tk.Scrollbar(self, orient="vertical", command=self.text.yview) self.text.configure(yscrollcommand=self.vsb.set, wrap=tk.NONE, undo=True, width=w // font.measure(" "), height=10) self.text.grid(row=0, column=0, columnspan=49) self.vsb.grid(row=0, column=50, sticky="ns")
def __init__(self, master=None): super().__init__(master) w = config.wm_width - config.side_notebook_width - config.scrollbar_width self.text = tk.Text(self, height=10) self.vsb = tk.Scrollbar(self, orient="vertical", command=self.text.yview) font = tkfont.Font(font=self.text["font"]) self.text.config(width=w // font.measure(" "), yscrollcommand=self.vsb.set) self.text.bind("<Key>", self.on_key_press) self.debugger = RenpyDebugger("127.0.0.1", DEBUGGER_PORT) self.execution_paused_state = None self.execution_threads = [] self.executed_thread = None self.executed_stack_frames = None self.executed_stack_frame = None self.showing_variables = None self.history = ConsoleHistory() self.debugger.set_connected_callback(self.on_connected) self.debugger.set_disconnected_callback(self.on_disconnected) self.debugger.set_client_error_callback(self.on_client_error) self.debugger.set_pause_callback(self.on_paused) self.text.grid(row=0, column=0, columnspan=49) self.vsb.grid(row=0, column=50, sticky="ns") self.text.config(**config.get_theme().ui["text"]) self.print(">>> ", end="") self.loop()
def __setup_menu(self): theme = config.get_theme() self.menubar = tk.Menu(self, **theme.ui["menu"]) self.master.config(menu=self.menubar) menufile = tk.Menu(self.menubar, **theme.ui["menu"]) self.menuthemes = tk.Menu(self.menubar, **theme.ui["menu"]) menutools = tk.Menu(self.menubar, **theme.ui["menu"]) menuedit = tk.Menu(self.menubar, **theme.ui["menu"]) menuedit_formatting = tk.Menu(menuedit, **theme.ui["menu"]) menuview = tk.Menu(self.menubar, **theme.ui["menu"]) self.menubar.add_cascade(label=tr("File"), menu=menufile) self.menubar.add_cascade(label=tr("Edit"), menu=menuedit) self.menubar.add_cascade(label=tr("Themes"), menu=self.menuthemes) self.menubar.add_cascade(label=tr("Tools"), menu=menutools) menufile.add_command(label=tr("New"), command=self.controller.menus.file_new) menufile.add_command(label=tr("Open"), command=self.controller.menus.file_open) menufile.add_command(label=tr("Save"), command=self.controller.menus.file_save) menufile.add_command(label=tr("Save As"), command=self.controller.menus.file_save_as) menufile.add_command(label=tr("Quit"), command=self.quit) menuedit.add_command(label=tr("Undo"), command=self.controller.menus.edit_undo) menuedit.add_command(label=tr("Redo"), command=self.controller.menus.edit_redo) menuedit.add_command(label=tr("Duplicate line/selection"), command=self.controller.menus.edit_duplicate) menuedit.add_command(label=tr("Comment/Uncomment"), command=self.controller.menus.edit_comment) menuedit.add_cascade(label=tr("Formatting"), menu=menuedit_formatting) menuedit_formatting.add_command( label=tr("To UPPERCASE"), command=self.controller.menus.edit_formatting_upper) menuedit_formatting.add_command( label=tr("To lowercase"), command=self.controller.menus.edit_formatting_lower) menuedit_formatting.add_command( label=tr("To Capitalized"), command=self.controller.menus.edit_formatting_capitalized) menuedit_formatting.add_command( label=tr("To iNVERT cASING"), command=self.controller.menus.edit_formatting_invert) menuedit_formatting.add_command( label=tr("To RAnDom CASinG"), command=self.controller.menus.edit_formatting_random) menuedit_formatting.add_command( label=tr("To SpOnGeBoB cAsInG"), command=self.controller.menus.edit_formatting_spongebob) for theme in self.controller.get_all_themes: self.menuthemes.add_radiobutton(label=theme, variable=self.current_theme) menutools.add_command( label=tr("Layeredimage Builder"), command=self.controller.menus.tools_open_layeredimage_builder) menutools.add_command( label=tr("Variable Viewer"), command=self.controller.menus.tools_open_variable_viewer) menutools.add_command( label=tr("Screen Builder"), command=self.controller.menus.tools_open_screen_builder) menutools.add_command( label=tr("Add Snippet"), command=self.controller.menus.tools_open_add_snippet) menutools.add_command(label=tr("Options"), command=self.controller.menus.tools_open_options)