Beispiel #1
0
class StrategyShareToplevel(Parent):
    """
    Toplevel to display a list of strategy with checkboxes to allow
    selecting which should be shared.
    """
    def __init__(self, master, client, database, strategy_frame, **kwargs):
        """
        :param master: master widget
        :param client: network.strategy.client.StrategyClient
        :param database: results.strategies.StrategyDataBase
        :param strategy_frame: frames.strategy.StrategyFrame
        :param kwargs: SnapToplevel keyword arguments
        """
        resizable = kwargs.pop("resizable", False)
        self._client = client
        self._database = database
        self._frame = strategy_frame
        Parent.__init__(self, master, **kwargs)
        self.wm_title("GSF Parser: Strategy Sharing")
        self.wm_resizable(resizable, resizable)
        # Configure the Treeview
        self.tree = CheckboxTreeview(master=self, height=16)
        self.tree.column("#0", width=200)
        self.tree.heading("#0", text="Strategy")
        self.tree.config(show=("headings", "tree"))
        self.scroll_bar = ttk.Scrollbar(self, orient=tk.VERTICAL, command=self.tree.yview)
        self.tree.config(yscrollcommand=self.scroll_bar.set)
        self.update_strategy_tree()
        self.share_button = ttk.Button(self, text="Share Strategies", command=self.share_strategies)
        self.grid_widgets()

    def grid_widgets(self):
        self.tree.grid(row=1, column=1, sticky="nswe", padx=5, pady=5)
        self.scroll_bar.grid(row=1, column=2, sticky="ns", padx=(0, 5), pady=5)
        self.share_button.grid(row=2, column=1, columnspan=2, sticky="nswe", padx=5, pady=(0, 5))

    def share_strategies(self):
        for strategy in self.strategies_to_share:
            self._client.send_strategy(strategy)
        messagebox.showinfo("Info", "Selected Strategies sent.")

    def update_strategy_tree(self):
        self.tree.delete(*self.tree.get_children(""))
        for strategy in sorted(self._database.keys()):
            self.tree.insert("", tk.END, iid=strategy, text=strategy)

    @property
    def strategies_to_share(self):
        for strategy in self.tree.get_checked():
            yield self._database[strategy]
Beispiel #2
0
class LeftPanel:
    def __init__(self, root, frame):
        self.root = root
        self.frame = Frame(frame)

        # Create the toolbar as a frame

        self.frame.columnconfigure(0, weight=1)
        self.frame.columnconfigure(1, weight=1)
        self.frame.rowconfigure(0, weight=1)
        self.frame.rowconfigure(1, weight=1)
        self.frame.grid_rowconfigure(1, minsize=70)

        self.img1 = Image.open("icons/open-folder.png").convert('RGBA')
        self.useImg1 = ImageTk.PhotoImage(self.img1)

        self.path = os.path.dirname(__file__)

        #self.style = ttk.Style()
        #self.style.configure('Treeview', rowheight=40)
        self.tree =  CheckboxTreeview(self.frame)

        #self.tree.pack(expand=YES, fill=BOTH)
        self.tree.heading("#0", text="Ficheiros")

        self.dir = self.tree.insert('', 'end', text=self.path, open=True)
        self.Subs(self.path, self.dir)


        self.tree.grid(row=0, column=0, columnspan=2, padx=4, pady=4, sticky=ALL)

        Button(self.frame, image=self.useImg1, width=70, height=70, command=self.browse_button).grid(row=2, column=1, padx=4, pady=4, sticky=E)

        self.frame.pack(side=TOP, fill=BOTH)

    def Subs(self, path, parent):
        for p in os.listdir(path):
            abspath = os.path.join(path, p)
            parent_element = self.tree.insert(parent, 'end', text=p, open=True)
            if os.path.isdir(abspath):
                self.Subs(abspath, parent_element)

    def browse_button(self):
        self.path = tkFileDialog.askdirectory()


    def set_dir(self):
        sourcePath = str(self.path)
        os.chdir(sourcePath)
Beispiel #3
0
class TreeviewConstructor(object):
    logger = CustomAdapter(logging.getLogger(str(__name__)), None)

    @debug(lvl=logging.NOTSET, prefix='')
    def __init__(self, master, frame_main, checkwidth=0):
        self.master = master  # Done
        self.frame = frame_main  # Done
        self.col_obj_dict = {}  # Done
        self.column_lst = []  # Done
        self.col_disp_lst = []  # Done
        self.item_obj_dict = {}
        self.treeview = CheckboxTreeview(self.frame)  # Done
        self.ysb = ttk.Scrollbar(self.frame)  # Done
        self.xsb = ttk.Scrollbar(self.frame)  # Done
        self.checkwidth = checkwidth
        self.manager = BusyManager(self.frame)
        self.populate_frame()  # Done

    @debug(lvl=logging.NOTSET, prefix='')
    def populate_frame(self):
        self.frame.columnconfigure(0, weight=1)  # Done
        self.frame.rowconfigure(0, weight=1)  # Done
        self.treeview.grid(row=0, column=0, sticky=tk.NSEW)  # Done
        self.ysb.config(orient=tk.VERTICAL, command=self.treeview.yview)  # Done
        self.xsb.config(orient=tk.HORIZONTAL, command=self.treeview.xview)  # Done
        self.treeview['yscroll'] = self.ysb.set  # Done
        self.treeview['xscroll'] = self.xsb.set  # Done
        self.ysb.grid(row=0, column=1, sticky=tk.NS)  # Done
        self.xsb.grid(row=1, column=0, sticky=tk.EW)  # Done

    @debug(lvl=logging.NOTSET, prefix='')
    def populate_cols(self):
        col_obj = TreeColumn(order=0,
                             col_id='#0',
                             hdr_txt="",
                             anchor=tk.W,
                             stretch=tk.NO,
                             minwidth=0,
                             width=self.checkwidth,
                             display=False)
        TreeviewConstructor.logger.log(logging.NOTSET, "Column ID: {col_id} Header Text: {hdr_txt}".
                                       format(col_id=col_obj.col_id, hdr_txt=col_obj.hdr_txt))
        self.col_obj_dict[col_obj.col_id] = col_obj

        for col_key, column in sorted(self.col_obj_dict.items(), key=lambda x: x[1].order):
            self.column_lst.append(column.col_id)
            if column.display:
                self.col_disp_lst.append(column.col_id)

        self.treeview.config(columns=self.column_lst, displaycolumns=self.col_disp_lst)
        self.treeview.tag_configure('red', foreground='red2')
        self.treeview.tag_configure('evenrow', background='gray85')
        self.treeview.tag_configure('oddrow', background='white')

        for col in self.col_obj_dict.values():
            TreeviewConstructor.logger.log(
                logging.NOTSET,
                "Column ID: {col_id} Header Text: {hdr_txt} Anchor: {anchor}".format(
                    col_id=col.col_id, hdr_txt=col.hdr_txt, anchor=col.anchor))
            if col.hdr_txt in (None, ""):
                header = col.col_id
            else:
                header = col.hdr_txt
            self.treeview.heading(column=col.col_id,
                                  text=header,
                                  anchor=col.anchor,
                                  command=lambda _col=col.col_id: self.treeview_sort_column(_col, False))
            self.treeview.column(col.col_id, minwidth=col.minwidth, width=col.width, stretch=col.stretch)

    @debug(lvl=logging.DEBUG, prefix='')
    def populate_items(self):
        for item in self.item_obj_dict.values():
            TreeRow.logger.log(logging.NOTSET, "Item Info: {0}".format(item.iid))
            self.treeview.insert(item.parent, item.index, iid=item.iid, values=item.values_list)
            for tag in item.tags_list:
                self.treeview.tag_add(item.iid, tag)

    @debug(lvl=logging.DEBUG, prefix='')
    def stripe_rows(self):
        for item in self.item_obj_dict.values():
            self.treeview.tag_del(item.iid, 'evenrow')
            self.treeview.tag_del(item.iid, 'oddrow')
            row_num = self.treeview.index(item.iid)
            if row_num % 2 == 0:
                self.treeview.tag_add(item.iid, 'evenrow')
            elif row_num % 2 != 0:
                self.treeview.tag_add(item.iid, 'oddrow')

    @debug(lvl=logging.DEBUG, prefix='')
    def treeview_sort_column(self, col, reverse):
        self.manager.busy()
        item_list = [(self.treeview.set(k, col), k) for k in self.treeview.get_children('')]
        item_list.sort(reverse=reverse)
        # rearrange items in sorted positions
        for index, (val, k) in enumerate(item_list):
            self.treeview.move(k, '', index)
        self.stripe_rows()
        # reverse sort next time
        self.treeview.heading(col, command=lambda: self.treeview_sort_column(col, not reverse))
        self.manager.not_busy()

    @debug(lvl=logging.DEBUG, prefix='')
    def tv_refresh(self):
        # self.manager.busy()
        item_list = list(self.treeview.get_children(''))
        item_list.sort(key=lambda x: int(x))
        for item_iid, item_obj in sorted(self.item_obj_dict.items()):
            TreeRow.logger.log(logging.NOTSET, "Item ID: {0}".format(item_iid))
            # l = self.treeview.get_children('')
            for index, k in enumerate(item_list):
                TreeRow.logger.log(logging.NOTSET, "k: {0}".format(k))
                if str(item_iid) == str(k):
                    self.treeview.delete(k)
                    item_obj.index = index
                    self.treeview.insert(item_obj.parent, item_obj.index, iid=item_obj.iid, values=item_obj.values_list)
                    item_list.remove(k)
                    break
        self.stripe_rows()
class TreeviewConstructor(ttk.Frame):
    logger = CustomAdapter(logging.getLogger(str(__name__)), None)

    @debug(lvl=logging.DEBUG, prefix='')
    def __init__(self, master, *args, **kwargs):
        self.col_obj_dict = {}
        self.column_lst = []
        self.col_disp_lst = []
        self.item_obj_dict = {}
        self.master = master

        # noinspection PyArgumentList
        super().__init__(self.master, *args, **kwargs)

        self.columnconfigure(0, weight=1)
        self.rowconfigure(0, weight=1)

        self.treeview = CheckboxTreeview(self)
        TreeviewConstructor.logger.log(logging.DEBUG, "10")
        self.treeview.grid(row=0, column=0, sticky=tk.NSEW)
        TreeviewConstructor.logger.log(logging.DEBUG, "11")

        self.ysb = ttk.Scrollbar(self)
        TreeviewConstructor.logger.log(logging.DEBUG, "12")
        self.ysb.grid(row=0, column=1, sticky=tk.NS)
        TreeviewConstructor.logger.log(logging.DEBUG, "13")
        self.ysb.config(orient=tk.VERTICAL, command=self.treeview.yview)
        TreeviewConstructor.logger.log(logging.DEBUG, "14")

        self.xsb = ttk.Scrollbar(self)
        TreeviewConstructor.logger.log(logging.DEBUG, "15")
        self.xsb.grid(row=1, column=0, sticky=tk.EW)
        TreeviewConstructor.logger.log(logging.DEBUG, "16")
        self.xsb.config(orient=tk.HORIZONTAL, command=self.treeview.xview)
        TreeviewConstructor.logger.log(logging.DEBUG, "17")

        self.treeview['yscroll'] = self.ysb.set
        TreeviewConstructor.logger.log(logging.DEBUG, "18")
        self.treeview['xscroll'] = self.xsb.set
        TreeviewConstructor.logger.log(logging.DEBUG, "19")
        # self.manager = BusyManager(self.frame)

    @debug(lvl=logging.DEBUG, prefix='')
    def populate_cols(self, checkwidth):
        col_obj = TreeColumn(order=0,
                             col_id='#0',
                             hdr_txt="",
                             anchor=tk.W,
                             stretch=tk.NO,
                             minwidth=0,
                             width=checkwidth,
                             display=False)
        TreeviewConstructor.logger.log(
            logging.DEBUG, "Column ID: {col_id} Header Text: {hdr_txt}".format(
                col_id=col_obj.col_id, hdr_txt=col_obj.hdr_txt))
        self.col_obj_dict[col_obj.col_id] = col_obj

        for col_key, column in sorted(self.col_obj_dict.items(),
                                      key=lambda x: x[1].order):
            self.column_lst.append(column.col_id)
            if column.display:
                self.col_disp_lst.append(column.col_id)

        self.treeview.config(columns=self.column_lst,
                             displaycolumns=self.col_disp_lst)
        self.treeview.tag_configure('red',
                                    foreground='red4',
                                    background='IndianRed1')
        self.treeview.tag_configure('parent_evenrow', background='gray85')
        self.treeview.tag_configure('child_evenrow', background="honeydew3")
        self.treeview.tag_configure('parent_oddrow', background='white')
        self.treeview.tag_configure('child_oddrow', background="honeydew2")

        for col in self.col_obj_dict.values():
            TreeviewConstructor.logger.log(
                logging.DEBUG,
                "Column ID: {col_id} Header Text: {hdr_txt} Anchor: {anchor}".
                format(col_id=col.col_id,
                       hdr_txt=col.hdr_txt,
                       anchor=col.anchor))
            if col.hdr_txt in (None, ""):
                header = col.col_id
            else:
                header = col.hdr_txt
            if col.col_id == '#0':
                self.treeview.heading(column=col.col_id,
                                      text="",
                                      anchor=col.anchor,
                                      command=lambda _col=col.col_id: self.
                                      treeview_sort_column(_col, False))
            else:
                self.treeview.heading(column=col.col_id,
                                      text=header,
                                      anchor=col.anchor,
                                      command=lambda _col=col.col_id: self.
                                      treeview_sort_column(_col, False))

            self.treeview.column(col.col_id,
                                 minwidth=col.minwidth,
                                 width=col.width,
                                 stretch=col.stretch)

    @debug(lvl=logging.DEBUG, prefix='')
    def populate_items(self):
        for item in self.item_obj_dict.values():
            TreeviewConstructor.logger.log(logging.NOTSET,
                                           "Item Info: {0}".format(item.iid))
            self.treeview.insert(item.parent,
                                 item.index,
                                 iid=item.iid,
                                 values=item.values_list)
            for tag in item.tags_list:
                self.treeview.tag_add(item.iid, tag)

    @debug(lvl=logging.DEBUG, prefix='')
    def stripe_rows(self):
        for item in self.item_obj_dict.values():
            self.treeview.tag_del(item.iid, 'parent_evenrow')
            self.treeview.tag_del(item.iid, 'child_evenrow')
            self.treeview.tag_del(item.iid, 'parent_oddrow')
            self.treeview.tag_del(item.iid, 'child_oddrow')
            row_num = self.treeview.index(item.iid)
            if row_num % 2 == 0:
                if item.parent == "":
                    self.treeview.tag_add(item.iid, 'child_evenrow')
                else:
                    self.treeview.tag_add(item.iid, 'parent_evenrow')
            elif row_num % 2 != 0:
                if item.parent == "":
                    self.treeview.tag_add(item.iid, 'child_oddrow')
                else:
                    self.treeview.tag_add(item.iid, 'parent_oddrow')

    @debug(lvl=logging.DEBUG, prefix='')
    def treeview_sort_column(self, col, reverse):
        # self.manager.busy()
        item_list = [(self.treeview.set(k, col), k)
                     for k in self.treeview.get_children('')]
        item_list.sort(reverse=reverse)
        # rearrange items in sorted positions
        for index, (val, k) in enumerate(item_list):
            self.treeview.move(k, '', index)
        self.stripe_rows()
        # reverse sort next time
        self.treeview.heading(
            col, command=lambda: self.treeview_sort_column(col, not reverse))
        # self.manager.not_busy()

    @debug(lvl=logging.DEBUG, prefix='')
    def tv_refresh(self):
        # self.manager.busy()
        item_list = list(self.treeview.get_children(''))
        item_list.sort(key=lambda x: int(x))
        for item_iid, item_obj in sorted(self.item_obj_dict.items()):
            TreeviewConstructor.logger.log(logging.DEBUG,
                                           "Item ID: {0}".format(item_iid))
            # l = self.treeview.get_children('')
            for index, k in enumerate(item_list):
                TreeviewConstructor.logger.log(logging.DEBUG,
                                               "k: {0}".format(k))
                if str(item_iid) == str(k):
                    self.treeview.delete(k)
                    item_obj.index = index
                    self.treeview.insert(item_obj.parent,
                                         item_obj.index,
                                         iid=item_obj.iid,
                                         values=item_obj.values_list)
                    item_list.remove(k)
                    break
        self.stripe_rows()
        # self.manager.not_busy()

    @debug(lvl=logging.DEBUG, prefix='')
    def add_column(self,
                   order=None,
                   col_id=None,
                   hdr_txt="",
                   anchor=tk.W,
                   stretch=tk.YES,
                   minwidth=0,
                   width=50,
                   display=True,
                   desc=None):
        col_obj = TreeColumn(order=order,
                             col_id=col_id,
                             hdr_txt=hdr_txt,
                             anchor=anchor,
                             stretch=stretch,
                             minwidth=minwidth,
                             width=width,
                             display=display,
                             desc=desc)
        self.col_obj_dict[col_obj.col_id] = col_obj

    @debug(lvl=logging.NOTSET, prefix='')
    def add_item(self, iid, parent="", index=tk.END, values_dict=None):
        item_obj = TreeRow(treeview_const=self,
                           iid=iid,
                           parent=parent,
                           index=index,
                           values_dict=values_dict)
        self.item_obj_dict[item_obj.iid] = item_obj

    @debug(lvl=logging.DEBUG, prefix='')
    def columns_from_query(self, query, hide_list=None, pref_order=None):
        if pref_order is None:
            pref_order = []
        if hide_list is None:
            hide_list = []

        col_order = 1
        col_order += len(pref_order)
        TreeviewConstructor.logger.log(
            logging.DEBUG,
            "Column Order Starting Value: {0}".format(str(col_order)))

        for desc in query.column_descriptions:
            name = desc.get('name').replace("'", "").replace('"', "")
            TreeviewConstructor.logger.log(logging.DEBUG,
                                           "Column Name: {0}".format(name))
            disp = True
            if name in hide_list:
                disp = False
            cust_order = col_order
            if name in pref_order:
                cust_order = pref_order.index(name) + 1
            self.add_column(order=cust_order,
                            col_id=name.replace(" ", "_"),
                            hdr_txt=name,
                            display=disp,
                            desc=desc)
            if name not in pref_order:
                col_order += 1

    @debug(lvl=logging.DEBUG, prefix='')
    def rows_from_query(self,
                        query,
                        id_col="line_number",
                        limit=None,
                        parent_col=None):
        counter = 1
        for row in query.all():
            temp_dict = {}
            for col_obj in self.col_obj_dict.values():
                # noinspection PyProtectedMember
                value = row._asdict().get(col_obj.hdr_txt)
                if isinstance(value, str):
                    value.replace("{", "").replace("}", "")
                temp_dict[str(col_obj.order)] = value
            counter += 1
            if counter == limit:
                break
            parent = ""
            if parent_col is not None:
                # noinspection PyProtectedMember
                if str(row._asdict().get(id_col)) != str(
                        row._asdict().get(parent_col)):
                    # noinspection PyProtectedMember
                    parent = str(row._asdict().get(parent_col))
            # noinspection PyProtectedMember
            self.add_item(iid=str(row._asdict().get(id_col)),
                          values_dict=temp_dict,
                          parent=parent)

    @debug(lvl=logging.DEBUG, prefix='')
    def populate_query(self,
                       query,
                       hide_list=None,
                       pref_order=None,
                       id_col="line_number",
                       limit=None,
                       checkwidth=0,
                       parent_col=None):
        the_query = query
        self.columns_from_query(the_query, hide_list, pref_order)
        self.populate_cols(checkwidth=checkwidth)
        self.rows_from_query(the_query, id_col, limit, parent_col)
        self.populate_items()
        self.stripe_rows()
Beispiel #5
0
main_tree.insert("",
                 "end",
                 text="Anantha" + "kumar" + 'Kondra' + 'Anantha Kumar Kondra')

vsbar = tk.Scrollbar(checkingFrame,
                     orient=tk.VERTICAL,
                     command=main_tree.yview)
vsbar.grid(row=0, column=1, sticky=tk.NS)

hsbar = tk.Scrollbar(checkingFrame,
                     orient=tk.HORIZONTAL,
                     command=main_tree.xview)
hsbar.grid(row=1, column=0, sticky=tk.EW)

main_tree.config(xscroll=hsbar.set, yscroll=vsbar.set)
main_tree.grid(row=0, column=0)
canvas_tree.create_window((0, 0), window=main_tree, anchor=tk.NW)
canvas_tree.configure(yscrollcommand=vsbar.set, xscrollcommand=hsbar.set)

main_tree.update_idletasks()
bbox = canvas_tree.bbox(tk.ALL)
canvas_tree.configure(scrollregion=bbox, width=400, height=400)

# can=tk.Canvas(f1,width=500)
# tree=CheckboxTreeview(can,show='tree')
# tree.column('#0',minwidth=350,stretch=True,width=300)
# tree.insert("", "end", "1", text="1"+'2')
# tree.insert("1", "end", "11", text="11")
# tree.insert("1", "end", "12", text="Anantha"+"kumar"+'Kondra'+'Anantha Kumar Kondra')
# tree.insert("11", "end", "111",text="Anantha"+"kumar"+'Kondra'+'Anantha Kumar Kondra' )
# tree.insert("", "end", "2", text="Anantha"+"kumar"+'Kondra'+'Anantha Kumar Kondra')
Beispiel #6
0
f1 = tk.Frame(root, width=490, height=490)
f1.grid()

can = tk.Canvas(f1, width=500)
tree = CheckboxTreeview(can, show='tree')
tree.column('#0', minwidth=350, stretch=True, width=300)
tree.insert("", "end", "1", text="1" + '2')
tree.insert("1", "end", "11", text="11")
tree.insert("1",
            "end",
            "12",
            text="Anantha" + "kumar" + 'Kondra' + 'Anantha Kumar Kondra')
tree.insert("11",
            "end",
            "111",
            text="Anantha" + "kumar" + 'Kondra' + 'Anantha Kumar Kondra')
tree.insert("",
            "end",
            "2",
            text="Anantha" + "kumar" + 'Kondra' + 'Anantha Kumar Kondra')
tree.grid()

xscrol = ttk.Scrollbar(can, orient=tk.HORIZONTAL, command=tree.xview)
xscrol.grid_anchor(anchor=tk.S)
xscrol.grid(sticky='ew')

tree.config(xscroll=xscrol.set)

can.grid(row=0, column=0, sticky=tk.N + tk.S + tk.E + tk.W)

root.mainloop()
Beispiel #7
0
def Main():
    window = tkinter.Tk()
    window.title('Security Checker')  # Title
    window.geometry('500x350+450+200')  # Resolution
    window['padx'] = 8
    # window.iconbitmap(default="Appwheel.ico")  # App icon
    title_font = tkfont.Font(family='Arial', size=10,
                             weight="bold")  # Fonts within the App
    label1 = ttk.Label(text="Check the boxes:",
                       font=title_font)  # Writings within the App
    label1.grid(row=0, column=0, sticky="nw", pady=8)

    window.grid_columnconfigure(0, weight=1)
    window.grid_columnconfigure(1, weight=1)
    window.grid_columnconfigure(2, weight=3)
    window.grid_columnconfigure(3, weight=2)
    window.grid_columnconfigure(4, weight=2)
    window.grid_rowconfigure(0, weight=1)
    window.grid_rowconfigure(1, weight=10)
    window.grid_rowconfigure(2, weight=2)
    window.grid_rowconfigure(3, weight=3)
    window.grid_rowconfigure(4, weight=3)

    tree = CheckboxTreeview  # Variable tree equals tree view
    # Edit dictionaries as you like
    # Dict #1
    cisco = {
        1: "enable secret",
        2: "aaa new-model",
        3: "service-password encryption",
        4: "ip ssh version 2",
        5: "motd",
        6: "no logging console",
        7: "no logging monitor",
        8: "vtp password"
    }
    # Dict 2
    smbv1_patch = {
        100: "KB4012598",
        101: "KB4012212",
        102: "KB4012215",
        103: "KB4012213",
        104: "KB4012216",
        105: "KB4012214",
        106: "KB4012217",
        107: "KB4012606",
        108: "KB4013198",
        109: "KB4013429"
    }

    # What should not be present in a configuration files
    should_not_be = [
        "enable password", "snmp-server community public",
        "transport input telnet", "EnableSMB1Protocol              : True"
    ]

    scrollbar1 = ttk.Scrollbar(window, orient="vertical",
                               command=tree.yview)  # Scroll bar
    scrollbar1.grid(row=1, column=6, sticky='nse')

    tree = CheckboxTreeview(yscrollcommand=scrollbar1)
    tree.grid(column=0, columnspan=6, row=1, sticky="news")  # Tree position

    tree.insert("", "end", "1", text="1. CISCO Hardening")
    tree.insert("1", "end", "sub0", text="1.1 Generic configs")
    tree.insert("sub0", "end", cisco[1], text="1.1.1 Password Hash")
    tree.insert("sub0", "end", cisco[3], text="1.1.2 Password Encryption")
    tree.insert("sub0", "end", cisco[2], text="1.1.3 AAA configuration")
    tree.insert("sub0", "end", cisco[4], text="1.1.4 SSH version 2")
    tree.insert("sub0", "end", cisco[5], text="1.1.5 MOTD")
    tree.insert("sub0", "end", cisco[8], text="1.1.6 VTP Password")
    tree.insert("sub0", "end", cisco[6], text="1.1.7 No logging console")
    tree.insert("sub0", "end", cisco[7], text="1.1.8 No logging monitor")

    tree.insert("", "end", "2", text="2. Microsoft SMBv1 Patching Check")
    tree.insert("2",
                "end",
                smbv1_patch[100],
                text="2.1 Windows Vista & Server 2008 (KB4012598)")
    tree.insert("2", "end", "sub10", text="2.2 Windows 7 & Server 2008 R2")
    tree.insert("sub10", "end", smbv1_patch[101], text="2.2 KB4012212")
    tree.insert("sub10", "end", smbv1_patch[102], text="2.3 KB4012215")

    tree.insert("2",
                "end",
                "sub11",
                text="2.4 Windows 8.1 & Server 2012 & 2012 R2")
    tree.insert("sub11", "end", smbv1_patch[103], text="2.4 KB4012213")
    tree.insert("sub11", "end", smbv1_patch[104], text="2.5 KB4012216")
    tree.insert("sub11", "end", smbv1_patch[105], text="2.6 KB4012214")
    tree.insert("sub11", "end", smbv1_patch[106], text="2.7 KB4012217")

    tree.insert("2", "end", "sub12", text="2.8 Windows 10 & Server 2016")
    tree.insert("sub12", "end", smbv1_patch[107], text="2.8 KB4012606")
    tree.insert("sub12", "end", smbv1_patch[108], text="2.7 KB4013198")
    tree.insert("sub12", "end", smbv1_patch[109], text="2.8 KB4013429")

    button2 = ttk.Button(text="Quit", command=sys.exit)  # Close Button
    button2.grid(row=4, column=0, sticky='ws', padx=10,
                 pady=10)  # Close button position

    checked_boxes = list()  # List for appending selected boxes
    lines_in_conf_file = list()  # List for appending the read file
    passed = str('Passed\t\t')
    not_passed = str('Not Passed\t\t')

    def box_select(just):  # Function for appending selected boxes
        checked_boxes.append(tree.get_checked())

    tree.bind('<<TreeviewSelect>>', box_select)

    def file_open():

        if len(tree.get_checked()) > 0:
            readfile = filedialog.askopenfilename(initialdir="/",
                                                  title="Select "
                                                  "configuration"
                                                  " file",
                                                  filetypes=(("txt "
                                                              "files",
                                                              "*.txt *.html"),
                                                             ("all "
                                                              "files", "*.*")))

            try:
                with open(readfile, "r", encoding='utf-8') as opened_file:
                    for i in opened_file:
                        pass
                    encodings = 'utf-8'
            except UnicodeDecodeError:
                encodings = 'utf-16'

            with open(readfile, "r", encoding=encodings) as opened_file:
                for read_line in opened_file:
                    lines_in_conf_file.append(read_line.strip('\n'))
                with open("temp.txt", "a") as conf:  # Opens file --ONCE--
                    for clause in checked_boxes[-1]:  # Loops over selection
                        for line in lines_in_conf_file:  # Loops over conf file
                            if clause in line:  # Checks what equals between loops
                                conf.write("{}".format(passed) + clause +
                                           "\n")  # Writing them into a file
                                break  # Ends IF statement and continues with
                        else:  # a loop on a conf file
                            if clause in should_not_be:  # Checks if selection in not wanted list
                                conf.write(
                                    "{}".format(passed) + clause +
                                    "\n")  # if yes, writes to a file "PASSED"
                            else:
                                conf.write(
                                    "{}".format(not_passed) + clause +
                                    "\n")  # if not, writes to a file "NOT
                                # PASSED"

                checked_configs()

        else:
            pop_up_msg()

    def checked_configs():
        checked = tkinter.Tk()
        # checked.iconbitmap(default="Appwheel.ico")  # App icon
        checked.geometry('650x500+650+300')  # Resolution
        checked.wm_title("Security Checker")

        checked.grid_columnconfigure(0, weight=1)
        checked.grid_columnconfigure(1, weight=1)
        checked.grid_columnconfigure(2, weight=3)
        checked.grid_columnconfigure(3, weight=2)
        checked.grid_columnconfigure(4, weight=2)
        checked.grid_rowconfigure(0, weight=1)
        checked.grid_rowconfigure(1, weight=10)
        checked.grid_rowconfigure(2, weight=2)
        checked.grid_rowconfigure(3, weight=3)
        checked.grid_rowconfigure(4, weight=3)

        label2 = ttk.Label(checked,
                           text='Security check report:',
                           font=title_font)
        label2.grid(row=0, column=0, sticky='ew', padx=10, pady=10)

        button3 = ttk.Button(checked, text="Quit", command=sys.exit)
        button3.grid(row=4, column=0, sticky='ws', padx=10, pady=10)

        def save_report_to_file():
            save_file = filedialog.asksaveasfile(mode='w',
                                                 defaultextension=".txt",
                                                 initialdir="/",
                                                 title="Save "
                                                 "report",
                                                 filetypes=(("txt "
                                                             "files", "*.txt"),
                                                            ("all "
                                                             "files", "*.*")))
            if save_file:
                with open('temp.txt', 'r') as temp_file:
                    for i in temp_file:
                        save_file.write(i)
                    else:
                        return

        button4 = ttk.Button(checked,
                             text="Save to..",
                             command=save_report_to_file)
        button4.grid(row=4, column=5, sticky='es', padx=10, pady=10)

        checked = Text(checked)
        checked.grid(column=0, columnspan=6, row=1, sticky="news")
        checked.insert('1.0', ''.join(open("temp.txt", "r")))

        checked.mainloop()

    def pop_up_msg():
        popup = tkinter.Tk()
        # popup.iconbitmap(default="Appwheel.ico")  # App icon
        popup.wm_title("Security Checker")

        label3 = ttk.Label(
            popup,
            text='Please select at least 1 checkbox to continue',
            font=title_font)
        label3.grid(row=0, column=0, sticky='ew', padx=10, pady=10)

        button5 = ttk.Button(popup, text="Okay", command=popup.destroy)
        button5.grid(row=1, column=0, padx=10, pady=10)

        popup.mainloop()

    button1 = ttk.Button(text="Next", command=file_open)
    button1.grid(row=4, column=5, sticky='es', padx=10,
                 pady=10)  # Open's Browse Button

    window.mainloop()