コード例 #1
0
    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", ))
コード例 #2
0
ファイル: main.py プロジェクト: U-Mage/renpy-text-editor
    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 = []
コード例 #3
0
    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"])
コード例 #4
0
    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()
コード例 #5
0
ファイル: main.py プロジェクト: U-Mage/renpy-text-editor
 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
コード例 #6
0
 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")
コード例 #7
0
ファイル: debugger.py プロジェクト: U-Mage/renpy-text-editor
    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()
コード例 #8
0
ファイル: main.py プロジェクト: U-Mage/renpy-text-editor
    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)