Minor compatibility update

This commit is contained in:
Miroslav Stampar 2019-12-05 22:45:57 +01:00
parent f4bfa7a5ae
commit 424d4ee968

View File

@ -27,7 +27,6 @@ from lib.core.settings import GIT_PAGE
from lib.core.settings import SITE from lib.core.settings import SITE
from lib.core.settings import VERSION_STRING from lib.core.settings import VERSION_STRING
from lib.core.settings import WIKI_PAGE from lib.core.settings import WIKI_PAGE
from thirdparty.six.moves import tkinter_messagebox as _tkinter_messagebox
from thirdparty.six.moves import queue as _queue from thirdparty.six.moves import queue as _queue
line = "" line = ""
@ -36,19 +35,20 @@ queue = None
def runGui(parser): def runGui(parser):
try: try:
import tkinter from thirdparty.six.moves import tkinter as _tkinter
import tkinter.scrolledtext from thirdparty.six.moves import tkinter_scrolledtext as _tkinter_scrolledtext
import tkinter.ttk from thirdparty.six.moves import tkinter_ttk as _tkinter_ttk
from thirdparty.six.moves import tkinter_messagebox as _tkinter_messagebox
except ImportError as ex: except ImportError as ex:
raise SqlmapMissingDependence("missing dependence ('%s')" % getSafeExString(ex)) raise SqlmapMissingDependence("missing dependence ('%s')" % getSafeExString(ex))
# Reference: https://www.reddit.com/r/learnpython/comments/985umy/limit_user_input_to_only_int_with_tkinter/e4dj9k9?utm_source=share&utm_medium=web2x # Reference: https://www.reddit.com/r/learnpython/comments/985umy/limit_user_input_to_only_int_with_tkinter/e4dj9k9?utm_source=share&utm_medium=web2x
class ConstrainedEntry(tkinter.Entry): class ConstrainedEntry(_tkinter.Entry):
def __init__(self, master=None, **kwargs): def __init__(self, master=None, **kwargs):
self.var = tkinter.StringVar() self.var = _tkinter.StringVar()
self.regex = kwargs["regex"] self.regex = kwargs["regex"]
del kwargs["regex"] del kwargs["regex"]
tkinter.Entry.__init__(self, master, textvariable=self.var, **kwargs) _tkinter.Entry.__init__(self, master, textvariable=self.var, **kwargs)
self.old_value = '' self.old_value = ''
self.var.trace('w', self.check) self.var.trace('w', self.check)
self.get, self.set = self.var.get, self.var.set self.get, self.set = self.var.get, self.var.set
@ -60,9 +60,9 @@ def runGui(parser):
self.set(self.old_value) self.set(self.old_value)
# Reference: https://code.activestate.com/recipes/580726-tkinter-notebook-that-fits-to-the-height-of-every-/ # Reference: https://code.activestate.com/recipes/580726-tkinter-notebook-that-fits-to-the-height-of-every-/
class AutoresizableNotebook(tkinter.ttk.Notebook): class AutoresizableNotebook(_tkinter_ttk.Notebook):
def __init__(self, master=None, **kw): def __init__(self, master=None, **kw):
tkinter.ttk.Notebook.__init__(self, master, **kw) _tkinter_ttk.Notebook.__init__(self, master, **kw)
self.bind("<<NotebookTabChanged>>", self._on_tab_changed) self.bind("<<NotebookTabChanged>>", self._on_tab_changed)
def _on_tab_changed(self,event): def _on_tab_changed(self,event):
@ -71,11 +71,11 @@ def runGui(parser):
tab = event.widget.nametowidget(event.widget.select()) tab = event.widget.nametowidget(event.widget.select())
event.widget.configure(height=tab.winfo_reqheight()) event.widget.configure(height=tab.winfo_reqheight())
window = tkinter.Tk() window = _tkinter.Tk()
window.title(VERSION_STRING) window.title(VERSION_STRING)
# Reference: https://www.holadevs.com/pregunta/64750/change-selected-tab-color-in-ttknotebook # Reference: https://www.holadevs.com/pregunta/64750/change-selected-tab-color-in-ttknotebook
style = tkinter.ttk.Style() style = _tkinter_ttk.Style()
settings = {"TNotebook.Tab": {"configure": {"padding": [5, 1], "background": "#fdd57e" }, "map": {"background": [("selected", "#C70039"), ("active", "#fc9292")], "foreground": [("selected", "#ffffff"), ("active", "#000000")]}}} settings = {"TNotebook.Tab": {"configure": {"padding": [5, 1], "background": "#fdd57e" }, "map": {"background": [("selected", "#C70039"), ("active", "#fc9292")], "foreground": [("selected", "#ffffff"), ("active", "#000000")]}}}
style.theme_create("custom", parent="alt", settings=settings) style.theme_create("custom", parent="alt", settings=settings)
style.theme_use("custom") style.theme_use("custom")
@ -119,7 +119,7 @@ def runGui(parser):
except: except:
return return
event.widget.insert(tkinter.END, "\n") event.widget.insert(_tkinter.END, "\n")
return "break" return "break"
@ -174,11 +174,11 @@ def runGui(parser):
thread.daemon = True thread.daemon = True
thread.start() thread.start()
top = tkinter.Toplevel() top = _tkinter.Toplevel()
top.title("Console") top.title("Console")
# Reference: https://stackoverflow.com/a/13833338 # Reference: https://stackoverflow.com/a/13833338
text = tkinter.scrolledtext.ScrolledText(top, undo=True) text = _tkinter_scrolledtext.ScrolledText(top, undo=True)
text.bind("<Key>", onKeyPress) text.bind("<Key>", onKeyPress)
text.bind("<Return>", onReturnPress) text.bind("<Return>", onReturnPress)
text.pack() text.pack()
@ -191,23 +191,23 @@ def runGui(parser):
try: try:
#line = queue.get_nowait() #line = queue.get_nowait()
line = queue.get(timeout=.1) line = queue.get(timeout=.1)
text.insert(tkinter.END, line) text.insert(_tkinter.END, line)
except _queue.Empty: except _queue.Empty:
text.see(tkinter.END) text.see(_tkinter.END)
text.update_idletasks() text.update_idletasks()
menubar = tkinter.Menu(window) menubar = _tkinter.Menu(window)
filemenu = tkinter.Menu(menubar, tearoff=0) filemenu = _tkinter.Menu(menubar, tearoff=0)
filemenu.add_command(label="Open", state=tkinter.DISABLED) filemenu.add_command(label="Open", state=_tkinter.DISABLED)
filemenu.add_command(label="Save", state=tkinter.DISABLED) filemenu.add_command(label="Save", state=_tkinter.DISABLED)
filemenu.add_separator() filemenu.add_separator()
filemenu.add_command(label="Exit", command=window.quit) filemenu.add_command(label="Exit", command=window.quit)
menubar.add_cascade(label="File", menu=filemenu) menubar.add_cascade(label="File", menu=filemenu)
menubar.add_command(label="Run", command=run) menubar.add_command(label="Run", command=run)
helpmenu = tkinter.Menu(menubar, tearoff=0) helpmenu = _tkinter.Menu(menubar, tearoff=0)
helpmenu.add_command(label="Official site", command=lambda: webbrowser.open(SITE)) helpmenu.add_command(label="Official site", command=lambda: webbrowser.open(SITE))
helpmenu.add_command(label="Github pages", command=lambda: webbrowser.open(GIT_PAGE)) helpmenu.add_command(label="Github pages", command=lambda: webbrowser.open(GIT_PAGE))
helpmenu.add_command(label="Wiki pages", command=lambda: webbrowser.open(WIKI_PAGE)) helpmenu.add_command(label="Wiki pages", command=lambda: webbrowser.open(WIKI_PAGE))
@ -225,33 +225,33 @@ def runGui(parser):
frames = {} frames = {}
for group in parser.option_groups: for group in parser.option_groups:
frame = frames[group.title] = tkinter.Frame(notebook, width=200, height=200) frame = frames[group.title] = _tkinter.Frame(notebook, width=200, height=200)
notebook.add(frames[group.title], text=group.title) notebook.add(frames[group.title], text=group.title)
tkinter.Label(frame).grid(column=0, row=0, sticky=tkinter.W) _tkinter.Label(frame).grid(column=0, row=0, sticky=_tkinter.W)
row = 1 row = 1
if group.get_description(): if group.get_description():
tkinter.Label(frame, text="%s:" % group.get_description()).grid(column=0, row=1, columnspan=3, sticky=tkinter.W) _tkinter.Label(frame, text="%s:" % group.get_description()).grid(column=0, row=1, columnspan=3, sticky=_tkinter.W)
tkinter.Label(frame).grid(column=0, row=2, sticky=tkinter.W) _tkinter.Label(frame).grid(column=0, row=2, sticky=_tkinter.W)
row += 2 row += 2
for option in group.option_list: for option in group.option_list:
tkinter.Label(frame, text="%s " % parser.formatter._format_option_strings(option)).grid(column=0, row=row, sticky=tkinter.W) _tkinter.Label(frame, text="%s " % parser.formatter._format_option_strings(option)).grid(column=0, row=row, sticky=_tkinter.W)
if option.type == "string": if option.type == "string":
widget = tkinter.Entry(frame) widget = _tkinter.Entry(frame)
elif option.type == "float": elif option.type == "float":
widget = ConstrainedEntry(frame, regex=r"\A\d*\.?\d*\Z") widget = ConstrainedEntry(frame, regex=r"\A\d*\.?\d*\Z")
elif option.type == "int": elif option.type == "int":
widget = ConstrainedEntry(frame, regex=r"\A\d*\Z") widget = ConstrainedEntry(frame, regex=r"\A\d*\Z")
else: else:
var = tkinter.IntVar() var = _tkinter.IntVar()
widget = tkinter.Checkbutton(frame, variable=var) widget = _tkinter.Checkbutton(frame, variable=var)
widget.var = var widget.var = var
first = first or widget first = first or widget
widget.grid(column=1, row=row, sticky=tkinter.W) widget.grid(column=1, row=row, sticky=_tkinter.W)
window._widgets[(option.dest, option.type)] = widget window._widgets[(option.dest, option.type)] = widget
@ -260,11 +260,11 @@ def runGui(parser):
if hasattr(widget, "insert"): if hasattr(widget, "insert"):
widget.insert(0, default) widget.insert(0, default)
tkinter.Label(frame, text=" %s" % option.help).grid(column=2, row=row, sticky=tkinter.W) _tkinter.Label(frame, text=" %s" % option.help).grid(column=2, row=row, sticky=_tkinter.W)
row += 1 row += 1
tkinter.Label(frame).grid(column=0, row=row, sticky=tkinter.W) _tkinter.Label(frame).grid(column=0, row=row, sticky=_tkinter.W)
notebook.pack(expand=1, fill="both") notebook.pack(expand=1, fill="both")
notebook.enable_traversal() notebook.enable_traversal()