Exemplo n.º 1
0
    def __init__(self, data_handler, *args, **kwargs):
        Toplevel.__init__(self, *args, **kwargs)
        Base.__init__(self, 'uhr.ico', 'Uhr menu')

        self.data_handler = data_handler
        selector_frame = Frame(self)
        self.geometry('225x85')

        self.left_button = Button(selector_frame,
                                  text='<',
                                  relief='raised',
                                  command=lambda: self.rotate(-1))
        self.position_indicator = Label(selector_frame,
                                        relief='sunken',
                                        width=2,
                                        font=('', 25))
        self.right_button = Button(selector_frame,
                                   text='>',
                                   relief='raised',
                                   command=lambda: self.rotate(1))

        self.left_button.pack(side='left')
        self.position_indicator.pack(side='left', padx=10, pady=5)
        self.right_button.pack(side='left')

        selector_frame.pack(side='top')

        button_frame = Frame(self)
        Button(button_frame, text='Close',
               command=self.destroy).pack(side='right')
        button_frame.pack(side='bottom', padx=5, pady=5)

        self.refresh_indicator()
Exemplo n.º 2
0
    def __init__(self, *args, **kwargs):
        Toplevel.__init__(self, *args, **kwargs)
        Base.__init__(self, '', 'GNU GPLv3 Copyright Notice')

        main_frame = Frame(self)
        self.scrollbar = Scrollbar(main_frame)
        self.copyright_view = Text(main_frame,
                                   width=78,
                                   height=40,
                                   yscrollcommand=self.scrollbar.set)
        self.scrollbar.config(command=self.copyright_view.yview)
        Label(main_frame,
              text="GNU GPLv3 - Know your rights!",
              font=("Arial", 12, "bold")).pack(side='top', fill='x')

        with open('LICENSE.txt', 'r') as file:
            self.copyright_view.insert(0.0, file.read())

        self.copyright_view.config(state='disabled')
        self.copyright_view.pack(side='left')
        self.scrollbar.pack(side='right', fill='both')

        main_frame.pack(side='top')

        button_frame = Frame(self)
        self.accept_button = Button(button_frame,
                                    text="I Agree",
                                    command=self.rights_accepted)
        self.accept_button.pack(side='right')

        button_frame.pack(side='bottom')
Exemplo n.º 3
0
    def __init__(self, data_handler, *args, **kwargs):
        Toplevel.__init__(self, *args, **kwargs)
        Base.__init__(self, 'plugboard.ico', 'Plugboard')

        self.data_handler = data_handler
        self.used = []  # All used letters
        self._uhr_mode = IntVar(0)

        labels = self.data_handler.enigma.factory_data['labels']
        layout = self.data_handler.enigma.factory_data['layout']

        # BUTTONS
        button_frame = Frame(self)
        self.apply_button = Button(button_frame, text='Apply', width=12,
                                   command=self.apply)
        self.clear_button = Button(button_frame, text='Clear all pairs',
                                   width=15, command=self.clear_all)

        # PLUG PAIRS
        rows = []
        self.plug_sockets = []

        # Frame in which all plugs are contained
        plug_socket_frame = Frame(self)

        # Creating plug objects
        for row in layout:
            new_row = Frame(plug_socket_frame)
            for item in row:
                self.plug_sockets.append(PlugSocket(self, new_row,
                                                    self.data_handler.enigma,
                                                    labels[item]))
            rows.append(new_row)

        # Packs rows vertically
        for row in rows:
            row.pack(side='top')

        # Packs item in a row
        for item in self.plug_sockets:
            item.pack(side='left')

        # Packing the whole frame
        plug_socket_frame.pack(side='top')

        # This uhr mode will be used to distinguish between choosing uhr vs
        # normal pairs > different colors.

        self.uhr_mode_button = Checkbutton(button_frame, text='Uhr pairs',
                                           variable=self._uhr_mode)
        self.uhr_mode_button.pack(side='left')

        storno_button = Button(button_frame, text='Storno', width=12,
                               command=self.destroy)

        self.apply_button.pack(side='right', padx=5, pady=5)
        self.clear_button.pack(side='right', padx=5, pady=5)
        storno_button.pack(side='right', padx=5, pady=5)

        button_frame.pack(side='bottom', fill='x')
Exemplo n.º 4
0
    def __init__(self, data_handler, *args, **kwargs):
        Tk.__init__(self, *args, **kwargs)

        self.data_handler = data_handler
        self.data_handler.set_master(self)  # Sets up master for TkEnigma

        Base.__init__(self, 'enigma.ico', self.data_handler.enigma_cfg['model'])
        self.root_menu = None

        self.option_add("*font", self.data_handler.font)

        # Settings vars ( set by default to 1,1,0,1 as an emergency measure )
        self._sound_enabled = IntVar(value=1)
        self._autorotate = IntVar(value=1)
        self._rotor_lock = IntVar(value=0)
        self._sync_scroll = IntVar(value=1)
        self._show_numbers = IntVar(value=0)
        self.__reset_setting_vars()

        self._show_numbers.trace('w', lambda *args: self.indicator_board.update_indicators())

        # Frames
        self.rotor_container = Frame(self, bd=1, relief='raised', bg=self.data_handler.bg)

        # Lid
        Button(self.rotor_container, text='\n'.join('Rotors'),
               command=self.rotor_menu).pack(side='right', pady=5, padx=(15, 4))

        # Plugboard
        if self.data_handler.enigma.has_plugboard:
            self.plugboard_frame = Frame(self)

            self.open_plugboard = Button(self.plugboard_frame, text='Plugboard',
                                         command=self.plugboard_menu)
            self.open_uhr = Button(self.plugboard_frame, text='Uhr', command=self.uhr_menu)

            # Plugboard init
            config = dict(side='left', padx=3, pady=3, fill='x', expand=True)
            self.open_plugboard.pack(**config)
            self.open_uhr.pack(**config)
            self.plugboard_frame.pack(side='bottom', fill='both')

        # Lid init
        self.rowconfigure(index=0, weight=1)

        # Container init
        self.io_board = IOBoard(self, self, self.data_handler)
        self.lightboard = Lightboard(self, self.data_handler)

        # Object not updated after reset!
        self.indicator_board = IndicatorBoard(self.rotor_container, self.data_handler)
        self.indicator_board.pack()
        self.rotor_container.pack(fill='both', padx=5, pady=5, side='top')
        self.lightboard.pack(side='top', fill='both', padx=5)
        self.io_board.pack(side='top')

        self.__make_root_menu()
        self.refresh_uhr_button()
Exemplo n.º 5
0
    def __init__(self, data_handler, *args, **kwargs):
        self.data_handler = data_handler
        bg = self.data_handler.bg

        Toplevel.__init__(self, bg=bg, *args, **kwargs)
        Base.__init__(self, 'rotor.ico', 'Rotor order')

        # Enigma settings buffer
        self.curr_rotors = [
            rotor.label for rotor in self.data_handler.enigma.rotors
        ]
        self.curr_reflector = self.data_handler.enigma.reflector.label
        self.last_reflector = self.data_handler.enigma.reflector.label
        self.curr_ring_settings = self.data_handler.enigma.ring_settings

        self.ukw_D_pairs = []

        # Frames
        self.main_frame = Frame(self, bg=bg)
        button_frame = Frame(self, bg=bg)

        # Buttons
        self.ukw_D_setup = Button(button_frame,
                                  text='UKW-D Pairs',
                                  command=self.ukwd_menu)
        self.ukw_D_setup.pack(side='left', padx=10, pady=5)

        Button(button_frame, text='Apply', width=12,
               command=self.apply).pack(side='right', padx=10, pady=5)

        Button(button_frame, text='Storno', width=12,
               command=self.destroy).pack(side='right', padx=5, pady=5)

        button_frame.pack(side='bottom', fill='x')

        # Slots for settings
        self.reflector = ReflectorSlot(
            self, self.main_frame,
            self.data_handler.enigma.factory_data['reflectors'])
        self.reflector.pack(side='left', fill='y', padx=(10, 2), pady=5)

        self.rotors = []
        self.reload_rotor_slots()

        [
            rotor.pack(side='left', padx=2, pady=5, fill='y')
            for rotor in self.rotors
        ]

        self.main_frame.pack(side='top', pady=(5, 0), padx=(0, 10))

        self.update_rotors()
        self.update_reflector()
Exemplo n.º 6
0
    def __init__(self, master, *args, **kwargs):
        Toplevel.__init__(self, *args, **kwargs)
        Base.__init__(self, 'rotor.ico', 'UKW-D Settings')

        button_frame = Frame(self)
        self.master = master

        self.apply_button = Button(button_frame, text='Apply', command=self.apply)
        config = dict(side='right', padx=10, pady=5)
        self.apply_button.pack(**config)
        Button(button_frame, text='Storno', command=self.destroy).pack(**config)
        button_frame.pack(side='bottom')

        self.entry_var = StringVar()
        self.pair_entry = Entry(self, textvariable=self.entry_var, width=50)
        self.pair_entry.insert('0', self.master.data_handler.enigma.reflector_pairs)
        self.pair_entry.pack(side='top', padx=10, pady=5)
        self.entry_var.trace('w', self.refresh_apply_button)