Esempio n. 1
0
 def __init__(self, root, newver, oldver):
     self.window = tk.Toplevel(root)
     self.window.transient(root)
     self.window.title("New Version Available")
     self.window.minsize(150, 80)
     self.window.resizable(False, False)
     self.window.attributes("-topmost")
     self.window.config(bg="#101010")
     self.window.protocol("WM_DELETE_WINDOW", self.window.destroy)
     self.label = btk.MyLabelStyle(
         self.window, "Newer version (v{}) available!\nYou have v{}".format(
             newver, oldver))
     self.label.frame.grid(row=0, column=0, columnspan=2, padx=5, pady=5)
     self.btn_close = btk.MyButtonStyle(self.window, "Ignore",
                                        self.window.destroy)
     self.btn_close.btn.grid(row=1,
                             column=0,
                             padx=5,
                             pady=5,
                             sticky=tk.E + tk.W)
     self.btn_close = btk.MyButtonStyle(
         self.window, "Download", lambda: [
             f.open_link(g.PROJECT_LINK_LATEST, None, True),
             self.window.destroy()
         ])
     self.btn_close.btn.grid(row=1,
                             column=1,
                             padx=5,
                             pady=5,
                             sticky=tk.E + tk.W)
     self.window.update_idletasks()
     self.window.geometry("+%d+%d" % (f.calc_window_pos(root, self.window)))
     self.window.grab_set()
     self.window.focus_set()
Esempio n. 2
0
 def __init__(self, root):
     self.window = tk.Toplevel(root.window)
     self.window.transient(root.window)
     self.window.title("Extra Stuff")
     # self.window.minsize(100, 50)
     self.window.resizable(False, False)
     self.window.attributes("-topmost")
     self.window.config(bg="#101010")
     self.window.protocol("WM_DELETE_WINDOW", self.window.destroy)
     self.btn_close = btk.MyButtonStyle(
         self.window, "More Stats",
         lambda: [root._open_more_stats(),
                  self.window.destroy()])
     self.btn_close.btn.pack(padx=5, pady=5)
     self.btn_close = btk.MyButtonStyle(
         self.window, "Export WL (CSV)", lambda: [
             root.close_and_update(),
             f.export_wl_csv(self.window),
             self.window.destroy()
         ])
     self.btn_close.btn.pack(padx=5, pady=5)
     self.window.update_idletasks()
     self.window.geometry("+%d+%d" %
                          (f.calc_window_pos(root.window, self.window)))
     self.window.grab_set()
     self.window.focus_set()
Esempio n. 3
0
 def __init__(self, root):
     self.window = tk.Toplevel(root)
     self.window.transient(root)
     self.window.title("Past LINKs")
     self.window.minsize(150, 150)
     self.window.config(bg="#101010")
     self.window.protocol("WM_DELETE_WINDOW", self.window.destroy)
     self.label1_top = btk.MyLabelStyle(self.window, "Oldest LINK on TOP")
     self.label1_top.frame.pack()
     self.box = btk.MyListboxStyle(self.window, g.list_links)
     self.box.box.pack(fill=tk.BOTH, expand=1)
     self.window.update_idletasks()
     self.window.geometry("+%d+%d" % (f.calc_window_pos(root, self.window)))
     self.window.grab_set()
     self.window.focus_set()
     self.box.box.selection_set(0)
Esempio n. 4
0
 def __init__(self, root, message, title="error"):
     self.window = tk.Toplevel(root)
     self.window.transient(root)
     self.window.title(title)
     self.window.minsize(100, 50)
     self.window.resizable(False, False)
     self.window.attributes("-topmost")
     self.window.config(bg="#101010")
     self.window.protocol("WM_DELETE_WINDOW", self.window.destroy)
     self.label = btk.MyLabelStyle(self.window, message)
     self.label.frame.pack()
     self.btn_close = btk.MyButtonStyle(self.window, "Close",
                                        self.window.destroy)
     self.btn_close.btn.pack()
     self.window.update_idletasks()
     self.window.geometry("+%d+%d" % (f.calc_window_pos(root, self.window)))
     self.window.grab_set()
     self.window.focus_set()
Esempio n. 5
0
 def __init__(self, root):
     self.window = tk.Toplevel(root.window)
     self.window.transient(root.window)
     self.window.title("Check Vac")
     self.window.minsize(150, 80)
     self.window.resizable(False, False)
     self.window.attributes("-topmost")
     self.window.config(bg="#101010")
     self.window.protocol("WM_DELETE_WINDOW", self.window.destroy)
     self.label = btk.MyLabelStyle(self.window, "What to check?")
     self.label.frame.grid(row=0, column=0, columnspan=2, padx=5, pady=5)
     self.btn_30 = btk.MyButtonStyle(self.window, "Last 30 players",
                                     lambda: self.checkk(root, 30))
     self.btn_30.btn.grid(row=1,
                          column=0,
                          padx=5,
                          pady=5,
                          sticky=tk.E + tk.W)
     self.btn_all = btk.MyButtonStyle(self.window, "Check all",
                                      lambda: self.checkk(root, 0))
     self.btn_all.btn.grid(row=1,
                           column=1,
                           padx=5,
                           pady=5,
                           sticky=tk.E + tk.W)
     self.label2 = btk.MyLabelStyle(self.window, "Delay in ms:")
     self.label2.frame.grid(row=2, column=0, padx=5, pady=5)
     self.entry_speed = btk.MyEntryStyle(self.window,
                                         str(g.settings_dict["vac_delay"]))
     self.entry_speed.frame.config(state="normal")
     self.entry_speed.frame.grid(row=2,
                                 column=1,
                                 sticky=tk.W + tk.E,
                                 padx=5)
     self.window.update_idletasks()
     self.window.geometry("+%d+%d" %
                          (f.calc_window_pos(root.window, self.window)))
     self.window.grab_set()
     self.window.focus_set()
Esempio n. 6
0
    def __init__(self, root):
        self.window = tk.Toplevel(root)
        self.window.transient(root)
        self.window.title("Settings")
        self.window.minsize(580, 330)
        sizex = self.window.minsize()[0]
        # sizey = self.window.minsize()[1]
        self.window.resizable(False, False)
        self.window.config(bg="#101010")
        self.window.protocol("WM_DELETE_WINDOW", self._destroy_checkname)

        self.label_set1 = btk.MyLabelStyle(self.window, "Stop scanning after a DEMO LINK is found")
        self.label_set1.frame.grid(row=0, column=1, sticky=tk.W, padx=5, pady=5, columnspan=2)
        self.btn_set1 = btk.MyButtonStyle(self.window, "OFF", lambda: self._change_setting(self.btn_set1), "stop_label")
        self.btn_set1.btn.grid(row=0, column=0, sticky=tk.W + tk.E, padx=5, pady=5)

        self.label_set5 = btk.MyLabelStyle(self.window, "Auto download DEMO after a LINK is found")
        self.label_set5.frame.grid(row=1, column=1, sticky=tk.W, padx=5, pady=5, columnspan=2)
        self.btn_set5 = btk.MyButtonStyle(self.window, "ON", lambda: self._change_setting(self.btn_set5), "auto_dl")
        self.btn_set5.btn.grid(row=1, column=0, sticky=tk.W + tk.E, padx=5, pady=5)

        self.label_set2 = btk.MyLabelStyle(self.window, "Use the browser to download (doesn't work with auto download)")
        self.label_set2.frame.grid(row=2, column=1, sticky=tk.W, padx=5, pady=5, columnspan=2)
        self.btn_set2 = btk.MyButtonStyle(self.window, "OFF", lambda: self._change_setting(self.btn_set2), "browser_dl")
        self.btn_set2.btn.grid(row=2, column=0, sticky=tk.W + tk.E, padx=5, pady=5)

        self.label_set3 = btk.MyLabelStyle(self.window,
                                           "*" * 50 + "Download location when not using the browser" + "*" * 50)
        self.label_set3.frame.config(width=45)
        self.label_set3.frame.grid(row=3, column=0, sticky=tk.W + tk.E, pady=5, columnspan=4)
        self.btn_browse = btk.MyButtonStyle(self.window, "Browse", self._set_download_path)
        self.btn_browse.btn.grid(row=4, column=0, sticky=tk.W + tk.E, padx=5)
        self.entry_browse = btk.MyEntryStyle(self.window, g.settings_dict["dl_loc"])
        self.entry_browse.frame.grid(row=4, column=1, sticky=tk.W + tk.E, padx=5, columnspan=2)
        self.btn_opendl = btk.MyButtonStyle(self.window, "Open",
                                            lambda: os.system("start {}".format(g.settings_dict["dl_loc"])))
        self.btn_opendl.btn.grid(row=4, column=3, sticky=tk.E, padx=5, pady=5)
        self.label_set3_1 = btk.MyLabelStyle(self.window, "*" * 200)
        self.label_set3_1.frame.config(width=45)
        self.label_set3_1.frame.grid(row=5, column=0, sticky=tk.W + tk.E, columnspan=4)

        self.label_set4 = btk.MyLabelStyle(self.window, "Rename downloaded demos to ")
        self.label_set4.frame.grid(row=6, column=1, sticky=tk.W, padx=5, pady=5)
        self.btn_set3 = btk.MyButtonStyle(self.window, "ON", lambda: self._change_setting(self.btn_set3), "rename_dl")
        self.btn_set3.btn.grid(row=6, column=0, sticky=tk.W + tk.E, padx=5, pady=5)
        self.entry_demo = btk.MyEntryStyle(self.window, g.settings_dict["rename"])
        self.entry_demo.frame.config(state="normal")
        self.entry_demo.frame.grid(row=6, column=2, sticky=tk.W + tk.E, padx=5, columnspan=2)

        self.label_set6 = btk.MyLabelStyle(self.window, "Auto delete DEMO after it is analyzed")
        self.label_set6.frame.grid(row=7, column=1, sticky=tk.W, padx=5, pady=5, columnspan=2)
        self.btn_set6 = btk.MyButtonStyle(self.window, "ON", lambda: self._change_setting(self.btn_set6),
                                          "delete_after")
        self.btn_set6.btn.grid(row=7, column=0, sticky=tk.W + tk.E, padx=5, pady=5)

        self.btn_save = btk.MyButtonStyle(self.window, "Save to file", self._update_on_save)
        self.btn_save.btn.grid(row=8, column=3, sticky=tk.E, padx=5, pady=5)

        self.btn_analyze = btk.MyButtonStyle(self.window, "Analyze a demo", self._analyze_demo)
        self.btn_analyze.btn.grid(row=8, column=0, columnspan=2, sticky=tk.W, padx=5, pady=5)

        def lc_event1(event):
            link = self.label_github.text.get()
            if len(link) == 0:
                return
            if g.browser_path is None:
                web.open_new_tab(link)
            else:
                sp.Popen(g.browser_path + " " + link)

        self.label_github = btk.MyLabelStyle(self.window, "https://github.com/ZaharX97/OWReveal")
        self.label_github.frame.config(cursor="hand2")
        self.label_github.frame.grid(row=8, column=1, padx=5, pady=5, columnspan=2)
        self.label_github.frame.bind("<Button-1>", lc_event1)

        self._update_all_settings()
        self.window.grid_columnconfigure(0, minsize=0.15 * sizex, weight=1)
        self.window.grid_columnconfigure(1, minsize=0.5 * sizex, weight=1)
        self.window.grid_columnconfigure(2, minsize=0.15 * sizex, weight=1)
        self.window.grid_columnconfigure(3, minsize=0.2 * sizex, weight=1)
        self.window.grid_propagate(False)
        self.window.update_idletasks()
        self.window.geometry("+%d+%d" % (f.calc_window_pos(root, self.window)))
        self.window.grab_set()
        self.window.focus_set()
Esempio n. 7
0
    def __init__(self, root):
        try:
            self.rfile = open(g.exec_path + "watchlist", "r", encoding="utf-8")
        except FileNotFoundError:
            self.rfile = open(g.exec_path + "watchlist", "w", encoding="utf-8")
            self.rfile.close()
            self.rfile = open(g.exec_path + "watchlist", "r", encoding="utf-8")
        self.findex = 1
        self._lastpage = 0
        self._maxpages = 0
        self._stats = {}
        self.watchlist = []
        self.to_remove = set()
        self.to_ban = set()
        self.to_comm = set()
        self.comm_dict = {}
        self.window = tk.Toplevel(root)
        self.window.transient(root)
        self.window.title("WatchList")
        self.window.minsize(750, 430)
        # self.window.resizable(False, False)
        sizex = self.window.minsize()[0]
        self.window.config(bg="#101010")
        self.window.protocol("WM_DELETE_WINDOW", self.close_and_update)
        frame = tk.Frame(self.window, bg="#101010", width=sizex, height=20)
        label = btk.MyLabelStyle(frame, " \\")
        label.frame.config(font=("", 12, "bold"))
        label.frame.grid(row=0, column=0, sticky=tk.W + tk.E)
        label = btk.MyLabelStyle(frame, "   ##")
        label.frame.config(font=("", 12, "bold"))
        label.frame.grid(row=0, column=1, sticky=tk.W + tk.E)
        label = btk.MyLabelStyle(frame, "NAME")
        label.frame.config(font=("", 12, "bold"))
        label.frame.grid(row=0, column=2, padx=5, sticky=tk.W + tk.E)
        label = btk.MyLabelStyle(frame, "KAD")
        label.frame.config(font=("", 12, "bold"))
        label.frame.grid(row=0, column=3, padx=5, sticky=tk.W + tk.E)
        label = btk.MyLabelStyle(frame, "MAP")
        label.frame.config(font=("", 12, "bold"))
        label.frame.grid(row=0, column=4, padx=5, sticky=tk.W + tk.E)
        label = btk.MyLabelStyle(frame, "DATE ADDED")
        label.frame.config(font=("", 12, "bold"))
        label.frame.grid(row=0, column=5, padx=5, sticky=tk.W + tk.E)
        label = btk.MyLabelStyle(frame, "COMMENTS")
        label.frame.config(font=("", 12, "bold"))
        label.frame.grid(row=0, column=6, padx=5, sticky=tk.W + tk.E)
        # frame.grid_columnconfigure(0, minsize=0.002 * sizex, weight=1)
        # frame.grid_columnconfigure(1, minsize=0.002 * sizex, weight=1)
        frame.grid_columnconfigure(2, minsize=0.27 * sizex, weight=1)
        frame.grid_columnconfigure(3, minsize=0.15 * sizex, weight=1)
        frame.grid_columnconfigure(4, minsize=0.15 * sizex, weight=1)
        frame.grid_columnconfigure(5, minsize=0.15 * sizex, weight=1)
        frame.grid_columnconfigure(6, minsize=0.2 * sizex, weight=1)
        frame.grid_propagate(False)
        frame.pack(fill=tk.X)
        frame = tk.Frame(self.window, bg="#101010", width=sizex, height=20)
        label = btk.MyLabelStyle(frame, "_" * 300)
        label.frame.pack()
        frame.pack_propagate(False)
        frame.pack(fill=tk.X)
        frame = tk.Frame(self.window, bg="#101010", width=sizex, height=300)

        def lc_event1(event):
            for item in self.watchlist:
                if item["name"].frame == event.widget:
                    link = item["player"].link if item[
                        "player"] is not None else None
                    break
            if link is None or len(link) == 0:
                return
            if g.browser_path is None:
                web.open_new_tab(link)
            else:
                sp.Popen(g.browser_path + " " + link)

        for i2 in range(1, 11):
            check = btk.MyCheckButtonStyle(frame)
            check.btn.grid(row=i2 - 1, column=0)
            numberr = btk.MyLabelStyle(frame, "")
            numberr.frame.config(anchor=tk.W)
            numberr.frame.grid(row=i2 - 1,
                               column=1,
                               pady=2,
                               sticky=tk.W + tk.E)
            name = btk.MyLabelStyle(frame, "")
            name.frame.grid(row=i2 - 1,
                            column=2,
                            padx=5,
                            pady=2,
                            sticky=tk.W + tk.E)
            name.frame.config(cursor="hand2")
            name.frame.bind("<Button-1>", lc_event1)
            kad = btk.MyLabelStyle(frame, "")
            kad.frame.grid(row=i2 - 1,
                           column=3,
                           padx=5,
                           pady=2,
                           sticky=tk.W + tk.E)
            mapp = btk.MyLabelStyle(frame, "")
            mapp.frame.grid(row=i2 - 1,
                            column=4,
                            padx=5,
                            pady=2,
                            sticky=tk.W + tk.E)
            date = btk.MyLabelStyle(frame, "")
            date.frame.grid(row=i2 - 1,
                            column=5,
                            padx=5,
                            pady=2,
                            sticky=tk.W + tk.E)
            comm = btk.MyEntryStyle(frame, "")
            comm.frame.config(state=tk.NORMAL,
                              bg="#101010",
                              fg="white",
                              insertbackground="white")
            comm.frame.grid(row=i2 - 1,
                            column=6,
                            padx=5,
                            pady=2,
                            sticky=tk.W + tk.E)
            self.watchlist.append({
                "btn": check,
                "nr": numberr,
                "name": name,
                "kad": kad,
                "map": mapp,
                "date": date,
                "comm": comm,
                "player": None
            })
        # self.sf.inner.grid_columnconfigure(0, minsize=0.05 * sizex, weight=1)
        # self.sf.inner.grid_columnconfigure(1, minsize=0.05 * sizex, weight=1)
        frame.grid_columnconfigure(2, minsize=0.27 * sizex, weight=1)
        frame.grid_columnconfigure(3, minsize=0.15 * sizex, weight=1)
        frame.grid_columnconfigure(4, minsize=0.15 * sizex, weight=1)
        frame.grid_columnconfigure(5, minsize=0.15 * sizex, weight=1)
        frame.grid_columnconfigure(6, minsize=0.2 * sizex, weight=1)
        # self.sf.inner.grid_propagate(False)
        # self.frame.update_idletasks()
        frame.pack(fill=tk.BOTH)
        # frame = tk.Frame(self.window, bg="#101010", width=sizex, height=20)
        # label = btk.MyLabelStyle(frame, "_" * 300)
        # label.frame.pack()
        # frame.pack_propagate(False)
        # frame.pack(fill=tk.X)
        frame = tk.Frame(self.window, bg="#101010", width=sizex, height=15)
        btn = btk.MyButtonStyle(frame, "1 <<", lambda: self._update_page(1))
        btn.btn.config(width=5)
        btn.btn.pack(side=tk.LEFT, padx=5)
        btn = btk.MyButtonStyle(
            frame, "<", lambda: self._update_page(
                self._check_int(self.entry_page.text.get(), -1)))
        btn.btn.config(width=5)
        btn.btn.pack(side=tk.LEFT, padx=5)
        self.entry_page = btk.MyEntryStyle(frame, "0")
        self.entry_page.frame.config(width=5, state=tk.NORMAL)
        self.entry_page.frame.pack(side=tk.LEFT, padx=5)
        self.entry_page.frame.bind("<Return>", self._enter_event)
        btn = btk.MyButtonStyle(
            frame, ">", lambda: self._update_page(
                self._check_int(self.entry_page.text.get(), 1)))
        btn.btn.config(width=5)
        btn.btn.pack(side=tk.LEFT, padx=5)
        self.btn_lastpage = btk.MyButtonStyle(
            frame, ">>", lambda: self._update_page(self._maxpages))
        self.btn_lastpage.btn.config(width=5)
        self.btn_lastpage.btn.pack(side=tk.LEFT, padx=5)
        frame.pack(pady=10)
        frame = tk.Frame(self.window, bg="#101010", width=sizex, height=15)
        btn = btk.MyButtonStyle(frame, "(De) Select All", self._elect_btns)
        btn.btn.grid(row=0, column=0, padx=5)
        btn = btk.MyButtonStyle(frame, "Remove selected", self._remove_pl)
        btn.btn.grid(row=0, column=1, padx=5)
        btn = btk.MyButtonStyle(frame, "(Un) Mark Banned", self._mark_ban)
        btn.btn.grid(row=0, column=2, padx=5)
        btn = btk.MyButtonStyle(frame, "Check VAC", lambda: f.check_vac(self))
        btn.btn.grid(row=0, column=3, padx=5)
        frame.pack(side=tk.LEFT)
        self._check_stats()
        frame = tk.Frame(self.window, bg="#101010", width=sizex, height=20)
        self.stats_players = btk.MyLabelStyle(
            frame, "Total players: " + str(self._stats["nrpl"]))
        self.stats_players.frame.config(font=("", 12, "bold"))
        self.stats_players.frame.grid(row=0, column=0, sticky=tk.W)
        self.stats_banned = btk.MyLabelStyle(
            frame, "Banned players: " + str(self._stats["ban"]))
        self.stats_banned.frame.config(font=("", 12, "bold"))
        self.stats_banned.frame.grid(row=1, column=0, sticky=tk.W)
        if self._stats["nrpl"] == 0:
            percent = "--.--"
        else:
            percent = round(self._stats["ban"] / self._stats["nrpl"] * 100, 2)
        self.percent = btk.MyLabelStyle(frame,
                                        "Percent: " + str(percent) + " %")
        self.percent.frame.config(font=("", 12, "bold"))
        self.percent.frame.grid(row=2, column=0, sticky=tk.W)
        self.btn_lastpage.text.set(">> " + str(self._maxpages))
        frame.pack(side=tk.RIGHT)
        self._update_page(self._maxpages)
        self.window.pack_propagate(False)
        self.window.update_idletasks()
        self.window.geometry("+%d+%d" % (f.calc_window_pos(root, self.window)))
        self.window.grab_set()
        self.window.focus_set()
Esempio n. 8
0
    def __init__(self, root):
        try:
            self.rfile = open(g.path_exec_folder + "watchlist",
                              "r",
                              encoding="utf-8")
            self.csvfile = mycsv.myCSV(self.rfile)
        except FileNotFoundError:
            tempwrite = open(g.path_exec_folder + "watchlist",
                             "w",
                             encoding="utf-8",
                             newline="")
            csvtemp = csv.writer(tempwrite)
            csvtemp.writerow(g.csv_header)
            tempwrite.close()
            self.rfile = open(g.path_exec_folder + "watchlist",
                              "r",
                              encoding="utf-8")
            self.csvfile = mycsv.myCSV(self.rfile)
        self.findex = 1
        self._lastpage = 0
        self._maxpages = 0
        self._stats = dict()
        self.watchlist = list()
        self.to_remove = set()
        self.to_ban = set()
        self.to_comm = set()
        self.comm_dict = dict()
        self.window = tk.Toplevel(root)
        self.window.transient(root)
        self.window.title("WatchList")
        self.window.minsize(805, 465)
        # self.window.resizable(False, False)
        sizex = self.window.minsize()[0]
        self.window.config(bg="#101010")
        self.window.protocol("WM_DELETE_WINDOW", self.close_and_update)
        frame = tk.Frame(self.window, bg="#101010", width=sizex, height=20)
        label = btk.MyLabelStyle(frame, " \\")
        label.frame.config(font=("",
                                 math.ceil(12 * g.settings_dict["scaling"]),
                                 "bold"))
        label.frame.grid(row=0, column=0, sticky=tk.W + tk.E)
        label = btk.MyLabelStyle(frame, "   ##")
        label.frame.config(font=("",
                                 math.ceil(12 * g.settings_dict["scaling"]),
                                 "bold"))
        label.frame.grid(row=0, column=1, sticky=tk.W + tk.E)
        label = btk.MyLabelStyle(frame, "NAME")
        label.frame.config(font=("",
                                 math.ceil(12 * g.settings_dict["scaling"]),
                                 "bold"))
        label.frame.grid(row=0, column=2, padx=5, sticky=tk.W + tk.E)
        label = btk.MyLabelStyle(frame, "RANK")
        label.frame.config(font=("",
                                 math.ceil(12 * g.settings_dict["scaling"]),
                                 "bold"))
        label.frame.grid(row=0, column=3, padx=5, sticky=tk.W + tk.E)
        label = btk.MyLabelStyle(frame, "KAD")
        label.frame.config(font=("",
                                 math.ceil(12 * g.settings_dict["scaling"]),
                                 "bold"))
        label.frame.grid(row=0, column=4, padx=5, sticky=tk.W + tk.E)
        label = btk.MyLabelStyle(frame, "MAP")
        label.frame.config(font=("",
                                 math.ceil(12 * g.settings_dict["scaling"]),
                                 "bold"))
        label.frame.grid(row=0, column=5, padx=5, sticky=tk.W + tk.E)
        self.label_bandate = btk.MyLabelStyle(frame, "DEMO DATE")
        self.label_bandate.frame.config(
            font=("", math.ceil(12 * g.settings_dict["scaling"]), "bold"))
        self.label_bandate.frame.grid(row=0,
                                      column=6,
                                      padx=5,
                                      sticky=tk.W + tk.E)
        label = btk.MyLabelStyle(frame, "COMMENTS")
        label.frame.config(font=("",
                                 math.ceil(12 * g.settings_dict["scaling"]),
                                 "bold"))
        label.frame.grid(row=0, column=7, padx=5, sticky=tk.W + tk.E)
        # frame.grid_columnconfigure(0, minsize=0.002 * sizex, weight=1)
        # frame.grid_columnconfigure(1, minsize=0.002 * sizex, weight=1)
        frame.grid_columnconfigure(2,
                                   minsize=0.23 * sizex *
                                   g.settings_dict["scaling"],
                                   weight=1)
        frame.grid_columnconfigure(3,
                                   minsize=0.08 * sizex *
                                   g.settings_dict["scaling"],
                                   weight=1)
        frame.grid_columnconfigure(4,
                                   minsize=0.14 * sizex *
                                   g.settings_dict["scaling"],
                                   weight=1)
        frame.grid_columnconfigure(5,
                                   minsize=0.14 * sizex *
                                   g.settings_dict["scaling"],
                                   weight=1)
        frame.grid_columnconfigure(6,
                                   minsize=0.14 * sizex *
                                   g.settings_dict["scaling"],
                                   weight=1)
        frame.grid_columnconfigure(7,
                                   minsize=0.2 * sizex *
                                   g.settings_dict["scaling"],
                                   weight=1)
        frame.grid_propagate(False)
        frame.pack(fill=tk.X)
        frame = tk.Frame(self.window, bg="#101010", width=sizex, height=20)
        label = btk.MyLabelStyle(frame, "_" * 300)
        label.frame.pack()
        frame.pack_propagate(False)
        frame.pack(fill=tk.X)
        frame = tk.Frame(self.window, bg="#101010", width=sizex, height=300)

        def lc_event1(event):
            for item in self.watchlist:
                if item["name"].frame == event.widget:
                    link = item["player"].link if item[
                        "player"] is not None else None
                    break
            if link is None or len(link) == 0:
                return
            if g.browser_path is None:
                web.open_new_tab(link)
            else:
                sp.Popen(g.browser_path + " " + link)

        for i2 in range(1, 11):
            check = btk.MyCheckButtonStyle(frame)
            check.btn.grid(row=i2 - 1, column=0)
            numberr = btk.MyLabelStyle(frame, "")
            numberr.frame.config(anchor=tk.W)
            numberr.frame.grid(row=i2 - 1,
                               column=1,
                               pady=2,
                               sticky=tk.W + tk.E)
            name = btk.MyLabelStyle(frame, "")
            name.frame.grid(row=i2 - 1,
                            column=2,
                            padx=5,
                            pady=2,
                            sticky=tk.W + tk.E)
            name.frame.config(cursor="hand2")
            name.frame.bind("<Button-1>", lc_event1)
            rank = btk.MyLabelStyle(frame, "")
            rank.frame.grid(row=i2 - 1,
                            column=3,
                            padx=5,
                            pady=2,
                            sticky=tk.W + tk.E)
            kad = btk.MyLabelStyle(frame, "")
            kad.frame.grid(row=i2 - 1,
                           column=4,
                           padx=5,
                           pady=2,
                           sticky=tk.W + tk.E)
            mapp = btk.MyLabelStyle(frame, "")
            mapp.frame.grid(row=i2 - 1,
                            column=5,
                            padx=5,
                            pady=2,
                            sticky=tk.W + tk.E)
            date = btk.MyLabelStyle(frame, "")
            date.frame.grid(row=i2 - 1,
                            column=6,
                            padx=5,
                            pady=2,
                            sticky=tk.W + tk.E)
            comm = btk.MyEntryStyle(frame, "")
            comm.frame.config(state=tk.NORMAL,
                              bg="#101010",
                              fg="white",
                              insertbackground="white")
            comm.frame.grid(row=i2 - 1,
                            column=7,
                            padx=5,
                            pady=2,
                            sticky=tk.W + tk.E)
            self.watchlist.append({
                "btn": check,
                "nr": numberr,
                "name": name,
                "rank": rank,
                "kad": kad,
                "map": mapp,
                "date": date,
                "comm": comm,
                "player": None
            })
        # self.sf.inner.grid_columnconfigure(0, minsize=0.05 * sizex, weight=1)
        # self.sf.inner.grid_columnconfigure(1, minsize=0.05 * sizex, weight=1)
        frame.grid_columnconfigure(2,
                                   minsize=0.22 * sizex *
                                   g.settings_dict["scaling"],
                                   weight=1)
        frame.grid_columnconfigure(3,
                                   minsize=0.08 * sizex *
                                   g.settings_dict["scaling"],
                                   weight=1)
        frame.grid_columnconfigure(4,
                                   minsize=0.14 * sizex *
                                   g.settings_dict["scaling"],
                                   weight=1)
        frame.grid_columnconfigure(5,
                                   minsize=0.14 * sizex *
                                   g.settings_dict["scaling"],
                                   weight=1)
        frame.grid_columnconfigure(6,
                                   minsize=0.14 * sizex *
                                   g.settings_dict["scaling"],
                                   weight=1)
        frame.grid_columnconfigure(7,
                                   minsize=0.2 * sizex *
                                   g.settings_dict["scaling"],
                                   weight=1)

        weightt = 0 if g.settings_dict["scaling"] == 1 else 1
        frame.grid_rowconfigure(0,
                                minsize=15 * g.settings_dict["scaling"],
                                weight=weightt)
        frame.grid_rowconfigure(1,
                                minsize=15 * g.settings_dict["scaling"],
                                weight=weightt)
        frame.grid_rowconfigure(2,
                                minsize=15 * g.settings_dict["scaling"],
                                weight=weightt)
        frame.grid_rowconfigure(3,
                                minsize=15 * g.settings_dict["scaling"],
                                weight=weightt)
        frame.grid_rowconfigure(4,
                                minsize=15 * g.settings_dict["scaling"],
                                weight=weightt)
        frame.grid_rowconfigure(5,
                                minsize=15 * g.settings_dict["scaling"],
                                weight=weightt)
        frame.grid_rowconfigure(6,
                                minsize=15 * g.settings_dict["scaling"],
                                weight=weightt)
        frame.grid_rowconfigure(7,
                                minsize=15 * g.settings_dict["scaling"],
                                weight=weightt)
        frame.grid_rowconfigure(8,
                                minsize=15 * g.settings_dict["scaling"],
                                weight=weightt)
        frame.grid_rowconfigure(9,
                                minsize=15 * g.settings_dict["scaling"],
                                weight=weightt)
        frame.grid_rowconfigure(10,
                                minsize=15 * g.settings_dict["scaling"],
                                weight=weightt)
        frame.grid_propagate(False)
        # self.frame.update_idletasks()
        frame.pack(fill=tk.BOTH)
        # frame = tk.Frame(self.window, bg="#101010", width=sizex, height=20)
        # label = btk.MyLabelStyle(frame, "_" * 300)
        # label.frame.pack()
        # frame.pack_propagate(False)
        # frame.pack(fill=tk.X)
        frame = tk.Frame(self.window, bg="#101010", width=sizex, height=15)
        btn = btk.MyButtonStyle(frame, "1 <<", lambda: self._update_page(1))
        btn.btn.config(width=5)
        btn.btn.pack(side=tk.LEFT, padx=5)
        btn = btk.MyButtonStyle(
            frame, "<", lambda: self._update_page(
                self._check_int(self.entry_page.text.get(), -1)))
        btn.btn.config(width=5)
        btn.btn.pack(side=tk.LEFT, padx=5)
        self.entry_page = btk.MyEntryStyle(frame, "0")
        self.entry_page.frame.config(width=5, state=tk.NORMAL)
        self.entry_page.frame.pack(side=tk.LEFT, padx=5)
        self.entry_page.frame.bind("<Return>", self._enter_event)
        btn = btk.MyButtonStyle(
            frame, ">", lambda: self._update_page(
                self._check_int(self.entry_page.text.get(), 1)))
        btn.btn.config(width=5)
        btn.btn.pack(side=tk.LEFT, padx=5)
        self.btn_lastpage = btk.MyButtonStyle(
            frame, ">>", lambda: self._update_page(self._maxpages))
        self.btn_lastpage.btn.config(width=5)
        self.btn_lastpage.btn.pack(side=tk.LEFT, padx=5)
        frame.pack(pady=10)
        frame = tk.Frame(self.window, bg="#101010", width=sizex, height=15)
        btn = btk.MyButtonStyle(frame, "(De) Select All", self._elect_btns)
        btn.btn.grid(row=0, column=0, padx=5)
        btn = btk.MyButtonStyle(frame, "Remove selected", self._remove_pl)
        btn.btn.grid(row=0, column=1, padx=5)
        btn = btk.MyButtonStyle(frame, "(Un) Mark Banned", self._mark_ban)
        btn.btn.grid(row=0, column=2, padx=5)
        btn = btk.MyButtonStyle(frame, "Check VAC",
                                lambda: CVW.MyVacWindow(self))
        btn.btn.grid(row=0, column=3, padx=5)
        self.btn_switch_speed = btk.MyButtonStyle(frame, "Ban Speed",
                                                  self._switch_ban_speed)
        self.btn_switch_speed.btn.grid(row=0, column=4, padx=5)
        # btn = btk.MyButtonStyle(frame, "Extra", lambda: WEW.MyWlextraWindow(self))
        btn = btk.MyButtonStyle(frame, "More Stats", self._open_more_stats)
        btn.btn.grid(row=0, column=5, padx=5)
        frame.pack(side=tk.LEFT)
        self._check_stats()
        frame = tk.Frame(self.window, bg="#101010", width=sizex, height=20)
        self.stats_players = btk.MyLabelStyle(
            frame, "Total players: " + str(self._stats["nrpl"]))
        self.stats_players.frame.config(
            font=("", math.ceil(12 * g.settings_dict["scaling"]), "bold"))
        self.stats_players.frame.grid(row=0, column=0, sticky=tk.W)
        self.stats_banned = btk.MyLabelStyle(
            frame, "Banned players: " + str(self._stats["ban"]))
        self.stats_banned.frame.config(
            font=("", math.ceil(12 * g.settings_dict["scaling"]), "bold"))
        self.stats_banned.frame.grid(row=1, column=0, sticky=tk.W)
        if self._stats["nrpl"] == 0:
            percent = "--.--"
        else:
            percent = round(self._stats["ban"] / self._stats["nrpl"] * 100, 2)
        self.percent = btk.MyLabelStyle(frame,
                                        "Percent: " + str(percent) + " %")
        self.percent.frame.config(
            font=("", math.ceil(12 * g.settings_dict["scaling"]), "bold"))
        self.percent.frame.grid(row=2, column=0, sticky=tk.W)
        self.btn_lastpage.text.set(">> " + str(self._maxpages))
        frame.pack(side=tk.RIGHT)
        self.window.update_idletasks()

        # takes half a second every time you open the wl and the app is white during that so i'll just use the main ones
        # label_size = (self.watchlist[0]["rank"].frame.winfo_width(), self.watchlist[0]["rank"].frame.winfo_height())
        # g.RANK_TRANSLATE_WL = {
        #     0: piltk.PhotoImage(
        #         pili.open(fr"{g.exec_path}resources\csgo_rank_icons\0.png").resize(label_size, pili.ANTIALIAS)),
        #     1: piltk.PhotoImage(
        #         pili.open(fr"{g.exec_path}resources\csgo_rank_icons\1.png").resize(label_size, pili.ANTIALIAS)),
        #     2: piltk.PhotoImage(
        #         pili.open(fr"{g.exec_path}resources\csgo_rank_icons\2.png").resize(label_size, pili.ANTIALIAS)),
        #     3: piltk.PhotoImage(
        #         pili.open(fr"{g.exec_path}resources\csgo_rank_icons\3.png").resize(label_size, pili.ANTIALIAS)),
        #     4: piltk.PhotoImage(
        #         pili.open(fr"{g.exec_path}resources\csgo_rank_icons\4.png").resize(label_size, pili.ANTIALIAS)),
        #     5: piltk.PhotoImage(
        #         pili.open(fr"{g.exec_path}resources\csgo_rank_icons\5.png").resize(label_size, pili.ANTIALIAS)),
        #     6: piltk.PhotoImage(
        #         pili.open(fr"{g.exec_path}resources\csgo_rank_icons\6.png").resize(label_size, pili.ANTIALIAS)),
        #     7: piltk.PhotoImage(
        #         pili.open(fr"{g.exec_path}resources\csgo_rank_icons\7.png").resize(label_size, pili.ANTIALIAS)),
        #     8: piltk.PhotoImage(
        #         pili.open(fr"{g.exec_path}resources\csgo_rank_icons\8.png").resize(label_size, pili.ANTIALIAS)),
        #     9: piltk.PhotoImage(
        #         pili.open(fr"{g.exec_path}resources\csgo_rank_icons\9.png").resize(label_size, pili.ANTIALIAS)),
        #     10: piltk.PhotoImage(
        #         pili.open(fr"{g.exec_path}resources\csgo_rank_icons\10.png").resize(label_size, pili.ANTIALIAS)),
        #     11: piltk.PhotoImage(
        #         pili.open(fr"{g.exec_path}resources\csgo_rank_icons\11.png").resize(label_size, pili.ANTIALIAS)),
        #     12: piltk.PhotoImage(
        #         pili.open(fr"{g.exec_path}resources\csgo_rank_icons\12.png").resize(label_size, pili.ANTIALIAS)),
        #     13: piltk.PhotoImage(
        #         pili.open(fr"{g.exec_path}resources\csgo_rank_icons\13.png").resize(label_size, pili.ANTIALIAS)),
        #     14: piltk.PhotoImage(
        #         pili.open(fr"{g.exec_path}resources\csgo_rank_icons\14.png").resize(label_size, pili.ANTIALIAS)),
        #     15: piltk.PhotoImage(
        #         pili.open(fr"{g.exec_path}resources\csgo_rank_icons\15.png").resize(label_size, pili.ANTIALIAS)),
        #     16: piltk.PhotoImage(
        #         pili.open(fr"{g.exec_path}resources\csgo_rank_icons\16.png").resize(label_size, pili.ANTIALIAS)),
        #     17: piltk.PhotoImage(
        #         pili.open(fr"{g.exec_path}resources\csgo_rank_icons\17.png").resize(label_size, pili.ANTIALIAS)),
        #     18: piltk.PhotoImage(
        #         pili.open(fr"{g.exec_path}resources\csgo_rank_icons\18.png").resize(label_size, pili.ANTIALIAS)),
        # }

        self._update_page(self._maxpages)
        self.window.pack_propagate(False)
        self.window.update_idletasks()
        self.window.geometry("+%d+%d" % (f.calc_window_pos(root, self.window)))
        self.window.grab_set()
        self.window.focus_set()
Esempio n. 9
0
    def __init__(self, root):
        self.window = tk.Toplevel(root)
        self.window.transient(root)
        self.window.title("Settings")
        self.window.minsize(580, 445)
        sizex = self.window.minsize()[0]
        sizey = self.window.minsize()[1]
        self.window.resizable(False, False)
        self.window.config(bg="#101010")
        self.window.protocol("WM_DELETE_WINDOW", self._destroy_checkname)

        self.label_set8 = btk.MyLabelStyle(self.window, "Auto start scanning when opening the app")
        self.label_set8.frame.grid(row=0, column=1, sticky=tk.W, padx=5, pady=5, columnspan=2)
        self.btn_set8 = btk.MyButtonStyle(self.window, "OFF", lambda: self._change_setting(self.btn_set8), "auto_start")
        self.btn_set8.btn.grid(row=0, column=0, sticky=tk.W + tk.E, padx=5, pady=5)

        self.label_set1 = btk.MyLabelStyle(self.window, "Stop scanning after a DEMO LINK is found")
        self.label_set1.frame.grid(row=1, column=1, sticky=tk.W, padx=5, pady=5, columnspan=2)
        self.btn_set1 = btk.MyButtonStyle(self.window, "OFF", lambda: self._change_setting(self.btn_set1), "stop_label")
        self.btn_set1.btn.grid(row=1, column=0, sticky=tk.W + tk.E, padx=5, pady=5)

        self.label_set5 = btk.MyLabelStyle(self.window, "Auto download DEMO after a LINK is found")
        self.label_set5.frame.grid(row=2, column=1, sticky=tk.W, padx=5, pady=5, columnspan=2)
        self.btn_set5 = btk.MyButtonStyle(self.window, "ON", lambda: self._change_setting(self.btn_set5), "auto_dl")
        self.btn_set5.btn.grid(row=2, column=0, sticky=tk.W + tk.E, padx=5, pady=5)

        self.label_set2 = btk.MyLabelStyle(self.window, "Use the browser to download (doesn't work with auto download)")
        self.label_set2.frame.grid(row=3, column=1, sticky=tk.W, padx=5, pady=5, columnspan=2)
        self.btn_set2 = btk.MyButtonStyle(self.window, "OFF", lambda: self._change_setting(self.btn_set2), "browser_dl")
        self.btn_set2.btn.grid(row=3, column=0, sticky=tk.W + tk.E, padx=5, pady=5)

        def lc_event2(event):
            if g.browser_path is None:
                web.open_new_tab(g.SITE_OWREV)
            else:
                sp.Popen(g.browser_path + " " + g.SITE_OWREV)

        self.label_set7 = btk.MyLabelStyle(self.window, "Add suspects to database (zahar.one/owrev)")
        self.label_set7.frame.grid(row=4, column=1, sticky=tk.W, padx=5, pady=5, columnspan=2)
        self.btn_set7 = btk.MyButtonStyle(self.window, "ON", lambda: self._change_setting(self.btn_set7), "add_to_db")
        self.btn_set7.btn.grid(row=4, column=0, sticky=tk.W + tk.E, padx=5, pady=5)
        self.label_set7.frame.config(cursor="hand2")
        self.label_set7.frame.bind("<Button-1>", lc_event2)

        self.label_set3 = btk.MyLabelStyle(self.window,
                                           "*" * 50 + "Download location when not using the browser" + "*" * 50)
        self.label_set3.frame.config(width=45)
        self.label_set3.frame.grid(row=5, column=0, sticky=tk.W + tk.E, pady=5, columnspan=4)
        self.btn_browse = btk.MyButtonStyle(self.window, "Browse", self._set_download_path)
        self.btn_browse.btn.grid(row=6, column=0, sticky=tk.W + tk.E, padx=5)
        self.entry_browse = btk.MyEntryStyle(self.window, g.settings_dict["dl_loc"])
        self.entry_browse.frame.grid(row=6, column=1, sticky=tk.W + tk.E, padx=5, columnspan=2)
        self.btn_opendl = btk.MyButtonStyle(self.window, "Open",
                                            lambda: os.system("start {}".format(g.settings_dict["dl_loc"])))
        self.btn_opendl.btn.grid(row=6, column=3, sticky=tk.E, padx=5, pady=5)
        self.label_set3_1 = btk.MyLabelStyle(self.window, "*" * 200)
        self.label_set3_1.frame.config(width=45)
        self.label_set3_1.frame.grid(row=7, column=0, sticky=tk.W + tk.E, columnspan=4)

        self.label_set4 = btk.MyLabelStyle(self.window, "Rename downloaded demos to ")
        self.label_set4.frame.grid(row=8, column=1, sticky=tk.W, padx=5, pady=5)
        self.btn_set3 = btk.MyButtonStyle(self.window, "ON", lambda: self._change_setting(self.btn_set3), "rename_dl")
        self.btn_set3.btn.grid(row=8, column=0, sticky=tk.W + tk.E, padx=5, pady=5)
        self.entry_demo = btk.MyEntryStyle(self.window, g.settings_dict["rename"])
        self.entry_demo.frame.config(state="normal")
        self.entry_demo.frame.grid(row=8, column=2, sticky=tk.W + tk.E, padx=5, columnspan=2)

        self.label_set6 = btk.MyLabelStyle(self.window, "Auto delete DEMO after it is analyzed")
        self.label_set6.frame.grid(row=9, column=1, sticky=tk.W, padx=5, pady=5, columnspan=2)
        self.btn_set6 = btk.MyButtonStyle(self.window, "ON", lambda: self._change_setting(self.btn_set6),
                                          "delete_after")
        self.btn_set6.btn.grid(row=9, column=0, sticky=tk.W + tk.E, padx=5, pady=5)

        # self.label_set7 = btk.MyLabelStyle(self.window, "Rank doodles")
        # self.label_set7.frame.grid(row=9, column=1, sticky=tk.W, padx=5, pady=5, columnspan=2)
        # self.btn_set7 = btk.MyButtonStyle(self.window, "OFF", lambda: self._change_setting(self.btn_set7),
        #                                   "rank_doodles")
        # self.btn_set7.btn.grid(row=9, column=0, sticky=tk.W + tk.E, padx=5, pady=5)

        def lc_event3(event):
            if g.browser_path is None:
                web.open_new_tab("https://steamcommunity.com/dev/apikey")
            else:
                sp.Popen(g.browser_path + " " + "https://steamcommunity.com/dev/apikey")

        self.label_skey = btk.MyLabelStyle(self.window, "API Key:")
        self.label_skey.frame.config(cursor="hand2")
        self.label_skey.frame.grid(row=10, column=0, padx=5, pady=5)
        self.label_skey.frame.bind("<Button-1>", lc_event3)
        self.entry_steam_key = btk.MyEntryStyle(self.window, g.settings_dict["steam_api_key"])
        self.entry_steam_key.frame.config(state="normal")
        self.entry_steam_key.frame.grid(row=10, column=1, sticky=tk.W + tk.E, padx=5, columnspan=3)

        self.btn_save = btk.MyButtonStyle(self.window, "Save settings", self._update_on_save)
        self.btn_save.btn.grid(row=11, column=3, sticky=tk.E, padx=5, pady=5)

        self.btn_analyze = btk.MyButtonStyle(self.window, "Analyze a demo", self._analyze_demo)
        self.btn_analyze.btn.grid(row=11, column=0, columnspan=2, sticky=tk.W, padx=5, pady=5)

        def lc_event1(event):
            if g.browser_path is None:
                web.open_new_tab(g.PROJECT_LINK)
            else:
                sp.Popen(g.browser_path + " " + g.PROJECT_LINK)

        self.label_github = btk.MyLabelStyle(self.window, "v{}   {}".format(g.VERSION, g.PROJECT_LINK))
        self.label_github.frame.config(cursor="hand2")
        self.label_github.frame.grid(row=11, column=1, padx=5, pady=5, columnspan=2)
        self.label_github.frame.bind("<Button-1>", lc_event1)

        self._update_all_settings()
        self.window.grid_columnconfigure(0, minsize=0.15 * sizex * g.settings_dict["scaling"], weight=1)
        self.window.grid_columnconfigure(1, minsize=0.5 * sizex * g.settings_dict["scaling"], weight=1)
        self.window.grid_columnconfigure(2, minsize=0.15 * sizex * g.settings_dict["scaling"], weight=1)
        self.window.grid_columnconfigure(3, minsize=0.2 * sizex * g.settings_dict["scaling"], weight=1)

        self.window.grid_rowconfigure(0, minsize=0.083 * sizey * g.settings_dict["scaling"], weight=1)
        self.window.grid_rowconfigure(1, minsize=0.083 * sizey * g.settings_dict["scaling"], weight=1)
        self.window.grid_rowconfigure(2, minsize=0.083 * sizey * g.settings_dict["scaling"], weight=1)
        self.window.grid_rowconfigure(3, minsize=0.083 * sizey * g.settings_dict["scaling"], weight=1)
        self.window.grid_rowconfigure(4, minsize=0.083 * sizey * g.settings_dict["scaling"], weight=1)
        self.window.grid_rowconfigure(5, minsize=0.083 * sizey * g.settings_dict["scaling"], weight=1)
        self.window.grid_rowconfigure(6, minsize=0.083 * sizey * g.settings_dict["scaling"], weight=1)
        self.window.grid_rowconfigure(7, minsize=0.083 * sizey * g.settings_dict["scaling"], weight=1)
        self.window.grid_rowconfigure(8, minsize=0.083 * sizey * g.settings_dict["scaling"], weight=1)
        self.window.grid_rowconfigure(9, minsize=0.083 * sizey * g.settings_dict["scaling"], weight=1)
        self.window.grid_rowconfigure(10, minsize=0.083 * sizey * g.settings_dict["scaling"], weight=1)
        self.window.grid_rowconfigure(11, minsize=0.083 * sizey * g.settings_dict["scaling"], weight=1)

        self.window.grid_propagate(False)
        self.window.update_idletasks()
        self.window.geometry("+%d+%d" % (f.calc_window_pos(root, self.window)))
        self.window.grab_set()
        self.window.focus_set()
Esempio n. 10
0
    def __init__(self, root, nrplayers, nrbanned):
        self.window = tk.Toplevel(root)
        self.window.transient(root)
        self.window.title("WatchList Extra Stats")
        self.window.minsize(750, 350)
        sizex = self.window.minsize()[0]
        # sizey = self.window.minsize()[1]
        self.window.resizable(False, False)
        # self.window.attributes("-topmost")
        self.window.config(bg="#101010")
        self.window.protocol("WM_DELETE_WINDOW", self.window.destroy)
        self.window.bind("<MouseWheel>", self._scroll_func_mwheel)

        self.map_dict = dict()
        self.rank_dict = dict()
        self.server_dict = dict()
        self.mode_dict = dict()
        self.map_dict_b = dict()
        self.rank_dict_b = dict()
        self.server_dict_b = dict()
        self.mode_dict_b = dict()
        self.nrall = nrplayers
        self.nrbanned = nrbanned
        self._all_stats = True
        # self.labels_list = list()
        self._check_more_stats()

        frame = tk.Frame(self.window, bg="#101010", width=sizex, height=20)
        label = btk.MyLabelStyle(frame, "RANKS")
        label.frame.config(font=("",
                                 math.ceil(12 * g.settings_dict["scaling"]),
                                 "bold"))
        label.frame.grid(row=0, column=0, padx=5, sticky=tk.W + tk.E)
        label = btk.MyLabelStyle(frame, "MAPS")
        label.frame.config(font=("",
                                 math.ceil(12 * g.settings_dict["scaling"]),
                                 "bold"))
        label.frame.grid(row=0, column=1, padx=5, sticky=tk.W + tk.E)
        label = btk.MyLabelStyle(frame, "SERVERS")
        label.frame.config(font=("",
                                 math.ceil(12 * g.settings_dict["scaling"]),
                                 "bold"))
        label.frame.grid(row=0, column=2, padx=5, sticky=tk.W + tk.E)
        label = btk.MyLabelStyle(frame, "MODES")
        label.frame.config(font=("",
                                 math.ceil(12 * g.settings_dict["scaling"]),
                                 "bold"))
        label.frame.grid(row=0, column=3, padx=5, sticky=tk.W + tk.E)

        frame.grid_columnconfigure(0,
                                   minsize=0.1 * sizex *
                                   g.settings_dict["scaling"],
                                   weight=1)
        frame.grid_columnconfigure(1,
                                   minsize=0.15 * sizex *
                                   g.settings_dict["scaling"],
                                   weight=1)
        frame.grid_columnconfigure(2,
                                   minsize=0.25 * sizex *
                                   g.settings_dict["scaling"],
                                   weight=1)
        frame.grid_columnconfigure(3,
                                   minsize=0.2 * sizex *
                                   g.settings_dict["scaling"],
                                   weight=1)

        frame.grid_propagate(False)
        frame.pack(fill=tk.X)
        frame = tk.Frame(self.window, bg="#101010", width=sizex, height=20)
        label = btk.MyLabelStyle(frame, "_" * 300)
        label.frame.pack()
        frame.pack_propagate(False)
        frame.pack(fill=tk.X)

        self.stats_frame = tk.Frame(self.window,
                                    bg="#101010",
                                    width=sizex,
                                    height=20)

        self.scrollbar = tk.Scrollbar(self.stats_frame,
                                      orient=tk.VERTICAL,
                                      command=self._scroll_func)
        self.scrollbar.grid(row=0, column=4, padx=3, sticky=tk.N + tk.S)
        # self.scrollbar.config(bd=5, highlightthickness=0, bg="#101010", activebackground="#101010", troughcolor="#101010",
        #                       activerelief=tk.FLAT)

        self.rank_box = btk.MyListboxStyle(self.stats_frame, [], addmenu=False)
        self.rank_box.box.config(selectmode=tk.BROWSE,
                                 height=15,
                                 highlightthickness=0,
                                 relief=tk.FLAT,
                                 yscrollcommand=self.scrollbar.set)
        # self.rank_box.box.bind("<MouseWheel>", self._scroll_func_mwheel)
        self.map_box = btk.MyListboxStyle(self.stats_frame, [], addmenu=False)
        self.map_box.box.config(selectmode=tk.BROWSE,
                                height=15,
                                highlightthickness=0,
                                relief=tk.FLAT,
                                yscrollcommand=self.scrollbar.set)
        # self.map_box.box.bind("<MouseWheel>", self._scroll_func_mwheel)
        self.server_box = btk.MyListboxStyle(self.stats_frame, [],
                                             addmenu=False)
        self.server_box.box.config(selectmode=tk.BROWSE,
                                   height=15,
                                   highlightthickness=0,
                                   relief=tk.FLAT,
                                   yscrollcommand=self.scrollbar.set)
        # self.server_box.box.bind("<MouseWheel>", self._scroll_func_mwheel)
        self.mode_box = btk.MyListboxStyle(self.stats_frame, [], addmenu=False)
        self.mode_box.box.config(selectmode=tk.BROWSE,
                                 height=15,
                                 highlightthickness=0,
                                 relief=tk.FLAT,
                                 yscrollcommand=self.scrollbar.set)
        # self.mode_box.box.bind("<MouseWheel>", self._scroll_func_mwheel)
        self.rank_box.box.grid(row=0, column=0, sticky=tk.NSEW)
        self.map_box.box.grid(row=0, column=1, sticky=tk.NSEW)
        self.server_box.box.grid(row=0, column=2, sticky=tk.NSEW)
        self.mode_box.box.grid(row=0, column=3, sticky=tk.NSEW)

        self._show_stats(nrplayers)

        self.stats_frame.grid_columnconfigure(0,
                                              minsize=0.16 * sizex *
                                              g.settings_dict["scaling"],
                                              weight=1)
        self.stats_frame.grid_columnconfigure(1,
                                              minsize=0.31 * sizex *
                                              g.settings_dict["scaling"],
                                              weight=1)
        self.stats_frame.grid_columnconfigure(2,
                                              minsize=0.24 * sizex *
                                              g.settings_dict["scaling"],
                                              weight=1)
        self.stats_frame.grid_columnconfigure(3,
                                              minsize=0.22 * sizex *
                                              g.settings_dict["scaling"],
                                              weight=1)
        # self.stats_frame.grid_columnconfigure(4, minsize=0.06 * sizex, weight=1)

        # frame.grid_propagate(False)
        self.stats_frame.pack(fill=tk.BOTH)

        frame = tk.Frame(self.window, bg="#101010", width=sizex, height=20)
        self.btn1 = btk.MyButtonStyle(frame, "Show only banned players",
                                      self._switch_stats)
        self.btn1.btn.pack(padx=5, pady=5)
        frame.pack(pady=10, fill=tk.X)

        # self.window.pack_propagate(False)
        self.window.update_idletasks()
        self.window.geometry("+%d+%d" % (f.calc_window_pos(root, self.window)))
        self.window.grab_set()
        self.window.focus_set()