Ejemplo n.º 1
0
    def _setup_left_frame(self):
        '''
        The left frame mostly consists of the tree widget
        '''
        self.all_tests_tree = toga.Tree(
            ['Test'], accessors=['label'],
            data=self.test_suite,
            multiple_select=True
        )

        self.all_tests_tree.on_select = self.on_test_selected

        self.problem_tests_tree = toga.Tree(
            ['Test'], accessors=['label'],
            data=TestSuiteProblems(self.test_suite),
            multiple_select=True
        )
        self.problem_tests_tree.on_select = self.on_test_selected

        self.tree_notebook = toga.OptionContainer(
            content=[
                ('All tests', self.all_tests_tree),
                ('Problems', self.problem_tests_tree)
            ],
            on_select=self.on_tab_selected
        )
Ejemplo n.º 2
0
    def results_pane(self):
        results_pane = toga.OptionContainer(style=Pack(width=280, padding_left=20))

        self.qr_image = toga.ImageView(id='qr', image=None, style=Pack(width=250, height=250, padding_bottom=10))
        
        self.save_qr_button = toga.Button('Save QR', on_press=self.save_qr ,style=Pack(alignment=CENTER, width=250))

        self.qr_box = toga.Box(
            children=[self.qr_image, self.save_qr_button],
            style=Pack(direction=COLUMN, padding=10, width=270)
            )
        results_pane.add('QR Code', self.qr_box)

        self.xmp_text = toga.MultilineTextInput(
            style=Pack(width=270, height=350, padding=5)
            )
        self.xmp_button = toga.Button(
            'Save XMP',
            on_press=self.save_xmp,
            style=Pack(width=250, alignment=CENTER)
            )
        self.xmp_box = toga.Box(
            children=[self.xmp_text, self.xmp_button],
            style=Pack(direction=COLUMN)
        )
        results_pane.add('XMP', self.xmp_box)
        return results_pane
Ejemplo n.º 3
0
 def test_set_content_in_constructor(self):
     new_container = toga.OptionContainer(style=TestStyle(),
                                          factory=toga_dummy.factory,
                                          content=[
                                              (self.label, self.widget),
                                              (self.label2, self.widget2),
                                              (self.label3, self.widget3),
                                          ])
     self.assertEqual(len(new_container.content), 3)
     self.assertEqual(new_container.content[0]._content, self.widget)
     self.assertEqual(new_container.content[1]._content, self.widget2)
     self.assertEqual(new_container.content[2]._content, self.widget3)
Ejemplo n.º 4
0
    def setUp(self):
        super().setUp()

        self.on_select = mock.Mock()
        self.op_container = toga.OptionContainer(style=TestStyle(),
                                                 factory=toga_dummy.factory,
                                                 on_select=self.on_select)
        self.widget = toga.Box(style=TestStyle(), factory=toga_dummy.factory)
        self.label2, self.widget2 = "Widget 2", toga.Box(
            style=TestStyle(), factory=toga_dummy.factory)
        self.label3, self.widget3 = "Widget 3", toga.Box(
            style=TestStyle(), factory=toga_dummy.factory)
        self.label = 'New Container'
        self.op_container.add(self.label, self.widget)
Ejemplo n.º 5
0
def build(app):
    box = toga.Box(children=[toga.Button('My Button')])
    option_container = toga.OptionContainer()
    tab_1_content = toga.Box(
        children=[toga.Button('Button 1.{}'.format(x)) for x in range(6)],
        style=tab_style)
    option_container.add('Tab 1', tab_1_content)
    tab_2_content = toga.Box(
        children=[toga.Button('Button 2.{}'.format(x)) for x in range(6)],
        style=tab_style)
    option_container.add('Tab 2', tab_2_content)
    tab_3_content = toga.Box(
        children=[toga.Button('Button 3.{}'.format(x)) for x in range(6)],
        style=tab_style)
    option_container.add('Tab 3', tab_3_content)
    return option_container
Ejemplo n.º 6
0
    def startup(self):
        self.main_window = toga.MainWindow(title=self.name, size=(1280,800))
        self.debug_label = toga.Label("Waiting For League of Legends Client.")

        
        #self.main_window.on_close = self.on_window_close
        container = toga.OptionContainer(on_select=self.change_option, style=Pack(flex=1))
        

        # views
        self.webview_professorgg = ProfessorGG(self.client_data, style=Pack(flex=1))
        container.add(self.webview_professorgg.site, toga.Box(children=[self.webview_professorgg], style=Pack(flex=1)))

        self.webview_professorgglivegame = ProfessorGGLiveGame(self.client_data, style=Pack(flex=1))
        container.add(self.webview_professorgglivegame.site, toga.Box(children=[self.webview_professorgglivegame], style=Pack(flex=1)))

        self.webview_leaguefriendrunepage = LeagueFriendRunePage(self.client_data, style=Pack(flex=1))
        container.add(self.webview_leaguefriendrunepage.site, toga.Box(children=[self.webview_leaguefriendrunepage], style=Pack(flex=1)))

        self.webview_blitzggpostgame = BlitzGG(self.client_data, style=Pack(flex=1))
        container.add(self.webview_blitzggpostgame.site, toga.Box(children=[self.webview_blitzggpostgame], style=Pack(flex=1)))


        box = toga.Box(
            children=[
                container,
                self.debug_label
            ],
            style=Pack(
                direction=COLUMN,
                padding="5",
                flex=1
            )
        )

        self.main_window.content = box

        # Show the main window
        self.main_window.show()
Ejemplo n.º 7
0
def build(app):

    container = toga.OptionContainer()

    box1 = toga.Box()

    button = toga.Button('Hello world', on_press=button_handler)
    button.style.padding = 50
    button.style.flex = 1

    label = toga.NumberInput(min_value=10.5,
                             max_value=50.6,
                             on_change=lambda app: print(app.value))
    label.text = 'Hola Mundo'

    selection = toga.Selection(items=['Casella', 'Pedro Infante', 'Camilo'],
                               on_select=lambda app: print(app.value))
    selection.items = ['321', '123', '456', '654', '789', '987']

    box1.add(button)
    box1.add(label)
    box1.add(selection)

    box2 = toga.Box()

    image = toga.Image('../../static/images/tiberius.svg')
    imageview = toga.ImageView(image)

    slider = toga.Slider(range=(30, 50), on_slide=lambda app: print(app.value))

    box2.add(imageview)
    box2.add(slider)

    container.add('Window 1', box1)
    container.add('Window 2', box2)

    return container
Ejemplo n.º 8
0
    def startup(self):
        # Create the main window
        self.main_window = toga.MainWindow(self.name)

        left_container = toga.OptionContainer()

        left_table = toga.Table(headings=['Hello', 'World'],
                                data=[
                                    ('root1', 'value1'),
                                    ('root2', 'value2'),
                                    ('root3', 'value3'),
                                    ('root4', 'value4'),
                                ])

        left_tree = toga.Tree(headings=['Navigate'],
                              data={
                                  ('root1', ): {},
                                  ('root2', ): {
                                      ('root2.1', ):
                                      None,
                                      ('root2.2', ): [
                                          ('root2.2.1', ),
                                          ('root2.2.2', ),
                                          ('root2.2.3', ),
                                      ]
                                  }
                              })

        left_container.add('Table', left_table)
        left_container.add('Tree', left_tree)

        right_content = toga.Box(style=Pack(direction=COLUMN))
        for b in range(0, 10):
            right_content.add(
                toga.Button('Hello world %s' % b,
                            on_press=self.button_handler,
                            style=Pack(padding=20)))

        right_container = toga.ScrollContainer()

        right_container.content = right_content

        split = toga.SplitContainer()

        split.content = [left_container, right_container]

        cmd1 = toga.Command(
            self.action1,
            'Action 1',
            tooltip='Perform action 1',
            icon='resources/brutus',
        )
        cmd2 = toga.Command(self.action2,
                            'Action 2',
                            tooltip='Perform action 2',
                            icon=toga.Icon.TOGA_ICON)

        self.main_window.toolbar.add(cmd1, cmd2)

        self.main_window.content = split

        # Show the main window
        self.main_window.show()
Ejemplo n.º 9
0
    def startup(self):
        # Create the main window
        self.main_window = toga.MainWindow(self.name)
        self.main_window.app = self

        left_container = toga.OptionContainer()

        left_table = toga.Table(['Hello', 'World'])

        left_table.insert(None, 'root1', 'value1')
        left_table.insert(None, 'root2', 'value2')
        left_table.insert(None, 'root3', 'value3')
        left_table.insert(1, 'root4', 'value4')

        left_tree = toga.Tree(['Navigate'])

        left_tree.insert(None, None, 'root1')

        root2 = left_tree.insert(None, None, 'root2')

        left_tree.insert(root2, None, 'root2.1')
        root2_2 = left_tree.insert(root2, None, 'root2.2')

        left_tree.insert(root2_2, None, 'root2.2.1')
        left_tree.insert(root2_2, None, 'root2.2.2')
        left_tree.insert(root2_2, None, 'root2.2.3')

        left_container.add('Table', left_table)
        left_container.add('Tree', left_tree)

        right_content = toga.Box()
        for b in range(0, 10):
            right_content.add(
                toga.Button('Hello world %s' % b,
                            on_press=self.button_handler,
                            style=CSS(margin=20)))

        right_container = toga.ScrollContainer()

        right_container.content = right_content

        split = toga.SplitContainer()

        split.content = [left_container, right_container]

        cmd1 = toga.Command(self.action1,
                            'Action 1',
                            tooltip='Perform action 1',
                            icon=os.path.join(os.path.dirname(__file__),
                                              'icons/brutus-32.png'))
        cmd2 = toga.Command(self.action2,
                            'Action 2',
                            tooltip='Perform action 2',
                            icon=toga.TIBERIUS_ICON)

        self.main_window.toolbar = [cmd1, toga.SEPARATOR, cmd2]

        self.main_window.content = split

        # Show the main window
        self.main_window.show()
Ejemplo n.º 10
0
    def create_controls(self):

        # Vaults: Box
        self.app_box = toga.Box(
            style=Pack(direction=COLUMN, flex=1, padding=10))
        global_controls.add('Vaults', self.app_box.id)

        # Vaults -> Top Nav: Box
        self.nav_box = toga.Box(
            style=Pack(direction=ROW, flex=1, alignment="top"))
        self.app_box.add(self.nav_box)
        global_controls.add('Vaults_TopNav', self.nav_box.id)

        # Vaults -> Top Nav -> RefreshVautls: Button
        self.refresh_vaults_button = toga.Button(
            TEXT['BTN_REFRESH_VAULTS'], on_press=self.on_refresh_vaults)
        self.nav_box.add(self.refresh_vaults_button)
        global_controls.add('Vaults_TopNav_RefreshVaults',
                            self.refresh_vaults_button.id)

        # Vaults -> Top Nav -> CreateVault: Button
        create_vault_button = toga.Button('New Vault',
                                          on_press=self.on_create_vault)
        self.nav_box.add(create_vault_button)
        global_controls.add('Vaults_TopNav_NewVault', create_vault_button.id)

        # Vaults -> Top Nav -> DeleteVault: Button
        delete_vault_btn = toga.Button('Delete Vault',
                                       enabled=False,
                                       on_press=self.on_delete_vault)
        global_controls.add('Vaults_TopNav_DeleteVault', delete_vault_btn.id)
        self.nav_box.add(delete_vault_btn)

        # Vautls -> TableContainer: Box
        list_box = toga.Box(style=Pack(
            direction=COLUMN, flex=1, padding_top=5, alignment="top"))
        self.app_box.add(list_box)
        global_controls.add('Vaults_TableContainer', list_box.id)

        # Vautls -> TableContainer -> VaultsTable: Table
        self.vaults_table = Table(headers=HEADERS)
        self.vaults_table.subscribe('on_select_row',
                                    self.callback_row_selected)
        list_box.add(self.vaults_table.getbox())
        global_controls.add_from_controls(self.vaults_table.getcontrols(),
                                          'Vaults_TableContainer_')

        # Vaults -> Upload: Box
        add_file_box = toga.Box(
            style=Pack(direction=COLUMN, flex=1, padding_top=20))
        self.app_box.add(add_file_box)
        global_controls.add('Vaults_Upload', add_file_box.id)

        # Vaults -> Upload -> Title: Box
        upload_vault_title_box = toga.Box(style=Pack(direction=COLUMN, flex=1))
        add_file_box.add(upload_vault_title_box)
        global_controls.add('Vaults_Upload_Title', upload_vault_title_box.id)

        # Vaults -> Upload -> VaultName: Label
        upload_label = TEXT['LABEL_UPLOAD_VAULT'] % ('-')
        label_upload_vaultname = toga.Label(upload_label,
                                            style=STYLES['TITLE'])
        upload_vault_title_box.add(label_upload_vaultname)
        global_controls.add('Vaults_Upload_VaultName',
                            label_upload_vaultname.id)

        # Vaults -> Upload -> InputFileBox
        input_file_box = toga.Box(
            style=Pack(direction=ROW, flex=1, padding_top=5))
        add_file_box.add(input_file_box)
        global_controls.add('Vaults_Upload_InputFileBox', input_file_box.id)

        # Vaults -> Upload -> VaultPath: TextInput
        self.input_path = toga.TextInput(readonly=True, style=Pack(flex=2))
        self.input_path.value = ''
        input_file_box.add(self.input_path)
        global_controls.add('Vaults_Upload_VaultPath', self.input_path.id)

        # Vaults -> Upload -> SearchFile: Button
        searchfile_upload = toga.Button('Browse',
                                        on_press=self.on_searchfile_btn,
                                        style=Pack(padding_left=5, flex=1))
        input_file_box.add(searchfile_upload)
        global_controls.add('Vaults_Upload_SearchFileBtn',
                            searchfile_upload.id)

        # Vaults -> Upload -> Button: Button
        self.button_upload = toga.Button('Upload',
                                         on_press=self.on_upload_file,
                                         style=Pack(padding_top=10,
                                                    width=100,
                                                    alignment='right'))
        add_file_box.add(self.button_upload)
        global_controls.add('Vaults_Upload_Button', self.button_upload.id)

        # VaultDetail: Box
        self.vault_box = toga.Box(
            style=Pack(direction=COLUMN, flex=1, padding=10))
        global_controls.add('VaultDetail', self.vault_box.id)

        # VaultDetail -> VaultTitle: Label
        self.vault_title = toga.Label('Vault selected: -',
                                      style=Pack(font_size=16,
                                                 padding_bottom=5))
        self.vault_box.add(self.vault_title)
        global_controls.add('VaultDetail_VaultTitle', self.vault_title.id)

        # VaultDetail -> VaultPendingJobs: Label
        self.vault_pending_jobs = toga.Label('%s 0' %
                                             (TEXT['PENDING_INVENTORY_JOBS']))
        self.vault_box.add(self.vault_pending_jobs)
        global_controls.add('VaultDetail_VaultPendingJobs',
                            self.vault_pending_jobs.id)

        # VaultDetail -> ArchivesTable: Table
        self.archives_table = Table(headers=HEADERS_ARCHIVES)
        self.archives_table.subscribe('on_select_row',
                                      self.callback_row_selected_archive)
        self.vault_box.add(self.archives_table.getbox())
        global_controls.add_from_controls(self.archives_table.getcontrols(),
                                          'VaultDetail_TableContainer_')

        # VaultDetail -> BottomNav: Box
        self.bottom_nav_vault = toga.Box(
            style=Pack(direction=ROW, flex=1, padding_top=5))
        self.vault_box.add(self.bottom_nav_vault)
        global_controls.add('Vaults_BottomNavVault', self.bottom_nav_vault.id)

        # VaultDetail -> StartInventoryJobButton: Button
        btn_start_inv_job = toga.Button(TEXT['BTN_START_INV_JOB'],
                                        on_press=self.on_btn_start_inv_job,
                                        enabled=False)
        self.bottom_nav_vault.add(btn_start_inv_job)
        global_controls.add('VaultDetail_StartInventoryJobButton',
                            btn_start_inv_job.id)

        # VaultDetail -> CheckJobsButton: Button
        self.btn_check_jobs = toga.Button('Check Jobs',
                                          on_press=self.on_btn_check_jobs)
        self.bottom_nav_vault.add(self.btn_check_jobs)
        global_controls.add('VaultDetail_CheckJobsButton',
                            self.btn_check_jobs.id)

        # VaultDetail -> ArchiveBox: Box
        self.archive_selected_box = toga.Box(
            style=Pack(direction=COLUMN, flex=1, padding_top=15))
        self.vault_box.add(self.archive_selected_box)
        global_controls.add('Vaults_ArchiveBox', self.archive_selected_box.id)
        self.archive_selected_box._impl.set_hidden(False)

        # VaultDetail -> VaultTitle: Label
        self.archive_title = toga.Label('Archive selected: -',
                                        style=Pack(font_size=16,
                                                   padding_bottom=1))
        self.archive_selected_box.add(self.archive_title)
        global_controls.add('VaultDetail_ArchiveTitle', self.archive_title.id)

        # VaultDetail -> PendingDownload: Label
        vault_pending_archive_down = toga.Label('%s 0' %
                                                (TEXT['PENDING_ARCHIVE_JOBS']))
        self.archive_selected_box.add(vault_pending_archive_down)
        global_controls.add('VaultDetail_PendingDownload',
                            vault_pending_archive_down.id)

        # VaultDetail -> ArchiveDownloadBox: Box
        self.archive_download_box = toga.Box(
            style=Pack(direction=ROW, flex=1, padding_top=4))
        self.archive_selected_box.add(self.archive_download_box)
        global_controls.add('Vaults_ArchiveDownloadBox',
                            self.archive_download_box.id)

        # VaultDetail -> StartDownloadArchiveJobButton: Button
        self.btn_request_download_job = toga.Button(
            'Start Download Archive Job',
            on_press=self.on_btn_request_download_job)
        self.archive_download_box.add(self.btn_request_download_job)
        global_controls.add('VaultDetail_StartDownloadArchiveJobButton',
                            self.btn_request_download_job.id)

        # VaultDetail_DeleteArchive: Button
        self.btn_delete_archive = toga.Button('Delete',
                                              enabled=False,
                                              on_press=self.on_delete_archive)
        self.archive_download_box.add(self.btn_delete_archive)
        global_controls.add('VaultDetail_DeleteArchive',
                            self.btn_delete_archive.id)

        # credentials
        fields = [
            {
                'name': 'account_id',
                'label': 'Account ID:',
                'validate': ['notnull'],
            },
            {
                'name': 'access_key',
                'label': 'Access Key:',
            },
            {
                'name': 'secret_key',
                'label': 'Secret Key:',
            },
            {
                'name': 'region_name',
                'label': 'Region Name:',
            },
        ]
        confirm = {
            'label': 'Save credentials',
            'callback': self.callback_create_account
        }

        self.account_form = Form(fields=fields,
                                 confirm=confirm,
                                 initial=Account.getaccount())
        self.credentials_box = self.account_form.getbox()
        global_controls.add_from_controls(self.account_form.getcontrols(),
                                          'Credentials_')

        # OnProgress: Box
        self.onprogress_box = toga.Box(style=STYLES['OPTION_BOX'])
        global_controls.add('OnProgress', self.onprogress_box.id)

        # OnProgress > OnProgressTable: Table
        self.progress_table = Table(headers=HEADERS_ON_PROGRESS)
        #self.progress_table.subscribe('on_select_row', self.callback_row_selected)
        self.onprogress_box.add(self.progress_table.getbox())
        global_controls.add_from_controls(self.progress_table.getcontrols(),
                                          'OnProgress_TableContainer_')

        # OnProgress_PauseUpload: Button
        self.btn_pause_upload = toga.Button('Pause',
                                            on_press=self.on_pause_upload)
        self.onprogress_box.add(self.btn_pause_upload)
        global_controls.add('OnProgress_PauseUpload', self.btn_pause_upload.id)

        # OnProgress_ResumeUpload: Button
        self.btn_resume_upload = toga.Button('Resume',
                                             on_press=self.on_resume_upload)
        self.onprogress_box.add(self.btn_resume_upload)
        global_controls.add('OnProgress_ResumeUpload',
                            self.btn_resume_upload.id)

        # OnProgress_AbortUpload: Button
        self.btn_abort_upload = toga.Button('Abort',
                                            on_press=self.on_abort_upload)
        self.onprogress_box.add(self.btn_abort_upload)
        global_controls.add('OnProgress_AbortUpload', self.btn_abort_upload.id)

        # DownloadBox
        # -- downloadjob_table
        # -- download_buttons_box
        # ---- Download Archive
        # ---- Delete Job
        # -- DownloadFolderBox
        # ---- Input Folder Selected
        # ---- Btn select folder open dialog
        # -- Table Current downloads

        # DownloadBox: Box (Inside Option Download)
        self.downloads_box = toga.Box(style=STYLES['OPTION_BOX'])
        global_controls.add('DownloadBox', self.downloads_box.id)

        # DownloadBox > TableJobs
        self.downloadjob_table = Table(headers=HEADERS_DOWNLOADS_JOBS,
                                       height=200)
        self.downloads_box.add(self.downloadjob_table.getbox())
        global_controls.add_from_controls(self.downloadjob_table.getcontrols(),
                                          'DownloadBox_TableJobs_')

        # DownloadButtonsBox
        self.downloads_buttons_box = toga.Box(
            style=Pack(direction=ROW, padding_top=5))
        global_controls.add('DownloadButtonsBox',
                            self.downloads_buttons_box.id)

        # DownloadButtonsBox: Download Archive
        self.btn_download_rom_job = toga.Button(
            'Download archive from Job',
            on_press=self.on_download_archive_from_job)
        self.downloads_buttons_box.add(self.btn_download_rom_job)
        global_controls.add('DownloadBox_BtnDownload',
                            self.btn_download_rom_job.id)

        # DownloadButtonsBox: Delete Job
        self.btn_mark_job_as_done = toga.Button('Mark job as done',
                                                on_press=self.on_mark_as_done)
        self.downloads_buttons_box.add(self.btn_mark_job_as_done)
        global_controls.add('DownloadBox_BtnMarkAsDone',
                            self.btn_mark_job_as_done.id)

        # DownloadFolderBox
        self.downloads_folder_box = toga.Box(
            style=Pack(direction=ROW, padding_top=5))
        global_controls.add('DownloadFolderBox', self.downloads_folder_box.id)

        # Vaults_Download_Folder: TextInput
        self.folder_path = toga.TextInput(readonly=True, style=Pack(flex=2))
        self.folder_path.value = ''
        self.downloads_folder_box.add(self.folder_path)
        global_controls.add('Vaults_Download_Folder', self.folder_path.id)

        # Button for open select folder dialog
        self.btn_dialog_select_folder = toga.Button(
            '...', on_press=self.on_set_folderpath_destination)
        self.downloads_folder_box.add(self.btn_dialog_select_folder)
        global_controls.add('DownloadBox_BtnOpenDialogSelectFolder',
                            self.btn_dialog_select_folder.id)

        self.downloads_box.add(self.downloads_buttons_box)
        self.downloads_box.add(self.downloads_folder_box)

        # DownloadBox > TableCurrent
        self.current_downloads_table = Table(headers=HEADERS_DOWNLOADS_CURRENT,
                                             height=175)
        self.downloads_box.add(self.current_downloads_table.getbox())
        global_controls.add_from_controls(
            self.current_downloads_table.getcontrols(),
            'DownloadBox_TableCurrent_')

        # Main -> OptionContainer: OptionContainer
        self.container = toga.OptionContainer(style=Pack(padding=10,
                                                         direction=COLUMN),
                                              on_select=self.on_select_option)
        self.container.add('Vaults', self.app_box)
        self.container.add('Vault Detail', self.vault_box)
        # container.add('Jobs', self.jobs_box)
        self.container.add('Uploads', self.onprogress_box)
        self.container.add('Downloads', self.downloads_box)
        self.container.add('Credentials', self.credentials_box)

        self.main_box.add(self.container)

        # disable vaults detail option
        #option_enabled(self.container, 1, False)

        global_controls.add('Main_OptionContainer', self.container.id)
Ejemplo n.º 11
0
    def startup(self):
        # Set up main window
        self.main_window = toga.MainWindow(title=self.name)

        # styles
        style_flex = Pack(flex=1, padding=5)
        style_row = Pack(direction=ROW, flex=1)
        style_select = Pack(direction=ROW, flex=1, padding_right=10)
        style_col = Pack(direction=COLUMN, flex=1)

        # select
        label_select = toga.Label('Select an Option position:',
                                  style=style_flex)
        self.select_option = toga.Selection(style=style_flex)
        # buttons
        btn_remove = toga.Button('Remove',
                                 on_press=self.on_remove_option,
                                 style=style_flex)
        btn_enabled = toga.Button('Toggle enabled',
                                  on_press=self.on_enable_option,
                                  style=style_flex)
        # change label
        self.input_change_title = toga.TextInput(style=style_flex)
        btn_change_title = toga.Button('Change title',
                                       on_press=self.on_change_option_title,
                                       style=style_flex)

        box_select = toga.Box(style=style_select,
                              children=[label_select, self.select_option])
        box_actions_col1 = toga.Box(style=style_row,
                                    children=[btn_remove, btn_enabled])
        box_actions_col2 = toga.Box(
            style=style_row,
            children=[self.input_change_title, btn_change_title])
        box_actions = toga.Box(style=style_col,
                               children=[box_actions_col1, box_actions_col2])
        box_container_actions = toga.Box(style=style_row,
                                         children=[box_select, box_actions])

        self.selected_label = toga.Label("")
        self.optioncontainer = toga.OptionContainer(
            on_select=self.on_select_tab, style=Pack(padding_bottom=20))
        self._create_options()

        btn_add = toga.Button('Add Option', on_press=self.on_add_option)
        box_general_actions = toga.Box(style=Pack(padding_bottom=10),
                                       children=[btn_add])

        # Outermost box
        outer_box = toga.Box(children=[
            box_general_actions,
            box_container_actions,
            self.selected_label,
            self.optioncontainer,
        ],
                             style=Pack(
                                 flex=1,
                                 direction=COLUMN,
                                 padding=10,
                             ))

        self.commands.add(
            toga.Command(self.set_next_tab,
                         "Next tab",
                         shortcut=toga.Key.MOD_1 + toga.Key.RIGHT,
                         group=toga.Group.COMMANDS,
                         order=1),
            toga.Command(self.set_previous_tab,
                         "Previous tab",
                         shortcut=toga.Key.MOD_1 + toga.Key.LEFT,
                         group=toga.Group.COMMANDS,
                         order=1))

        # Add the content on the main window
        self.main_window.content = outer_box

        # Show the main window
        self.main_window.show()
Ejemplo n.º 12
0
    def setUp(self):
        super().setUp()

        self.op_container = toga.OptionContainer(style=TestStyle(),
                                                 factory=toga_dummy.factory)
Ejemplo n.º 13
0
    def startup(self):
        self.main_window = toga.MainWindow(title=self.name, size=(1280, 800))

        container = toga.OptionContainer(on_select=self.change_option,
                                         style=Pack(flex=1))

        copy_url = toga.Command(self.setClipboardData,
                                label="Copy URL",
                                tooltip='Copy the current URL')

        self.commands.add(copy_url)
        self.view = None

        if self.summoners['option'] == 'pregame':
            for func in [
                    processor_ProfessorGG, processor_OPGG,
                    processor_LeagueFriend
            ]:
                url, script, site = func(self.summoners['data'],
                                         self.summoners['region'])
                webview = BrowserWebview(style=Pack(flex=1))
                webview.setData(url, script)
                container.add(site,
                              toga.Box(children=[webview], style=Pack(flex=1)))
                if not self.view:
                    self.view = webview
                if func == processor_LeagueFriend:
                    self.webview_runes = webview

        if self.summoners['option'] == 'postgame':
            for func in [processor_BlitzPostGame]:
                url, script, site = func(self.summoners['data'],
                                         self.summoners['region'])
                webview = BrowserWebview(style=Pack(flex=1))
                webview.setData(url, script)
                #webview.url = url
                container.add(
                    site, toga.Box(children=[webview],
                                   style=Pack(padding="5")))
                if not self.view:
                    self.view = webview

        global __DEBUG__
        if __DEBUG__:
            self.debug_webview = toga.WebView(style=Pack(flex=1))
            container.add(
                "DEBUG",
                toga.Box(children=[self.debug_webview], style=Pack(flex=1)))
            self.log("Started. 1")
            self.log("Started. 2")

        box = toga.Box(children=[container],
                       style=Pack(direction=COLUMN, padding="10", flex=1))

        self.main_window.content = box

        # start rpc
        if self.summoners['option'] == 'pregame':
            rpc_thread = threading.Thread(target=self.rpc_server)
            rpc_thread.start()

        # Show the main window
        self.main_window.show()
Ejemplo n.º 14
0
    def setUp(self):
        self.factory = MagicMock()
        self.factory.OptionContainer = MagicMock(return_value=MagicMock(
            spec=toga_dummy.factory.OptionContainer))

        self.op_container = toga.OptionContainer(factory=self.factory)
Ejemplo n.º 15
0
    def startup(self):
        # Paths and files
        ospath = os.path.dirname(sys.argv[0])
        self.CONFIG_FILE = ospath + '\\config'

        # Constants
        self.CHECKUP_TIME = 20 * 60
        self.BREAK_TIME = 20

        # Activity box
        activity_box = toga.Box(
            style=Pack(direction=COLUMN, background_color='aqua'))

        self.timer_running = False

        title_label = toga.Label('Eye Help',
                                 style=Pack(padding_left=50,
                                            padding_right=50,
                                            padding_top=20,
                                            font_family='monospace',
                                            font_size=30,
                                            font_weight='bold'))

        instruction = 'Start and stop timer to track your screen use and eye blinks'

        instructions_box = MultilineLabel(instruction,
                                          box_style=Pack(direction=COLUMN,
                                                         padding_left=50,
                                                         padding_top=10),
                                          label_style=Pack(
                                              padding_bottom=10,
                                              font_family='monospace',
                                              font_size=12),
                                          char_line=35)

        self.start_button = toga.Button('Start Timer!',
                                        on_press=self.begin_timer,
                                        style=Pack(padding_left=50,
                                                   padding_right=50,
                                                   padding_top=20,
                                                   background_color='violet',
                                                   height=50,
                                                   font_family='monospace',
                                                   font_size=20))

        self.stop_button = toga.Button('Stop Timer!',
                                       on_press=self.stop_timer,
                                       style=Pack(padding_left=50,
                                                  padding_right=50,
                                                  padding_top=20,
                                                  padding_bottom=10,
                                                  background_color='violet',
                                                  height=50,
                                                  font_family='monospace',
                                                  font_size=20),
                                       enabled=False)

        # https://www.healthline.com/health/how-many-times-do-you-blink-a-day
        blinks_label = MultilineLabel(
            'It is recommended to blink 15 - 20 times in a minute',
            box_style=Pack(direction=COLUMN,
                           padding_bottom=10,
                           background_color='aqua'),
            label_style=Pack(padding_left=50,
                             background_color='aqua',
                             font_family='monospace',
                             font_size=12),
            char_line=35)

        activity_box.add(title_label)
        activity_box.add(self.start_button)
        activity_box.add(self.stop_button)
        activity_box.add(instructions_box)
        activity_box.add(blinks_label)

        # Eye tips box
        # https://www.mayoclinic.org/diseases-conditions/eyestrain/diagnosis-treatment/drc-20372403
        # https://www.health.ny.gov/prevention/tobacco_control/smoking_can_lead_to_vision_loss_or_blindness
        # https://www.health.harvard.edu/blog/will-blue-light-from-electronic-devices-increase-my-risk-of-macular-degeneration-and-blindness-2019040816365
        self.eye_tips = [
            'Try to not to use very bright lighting as the glare can strain your eyes and make the screen harder to look at',
            'Try to put light sources in places that do not directly shine on your eyes',
            'Using non-prescripted eye drops can help relieve dry eyes. Try to get ones recommended by your doctor',
            'Make sure you screens are at least an arms length away from your eyes',
            'Improve the air quality the air by getting a humidifier or adjusting the thermostat',
            'If you smoke, try to stop as it can lead to diseases related to vision loss',
            'Low levels of blue light (emitted froms screens and most lights) do not affect your eyes, but high levels can be hazardous to your eyes',
            'Blue light affects your biological clock (sleep cycle) so try to avoid screens and bright lights before or while you sleep',
            '20-20-20 Every 20 minutes focus at an object 20 feet far for at least 20 seconds',  # done by timer
            '...'
        ]

        eye_tips_box = toga.Box(style=Pack(
            direction=COLUMN, padding_bottom=10, background_color='aqua'))
        for tip in self.eye_tips:
            tip_box = MultilineLabel(tip,
                                     box_style=Pack(direction=COLUMN,
                                                    padding_bottom=10,
                                                    background_color='wheat'),
                                     label_style=Pack(background_color='aqua',
                                                      font_family='monospace',
                                                      font_size=15),
                                     char_line=28)
            eye_tips_box.add(tip_box)

        eye_tips_scroll = toga.ScrollContainer(style=Pack(
            direction=COLUMN, padding=(5, 5), background_color='red'))
        eye_tips_scroll.content = eye_tips_box

        # Calibrate box
        calibrate_box = toga.Box(
            style=Pack(direction=COLUMN, background_color='aqua'))
        calibrate_info = toga.Label('You will be given instructions',
                                    style=Pack(padding_left=10,
                                               padding_top=10,
                                               font_family='monospace',
                                               font_size=15))
        calibrate_button = toga.Button('Calibrate',
                                       style=Pack(padding_left=50,
                                                  padding_right=50,
                                                  padding_top=20,
                                                  padding_bottom=20,
                                                  background_color='violet',
                                                  font_family='monospace',
                                                  font_size=20),
                                       on_press=self.start_calibrate)
        calibrate_when = MultilineLabel(
            'Use this if you feel that blinks are not being counted correctly',
            box_style=Pack(direction=COLUMN,
                           padding_bottom=10,
                           background_color='aqua'),
            label_style=Pack(padding_left=10,
                             font_family='monospace',
                             font_size=15))
        graph_button = toga.Button('Graph Eye Aspect Ratio',
                                   style=Pack(padding_left=50,
                                              padding_right=50,
                                              padding_top=10,
                                              padding_bottom=10,
                                              background_color='violet',
                                              font_family='monospace',
                                              font_size=15),
                                   on_press=self.start_graph)

        EAR_definition = MultilineLabel(
            '*Eye aspect ratio is lower the more your eyes close',
            box_style=Pack(direction=COLUMN,
                           padding_bottom=10,
                           background_color='aqua'),
            label_style=Pack(padding_left=10,
                             font_family='monospace',
                             font_size=13))

        # manual calibration is a work in progress
        manual_label = toga.Label('Manually calibrate (pick EAR) here',
                                  style=Pack(padding_left=10,
                                             padding_top=10,
                                             font_family='monospace',
                                             font_size=15))
        manual_label2 = toga.Label('Pick a value that seems like a blink',
                                   style=Pack(padding_left=10,
                                              padding_top=10,
                                              font_family='monospace',
                                              font_size=15))
        manual_input = toga.NumberInput(min_value=1,
                                        max_value=99,
                                        style=Pack(padding=(10, 50), width=50))

        calibrate_box.add(calibrate_when)
        calibrate_box.add(calibrate_button)
        calibrate_box.add(calibrate_info)
        calibrate_box.add(graph_button)
        calibrate_box.add(EAR_definition)

        # Config box
        config_box = toga.Box(
            style=Pack(direction=COLUMN, background_color='aqua'))
        self.video_switch = toga.Switch('Show Video',
                                        style=Pack(padding_left=50,
                                                   padding_right=50,
                                                   padding_top=20,
                                                   padding_bottom=20,
                                                   font_family='monospace',
                                                   font_size=20),
                                        is_on=self.tobool(
                                            self.read_config()[1]))

        save_button = toga.Button('Save Configuration',
                                  style=Pack(padding_left=50,
                                             padding_right=50,
                                             padding_top=20,
                                             padding_bottom=20,
                                             background_color='violet',
                                             font_family='monospace',
                                             font_size=20),
                                  on_press=self.save_config)

        reset_button = toga.Button('Reset Configuration',
                                   style=Pack(padding_left=50,
                                              padding_right=50,
                                              padding_top=20,
                                              padding_bottom=20,
                                              background_color='red',
                                              font_family='monospace',
                                              font_size=20),
                                   on_press=self.reset_config)

        config_box.add(self.video_switch)
        config_box.add(save_button)
        config_box.add(reset_button)

        # options - toolbar
        options = toga.OptionContainer(style=Pack(direction=ROW,
                                                  background_color='snow',
                                                  font_family='monospace',
                                                  font_size=15))
        options.add('Activity', activity_box)
        options.add('Eye tips', eye_tips_scroll)
        options.add('Calibrate', calibrate_box)
        options.add('Configure', config_box)

        main_box = toga.Box(style=Pack(
            padding=(10, 10), direction=COLUMN, background_color='snow'))
        main_box.add(options)

        # Create and show main window
        self.main_window = toga.MainWindow(title=self.formal_name,
                                           size=(640, 480),
                                           resizeable=False)
        self.main_window.content = main_box
        self.main_window.show()
Ejemplo n.º 16
0
    def startup(self):
        # Set up main window
        self.main_window = toga.MainWindow(title=self.name)

        # styles
        style_flex = Pack(flex=1, padding=5)
        style_row = Pack(direction=ROW, flex=1)
        style_select = Pack(direction=ROW, flex=1, padding_right=10)
        style_col = Pack(direction=COLUMN, flex=1)

        # select
        label_select = toga.Label('Select an Option position:',
                                  style=style_flex)
        self.select_option = toga.Selection(style=style_flex)
        # buttons
        btn_remove = toga.Button('Remove',
                                 on_press=self.on_remove_option,
                                 style=style_flex)
        btn_enabled = toga.Button('Toggle enabled',
                                  on_press=self.on_enable_option,
                                  style=style_flex)
        # change label
        self.input_change_title = toga.TextInput(style=style_flex)
        btn_change_title = toga.Button('Change title',
                                       on_press=self.on_change_option_title,
                                       style=style_flex)

        box_select = toga.Box(style=style_select,
                              children=[label_select, self.select_option])
        box_actions_col1 = toga.Box(style=style_row,
                                    children=[btn_remove, btn_enabled])
        box_actions_col2 = toga.Box(
            style=style_row,
            children=[self.input_change_title, btn_change_title])
        box_actions = toga.Box(style=style_col,
                               children=[box_actions_col1, box_actions_col2])
        box_container_actions = toga.Box(style=style_row,
                                         children=[box_select, box_actions])

        self.optioncontainer = toga.OptionContainer(style=Pack(
            padding_bottom=20))
        self._create_options()

        btn_add = toga.Button('Add Option', on_press=self.on_add_option)
        box_general_actions = toga.Box(style=Pack(padding_bottom=10),
                                       children=[btn_add])

        # Outermost box
        outer_box = toga.Box(children=[
            box_general_actions, box_container_actions, self.optioncontainer
        ],
                             style=Pack(
                                 flex=1,
                                 direction=COLUMN,
                                 padding=10,
                             ))

        # Add the content on the main window
        self.main_window.content = outer_box

        # Show the main window
        self.main_window.show()
Ejemplo n.º 17
0
    def startup(self):
        main_box = toga.Box(id="mainbox",
                            style=Pack(direction=COLUMN, padding=5))
        self.solver = solver()
        self.detector = detector()
        self.ImagePath = None
        self.ROIPath = None
        self.Preview = toga.ImageView(
            image=toga.Image("resources/blank_sudoku.jpg"))
        self.grid = []
        self.hideROI = True
        self.imgLoaded = False
        self.ImgStatusLabel = None

        for i in range(9):
            self.grid.append([])
            row = toga.Box(style=Pack(direction=ROW, padding=0))
            for j in range(9):
                self.grid[i].append(
                    toga.Button(label=" ",
                                id='{}{}'.format(i, j),
                                on_press=self.pressedButton,
                                style=Pack(flex=1, background_color="white")))
                row.add(self.grid[i][j])
                if (j + 1) % 3 == 0 and j < 8:
                    row.add(toga.Label(style=Pack(padding=0), text="\t"))
            main_box.add(row)
            if (i + 1) % 3 == 0 and i < 8:
                main_box.add(toga.Label(text="\t"))

        #adding solvebutton
        main_box.add(toga.Label(text="\t"))
        main_box.add(
            toga.Button(label="Get obvious Fields",
                        on_press=self.obviousButton))
        main_box.add(toga.Button(label="Solve", on_press=self.solveButton))

        selection_box = toga.Box(id="imagebox",
                                 style=Pack(direction=ROW, padding=10))
        selection_buttons = toga.Box(style=Pack(direction=COLUMN, padding=5))
        selection_buttons.add(
            toga.Button(label="Open   ", on_press=self.openButton))
        selection_buttons.add(
            toga.Button(label="ROI      ",
                        on_press=self.switchButton,
                        style=Pack(direction=COLUMN)))
        self.ImgStatusLabel = toga.Label(text="Select an Image")
        selection_buttons.add(toga.Label(text=""))
        selection_buttons.add(self.ImgStatusLabel)
        selection_box.add(selection_buttons)
        selection_box.add(self.Preview)

        option = toga.OptionContainer()
        option.add("Image", selection_box)
        option.add("Sudoku", main_box)

        #init window
        self.main_window = toga.MainWindow(title=self.formal_name)
        self.main_window.content = option

        self.main_window.show()
Ejemplo n.º 18
0
    def setUp(self):
        super().setUp()

        self.op_container = toga.OptionContainer(factory=toga_dummy.factory)
Ejemplo n.º 19
0
    def startup(self):
        """
        Construct and show the Toga application.

        Usually, you would add your application to a main content box.
        We then create a main window (with a name matching the app), and
        show the main window.
        """
        main_box = EddingtonBox(style=Pack(direction=COLUMN))
        main_box.add(HeaderBox())

        self.input_file_box = InputFileBox(
            on_choose_record=self.choose_records)
        self.input_file_box.on_input_file_change = self.reset_fitting_data
        self.input_file_box.on_csv_read = self.read_csv
        self.input_file_box.on_excel_read = self.read_excel
        self.input_file_box.on_select_excel_file = self.select_default_sheet
        main_box.add(self.input_file_box)

        self.data_columns_box = DataColumnsBox(
            on_columns_change=self.on_data_columns_change)
        self.data_columns_box.add(
            toga.Button("Explore",
                        on_press=self.explore,
                        style=Pack(padding_left=SMALL_PADDING)))
        main_box.add(self.data_columns_box)

        self.fitting_function_box = FittingFunctionBox(
            on_fitting_function_load=self.on_fitting_function_load)
        self.fitting_function_box.add(
            toga.Button(label="Fit", on_press=self.fit),
            toga.Button(label="Load module", on_press=self.load_module),
        )
        main_box.add(self.fitting_function_box)

        self.initial_guess_box = ParametersBox(
            on_parameters_change=self.reset_fitting_result)
        self.initial_guess_box.add(toga.Label(text="Initial Guess:"))
        main_box.add(self.initial_guess_box)

        self.plot_boxes = {}
        self.can_plot_map = {}
        self.add_plot_configuration_box(
            option_label="Data",
            button_label="Plot data",
            plot_method=lambda **kwargs: plot_data(
                data=self.data_columns_box.fitting_data, **kwargs),
            can_plot=self.can_plot_data,
            suffix="Data",
            has_legend=False,
        )
        self.add_plot_configuration_box(
            option_label="Initial guess",
            button_label="Plot initial guess",
            plot_method=lambda **kwargs: plot_fitting(
                func=self.fitting_function_box.fitting_function,
                data=self.data_columns_box.fitting_data,
                a=self.initial_guess_box.a0,
                **kwargs,
            ),
            suffix="Initial Guess",
            can_plot=self.can_plot_initial_guess,
        )
        self.add_plot_configuration_box(
            option_label="Fit",
            button_label="Plot fit",
            plot_method=lambda **kwargs: plot_fitting(
                func=self.fitting_function_box.fitting_function,
                data=self.data_columns_box.fitting_data,
                a=self.fitting_result.a,
                **kwargs,
            ),
            suffix="Fitting",
            can_plot=self.can_plot_fit,
        )
        self.add_plot_configuration_box(
            option_label="Residuals",
            button_label="Plot residuals",
            plot_method=lambda **kwargs: plot_residuals(
                func=self.fitting_function_box.fitting_function,
                data=self.data_columns_box.fitting_data,
                a=self.fitting_result.a,
                **kwargs,
            ),
            suffix="Residuals",
            can_plot=self.can_plot_fit,
            has_legend=False,
        )
        self.plot_options_container = toga.OptionContainer(style=Pack(flex=5))
        self.plot_options_container.app = self
        for label, box in self.plot_boxes.items():
            self.plot_options_container.add(label, box)

        main_box.add(self.plot_options_container)

        self.output_box = OutputBox(on_save_output=self.on_save_output)
        main_box.add(self.output_box)

        main_box.add(FooterBox())

        self.main_window = toga.MainWindow(title=self.formal_name,
                                           size=MAIN_WINDOW_SIZE)
        self.main_window.content = main_box

        self.check_latest_version()
        self.commands.add(
            # File group
            toga.Command(
                self.input_file_box.select_file,
                label="Upload data file",
                shortcut=toga.Key.MOD_1 + "o",
                group=toga.Group.FILE,
                order=1,
            ),
            toga.Command(
                self.load_module,
                label="Load module",
                shortcut=toga.Key.MOD_1 + "m",
                group=toga.Group.FILE,
                order=2,
            ),
            toga.Command(
                self.choose_records,
                label="Choose records",
                shortcut=toga.Key.MOD_1 + "d",
                group=toga.Group.FILE,
                order=3,
            ),
            toga.Command(
                self.output_box.choose_output_dir,
                label="Choose output directory",
                shortcut=toga.Key.MOD_1 + "u",
                group=toga.Group.FILE,
                order=4,
            ),
            toga.Command(
                self.on_save_output,
                label="Save plots and results",
                shortcut=toga.Key.MOD_1 + "s",
                group=toga.Group.FILE,
                order=5,
            ),
            toga.Command(
                lambda widget: self.open_latest_version_webpage(),
                label="Install Eddington-GUI latest version",
                group=toga.Group.FILE,
                order=6,
                enabled=self.has_newer_version,
            ),
            toga.Command(
                self.fit,
                label="Fit result",
                shortcut=toga.Key.MOD_1 + "e",
                group=PLOT_GROUP,
            ),
            toga.Command(
                lambda _: self.set_font_size(FontSize.SMALL),
                "Set small font size",
                group=toga.Group.VIEW,
                order=FontSize.SMALL.value,
            ),
            toga.Command(
                lambda _: self.set_font_size(FontSize.MEDIUM),
                "Set medium font size",
                group=toga.Group.VIEW,
                order=FontSize.MEDIUM.value,
            ),
            toga.Command(
                lambda _: self.set_font_size(FontSize.LARGE),
                "Set large font size",
                group=toga.Group.VIEW,
                order=FontSize.LARGE.value,
            ),
        )
        self.set_font_size(FontSize.DEFAULT)
        if not has_matplotlib:
            self.main_window.info_dialog(
                "Error",
                (f"Error loading matplotlib.\nPlease go to {self.faq_url}"
                 " and see how to solve this problem"),
            )
            webbrowser.open(self.faq_url)

        self.main_window.show()

        if self.has_newer_version and self.main_window.question_dialog(
                "Update is available",
            (f"A new version of {self.formal_name} is available! "
             "would you like to download it?"),
        ):
            self.open_latest_version_webpage()
Ejemplo n.º 20
0
import toga

container = toga.OptionContainer()

table = toga.Table(['Hello', 'World'])
tree = toga.Tree(['Navigate'])

container.add('Table', table)
container.add('Tree', tree)


def build(app):
    return container


toga.App('First App', 'org.pybee.helloworld', startup=build).main_loop()
Ejemplo n.º 21
0
    def startup(self):

        # Create main window
        self.main_window = toga.MainWindow(self.name)
        icons = os.path.join(os.path.dirname(__file__), 'icons')

        # dice number window
        self.roll_dice = ''
        self.die_window = toga.Window('die_num', title='How many dice to roll', closeable=False,
                                      minimizable=False)
        self.dice_number = toga.Slider(range=(1,10), window=self.die_window)


        # Character Attributes on the left
        self.left_content = toga.Slider()
        self.left_container = toga.ScrollContainer(content=self.left_content, horizontal=False)

        # Other attributes on the right
        self.right_container = toga.OptionContainer()

        self.right_table = toga.Table(headings=['Throws', 'Values'])
        self.right_tree = toga.Tree(headings=['Spells', 'Equipment'])

        self.right_container.add('Table', self.right_table)
        self.right_container.add('Tree', self.right_tree)


        # Split left and right boxes formed above
        self.split = toga.SplitContainer()
        self.split.content = [self.left_container, self.right_container]

        # Make dice toolbar
        cmd4 = toga.Command(self.dice4,
                            'Roll D4',
                            tooltip='Roll a four sided die',
                            icon=os.path.join(icons, 'd4.png'),
                            order=1)
        cmd6 = toga.Command(self.dice6,
                            'Roll D6',
                            tooltip='Roll a six sided die',
                            icon=os.path.join(icons, 'd6.png'),
                            order=2)
        cmd8 = toga.Command(self.dice8,
                            'Roll D8',
                            tooltip='Roll a eight sided die',
                            icon=os.path.join(icons, 'd8.png'),
                            order=3)
        cmd10 = toga.Command(self.dice10,
                            'Roll D10',
                            tooltip='Roll a 10 sided die',
                            icon=os.path.join(icons, 'd10.png'),
                            order=4)
        cmd12 = toga.Command(self.dice12,
                            'Roll D12',
                            tooltip='Roll a twelve sided die',
                            icon=os.path.join(icons, 'd12.png'),
                            order=5)
        cmd20 = toga.Command(self.dice20,
                            'Roll D20',
                            tooltip='Roll a twenty sided die',
                            icon=os.path.join(icons, 'd20.png'),
                            order=6)

        # Show main window
        self.main_window.toolbar.add(cmd4, cmd6, cmd8, cmd10, cmd12, cmd20)
        self.main_window.toolbar.add(die_slider)
        self.main_window.content = self.split
        self.main_window.show()