Пример #1
0
    def __init__(self, parent, controller):

        """
        Parameters
        ----------

        :param parent: window
        :param controller: GUI controller
        """

        tk.Frame.__init__(self, parent)

        # Page init
        self.controller = controller
        self.menubar = Menubar(controller)
        # Disables ability to tear menu bar into own window
        self.controller.option_add('*tearOff', 'FALSE')
        system_logo = CROSS_WINDOWS_SETTINGS.get('LOGO')
        photo_location = os.path.join(system_logo)
        global logo_img
        logo_img = tk.PhotoImage(file=photo_location)

        # Page header
        self.logo_png = tk.Button(self)
        self.logo_png.place(relx=0.28, rely=0.029, height=172, width=300)
        set_logo_configuration(self.logo_png, image=logo_img)

        self.instructions = tk.Label(self)
        self.instructions.place(relx=0.015, rely=0.3, height=32, width=635)
        self.instructions.configure(text='''Tuning parameters, please wait...''')
        set_widget_to_left(self.instructions)

        # Page body
        loading_gif = LOADING_WINDOW_SETTINGS.get('LOADING_GIF')
        delay_between_frames = LOADING_WINDOW_SETTINGS.get('DELAY_BETWEEN_FRAMES')

        self.title_font = Font(family='Helvetica', size=12, weight="bold")

        self.loading_gif = AnimatedGif(self, loading_gif, delay_between_frames)
        self.loading_gif.place(relx=0.1, rely=0.35, height=330, width=600)

        self.clock_label = tk.Label(self, text="", font=self.title_font)
        self.clock_label.place(relx=0.38, rely=0.7, height=32, width=150)

        # Page footer
        self.stop_button = HoverButton(self, command=self.stop_model_process)
        self.stop_button.place(relx=0.813, rely=0.839, height=25, width=81)
        set_button_configuration(self.stop_button, text='''Stop''')

        self.back_button = HoverButton(self, command=self.back_window)
        self.back_button.place(relx=0.017, rely=0.839, height=25, width=81)
        set_button_configuration(self.back_button, text='''Back''')
        self.back_button.configure(state='disabled')

        self.copyright = tk.Label(self)
        self.copyright.place(relx=0, rely=0.958, height=25, width=750)
        set_copyright_configuration(self.copyright)

        # Page logic
        self.loading_gif.start()
Пример #2
0
    def __init__(self, parent, controller):
        """
        Parameters
        ----------

        :param parent: window
        :param controller: GUI controller
        """

        tk.Frame.__init__(self, parent)

        # Page init
        self.controller = controller
        self.menubar = Menubar(controller)
        # Disables ability to tear menu bar into own window
        self.controller.option_add('*tearOff', 'FALSE')
        system_logo = CROSS_WINDOWS_SETTINGS.get('LOGO')
        photo_location = os.path.join(system_logo)
        global logo_img
        logo_img = tk.PhotoImage(file=photo_location)

        # Page header
        self.logo_png = tk.Button(self)
        self.logo_png.place(relx=0.28, rely=0.029, height=172, width=300)
        set_logo_configuration(self.logo_png, image=logo_img)

        self.instructions = tk.Label(self)
        self.instructions.place(relx=0.015, rely=0.3, height=32, width=635)
        self.instructions.configure(
            text=
            '''Please select the algorithms for which you want to build anomaly detection models.'''
        )
        set_widget_to_left(self.instructions)

        # Page body
        self.anomaly_detection_methods = Checkbar(
            self,
            picks=load_anomaly_detection_list(),
            editButtons=True,
            checkCallback=self.set_algorithm_checked)
        self.anomaly_detection_methods.place(relx=0.1,
                                             rely=0.35,
                                             height=400,
                                             width=700)

        # Page footer
        self.next_button = HoverButton(self, command=self.next_window)
        self.next_button.place(relx=0.813, rely=0.839, height=25, width=81)
        set_button_configuration(self.next_button, text='''Next''')

        self.back_button = HoverButton(
            self, command=lambda: controller.show_frame("NewModel"))
        self.back_button.place(relx=0.017, rely=0.839, height=25, width=81)
        set_button_configuration(self.back_button, text='''Back''')

        self.copyright = tk.Label(self)
        self.copyright.place(relx=0, rely=0.958, height=25, width=750)
        set_copyright_configuration(self.copyright)
Пример #3
0
    def __init__(self, parent, controller):
        """
        Parameters
        ----------

        :param parent: window
        :param controller: GUI controller
        """

        tk.Frame.__init__(self, parent)

        # Page init
        self.controller = controller
        self.menubar = Menubar(controller)
        # Disables ability to tear menu bar into own window
        self.controller.option_add('*tearOff', 'FALSE')
        system_logo = CROSS_WINDOWS_SETTINGS.get('LOGO')
        comparison_logo = CROSS_WINDOWS_SETTINGS.get('RESULTS')
        photo_location = os.path.join(system_logo)
        comparison_location = os.path.join(comparison_logo)
        global logo_img, comparison_img
        logo_img = tk.PhotoImage(file=photo_location)
        comparison_img = tk.PhotoImage(file=comparison_location)

        # Page header
        self.logo_png = tk.Button(self)
        self.logo_png.place(relx=0.28, rely=0.029, height=172, width=300)
        set_logo_configuration(self.logo_png, image=logo_img)

        # Page body
        self.results_table = Table(self,
                                   columns=[
                                       "Metric", "Down attack", "Up attack",
                                       "Fore attack", "Random attack"
                                   ],
                                   header_anchor=CENTER,
                                   column_minwidths=[1, 1, 1],
                                   pady=2)
        self.results_table.pack(fill=X, padx=18, pady=182)

        self.comparison_png = tk.Button(self)
        self.comparison_png.place(relx=0.65, rely=0.7, height=150, width=145)
        set_logo_configuration(self.comparison_png, image=comparison_img)

        # Page footer
        self.back_button = HoverButton(self, command=self.back_window)
        self.back_button.place(relx=0.017, rely=0.839, height=25, width=81)
        set_button_configuration(self.back_button, text='''Back''')

        self.copyright = tk.Label(self)
        self.copyright.place(relx=0, rely=0.958, height=25, width=750)
        set_copyright_configuration(self.copyright)
    def __init__(self, parent, controller):
        """
        Parameters
        ----------

        :param parent: window
        :param controller: GUI controller
        """

        tk.Frame.__init__(self, parent)

        # Page init
        self.controller = controller
        self.menubar = Menubar(controller)
        # Disables ability to tear menu bar into own window
        self.controller.option_add('*tearOff', 'FALSE')
        system_logo = CROSS_WINDOWS_SETTINGS.get('LOGO')
        photo_location = os.path.join(system_logo)
        global logo_img
        logo_img = tk.PhotoImage(file=photo_location)

        # Page header
        self.logo_png = tk.Button(self)
        self.logo_png.place(relx=0.28, rely=0.029, height=172, width=300)
        set_logo_configuration(self.logo_png, image=logo_img)

        self.instructions = tk.Label(self)
        self.instructions.place(relx=0.015, rely=0.3, height=32, width=635)
        self.instructions.configure(
            text='''Please select your choice for parameters tuning:''')
        set_widget_to_left(self.instructions)

        # Page body
        self.reinitialize()

        # Page footer
        self.next_button = HoverButton(self, command=self.next_window)
        self.next_button.place(relx=0.813, rely=0.839, height=25, width=81)
        set_button_configuration(self.next_button, text='''Next''')

        self.back_button = HoverButton(self, command=self.back_window)
        self.back_button.place(relx=0.017, rely=0.839, height=25, width=81)
        set_button_configuration(self.back_button, text='''Back''')

        self.copyright = tk.Label(self)
        self.copyright.place(relx=0, rely=0.958, height=25, width=750)
        set_copyright_configuration(self.copyright)
    def __init__(self, parent, controller):
        """
        Parameters
        ----------

        :param parent: window
        :param controller: GUI controller
        """

        tk.Frame.__init__(self, parent)

        # Page init
        self.controller = controller
        self.menubar = Menubar(controller)
        # Disables ability to tear menu bar into own window
        self.controller.option_add('*tearOff', 'FALSE')
        system_logo = CROSS_WINDOWS_SETTINGS.get('LOGO')
        photo_location = os.path.join(system_logo)
        global logo_img
        logo_img = tk.PhotoImage(file=photo_location)

        # Page header
        self.logo_png = HoverButton(self)
        self.logo_png.place(relx=0.28, rely=0.029, height=172, width=300)
        set_logo_configuration(self.logo_png, image=logo_img)

        # Page body
        self.toggle_results_button = HoverButton(self,
                                                 command=self.toggle_results)
        self.toggle_results_button.place(relx=0.68,
                                         rely=0.5,
                                         height=25,
                                         width=81)
        set_button_configuration(self.toggle_results_button,
                                 text='''Show results''')

        # Page footer
        self.back_button = HoverButton(self, command=self.back_window)
        self.back_button.place(relx=0.017, rely=0.839, height=25, width=81)
        set_button_configuration(self.back_button, text='''Home page''')

        self.copyright = tk.Label(self)
        self.copyright.place(relx=0, rely=0.958, height=25, width=750)
        set_copyright_configuration(self.copyright)
    def reinitialize(self):
        """
        Reinitialize frame values and view
        :return: new frame view
        """

        self.path_label = tk.Label(self)
        self.path_label.place(relx=0.015, rely=0.4, height=32, width=146)
        self.path_label.configure(text='''Input file:''')
        set_widget_to_left(self.path_label)

        self.path_input = tk.Entry(self)
        self.path_input.place(relx=0.195, rely=0.4, height=25, relwidth=0.624)

        self.browse_btn = HoverButton(self,
                                      command=self.input_file_browse_command)
        self.browse_btn.place(relx=0.833, rely=0.4, height=25, width=60)
        set_button_configuration(self.browse_btn, text='''Browse''')

        # Results output directory
        self.results_path_label = tk.Label(self)
        self.results_path_label.place(relx=0.015,
                                      rely=0.5,
                                      height=32,
                                      width=146)
        self.results_path_label.configure(text='''Results directory:''')
        set_widget_to_left(self.results_path_label)

        self.results_path_input = tk.Entry(self)
        self.results_path_input.place(relx=0.195,
                                      rely=0.5,
                                      height=25,
                                      relwidth=0.624)

        self.results_browse_btn = HoverButton(
            self, command=self.results_browse_command)
        self.results_browse_btn.place(relx=0.833,
                                      rely=0.5,
                                      height=25,
                                      width=60)
        set_button_configuration(self.results_browse_btn, text='''Browse''')
Пример #7
0
    def __init__(self, parent, controller):
        """
        Parameters
        ----------

        :param parent: window
        :param controller: GUI controller
        """

        tk.Frame.__init__(self, parent)

        # Page init
        self.controller = controller
        self.menubar = Menubar(controller)
        # Disables ability to tear menu bar into own window
        self.controller.option_add('*tearOff', 'FALSE')
        system_logo = CROSS_WINDOWS_SETTINGS.get('LOGO')
        photo_location = os.path.join(system_logo)
        global logo_img
        logo_img = tk.PhotoImage(file=photo_location)

        # Page header
        self.logo_png = tk.Button(self)
        self.logo_png.place(relx=0.28, rely=0.029, height=172, width=300)
        set_logo_configuration(self.logo_png, image=logo_img)

        self.instructions = tk.Label(self)
        self.instructions.place(relx=0.015, rely=0.3, height=32, width=635)
        self.instructions.configure(
            text='''Please choose both input and target features:''')
        set_widget_to_left(self.instructions)

        # Page body

        # initialize features columns options
        self.features_columns_options = {}
        self.features_columns_options = self.get_features_columns_options()

        self.csv_features = tk.StringVar()
        self.csv_features.set(self.features_columns_options)

        self.features_instructions = tk.Label(self)
        self.features_instructions.place(relx=0.05,
                                         rely=0.34,
                                         height=22,
                                         width=100)
        self.features_instructions.configure(text='''Input features:''')
        set_widget_to_left(self.features_instructions)

        self.features_listbox = tk.Listbox(
            self,
            font=tkfont.Font(size=9),
            listvariable=self.csv_features,
            selectmode=tk.MULTIPLE,
            exportselection=
            0,  # Fix : ComboBox clears unrelated ListBox selection
            width=120,
            height=180,
            bd=3,
            bg='antique white',
            selectbackground='sandy brown')
        self.features_listbox.place(relx=0.05,
                                    rely=0.42,
                                    height=230,
                                    width=140)

        self.target_instructions = tk.Label(self)
        self.target_instructions.place(relx=0.35,
                                       rely=0.34,
                                       height=22,
                                       width=100)
        self.target_instructions.configure(text='''Target features:''')
        set_widget_to_left(self.target_instructions)

        self.target_features_listbox = tk.Listbox(
            self,
            font=tkfont.Font(size=9),
            listvariable=self.csv_features,
            selectmode=tk.MULTIPLE,
            exportselection=0,
            # Fix : ComboBox clears unrelated ListBox selection
            width=120,
            height=180,
            bd=3,
            bg='antique white',
            selectbackground='sandy brown')
        self.target_features_listbox.place(relx=0.35,
                                           rely=0.42,
                                           height=230,
                                           width=140)

        # Side logo
        feature_selection_logo = CROSS_WINDOWS_SETTINGS.get(
            'FEATURE_SELECTION')
        feature_selection_photo_location = os.path.join(feature_selection_logo)
        global fs_logo_img
        fs_logo_img = tk.PhotoImage(file=feature_selection_photo_location)

        self.features_logo_png = tk.Button(self)
        self.features_logo_png.place(relx=0.6,
                                     rely=0.28,
                                     height=200,
                                     width=200)
        set_logo_configuration(self.features_logo_png, image=fs_logo_img)

        # Page footer
        self.next_button = HoverButton(self, command=self.next_window)
        self.next_button.place(relx=0.813, rely=0.839, height=25, width=81)
        set_button_configuration(self.next_button, text='''Next''')

        self.back_button = HoverButton(self, command=self.back_window)
        self.back_button.place(relx=0.017, rely=0.839, height=25, width=81)
        set_button_configuration(self.back_button, text='''Back''')

        self.copyright = tk.Label(self)
        self.copyright.place(relx=0, rely=0.958, height=25, width=750)
        set_copyright_configuration(self.copyright)
Пример #8
0
    def reinitialize(self):
        """
        Reinitialize frame values and view
        :return: new frame view
        """

        self.features_columns_options = {}
        self.features_columns_options = self.get_features_columns_options()

        self.csv_features = tk.StringVar()
        self.csv_features.set(self.features_columns_options)

        self.input_indicator = False
        self.target_indicator = False

        self.select_all_features_button = tk.Button(
            self, command=self.select_all_features)
        self.select_all_features_button.place(relx=0.17,
                                              rely=0.38,
                                              height=18,
                                              width=55)
        set_button_configuration(self.select_all_features_button,
                                 text='''Select all''')
        self.select_all_features_button.configure(bg='sandy brown')

        self.features_listbox = tk.Listbox(
            self,
            font=tkfont.Font(size=9),
            listvariable=self.csv_features,
            selectmode=tk.MULTIPLE,
            exportselection=
            0,  # Fix : ComboBox clears unrelated ListBox selection
            width=120,
            height=180,
            bd=3,
            bg='antique white',
            selectbackground='sandy brown')
        self.features_listbox.place(relx=0.05,
                                    rely=0.42,
                                    height=230,
                                    width=140)

        self.select_all_target_button = tk.Button(
            self, command=self.select_all_target)
        self.select_all_target_button.place(relx=0.47,
                                            rely=0.38,
                                            height=18,
                                            width=55)
        set_button_configuration(self.select_all_target_button,
                                 text='''Select all''')
        self.select_all_target_button.configure(bg='sandy brown')

        self.target_features_listbox = tk.Listbox(
            self,
            listvariable=self.csv_features,
            font=tkfont.Font(size=9),
            selectmode=tk.MULTIPLE,
            exportselection=0,
            # Fix : ComboBox clears unrelated ListBox selection
            width=120,
            height=180,
            bd=3,
            bg='antique white',
            selectbackground='sandy brown')
        self.target_features_listbox.place(relx=0.35,
                                           rely=0.42,
                                           height=230,
                                           width=140)

        title_styling = Font(size=11, weight=BOLD)

        self.previous_choice_label = tk.Label(self)
        self.previous_choice_label.place(relx=0.58,
                                         rely=0.62,
                                         height=25,
                                         width=300)
        self.previous_choice_label.configure(text="Your previous selections:",
                                             font=title_styling,
                                             fg='blue')
        set_widget_to_left(self.previous_choice_label)

        chosen_algorithms = self.controller.get_algorithms()

        y_coordinate = 0.66
        for algorithm in chosen_algorithms:
            window_size = self.controller.get_window_size(algorithm)

            self.algorithm_label = tk.Label(self)
            self.algorithm_label.place(relx=0.58,
                                       rely=y_coordinate,
                                       height=25,
                                       width=300)
            self.algorithm_label.configure(text="{0} window size: {1}".format(
                algorithm, window_size),
                                           font=Font(size=10),
                                           fg='blue')
            set_widget_to_left(self.algorithm_label)

            y_coordinate += 0.04
Пример #9
0
    def __init__(self, parent, controller):
        """
        Parameters
        ----------

        :param parent: window
        :param controller: GUI controller
        """

        tk.Frame.__init__(self, parent)

        # Page init
        self.controller = controller
        self.menubar = Menubar(controller)
        # Disables ability to tear menu bar into own window
        self.controller.option_add('*tearOff', 'FALSE')
        system_logo = CROSS_WINDOWS_SETTINGS.get('LOGO')
        photo_location = os.path.join(system_logo)
        global logo_img
        logo_img = tk.PhotoImage(file=photo_location)

        # Page header
        self.logo_png = tk.Button(self)
        self.logo_png.place(relx=0.28, rely=0.029, height=172, width=300)
        set_logo_configuration(self.logo_png, image=logo_img)

        self.instructions = tk.Label(self)
        self.instructions.place(relx=0.015, rely=0.3, height=32, width=635)
        self.instructions.configure(
            text=
            '''Please choose similarity functions from the following options.'''
        )
        set_widget_to_left(self.instructions)

        # Page body
        self.similarity_functions = Checkbar(
            self,
            load_similarity_list(),
            checkCallback=self.set_similarity_score)
        self.similarity_functions.place(relx=0.1,
                                        rely=0.36,
                                        height=400,
                                        width=700)

        self.save_model_var = tk.IntVar()
        self.save_model_check_button = tk.Checkbutton(
            self,
            text="Save model",
            variable=self.save_model_var,
            command=self.set_saving_model)

        self.note = tk.Label(self)
        self.note.place(relx=0.015, rely=0.7, height=32, width=635)
        self.note.configure(
            text=
            '''Note: Similarity function is used for calculating a score for each record''',
            font=Font(size=9, weight=BOLD))
        set_widget_to_left(self.note)

        # Page footer
        self.next_button = HoverButton(self, command=self.next_window)
        self.next_button.place(relx=0.813, rely=0.839, height=25, width=81)
        set_button_configuration(self.next_button, text='''Run''')

        self.back_button = HoverButton(self, command=self.back_window)
        self.back_button.place(relx=0.017, rely=0.839, height=25, width=81)
        set_button_configuration(self.back_button, text='''Back''')

        self.copyright = tk.Label(self)
        self.copyright.place(relx=0, rely=0.958, height=25, width=750)
        set_copyright_configuration(self.copyright)
Пример #10
0
    def __init__(self, parent, controller):
        """
        Parameters
        ----------

        :param parent: window
        :param controller: GUI controller
        """

        ttk.Frame.__init__(self, parent)

        # Page init
        self.controller = controller
        self.menubar = Menubar(controller)
        # Disables ability to tear menu bar into own window
        self.controller.option_add('*tearOff', 'FALSE')

        system_logo = CROSS_WINDOWS_SETTINGS.get('LOGO')
        bgu_logo = CROSS_WINDOWS_SETTINGS.get('BGU')
        israel_innovation_authority_logo = CROSS_WINDOWS_SETTINGS.get(
            'ISRAEL_INNOVATION_AUTHORITY')
        ministry_of_defense_logo = CROSS_WINDOWS_SETTINGS.get(
            'MINISTRY_OF_DEFENSE')
        mobilicom_logo = CROSS_WINDOWS_SETTINGS.get('MOBILICOM')

        photo_location = os.path.join(system_logo)
        bgu_location = os.path.join(bgu_logo)
        israel_innovation_authority_location = os.path.join(
            israel_innovation_authority_logo)
        ministry_of_defense_location = os.path.join(ministry_of_defense_logo)
        mobilicom_location = os.path.join(mobilicom_logo)

        global logo_img, bgu_img, israel_innovation_authority_img, ministry_of_defense_img, mobilicom_img

        logo_img = tk.PhotoImage(file=photo_location)
        bgu_img = tk.PhotoImage(file=bgu_location)
        israel_innovation_authority_img = tk.PhotoImage(
            file=israel_innovation_authority_location)
        ministry_of_defense_img = tk.PhotoImage(
            file=ministry_of_defense_location)
        mobilicom_img = tk.PhotoImage(file=mobilicom_location)

        self.controller.geometry("700x550")
        self.controller.minsize(700, 550)
        self.controller.maxsize(700, 550)
        self.controller.resizable(1, 1)
        self.controller.title("Anomaly Detection System")
        self.controller.configure(background="#eeeeee")

        # Page header
        self.logo_png = tk.Button(self)
        self.logo_png.place(relx=0.28, rely=0.029, height=172, width=300)
        set_logo_configuration(self.logo_png, image=logo_img)

        # Page body
        self.create_model_btn = HoverButton(self, command=self.new_flow)
        self.create_model_btn.place(relx=0.41, rely=0.35, height=42, width=120)
        set_button_configuration(self.create_model_btn,
                                 text='''Create model''')

        self.load_model_btn = HoverButton(self, command=self.load_flow)
        self.load_model_btn.place(relx=0.41, rely=0.52, height=42, width=120)
        set_button_configuration(self.load_model_btn, text='''Load model''')

        # self.tune_model_btn = HoverButton(self, command=self.tune_flow)
        # self.tune_model_btn.place(relx=0.395, rely=0.65, height=42, width=140)
        # set_button_configuration(self.tune_model_btn, text='''Tune model parameters''')

        self.bgu_png = tk.Button(self)
        self.bgu_png.place(relx=0, rely=0, height=35, width=186)
        set_logo_configuration(self.bgu_png, image=bgu_img)

        self.israel_innovation_authority_png = tk.Button(self)
        self.israel_innovation_authority_png.place(relx=0.04,
                                                   rely=0.78,
                                                   height=61,
                                                   width=200)
        set_logo_configuration(self.israel_innovation_authority_png,
                               image=israel_innovation_authority_img)

        self.ministry_of_defense_png = tk.Button(self)
        self.ministry_of_defense_png.place(relx=0.7,
                                           rely=0.67,
                                           height=119,
                                           width=136)
        set_logo_configuration(self.ministry_of_defense_png,
                               image=ministry_of_defense_img)

        self.mobilicom_png = tk.Button(self)
        self.mobilicom_png.place(relx=0.41, rely=0.75, height=116, width=116)
        set_logo_configuration(self.mobilicom_png, image=mobilicom_img)

        # Page footer
        self.copyright = tk.Label(self)
        self.copyright.place(relx=0, rely=0.958, height=25, width=750)
        set_copyright_configuration(self.copyright)
    def __init__(self, parent, controller):

        """
        Parameters
        ----------

        :param parent: window
        :param controller: GUI controller
        """

        tk.Frame.__init__(self, parent)

        # Page init
        self.controller = controller
        self.menubar = Menubar(controller)
        # Disables ability to tear menu bar into own window
        self.controller.option_add('*tearOff', 'FALSE')
        system_logo = CROSS_WINDOWS_SETTINGS.get('LOGO')
        photo_location = os.path.join(system_logo)
        global logo_img
        logo_img = tk.PhotoImage(file=photo_location)

        # Page header
        self.logo_png = tk.Button(self)
        self.logo_png.place(relx=0.28, rely=0.029, height=172, width=300)
        set_logo_configuration(self.logo_png, image=logo_img)

        self.instructions = tk.Label(self)
        self.instructions.place(relx=0.015, rely=0.3, height=32, width=635)
        self.instructions.configure(
            text='''Please insert input files for existing model.''')
        set_widget_to_left(self.instructions)

        # Page body

        # Testing input directory
        self.test_label = tk.Label(self)
        self.test_label.place(relx=0.015, rely=0.4, height=32, width=146)
        self.test_label.configure(text='''Test directory''')
        set_widget_to_left(self.test_label)

        self.test_input = tk.Entry(self)
        self.test_input.place(relx=0.195, rely=0.4, height=25, relwidth=0.624)

        self.test_btn = HoverButton(self, command=self.set_test_path)
        self.test_btn.place(relx=0.833, rely=0.4, height=25, width=60)
        set_button_configuration(self.test_btn, text='''Browse''')

        # Results output directory
        self.results_label = tk.Label(self)
        self.results_label.place(relx=0.015, rely=0.5, height=32, width=146)
        self.results_label.configure(text='''Results directory''')
        set_widget_to_left(self.results_label)

        self.results_input = tk.Entry(self)
        self.results_input.place(relx=0.195, rely=0.5, height=25, relwidth=0.624)

        self.results_btn = HoverButton(self, command=self.set_results_path)
        self.results_btn.place(relx=0.833, rely=0.5, height=25, width=60)
        set_button_configuration(self.results_btn, text='''Browse''')

        # Page footer
        self.next_button = HoverButton(self, command=self.next_window)
        self.next_button.place(relx=0.813, rely=0.839, height=25, width=81)
        set_button_configuration(self.next_button, text='''Next''')

        self.back_button = HoverButton(self, command=self.back_window)
        self.back_button.place(relx=0.017, rely=0.839, height=25, width=81)
        set_button_configuration(self.back_button, text='''Back''')

        self.copyright = tk.Label(self)
        self.copyright.place(relx=0, rely=0.958, height=25, width=750)
        set_copyright_configuration(self.copyright)
    def __init__(self, parent, controller):

        """
        Parameters
        ----------

        :param parent: window
        :param controller: GUI controller
        """

        tk.Frame.__init__(self, parent)

        # Page init
        self.controller = controller
        self.menubar = Menubar(controller)
        # Disables ability to tear menu bar into own window
        self.controller.option_add('*tearOff', 'FALSE')
        system_logo = CROSS_WINDOWS_SETTINGS.get('LOGO')
        photo_location = os.path.join(system_logo)
        global logo_img
        logo_img = tk.PhotoImage(file=photo_location)

        # Page header
        self.logo_png = tk.Button(self)
        self.logo_png.place(relx=0.28, rely=0.029, height=172, width=300)
        set_logo_configuration(self.logo_png, image=logo_img)

        self.instructions = tk.Label(self)
        self.instructions.place(relx=0.015, rely=0.3, height=32, width=635)
        self.instructions.configure(
            text='''Please insert paths for existing models.''')
        set_widget_to_left(self.instructions)

        # Page body
        self.algorithms = dict()
        self.browse_buttons = dict()
        self.input_entries = dict()

        # LSTM existing algorithm
        self.lstm_var = tk.IntVar()
        self.lstm_check_button = tk.Checkbutton(self)
        self.lstm_check_button.place(relx=0.015, rely=0.38, height=32, width=146)
        self.lstm_check_button.configure(text="LSTM",
                                         variable=self.lstm_var,
                                         command=lambda: self.set_input_entry("LSTM", self.lstm_var.get()))
        set_widget_to_left(self.lstm_check_button)

        self.lstm_input = tk.Entry(self)
        self.lstm_input.place(relx=0.195, rely=0.38, height=25, relwidth=0.624)
        self.lstm_input.configure(state='disabled')

        self.lstm_btn = HoverButton(self, command=lambda: self.set_algorithm_path("LSTM"))
        self.lstm_btn.place(relx=0.833, rely=0.38, height=25, width=60)
        self.lstm_btn.configure(state='disabled')
        set_button_configuration(self.lstm_btn, text='''Browse''')

        self.browse_buttons["LSTM"] = self.lstm_btn
        self.input_entries["LSTM"] = self.lstm_input

        # SVR existing algorithm
        self.svr_var = tk.IntVar()
        self.svr_check_button = tk.Checkbutton(self)
        self.svr_check_button.place(relx=0.015, rely=0.47, height=32, width=146)
        self.svr_check_button.configure(text="SVR",
                                        variable=self.svr_var,
                                        command=lambda: self.set_input_entry("SVR", self.svr_var.get()))
        set_widget_to_left(self.svr_check_button)

        self.svr_input = tk.Entry(self)
        self.svr_input.place(relx=0.195, rely=0.47, height=25, relwidth=0.624)
        self.svr_input.configure(state='disabled')

        self.svr_btn = HoverButton(self, command=lambda: self.set_algorithm_path("SVR"))
        self.svr_btn.place(relx=0.833, rely=0.47, height=25, width=60)
        self.svr_btn.configure(state='disabled')
        set_button_configuration(self.svr_btn, text='''Browse''')

        self.browse_buttons["SVR"] = self.svr_btn
        self.input_entries["SVR"] = self.svr_input

        # MLP existing algorithm
        self.mlp_var = tk.IntVar()
        self.mlp_check_button = tk.Checkbutton(self)
        self.mlp_check_button.place(relx=0.015, rely=0.56, height=32, width=146)
        self.mlp_check_button.configure(text="MLP",
                                        variable=self.mlp_var,
                                        command=lambda: self.set_input_entry("MLP",
                                                                             self.mlp_var.get()))
        set_widget_to_left(self.mlp_check_button)

        self.mlp_input = tk.Entry(self)
        self.mlp_input.place(relx=0.195, rely=0.56, height=25, relwidth=0.624)
        self.mlp_input.configure(state='disabled')

        self.mlp_btn = HoverButton(self, command=lambda: self.set_algorithm_path("MLP"))
        self.mlp_btn.place(relx=0.833, rely=0.56, height=25, width=60)
        self.mlp_btn.configure(state='disabled')
        set_button_configuration(self.mlp_btn, text='''Browse''')

        self.browse_buttons["MLP"] = self.mlp_btn
        self.input_entries["MLP"] = self.mlp_input

        # Random Forest existing algorithm
        self.random_forest_var = tk.IntVar()
        self.random_forest_check_button = tk.Checkbutton(self)
        self.random_forest_check_button.place(relx=0.015, rely=0.65, height=32, width=146)
        self.random_forest_check_button.configure(text="Random Forest",
                                                  variable=self.random_forest_var,
                                                  command=lambda: self.set_input_entry("Random Forest",
                                                                                       self.random_forest_var.get()))
        set_widget_to_left(self.random_forest_check_button)

        self.random_forest_input = tk.Entry(self)
        self.random_forest_input.place(relx=0.195, rely=0.65, height=25, relwidth=0.624)
        self.random_forest_input.configure(state='disabled')

        self.random_forest_btn = HoverButton(self, command=lambda: self.set_algorithm_path("Random Forest"))
        self.random_forest_btn.place(relx=0.833, rely=0.65, height=25, width=60)
        self.random_forest_btn.configure(state='disabled')
        set_button_configuration(self.random_forest_btn, text='''Browse''')

        self.browse_buttons["Random Forest"] = self.random_forest_btn
        self.input_entries["Random Forest"] = self.random_forest_input

        # Page footer
        self.next_button = HoverButton(self, command=self.next_window)
        self.next_button.place(relx=0.813, rely=0.839, height=25, width=81)
        set_button_configuration(self.next_button, text='''Next''')

        self.back_button = HoverButton(self, command=self.back_window)
        self.back_button.place(relx=0.017, rely=0.839, height=25, width=81)
        set_button_configuration(self.back_button, text='''Back''')

        self.copyright = tk.Label(self)
        self.copyright.place(relx=0, rely=0.958, height=25, width=750)
        set_copyright_configuration(self.copyright)
Пример #13
0
    def __init__(self, parent, controller):
        """
        Parameters
        ----------

        :param parent: window
        :param controller: GUI controller
        """

        tk.Frame.__init__(self, parent)

        # Page init
        self.controller = controller
        self.menubar = Menubar(controller)
        # Disables ability to tear menu bar into own window
        self.controller.option_add('*tearOff', 'FALSE')
        system_logo = CROSS_WINDOWS_SETTINGS.get('LOGO')
        photo_location = os.path.join(system_logo)
        global logo_img
        logo_img = tk.PhotoImage(file=photo_location)

        # Page header
        self.logo_png = tk.Button(self)
        self.logo_png.place(relx=0.28, rely=0.029, height=172, width=300)
        set_logo_configuration(self.logo_png, image=logo_img)

        self.instructions = tk.Label(self)
        self.instructions.place(relx=0.015, rely=0.3, height=32, width=635)
        self.instructions.configure(
            text=
            '''Please select the values for each of the following parameters:'''
        )
        set_widget_to_left(self.instructions)

        # Page body

        # Dynamic algorithm options
        self.algorithms_files = load_anomaly_detection_list()
        self.current_algorithm = self.controller.get_current_algorithm_to_edit(
        )
        self.current_yaml = self.set_suitable_yaml_file(self.current_algorithm)

        self.height_options_frame = 268
        self.width_options_frame = 620

        self.options_to_show = AlgorithmFrameOptions(
            self, yaml_filename=self.current_yaml)
        self.options_to_show.place(relx=0.05,
                                   rely=0.35,
                                   height=self.height_options_frame,
                                   width=self.width_options_frame)

        # Page footer
        self.next_button = HoverButton(self, command=self.handle_next_button)
        self.next_button.place(relx=0.813, rely=0.839, height=25, width=81)
        set_button_configuration(self.next_button, text='''Save''')

        self.back_button = HoverButton(
            self,
            command=lambda: self.controller.show_frame("AlgorithmsWindow"))
        self.back_button.place(relx=0.017, rely=0.839, height=25, width=81)
        set_button_configuration(self.back_button, text='''Cancel''')

        self.copyright = tk.Label(self)
        self.copyright.place(relx=0, rely=0.958, height=25, width=750)
        set_copyright_configuration(self.copyright)
    def reinitialize(self):
        """
        Reinitialize frame values and view
        :return: new frame view
        """

        self.features_columns_options = {}
        self.features_columns_options = self.get_features_columns_options()

        self.csv_features = tk.StringVar()
        self.csv_features.set(self.features_columns_options)

        self.input_indicator = False
        self.target_indicator = False
        self.windows_indicator = False

        self.select_all_features_button = tk.Button(
            self, command=self.select_all_features)
        self.select_all_features_button.place(relx=0.17,
                                              rely=0.38,
                                              height=18,
                                              width=55)
        set_button_configuration(self.select_all_features_button,
                                 text='''Select all''')
        self.select_all_features_button.configure(bg='sandy brown')

        self.features_listbox = tk.Listbox(
            self,
            font=tkfont.Font(size=9),
            listvariable=self.csv_features,
            selectmode=tk.MULTIPLE,
            exportselection=
            0,  # Fix : ComboBox clears unrelated ListBox selection
            width=120,
            height=180,
            bd=3,
            bg='antique white',
            selectbackground='sandy brown')
        self.features_listbox.place(relx=0.05,
                                    rely=0.42,
                                    height=230,
                                    width=140)

        self.select_all_target_button = tk.Button(
            self, bg='sky blue', command=self.select_all_target)
        self.select_all_target_button.place(relx=0.42,
                                            rely=0.38,
                                            height=18,
                                            width=55)
        set_button_configuration(self.select_all_target_button,
                                 text='''Select all''')
        self.select_all_target_button.configure(bg='sandy brown')

        self.target_features_listbox = tk.Listbox(
            self,
            font=tkfont.Font(size=9),
            listvariable=self.csv_features,
            selectmode=tk.MULTIPLE,
            exportselection=0,
            # Fix : ComboBox clears unrelated ListBox selection
            width=120,
            height=180,
            bd=3,
            bg='antique white',
            selectbackground='sandy brown')
        self.target_features_listbox.place(relx=0.3,
                                           rely=0.42,
                                           height=230,
                                           width=140)

        window_options = tk.StringVar()
        numbers = list(range(1, 16))
        window_options.set([str(i) for i in numbers])

        self.select_all_windows_button = tk.Button(
            self, bg='sky blue', command=self.select_all_windows)
        self.select_all_windows_button.place(relx=0.67,
                                             rely=0.38,
                                             height=18,
                                             width=55)
        set_button_configuration(self.select_all_windows_button,
                                 text='''Select all''')
        self.select_all_windows_button.configure(bg='sandy brown')

        self.window_size_listbox = tk.Listbox(
            self,
            font=tkfont.Font(size=9),
            listvariable=window_options,
            selectmode=tk.MULTIPLE,
            exportselection=0,
            # Fix : ComboBox clears unrelated ListBox selection
            width=120,
            height=180,
            bd=3,
            bg='antique white',
            selectbackground='sandy brown')
        self.window_size_listbox.place(relx=0.55,
                                       rely=0.42,
                                       height=230,
                                       width=140)

        algorithms_list = load_anomaly_detection_list()

        self.algorithm_combo = ttk.Combobox(self,
                                            state="readonly",
                                            values=algorithms_list)
        self.algorithm_combo.place(relx=0.78, rely=0.47, height=25, width=130)
        self.algorithm_combo.current(0)