def create_about_window(self): self.about_menu = Toplevel(self.root, takefocus=True) self.about_menu.tk.call('wm', 'iconphoto', self.about_menu._w, self.icon) photo = ImageTk.PhotoImage(file=asset_path(["images", "logo.png"])) about_label = Label(self.about_menu, image=photo) about_label.photo = photo about_label.pack(side=LEFT, expand=1) about_right_frame = ttk.Frame(self.about_menu) Label(about_right_frame, text=coilsnake_about(), font=("Courier", 11), anchor="w", justify="left", borderwidth=5, relief=GROOVE).pack(fill=BOTH, expand=1, side=TOP) about_right_frame.pack(side=LEFT, fill=BOTH, expand=1) self.about_menu.resizable(False, False) self.about_menu.title("About CoilSnake {}".format(information.VERSION)) self.about_menu.withdraw() self.about_menu.transient(self.root) self.about_menu.protocol('WM_DELETE_WINDOW', self.about_menu.withdraw)
def create_gui(self): self.root = Tk() self.root.wm_title("CoilSnake " + information.VERSION) self.icon = ImageTk.PhotoImage(file=asset_path(["images", "icon.png"])) self.root.tk.call("wm", "iconphoto", self.root._w, self.icon) self.create_menubar() self.notebook = ttk.Notebook(self.root) decompile_frame = self.create_decompile_frame(self.notebook) self.notebook.add(decompile_frame, text="Decompile") compile_frame = self.create_compile_frame(self.notebook) self.notebook.add(compile_frame, text="Compile") upgrade_frame = self.create_upgrade_frame(self.notebook) self.notebook.add(upgrade_frame, text="Upgrade") decompile_script_frame = self.create_decompile_script_frame(self.notebook) self.notebook.add(decompile_script_frame, text="Decompile Script") self.notebook.pack(fill=BOTH, expand=1) self.notebook.select(self.preferences.get_default_tab()) self.progress_bar = CoilSnakeGuiProgressBar(self.root, orient=HORIZONTAL, mode="determinate") self.progress_bar.pack(fill=BOTH, expand=1) console_frame = Frame(self.root) scrollbar = Scrollbar(console_frame) scrollbar.pack(side=RIGHT, fill=Y) self.console = ThreadSafeConsole(console_frame, width=80, height=8) self.console.pack(fill=X) scrollbar.config(command=self.console.yview) self.console.config(yscrollcommand=scrollbar.set) console_frame.pack(fill=X, expand=1) def selectall_text(event): event.widget.tag_add("sel", "1.0", "end") self.root.bind_class("Text", "<Control-a>", selectall_text) def selectall_entry(event): event.widget.selection_range(0, END) self.root.bind_class("Entry", "<Control-a>", selectall_entry) def tab_changed(event): # Do this so some random element in the tab isn't selected upon tab change self.notebook.focus() self.notebook.bind("<<NotebookTabChanged>>", tab_changed) self.console_stream = self.console setup_logging(quiet=False, verbose=False, stream=self.console_stream) self.refresh_debug_logging()
def create_about_window(self): self.about_menu = Toplevel(self.root, takefocus=True) if platform.system() == "Windows": self.about_menu.tk.call("wm", "iconbitmap", self.about_menu._w, asset_path(["images", "CoilSnake.ico"])) elif platform.system() != "Darwin": self.about_menu.wm_iconphoto(*self.iconphoto_params) photo_header = ImageTk.PhotoImage( file=asset_path(["images", "CS4_logo.png"])) about_header = Label(self.about_menu, image=photo_header, anchor=CENTER) about_header.photo = photo_header about_header.pack(side=TOP, fill=BOTH, expand=1) photo = ImageTk.PhotoImage(file=asset_path(["images", "logo.png"])) about_label = Label(self.about_menu, image=photo, justify=RIGHT) about_label.photo = photo about_label.pack(side=LEFT, fill=BOTH, expand=1) about_right_frame = tkinter.ttk.Frame(self.about_menu) Label(about_right_frame, text=coilsnake_about(), font=("Courier", 10), anchor=CENTER, justify=LEFT).pack(fill=BOTH, expand=1, side=TOP) about_right_frame.pack(side=LEFT, fill=BOTH, expand=1) self.about_menu.resizable(False, False) self.about_menu.title("About CoilSnake {}".format(information.VERSION)) self.about_menu.withdraw() self.about_menu.transient(self.root) self.about_menu.protocol('WM_DELETE_WINDOW', self.about_menu.withdraw)
def open_ebprojedit(self, entry=None): if entry: project_path = entry.get() else: project_path = None java_exe = self.get_java_exe() if not java_exe: tkMessageBox.showerror(parent=self.root, title="Error", message="""CoilSnake could not find Java. Please configure Java in the Settings menu.""") return command = [java_exe, "-jar", asset_path(["bin", "EbProjEdit.jar"])] if project_path: command.append(os.path.join(project_path, PROJECT_FILENAME)) Popen(command)
def create_gui(self): self.root = Tk() self.root.wm_title("CoilSnake " + information.VERSION) self.icon = ImageTk.PhotoImage(file=asset_path(["images", "icon.png"])) self.root.tk.call('wm', 'iconphoto', self.root._w, self.icon) self.create_menubar() self.notebook = ttk.Notebook(self.root) decompile_frame = self.create_decompile_frame(self.notebook) self.notebook.add(decompile_frame, text="Decompile") compile_frame = self.create_compile_frame(self.notebook) self.notebook.add(compile_frame, text="Compile") upgrade_frame = self.create_upgrade_frame(self.notebook) self.notebook.add(upgrade_frame, text="Upgrade") decompile_script_frame = self.create_decompile_script_frame( self.notebook) self.notebook.add(decompile_script_frame, text="Decompile Script") patcher_patch_frame = self.create_apply_patch_frame(self.notebook) self.notebook.add(patcher_patch_frame, text="Apply Patch") #patcher_create_frame = self.create_create_patch_frame(self.notebook) #self.notebook.add(patcher_create_frame, text="Create Patch") self.notebook.pack(fill=BOTH, expand=1) self.notebook.select(self.preferences.get_default_tab()) self.progress_bar = CoilSnakeGuiProgressBar(self.root, orient=HORIZONTAL, mode='determinate') self.progress_bar.pack(fill=BOTH, expand=1) console_frame = Frame(self.root) scrollbar = Scrollbar(console_frame) scrollbar.pack(side=RIGHT, fill=Y) self.console = ThreadSafeConsole(console_frame, width=80, height=8) self.console.pack(fill=X) scrollbar.config(command=self.console.yview) self.console.config(yscrollcommand=scrollbar.set) console_frame.pack(fill=X, expand=1) def selectall_text(event): event.widget.tag_add("sel", "1.0", "end") self.root.bind_class("Text", "<Control-a>", selectall_text) def selectall_entry(event): event.widget.selection_range(0, END) self.root.bind_class("Entry", "<Control-a>", selectall_entry) def tab_changed(event): # Do this so some random element in the tab isn't selected upon tab change self.notebook.focus() self.notebook.bind("<<NotebookTabChanged>>", tab_changed) self.console_stream = self.console setup_logging(quiet=False, verbose=False, stream=self.console_stream) self.refresh_debug_logging()
def create_gui(self): self.root = Tk() self.root.wm_title("CoilSnake " + information.VERSION) if platform.system() == "Windows": self.root.tk.call("wm", "iconbitmap", self.root._w, asset_path(["images", "CoilSnake.ico"])) elif platform.system() == "Darwin": # Workaround - Raise the window from Cocoa import NSRunningApplication, NSApplicationActivateIgnoringOtherApps app = NSRunningApplication.runningApplicationWithProcessIdentifier_( os.getpid()) app.activateWithOptions_(NSApplicationActivateIgnoringOtherApps) else: self.iconphoto_params = ( True, ImageTk.PhotoImage(file=asset_path(["images", "16.png"])), ImageTk.PhotoImage(file=asset_path(["images", "22.png"])), ImageTk.PhotoImage(file=asset_path(["images", "24.png"])), ImageTk.PhotoImage(file=asset_path(["images", "32.png"])), ImageTk.PhotoImage(file=asset_path(["images", "48.png"])), ImageTk.PhotoImage(file=asset_path(["images", "64.png"])), ImageTk.PhotoImage(file=asset_path(["images", "128.png"])), ImageTk.PhotoImage(file=asset_path(["images", "256.png"]))) self.root.wm_iconphoto(*self.iconphoto_params) self.create_menubar() self.notebook = tkinter.ttk.Notebook(self.root) decompile_frame = self.create_decompile_frame(self.notebook) self.notebook.add(decompile_frame, text="Decompile") compile_frame = self.create_compile_frame(self.notebook) self.notebook.add(compile_frame, text="Compile") upgrade_frame = self.create_upgrade_frame(self.notebook) self.notebook.add(upgrade_frame, text="Upgrade") decompile_script_frame = self.create_decompile_script_frame( self.notebook) self.notebook.add(decompile_script_frame, text="Decompile Script") patcher_patch_frame = self.create_apply_patch_frame(self.notebook) self.notebook.add(patcher_patch_frame, text="Apply Patch") patcher_create_frame = self.create_create_patch_frame(self.notebook) self.notebook.add(patcher_create_frame, text="Create Patch") self.notebook.pack(fill=X) self.notebook.select(self.preferences.get_default_tab()) self.progress_bar = CoilSnakeGuiProgressBar(self.root, orient=HORIZONTAL, mode='determinate') self.progress_bar.pack(fill=X) console_frame = Frame(self.root) scrollbar = Scrollbar(console_frame) scrollbar.pack(side=RIGHT, fill=Y) self.console = ThreadSafeConsole(console_frame, width=80, height=8) self.console.pack(fill=BOTH, expand=1) scrollbar.config(command=self.console.yview) self.console.config(yscrollcommand=scrollbar.set) console_frame.pack(fill=BOTH, expand=1) def selectall_text(event): event.widget.tag_add("sel", "1.0", "end") self.root.bind_class("Text", "<Control-a>", selectall_text) def selectall_entry(event): event.widget.selection_range(0, END) self.root.bind_class("Entry", "<Control-a>", selectall_entry) def tab_changed(event): # Do this so some random element in the tab isn't selected upon tab change self.notebook.focus() ## Recalculate the height of the notebook depending on the contents of the new tab # Ensure the dimensions of the widgets are up to date self.notebook.update_idletasks() # Get the width and height of the window, so we can reset it later width = self.root.winfo_width() height = self.root.winfo_height() # Set the notebook height to the selected tab's requested height tab_window_name = self.notebook.select() tab = self.notebook.nametowidget(tab_window_name) tab_height = tab.winfo_reqheight() self.notebook.configure(height=tab_height) # Keeps the window from changing size self.root.geometry("{}x{}".format(width, height)) self.notebook.bind("<<NotebookTabChanged>>", tab_changed) self.console_stream = self.console setup_logging(quiet=False, verbose=False, stream=self.console_stream) self.refresh_debug_logging() self.load_geometry() self.root.protocol("WM_DELETE_WINDOW", self.save_geometry_and_close)
def create_gui(self): self.root = Tk() self.root.wm_title("CoilSnake " + information.VERSION) self.icon = ImageTk.PhotoImage(file=asset_path(["images", "icon.png"])) self.root.tk.call('wm', 'iconphoto', self.root._w, self.icon) self.create_menubar() self.notebook = tkinter.ttk.Notebook(self.root) decompile_frame = self.create_decompile_frame(self.notebook) self.notebook.add(decompile_frame, text="Decompile") compile_frame = self.create_compile_frame(self.notebook) self.notebook.add(compile_frame, text="Compile") upgrade_frame = self.create_upgrade_frame(self.notebook) self.notebook.add(upgrade_frame, text="Upgrade") decompile_script_frame = self.create_decompile_script_frame(self.notebook) self.notebook.add(decompile_script_frame, text="Decompile Script") patcher_patch_frame = self.create_apply_patch_frame(self.notebook) self.notebook.add(patcher_patch_frame, text="Apply Patch") #patcher_create_frame = self.create_create_patch_frame(self.notebook) #self.notebook.add(patcher_create_frame, text="Create Patch") self.notebook.pack(fill=X) self.notebook.select(self.preferences.get_default_tab()) self.progress_bar = CoilSnakeGuiProgressBar(self.root, orient=HORIZONTAL, mode='determinate') self.progress_bar.pack(fill=X) console_frame = Frame(self.root) scrollbar = Scrollbar(console_frame) scrollbar.pack(side=RIGHT, fill=Y) self.console = ThreadSafeConsole(console_frame, width=80, height=8) self.console.pack(fill=BOTH, expand=1) scrollbar.config(command=self.console.yview) self.console.config(yscrollcommand=scrollbar.set) console_frame.pack(fill=BOTH, expand=1) def selectall_text(event): event.widget.tag_add("sel", "1.0", "end") self.root.bind_class("Text", "<Control-a>", selectall_text) def selectall_entry(event): event.widget.selection_range(0, END) self.root.bind_class("Entry", "<Control-a>", selectall_entry) def tab_changed(event): # Do this so some random element in the tab isn't selected upon tab change self.notebook.focus() ## Recalculate the height of the notebook depending on the contents of the new tab # Ensure the dimensions of the widgets are up to date self.notebook.update_idletasks() # Get the geometry of the window, so we can reset it later window_geometry = self.root.winfo_geometry() # Set the notebook height to the selected tab's requested height tab_window_name = self.notebook.select() tab = self.notebook.nametowidget(tab_window_name) tab_height = tab.winfo_reqheight() self.notebook.configure(height=tab_height) # Keeps the window from changing size self.root.geometry(window_geometry) self.notebook.bind("<<NotebookTabChanged>>", tab_changed) self.console_stream = self.console setup_logging(quiet=False, verbose=False, stream=self.console_stream) self.refresh_debug_logging()
def create_gui(self): self.root = Tk() self.root.wm_title("CoilSnake " + information.VERSION) self.icon = ImageTk.PhotoImage(file=asset_path(["images", "icon.png"])) self.root.tk.call('wm', 'iconphoto', self.root._w, self.icon) self.create_menubar() self.notebook = tkinter.ttk.Notebook(self.root) decompile_frame = self.create_decompile_frame(self.notebook) self.notebook.add(decompile_frame, text="Decompile") compile_frame = self.create_compile_frame(self.notebook) self.notebook.add(compile_frame, text="Compile") upgrade_frame = self.create_upgrade_frame(self.notebook) self.notebook.add(upgrade_frame, text="Upgrade") decompile_script_frame = self.create_decompile_script_frame(self.notebook) self.notebook.add(decompile_script_frame, text="Decompile Script") patcher_patch_frame = self.create_apply_patch_frame(self.notebook) self.notebook.add(patcher_patch_frame, text="Apply Patch") patcher_create_frame = self.create_create_patch_frame(self.notebook) self.notebook.add(patcher_create_frame, text="Create Patch") self.notebook.pack(fill=X) self.notebook.select(self.preferences.get_default_tab()) self.progress_bar = CoilSnakeGuiProgressBar(self.root, orient=HORIZONTAL, mode='determinate') self.progress_bar.pack(fill=X) console_frame = Frame(self.root) scrollbar = Scrollbar(console_frame) scrollbar.pack(side=RIGHT, fill=Y) self.console = ThreadSafeConsole(console_frame, width=80, height=8) self.console.pack(fill=BOTH, expand=1) scrollbar.config(command=self.console.yview) self.console.config(yscrollcommand=scrollbar.set) console_frame.pack(fill=BOTH, expand=1) def selectall_text(event): event.widget.tag_add("sel", "1.0", "end") self.root.bind_class("Text", "<Control-a>", selectall_text) def selectall_entry(event): event.widget.selection_range(0, END) self.root.bind_class("Entry", "<Control-a>", selectall_entry) def tab_changed(event): # Do this so some random element in the tab isn't selected upon tab change self.notebook.focus() ## Recalculate the height of the notebook depending on the contents of the new tab # Ensure the dimensions of the widgets are up to date self.notebook.update_idletasks() # Get the geometry of the window, so we can reset it later window_geometry = self.root.winfo_geometry() # Set the notebook height to the selected tab's requested height tab_window_name = self.notebook.select() tab = self.notebook.nametowidget(tab_window_name) tab_height = tab.winfo_reqheight() self.notebook.configure(height=tab_height) # Keeps the window from changing size self.root.geometry(window_geometry) self.notebook.bind("<<NotebookTabChanged>>", tab_changed) self.console_stream = self.console setup_logging(quiet=False, verbose=False, stream=self.console_stream) self.refresh_debug_logging()