Exemplo n.º 1
0
    def load(self, path, filename):
        donnees = pd.read_table(os.path.join(path, filename[0]),
                                sep='\t',
                                header=0)
        self.titre = "Echantillon: " + donnees["Sample Name"][1]

        print(os.path.join(path, filename[0]))
        M, F, P, Echantillon_F, log = Traitement2.lecture_fichier(
            os.path.join(path, filename[0]))
        """ Maintenant concernant le fait que les biologistes puissent changer les seuils, j'ai ajoute des setters sur la classe Echantillon egalement.
        Il est important que tu mettes en place les nouvelles valeurs ici avant de faire passer le tout dans "traitement_donnees". Sinon tes modifs n'auront pas lieu.
        Voilà les lignes de code :"""
        Echantillon_F.set_seuil_hauteur(self.hauteur)
        Echantillon_F.set_seuil_taux_conta(self.conta)
        Echantillon_F.set_seuil_nbre_marqueurs(self.nb)

        Traitement2.Echantillon.analyse_donnees(Echantillon_F, M, F, log)
        resultats, conclusion, log = Echantillon_F.analyse_donnees(M, F, log)
        nv_onglets = TabbedPanelHeader(text=str(donnees["Sample Name"][1]),
                                       background_color=(75 * 3 / 255,
                                                         127 * 3 / 255,
                                                         209 * 3 / 255, 1))
        contenu_res = ResAnalyse(titre="Echantillon: " +
                                 donnees["Sample Name"][1] + "\n" + "\n",
                                 NvGroupe=len(self.ids.les_onglets.tab_list))
        contenu_res.remplissage(resultats, conclusion,
                                Echantillon_F.get_conclusion())

        nv_onglets.content = contenu_res
        self.ids.les_onglets.add_widget(nv_onglets)
        self.ids.les_onglets.switch_to(nv_onglets, do_scroll=True)
        self.dismiss_popup()
    def __init__(self, plot_handler, arbin_test, root=None, *args, **kwargs):
        super().__init__(*args, **kwargs)
        TabbedPanelHeader.add_widget(self, CloseableHeaderOverLay(self))
        ### input parameters
        self.plot_handler = plot_handler
        self.arbin_test = arbin_test
        self.root = root

        ### get items to create plot tab
        figure = self.plot_handler.figure
        # self.figure = figure
        canvas = FigureCanvasKivyAgg(figure)

        ### define plot tab and add to self
        self.plot_tab = PlotTab(actual_parent=self)
        self.plot_tab.add_widget(canvas)
        self.add_widget(self.plot_tab)
        if self.arbin_test.cell_build_info is not None:
            mass_header = configuration.parser['settings']['mass_header']
            mass = self.arbin_test.cell_build_info[mass_header]
            self.plot_tab.ids.mass_input.text = str(mass)

        ### get my nav bar
        # self.nav_bar = NavigationToolbar2Kivy(canvas)
        self.nav_bar = CustomKivyNavBar(canvas)
        try:
            setattr(self.nav_bar.actionbar, 'background_image', '')
            setattr(self.nav_bar.actionbar, 'background_color',
                    (.5, .47, .5, 0.7))
        except Exception as e:
            print(e)
        self.plt_canvas = canvas
Exemplo n.º 3
0
    def create_new_class(self, create_class_list_widget, class_name):
        # TO DO: creating class and then immediately removing class doesn't work
        if not len(create_class_list_widget.student_widgets):
            print('Class is empty!')
            return

        path = os.path.join('records',
                            class_name.strip().replace(' ', '_') + '.db')
        if os.path.exists(path):
            print('Error! Class already exists!')
            return

        print('Creating New Class:', path)

        db = open(path, 'w')
        conn = sqlite3.connect(path)
        curs = conn.cursor()
        db_cons.append(conn)
        db_curs.append(curs)
        db_manager.reset(curs, True)

        for i, w in enumerate(create_class_list_widget.student_widgets):
            print(w.name)
            db_manager.add_user(curs, i, w.name)

        tab = TabbedPanelHeader(text=class_name)
        tab.content = StudentList(len(self.student_main.class_tabs))
        self.student_main.class_tabs.append(tab)
        self.student_main.add_widget(tab)

        # db_manager.close(conn)

        self.dismiss_create_class_popup()
Exemplo n.º 4
0
    def __init__(self, **kwargs):
        super(MainWidget, self).__init__(**kwargs)

        self.do_default_tab = False
        self.tab_width = 200
        self.UsRoster = TabbedPanelHeader(text='Our Team')
        self.ThemRoster = TabbedPanelHeader(text='Their Team')
        self.UsRoster.content = Roster()
        self.UsRoster.content.name = 'Us'
        self.ThemRoster.content = Roster()
        self.ThemRoster.content.name = 'Them'
        self.add_widget(self.UsRoster)
        self.add_widget(self.ThemRoster)

        self.VMeet = TabbedPanelHeader(text='Varsity Meet')
        self.JVMeet = TabbedPanelHeader(text='Junior Varsity Meet')
        self.VMeet.content = DualMeet()
        self.JVMeet.content = DualMeet()
        self.add_widget(self.VMeet)
        self.add_widget(self.JVMeet)
        self.JVMeet.content.UsRoster = self.UsRoster.content
        self.JVMeet.content.ThemRoster = self.ThemRoster.content
        self.JVMeet.content.Daddy = self
        self.VMeet.content.UsRoster = self.UsRoster.content
        self.VMeet.content.ThemRoster = self.ThemRoster.content
        self.VMeet.content.Daddy = self
        self.VMeet.content.populate()
        self.JVMeet.content.populate()
Exemplo n.º 5
0
def crear_tab(materia):
    global estante
    global libreria


    th = TabbedPanelHeader(text=materia)

    layout_del_content=GridLayout(cols=1,spacing=[10,10],padding=[10,10],size_hint_y=None)

    layout_del_content.bind(minimum_height=layout_del_content.setter('height'))

    
    #habilitar el scrolliing
    my_scroll_view=ScrollView(size_hint=(1, None), size=(libreria.width,libreria.height-100))

    my_scroll_view.add_widget(layout_del_content)

    th.content=my_scroll_view




    #rescatamos referencia al contenedor de la tabla
    #materias.append()

    estante.add_widget(th)
Exemplo n.º 6
0
 def __init__(self, **kwargs):
     super(PartnerUpdate, self).__init__(**kwargs)
     self.select_partner_tab = TabbedPanelHeader(text = 'Children')
     self.communication_tab = TabbedPanelHeader(text = 'Communication')
     self.add_widget(self.select_partner_tab, 0)
     self.add_widget(self.communication_tab, 0)
     self.content.do_layout()
    def __init__(self, **kwargs):
        super(AdminTabbedPanel, self).__init__(**kwargs)

        self.do_default_tab = False
        self.tab_pos = 'top_mid'

        # Layouts in tabs
        self.estimators_layout = EstimatorsLayout()
        self.users_layout = UsersLayout()
        self.users_vs_estimators_layout = UsersVSEstimatorsLayout()
        # self.activity_logs_layout = ActivityLogsLayout()
        self.admin_profile_layout = AdminProfileLayout()

        # Adding tabbed panel headers
        self.add_widget(
            TabbedPanelHeader(text='Estimators',
                              content=self.estimators_layout))
        self.add_widget(
            TabbedPanelHeader(text='Users', content=self.users_layout))
        self.add_widget(
            TabbedPanelHeader(text='Users VS\nEstimators',
                              content=self.users_vs_estimators_layout))
        # self.add_widget(TabbedPanelHeader(text='Activity logs', content=self.activity_logs_layout))
        self.add_widget(
            TabbedPanelHeader(text='Profile',
                              content=self.admin_profile_layout))
Exemplo n.º 8
0
 def add_tab(self):
     """Adds a new tab to this TabbedPanel.
     
     The new tab will contain a TransformPanel and attach this panel
     as a listener to its transform property.  It will be added after
     the current tab, and the panel will switch to that tab.
     
     This implementation has a hard-limit of 6 tabs; the implementation
     will show an error dialog if this method tries to exceed that
     number of tabs."""
     if (len(self.tab_list) > 6):
         dialog = ErrorDialog('No more than 6 transforms allowed')
         dialog.size_hint = (0.7,0.6)
         dialog.pos_hint = {'x':0.15,'y':0.2}
         return
     
     pos = self.tab_list.index(self.current_tab)
     content = TransformPanel()
     content.bind(transform=self.recalculate)
     panel = TabbedPanelHeader(text='',content=content)
     panel.background_color = (0.8,0.8,0.5)
     panel.background_down = 'a5lib/uix/tab_down.png'
     panel.background_normal = 'a5lib/uix/tab_up.png'
     self.add_widget(panel)
     for x in range(pos):
         self.shuffle_tab(x,True)
     tab1 = self.tab_list[pos+1]
     tab2 = self.tab_list[pos]
     
     tab1.state = 'normal'
     tab2.state = 'down'
     self.switch_to(self.tab_list[pos])
Exemplo n.º 9
0
 def __init__(self, **kwargs):
     super(GraphManager, self).__init__(**kwargs)
     self.n_points_per_update = 10
     self.tabs_dict = {
         'Capacitance':
         CapacitancePlot(n_plots=4,
                         color=[(0.5, 0.1, 0.1, 1), (0.1, 0.5, 0.1, 1),
                                (0.1, 0.1, 0.5, 1), (0.5, 0.1, 0.5, 1)],
                         legend=['Ch 1', 'Ch 2', 'Ch 3', 'Ch 4']),
         'Resistance':
         ResistancePlot(),
         'Temperature':
         TemperaturePlot(color=(0.5, 0.1, 0.1, 1), legend='Temperature'),
         'Humidity':
         HumidityPlot(color=(0.5, 0.1, 0.1, 1), legend='Humidity'),
         'Current':
         CurrentPlot()
     }
     for tab in self.tabs_dict.keys():
         # Create panel
         th = TabbedPanelHeader(text=tab)
         th.content = self.tabs_dict[tab]
         self.add_widget(th)
         # Bind data sample rate
         self.bind(data_sample_rate=self.tabs_dict[tab].setter(
             'data_sample_rate'))
         # Bind temperature and humidity sample rate
         self.bind(temperature_sample_rate=self.tabs_dict[tab].setter(
             'temperature_sample_rate'))
         self.bind(num_samples_per_second=self.tabs_dict[tab].setter(
             'num_samples_per_second'))
Exemplo n.º 10
0
    def build(self) -> 'kivy.uix.tabbedpanel.TabbedPanel':
        self.tp = TabbedPanel()
        self.tp.tab_width = 500
        

        #Default tab: Main Controller
        self.tp.default_tab_text = "Main Controller Page"
        self.tp.default_tab_content = ControllerView()
        self.tp.default_tab.background_normal = 'images/strong_blue.png'
        self.tp.default_tab.background_down = 'images/lime_green.png'

        #Drone Control
        self.th_drone_adv_control = TabbedPanelHeader(text='Drone Control')
        self.th_drone_adv_control.content= DroneView()
        self.th_drone_adv_control.background_normal = 'images/strong_blue.png'
        self.th_drone_adv_control.background_down = 'images/lime_green.png'

        #Drone Control
        self.th_drone_control = TabbedPanelHeader(text='DIPS and Mapping')
        self.th_drone_control.content= DroneAdvView()
        self.th_drone_control.background_normal = 'images/strong_blue.png'
        self.th_drone_control.background_down = 'images/lime_green.png'

        #Documentation
        self.th_doc = TabbedPanelHeader(text='Documentation')
        self.th_doc.content= DocView()
        self.th_doc.background_normal = 'images/strong_blue.png'
        self.th_doc.background_down = 'images/lime_green.png'        

        self.tp.add_widget(self.tp.default_tab)
        self.tp.add_widget(self.th_drone_adv_control)
        self.tp.add_widget(self.th_drone_control)
        self.tp.add_widget(self.th_doc)

        return self.tp
Exemplo n.º 11
0
    def add_tab(self):
        """Adds a new tab to this TabbedPanel.
        
        The new tab will contain a TransformPanel and attach this panel
        as a listener to its transform property.  It will be added after
        the current tab, and the panel will switch to that tab.
        
        This implementation has a hard-limit of 6 tabs; the implementation
        will show an error dialog if this method tries to exceed that
        number of tabs."""
        if (len(self.tab_list) > 6):
            dialog = ErrorDialog('No more than 6 transforms allowed')
            dialog.size_hint = (0.7, 0.6)
            dialog.pos_hint = {'x': 0.15, 'y': 0.2}
            return

        pos = self.tab_list.index(self.current_tab)
        content = TransformPanel()
        content.bind(transform=self.recalculate)
        panel = TabbedPanelHeader(text='', content=content)
        panel.background_color = (0.8, 0.8, 0.5)
        panel.background_down = 'a5lib/uix/tab_down.png'
        panel.background_normal = 'a5lib/uix/tab_up.png'
        self.add_widget(panel)
        for x in range(pos):
            self.shuffle_tab(x, True)
        tab1 = self.tab_list[pos + 1]
        tab2 = self.tab_list[pos]

        tab1.state = 'normal'
        tab2.state = 'down'
        self.switch_to(self.tab_list[pos])
Exemplo n.º 12
0
    def __init__(self, retour_selection, titre, parent_scm,
                 dict_eleves_par_groupe, **kwargs):
        self.titre = titre
        self.retour_selection = retour_selection
        self.parent_scm = parent_scm
        self.dict_eleves = dict_eleves_par_groupe
        self.dict_panneau_groupe = dict()
        super(Formation, self).__init__(**kwargs)

        for nom_groupe in self.dict_eleves.keys():
            tb = TabbedPanelItem(text=nom_groupe)
            panneaugr = PanneauGroupe(self.dict_eleves[nom_groupe],
                                      nom_cours=titre)
            self.dict_panneau_groupe[nom_groupe] = panneaugr
            tb.add_widget(panneaugr)
            self.nb.add_widget(tb)

        fin = TabbedPanelItem(text='Terminer')
        self.panfin = PanneauFinFormation(self.terminaison, self.recapitulatif)
        fin.add_widget(self.panfin)
        fin.bind(on_release=self.panfin.update)
        self.nb.add_widget(fin)
        self.panneau_fin = fin
        retour = TabbedPanelHeader(text='Retour')
        retour.bind(on_release=self.retour)
        self.nb.add_widget(retour)
        self.panneau_retour = retour
Exemplo n.º 13
0
    def create_game_widgets(self):
        pos_x = 0.2
        tp = Tab(size_hint=(0.8, 0.75), pos_hint={'x': pos_x, 'y': 0.25})
        th = TabbedPanelHeader(text='Game State')
        tp.add_widget(th)
        layout = FloatLayout()
        pos_x = 0.1
        game = GameHandler.get_game_instance()
        print(game.__dict__)
        for index, suit in enumerate(Suit):
            card_map = game.card_map[index]
            selected_cards = []
            if len(card_map) > 0:
                min_card = Card.from_str(card_map[0])
                max_card = Card.from_str(card_map[1])
                selected_cards = list(CardIterator(min_card, max_card))

            second = SuitWidget(suit,
                                selected_cards,
                                size_hint=(0.2, 1),
                                pos_hint={
                                    'x': pos_x,
                                    'y': 0.15
                                })
            pos_x += 0.2
            layout.add_widget(second)
        th.content = layout
        self.add_widget(tp)
        self.state_layout = layout
        game = GameHandler.get_game_instance()
        self.create_player_widget(game.me)
        background_color = get_color_from_hex(
            "#FFFFFF" if game.is_your_turn() else "#808080")
        disabled_color = get_color_from_hex("#FFFFFF")
        self.pass_button = pass_button = Button(
            text="PASS",
            pos_hint={
                'x': 0.4,
                'y': 0.05
            },
            size_hint=(0.25, 0.05),
            disabled=not game.is_your_turn(),
            background_disabled_normal='')
        pass_button.background_color = background_color
        pass_button.disabled_color = disabled_color
        pass_button.bind(on_press=self.pass_move)
        self.add_widget(pass_button, index=0)
        self.move_button = move_button = Button(
            text="Make Move",
            size_hint=(0.25, 0.05),
            pos_hint={
                'x': 0.4,
                'y': 0.15
            },
            disabled=not game.is_your_turn(),
            background_disabled_normal='')
        move_button.background_color = background_color
        move_button.disabled_color = disabled_color
        move_button.bind(on_press=self.on_click)
        self.add_widget(move_button, index=0)
Exemplo n.º 14
0
 def create_player_widget(self, player):
     pos_x = 0
     tp = Tab(size_hint=(0.2, 0.75), pos_hint={'x': pos_x, 'y': 0.25})
     th = TabbedPanelHeader(text=player.player["name"])
     tp.add_widget(th)
     player_widget = GamePlayerWidget(player=player)
     player_widget.bind(selected_card=self.on_selected)
     th.content = player_widget
     self.add_widget(tp)
     self.player_widget = player_widget
Exemplo n.º 15
0
 def build(self):
     self.config.read(self.get_application_config())
     h = Home()
     th = TabbedPanelHeader(text='Settings')
     h.add_widget(th)
     sett = Settings()
     th.content = sett.create_json_panel('Fractal Entropy',
                                         self.config,
                                         data=mysettings.json)
     return h
Exemplo n.º 16
0
Arquivo: dash.py Projeto: x4rMa/Dash
	def build(self):
        # App is built as a tabbed panel with three tabs:
        # Navigation, Status, and Media. These allow quick
        # access to the things you actually want to do in
        # a car without excessive UI navigation.
		tp = TabbedPanel()
		tp.do_default_tab = False
		tp.tab_pos = 'bottom_mid'
		tp.tab_width = Window.width / 3

		nav = TabbedPanelHeader(text='Nav')
		status = TabbedPanelHeader(text='Status')
		media = TabbedPanelHeader(text='Media')
		
		tp.add_widget(nav)
		tp.add_widget(status)
		tp.add_widget(media)

		#nav.content = Label(text = 'Nav system goes here')
		#status.content = Label(text = 'Performance, health, and eco stats go here')
		#media.content = Label(text = 'Media player goes here')

        # Each tab's content is implemented in a tab above.
		nav.content = KVMaps()
		status.content = Performance()
		media.content = MusicPlayer()
		return tp
Exemplo n.º 17
0
      def build(self):
          tb_panel= TabbedPanel()
          tb_panel.background_image ="fundal2.jpg"
          tb_panel.default_tab_text =  "tab-ul default"
          tb_panel.default_tab_content = Image(source='infoacademy3.gif',pos=(200, 100), size=(200, 200))

          th_text_head = TabbedPanelHeader(text='Text tab')
          th_text_head.content= Label(text='Infoacademy', font_size = 40)
 
          th_img_head= TabbedPanelHeader(text='Image tab')
          th_img_head.content= Image(source='infoacademy4.gif',pos=(400, 100), size=(400, 400))
 
          th_btn_head = TabbedPanelHeader(text='Button tab')
          layout= GridLayout(cols=1)
          eticheta=Label(text='tab-ul cu buton', font_size = 40)
          buton=Button(text='Acesta este un buton',font_size=20)
          layout.add_widget(eticheta)
          layout.add_widget(buton)
          th_btn_head.content= layout
          th_btn_head.content.padding = 200
          
 
          tb_panel.add_widget(th_text_head)
          tb_panel.add_widget(th_img_head)
          tb_panel.add_widget(th_btn_head)         
 
          return tb_panel
Exemplo n.º 18
0
    def build(self):
        root = TabbedPanel(do_default_tab=False)
        tab32 = TabbedPanelHeader(text="Binary 32")
        tab64 = TabbedPanelHeader(text="Binary 64")
        tab32.content = IEEE754Converter(number_of_bits=32)
        tab64.content = IEEE754Converter(number_of_bits=64) 
       
        root.add_widget(tab32)
        root.add_widget(tab64)

        return root
Exemplo n.º 19
0
    def __init__(self, **kwargs):
        super(StudentMain, self).__init__(**kwargs)

        self.default_tab_text = 'Welcome!'
        self.default_tab.content = Label(text='Welcome to CATsys!')

        for i in range(len(db_curs)):
            tab = TabbedPanelHeader(
                text=db_names[i])  #(text='Class %i' % (i + 1))
            tab.content = StudentList(i)
            self.class_tabs.append(tab)
            self.add_widget(tab)
Exemplo n.º 20
0
def generate_GUI(menus):
    app_gui = TabbedPanel()
    app_gui.clear_tabs()
    app_gui.orientation = "vertical"
    app_gui.do_default_tab = False
    app_gui.tab_width = 150

    for menu_key, sub_menu in menus.items():
        main_menu = TabbedPanelHeader(text=menu_key)
        scroll_pane = ScrollView()
        scroll_pane.scroll_type = ['bars', 'content']
        scroll_pane.bar_pos_y = 'left'
        scroll_pane.bar_width = 6
        scroll_pane.do_scroll_y = True
        scroll_pane.do_scroll_x = False
        scroll_pane.scroll_y = 1

        menu_grid = GridLayout(cols=1, spacing=2, size_hint_y=None)
        menu_grid.orientation = "vertical"
        menu_grid.padding = 10
        menu_grid.row_default_height = 1
        menu_height = 0

        print(">>>" + menu_key)
        for sub_menu_key, items in sub_menu.items():
            menu_grid.add_widget(
                Label(text="     " + sub_menu_key, size_hint=(None, None), font_size=14, halign="left",
                      valign="middle"))
            print("\t" + sub_menu_key)
            for option in items:

                if "Name" in option:
                    print("\t\t" + option["Name"])
                    btn = Button(text=option["Name"], size_hint=(0.1, None), background_color=(0.2, 1, 1, 0.8))
                    btn.bind(on_press=lambda x: webbrowser.open(option["URL"]))
                else:
                    print("\t\t" + "<EMPTY>")
                    btn = Button(text="<EMPTY>", size_hint=(0.1, None), background_color=(0.2, 1, 1, 0.8))
                    btn.bind(on_press=lambda x: webbrowser.open(option["URL"]))
                btn.width = 250
                btn.height = 50
                menu_grid.add_widget(btn)
                menu_height += 80
            menu_height += 51
        menu_grid.height = menu_height
        scroll_pane.add_widget(menu_grid)
        main_menu.content = scroll_pane
        main_menu.orientation = "vertical"

        # Adding headers to main layout
        app_gui.add_widget(main_menu)
    return app_gui
Exemplo n.º 21
0
    def results_panel_fill(self):
        # remove previous results from results grid
        self.results_grid.clear_widgets()
        self.results_panel = TabbedPanel(do_default_tab=False)

        # loop through categories in current results
        for category in self.results.categories.keys():

            category_tab = TabbedPanelHeader(text=category)

            # add grid to a scrollview widget
            items_scrollview = ScrollView(size_hint=(1, None), size=(Window.width, Window.height * 0.55))

            # create grid that is scrollable
            items_grid = GridLayout(cols=3, size_hint=(1, None), size=(Window.width, Window.height * 0.55))
            items_grid.bind(minimum_height=items_grid.setter('height'))

            new_items_field = TextInput(hint_text="'Seperate multiple items with commas'")
            add_item_btn = Button(text='Add\nitems', size_hint=(del_col, None),
                                  on_press=partial(self.add_new_cat_item_callback, input=new_items_field,
                                                   category=category))
            add_widgets(items_grid, (new_items_field, add_item_btn))

            # disable add new item button on search box when add item btn in results box is added
            # self.add_item_btn.disabled = True

            # loop through items in category

            items = self.results.categories[category].items.items()
            for (item_name, item_obj) in items:
                # create item label, edit button, and del button
                delete_btn = ToggleButton(text="X", size_hint=(del_col, None),
                                          on_press=partial(self.delete_item_callback,
                                                           item=item_name,
                                                           category=category))

                edit_btn = Button(text=item_name, size_hint=(item_col, None),
                                  on_press=partial(self.edit_item_callback, category=category, item=item_name))

                edit_btn.text_size=edit_btn.size

                # edit_btn.text_size = edit_btn.size
                add_widgets(items_grid, (edit_btn, delete_btn))
            # create a textbox for adding new items'

            items_scrollview.add_widget(items_grid)

            category_tab.content = items_scrollview
            self.results_panel.add_widget(category_tab)

        # add panel to results grid
        self.results_grid.add_widget(self.results_panel)
Exemplo n.º 22
0
 def __init__(self, **kwargs):
     super(MainWindow, self).__init__(**kwargs)
     self.default_tab_text = 'Share'
     self.main_window_share_contents = MainWindowShareContents()
     self.default_tab_content = self.main_window_share_contents
     self.main_window_download_contents = MainWindowDownloadContents()
     self.download_tab = TabbedPanelHeader(text='Download')
     self.download_tab.content = self.main_window_download_contents
     self.add_widget(self.download_tab)
     self.main_window_about_contents = MainWindowAboutContents()
     self.about_tab = TabbedPanelHeader(text='About')
     self.about_tab.content = self.main_window_about_contents
     self.add_widget(self.about_tab)
Exemplo n.º 23
0
    def __init__(self, **kwargs):
        super(TrainMain, self).__init__(**kwargs)

        self.default_tab_text = 'Training'
        self.default_tab.content = Label(
            text='Use these tools to help train the model.')

        for i in range(len(db_curs)):
            tab = TabbedPanelHeader(
                text=db_names[i])  #(text='Class %i' % (i + 1))
            tab.content = ImageDateList(i, self)
            self.locations.append(tab)
            self.add_widget(tab)
Exemplo n.º 24
0
	def build(self):
	    sekmeli_panel = TabbedPanel()
	    
	    sekmeli_panel.default_tab.text="İlk Sekme"
	    
	    sekmeli_panel.default_tab.content=Label(text="Sekmeli Panel'in İlk sayfası")
	    
	    for i, isim in enumerate(('Dilek', 'Fatih', 'Melike')):
	        sekme=TabbedPanelHeader(text='Sekme %d' % (i+1))
	        sekme.content=Label(text="Bu sekmenin sahibi: %s" % isim)
	        sekmeli_panel.add_widget(sekme)
	    
	    return sekmeli_panel
Exemplo n.º 25
0
      def build(self):
          tb_panel= TabbedPanel(tab_width=Window.size[0]/4)
          screen_layout = BoxLayout(padding=10, orientation="horizontal", size_hint=(.7, 1))
          tb_panel.default_tab_text = 'Login'
          
          #Create text tab
          th_text_head = TabbedPanelHeader(id='one',text='Screen1')
          th_text_head.content = test1().test()
          #tb_panel.Screen1_tab_content = self.test()
          
          #Create image tab
          th_img_head= TabbedPanelHeader(text='Screen2')
          th_img_head.content= Image(source='sample.jpg',pos=(400, 100), size=(400, 400))
 
          #Create button tab
          th_btn_head = TabbedPanelHeader(text='Screen3')
          th_btn_head.content= Button(text='This is my button',font_size=20, size_hint_x=0.5, 
                                      size_hint_y=0.5)
 
          th_text2_head = TabbedPanelHeader(text='Screen4')
          th_text2_head.content= Label(text='This is my text content')

          
          tb_panel.add_widget(th_text_head)
          tb_panel.add_widget(th_img_head)
          tb_panel.add_widget(th_btn_head) 
          tb_panel.add_widget(th_text2_head)
            
          return tb_panel
    def __init__(self, db, **kwargs):
        super(UserTabbedPanel, self).__init__(**kwargs)

        self.db = db
        self.do_default_tab = False
        self.tab_pos = 'top_mid'

        # Layouts in tabs
        self.user_estimators_layout = UserEstimatorsLayout(db=self.db)
        self.user_own_profile_layout = UserOwnProfileLayout(db=self.db)

        # Adding tabbed panel headers
        self.add_widget(TabbedPanelHeader(text='Estimators', content=self.user_estimators_layout))
        self.add_widget(TabbedPanelHeader(text='Profile', content=self.user_own_profile_layout))

        self.bind(user=self.bind_user)
Exemplo n.º 27
0
    def login_pressed(self, instance):
        sql.execute("SELECT CLIENT_ID FROM client WHERE CLIENT_ID = %s AND PASSWORD = %s", (self.cid.text, self.password.text))
        result = sql.fetchall()
        if len(result) == 0:
            popup_layout = GridLayout(rows = 2)
            popup_layout.add_widget(Label(text='Invalid Username / Password'))

            close_popup = Button(text = "Close")
            popup_layout.add_widget(close_popup)

            invalid_login_popup = Popup(title='Error', content=popup_layout, size_hint=(.3, .3))
            close_popup.bind(on_press=invalid_login_popup.dismiss)
            invalid_login_popup.open()
        else:
            th = TabbedPanelHeader(text=self.cid.text)
            th.content = app_home().run(self.cid.text, header, th)
            header.add_widget(th)
Exemplo n.º 28
0
    def load(self, path, filename):
        donnees = pd.read_table(os.path.join(path, filename[0]),
                                sep='\t',
                                header=0)
        self.titre = "Resultat"
        #print(donnees)

        M, F, P, Echantillon_F = Traitement_1.lecture_fichier(
            os.path.join(path, filename[0]))
        #print(os.path.join(path, filename[0]))
        #self.corps = Traitement_1.traitement_donnees(M, F, Echantillon_F)
        nv_onglets = TabbedPanelHeader(text=str(donnees["Sample Name"][1]))
        nv_onglets.content = Label(
            text="Echantillon: " + donnees["Sample Name"][1] + "\n" + "\n" +
            Traitement_1.traitement_donnees(M, F, Echantillon_F))
        self.ids.les_onglets.add_widget(nv_onglets)
        self.dismiss_popup()
Exemplo n.º 29
0
    def add_term_widget(self, cfg):
        layout = TermBoxLayout()

        ti = TabbedPanelHeader()
        ti.text = ' '.join([str(len(self.root_widget.term_panel.tab_list) + 1), 'Terminal'])
        ti.content = layout
        ti.size_hint = (1,1)

        self.root_widget.term_panel.add_widget(ti)

        session = create_session(cfg, self.create_terminal(cfg))

        term_widget = TermTextInput(session)
        term_widget.size_hint = (1, 1)
        term_widget.pos_hint = {'center_y':.5, 'center_x':.5}

        layout.add_widget(term_widget)
        layout.term_widget = term_widget

        ti.term_widget = term_widget
        ti.session = session

        ti.session.term_widget = term_widget
        ti.session.terminal.term_widget = term_widget

        Clock.unschedule(self.root_widget.term_panel._load_default_tab_content)
        self.switch_to_tab(ti)

        conn_str = cfg.get_conn_str()

        if conn_str in self.conn_history:
            self.conn_history.remove(conn_str)

        self.conn_history.insert(0, conn_str)
Exemplo n.º 30
0
 def on_success_categories(req, result):
     with open('categories.json', 'w') as fp:
         json.dump(result, fp)
         fp.close()
     self.categories_json = result
     print ('categories loaded.')
     for i in result['result']:
         name = i['name']
         self.categories_list.append(i)
         if not getTabHeader(self.my_tabbed_panel_wid.tab_list, name):
             th = TabbedPanelHeader(text=name)
             self.my_tabbed_panel_wid.add_widget(th)
             layout = GridLayout(cols=4, spacing=2, size_hint_y=None)
             layout.bind(minimum_height=layout.setter('height'))
             root = ScrollView()
             root.add_widget(layout)
             th.content = root
         print ('add online category ' + name)
 def add_panel(self, panel, name, uid):
     scrollview = ScrollView()
     scrollview.add_widget(panel)
     if not self.tabbedpanel.default_tab_content:
         self.tabbedpanel.default_tab_text = name
         self.tabbedpanel.default_tab_content = scrollview
     else:
         panelitem = TabbedPanelHeader(text=name, content=scrollview)
         self.tabbedpanel.add_widget(panelitem)
Exemplo n.º 32
0
 def MAJ(self):
     if self.MAJeffectuee == True :
         return
     listeOnglets = []
     for titre, texte in LISTE_TEXTES :
         #onglet = TabbedPanelItem(text=titre)
         #doc = RstDocument(text=texte)
         #onglet.add_widget(doc)
         
         onglet = TabbedPanelHeader(text=titre)
         onglet.font_size = 15
         onglet.content = RstDocument(text=texte)
   
         
         self.tab_aide.add_widget(onglet)
         listeOnglets.append(onglet)
     self.tab_aide.switch_to(listeOnglets[0])
     self.MAJeffectuee = True
Exemplo n.º 33
0
 def create_tabs(self):
     pbuilder = self.parent
     th1 = TabbedPanelHeader(text = 'Particle')
     th2 = TabbedPanelHeader(text = 'Behavior')
     th3 = TabbedPanelHeader(text = 'Color')
     th1.content = ParticlePanel(pbuilder)
     th2.content = BehaviorPanel(pbuilder)
     th3.content = ColorPanel(pbuilder)
     th1.font_size = self.size[0] * .036
     th2.font_size = self.size[0] * .036
     th3.font_size = self.size[0] * .036
     self.tabs_loaded = True
     self.particle_tabs.add_widget(th1)
     self.particle_tabs.add_widget(th2)
     self.particle_tabs.add_widget(th3)
Exemplo n.º 34
0
    def build(self):

        tabbedpanel = TabbedPanel(do_default_tab = False)
        tabbedpanel.bind(current_tab = self.on_current_tab)
        self.curtab = None

        self.filechooser = FileChooser(path = os.path.abspath('.'), on_submit = self.on_file_submit)
        self.filechooserheader = TabbedPanelHeader(text = 'Select file', content = self.filechooser)
        
        tabbedpanel.add_widget(self.filechooserheader)

        self.qrwidget = QRCode()
        self.qrwidget.borderwidth = self.config.getint('settings', 'borderwidth')
        self.on_config_change(self.config, 'settings', 'error', self.config.get('settings', 'error'))
        self.qrwidget.imagery = self.config.get('settings', 'imagery')
        self.qrwidgetheader = TabbedPanelHeader(text = 'Sending', content = self.qrwidget)
        tabbedpanel.add_widget(self.qrwidgetheader)

        self.readiter = None
        self.writefile = None

        self.cameraheaders = (
            TabbedPanelHeader(text = 'Camera 1'),#, content = Camera(index = 0, play = False)),
            TabbedPanelHeader(text = 'Camera 2')#, content = Camera(index = 1, play = False))
        )
        for cameraheader in self.cameraheaders:
            tabbedpanel.add_widget(cameraheader)
        #self.camera = Camera(index=1)
        #self.camera._camera.bind(on_texture = self.on_camtexture)
        #self.camera._camera.widget = self.camera
        #pagelayout.add_widget(self.camera)

        self.settingsheader = TabbedPanelHeader(text = 'Settings', content = self._app_settings)
        tabbedpanel.add_widget(self.settingsheader)

        self.tabbedpanel = tabbedpanel

        self.settings_cls = SettingsWithNoMenu
        # this seems clearer than doing the hack to make dynamic creation work in tabbedpanel
        self._app_settings = self.create_settings()

        return tabbedpanel
Exemplo n.º 35
0
    def create_tabs(self):
        pbuilder = self.parent
        th1 = TabbedPanelHeader(text = 'Particle')
        th2 = TabbedPanelHeader(text = 'Behavior')
        th3 = TabbedPanelHeader(text = 'Color')
        th1.content = ParticlePanel(pbuilder)
        th2.content = BehaviorPanel(pbuilder)
        th3.content = ColorPanel(pbuilder)
        th1.font_size = self.size[0] * .036
        th2.font_size = self.size[0] * .036
        th3.font_size = self.size[0] * .036
        self.particle_tabs.default_tab = TabbedPanelHeader(text="default tab replaced"+str(randint(1,10000)))

        self.tabs_loaded = True
        self.particle_tabs.add_widget(th1)
        self.particle_tabs.add_widget(th2)
        self.particle_tabs.add_widget(th3)
Exemplo n.º 36
0
 def on_error_categories(req, result):
     self.update_icon(False)
     print 'could not load categories'
     try:
         with open('categories.json') as data_file:
             result = json.load(data_file)
             self.categories_json = result
         for i in result['result']:
             name = i['name']
             self.categories_list.append(i)
             if not getTabHeader(self.my_tabbed_panel_wid.tab_list, name):
                 th = TabbedPanelHeader(text=name)
                 self.my_tabbed_panel_wid.add_widget(th)
                 layout = GridLayout(cols=4, spacing=2, size_hint_y=None)
                 layout.bind(minimum_height=layout.setter('height'))
                 root = ScrollView()
                 root.add_widget(layout)
                 th.content = root
                 print ('add local category ' + name)
     except:
         traceback.print_exc(file=sys.stdout)
Exemplo n.º 37
0
    def __init__(self, **kwargs):
        super(TabbedPanelApp, self).__init__(**kwargs)
        self.cols =1
        tb_panel= TabbedPanel()
        
        th_text_head = TabbedPanelHeader(text='Text tab')
        th_text_head.content= Label(text='Un text')
 
        th_img_head= TabbedPanelHeader(text='Image tab')
        th_img_head.content= Image(source='nature4.jpg',pos=(400, 100), size=(400, 400))
 
        th_btn_head = TabbedPanelHeader(text='Button tab')
        th_btn_head.content= Button(text='Acesta este un buton',font_size=20,
                                    size_hint=(0.8, 0.8))
        
        tb_panel.add_widget(th_text_head)
        tb_panel.add_widget(th_img_head)
        tb_panel.add_widget(th_btn_head)         
 
        self.add_widget(tb_panel)
Exemplo n.º 38
0
      def build(self):
          tb_panel= TabbedPanel()

          #Create text tab          
          th_text_head = TabbedPanelHeader(text='Text tab')
          th_text_head.content= Label(text='This is my text content')

          #Create image tab
          th_img_head= TabbedPanelHeader(text='Image tab')
          th_img_head.content= Image(source='sample.jpg',pos=(400, 100), size=(400, 400))

          #Create button tab
          th_btn_head = TabbedPanelHeader(text='Button tab')
          th_btn_head.content= Button(text='This is my button',font_size=20)

          tb_panel.add_widget(th_text_head)
          tb_panel.add_widget(th_img_head)
          tb_panel.add_widget(th_btn_head)          

          return tb_panel
Exemplo n.º 39
0
    def build(self):

        btn_animate = Button(
            text='animate', on_press=self.animate, size_hint=(0.4, 0.2))

        set_T = Slider(min=10, max=20, value=12)
        set_T.bind(value=self.set_T)

        root = TabbedPanel(do_default_tab=False)

        # cracking panel
        cracking_panel = TabbedPanelHeader(text='Cracking')
        cracking_panel.content = BoxLayout(orientation='vertical')
        cracking_panel.content.add_widget(self.cracking_wid)
        cracking_panel.content.add_widget(btn_animate)

        # cb panel
        cb_panel = TabbedPanelHeader(text='CB')
        cb_panel.content = BoxLayout()
        cb_panel.content.add_widget(self.cb_wid)
        cb_panel.content.add_widget(set_T)

        # matrix panel
        #matrix_panel = TabbedPanelHeader(text='Matrix')
        #matrix_panel = GridLayout()

        # curve panel
        btn_plot = Button(
            text='Plot', on_press=self.plot_eps_sig, size_hint=(0.4, 0.2))
        curve_panel = TabbedPanelHeader(text='Curve')
        curve_panel.content = BoxLayout(orientation='vertical')
        curve_panel.content.add_widget(self.curve_wid)
        curve_panel.content.add_widget(btn_plot)
        # curve_panel.content.add_widget(wid1)

        root.add_widget(cb_panel)
        # root.add_widget(matrix_panel)
        root.add_widget(cracking_panel)
        root.add_widget(curve_panel)

        return root
Exemplo n.º 40
0
	def build(self):
	#*******ROOTWIDGET*******
		layout = GridLayout(rows=2)		
	#*******SUB-WIDGETS*******
		layoutTop = GridLayout(cols=3,rows=1)#SUB-WIDGET-1
		layoutTop.size_hint = (1, 0.1)
		layoutMid = GridLayout(cols=1, size_hint_x=1)#SUB-WIDGET-2
	#*******CONTENT-OF-SUB-WIDGET-1*******	
		backbtn = Button()
		title = Label(text = 'Pro-Forma App', font_size = '20sp', pos = (0,300), size_hint_y = None,size_hint_x=None, width=200, halign ='right', valign='middle')
		title.size_hint = (None, 0.1)
		dropbtn = Button()
	#*******CONTENT-OF-SUB-WIDGET-2*******
		tp_panel = TabbedPanel()
		tp_panel.default_tab_text = "Login Tab"	
		#*******TAB1*******	
		th_tab1 = TabbedPanelHeader(text = 'Pro-Forma')
		#*******MAIN-LAYOUT-FOR-TAB1*******
		mainlayout = GridLayout(cols=1, spacing=10)
		#*******LAYOUT-FOR-PROPERTY-INFORMATION*******
		layouttab1 = GridLayout(cols=2,rows=6, pos_hint ={'center_x': .5, 'center_y': .5},row_force_default=True, row_default_height=40)
		#*******LAYOUT-FOR-UNIT-MIX*******
		layoutmix = GridLayout(cols=4, pos_hint ={'center_x': .5, 'center_y': .5},row_force_default=True, row_default_height=40)
		#*******LAYOUT-FOR-EXPENSES*******
		layoutexpense = GridLayout(cols=2)
		#*******LAYOUT-FOR-ACCOUNTS*******
		
		#*******CONTENT1*******
		mainlayout.add_widget(Label(text='Property Information',size_hint_y=None, height=50))
		#*******CONTENT2*******
		layouttab1.add_widget(Label(text= 'Property Name', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp'))
		layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle'))
		layouttab1.add_widget(Label(text= 'Property Address', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp'))
		layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle'))
		layouttab1.add_widget(Label(text= 'Town/City', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp'))
		layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle'))
		layouttab1.add_widget(Label(text= 'Asking Price', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp'))
		layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle'))
		layouttab1.add_widget(Label(text= 'Total Units', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp'))
		layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle'))
		layouttab1.add_widget(Label(text= 'Square Footage', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp'))
		layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle'))
		mainlayout.add_widget(layouttab1)
		#*******CONTENT3*******
		mainlayout.add_widget(Label(text='Unit Mix',size_hint_x=None, width=200, size_hint_y=None, height=50))
		#*******CONTENT4*******
		layoutmix.add_widget(Label(text='# of Units'))
		layoutmix.add_widget(Label(text='Unit Type'))
		layoutmix.add_widget(Label(text='SquareFeet'))
		layoutmix.add_widget(Label(text='Monthly Rent'))
		layoutmix.add_widget(TextInput(text='Input', font_size=15))
		layoutmix.add_widget(TextInput(text='Input', font_size=15))
		layoutmix.add_widget(TextInput(text='Input', font_size=15))
		layoutmix.add_widget(TextInput(text='Input', font_size=15))
		mainlayout.add_widget(layoutmix)
		#*******CONTENT5*******
		mainlayout.add_widget(Label(text='Expenses',size_hint_x=None, width=200, size_hint_y=None, height=50))
		#*******CONTENT6*******
		layoutexpense.add_widget(Label(text='Accounting'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Advertising'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Bank Charges'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Electricity'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Gas'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Security'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='All insurance'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Permits and fees'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Maintenance'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Trash Pick-up'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='All other'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		mainlayout.add_widget(layoutexpense)
		#*******CONTENT7*******
		mainlayout.add_widget(Label(text='Accounts'))
		#*******CONTENT7*******
		#*******SCOLLABILITY*******
		#*******CALLING-MAINLAYOUT-IN-TAB1*******
		th_tab1.content = mainlayout
		
		#___*******TAB2*******___#
		th_tab2 = TabbedPanelHeader(text = 'Info. Tab')
	 	
		#___*******TAB3*******___#
		th_tab3 = TabbedPanelHeader(text = 'Due Deligence')
		
		#___*******TAB4*******___#
		th_tab4 = TabbedPanelHeader(text = 'Saved Reports')
		
	#*******CALLING-TABS-TO-tp_panel*******
		tp_panel.add_widget(th_tab1)
		tp_panel.add_widget(th_tab2)
		tp_panel.add_widget(th_tab3)
		tp_panel.add_widget(th_tab4)	
	#*******ADDING-CONTENTS-OF-SUB-WIDGETS*******
		layoutTop.add_widget(backbtn)
		layoutTop.add_widget(title)
		layoutTop.add_widget(dropbtn)
		layoutMid.add_widget(tp_panel)
	#*******ADDING-CONTENTS-OF-ROOT-WIDGET*******
		layout.add_widget(layoutTop)
		layout.add_widget(layoutMid)
	#*******CALLING-THE-ROOT-WIDGET*******	
		return layout
Exemplo n.º 41
0
    def __init__(self):
        super(MyWidget, self).__init__()
        
        self.cos_table = CosTable([(0,0), (100,1), (1000,.25), (8191,0)])
        self.osc_out = Osc(table=self.cos_table, freq=220)

        # For each element of the GUI, make sure to
        # 1. Create a unique reference attached to this object for
        #   future manipulation. e.g. self.main_box = main_box after you've
        #   created a BoxLayout called main_box

        # Interesting things about Kivy UI programming:
        # 1. y starts counting from bottom left
        # 2. set size_hint to '[None, None]' for all new widgets if defining
        #       the size and manually

        # MAIN LAYOUT
        main_layout = FloatLayout(size=[800,600], orientation='horizontal')
        self.main_layout = main_layout
        self.add_widget(main_layout)

        # TABS WITH GAME CONTROL
        # Tabbed panel for music, settings, network
        # Y-position of tabbed panel depends on tab height!
        tabs = TabbedPanel(tab_width=50, size=[160, 480], pos=[0, 120],
                           size_hint=(None, None))
        self.tabs = tabs
        main_layout.add_widget(tabs)

        # Music tab
        music_button = Button(text="Music things")
        tabs.default_tab_content = music_button
        tabs.default_tab.text = "Music"

        # Network tab
        network_tab = TabbedPanelHeader(text="Net")
        tabs.add_widget(network_tab)
        network_layout = BoxLayout(orientation="vertical", padding=10)
        server_button = Button(text="Start server")
        ip_label = Label(text="Your IP is\n123.234.456.789");
        client_label = Label(text="Connect to server: ");
        server_ip_input = TextInput(text="Enter server IP")
        network_layout.add_widget(server_button)
        network_layout.add_widget(ip_label)
        network_layout.add_widget(client_label)
        network_layout.add_widget(server_ip_input)
        network_tab.content = network_layout

        # Global tab
        global_tab = TabbedPanelHeader(text="Global")
        tabs.add_widget(global_tab)
        global_button = Button(text="Global things")
        global_tab.content = global_button
        # END TABS

        # RIGHT-SIDE LAYOUT: NOTES GRID AND PLAYBACK UI
        music_layout = FloatLayout(size=[640, 600], pos=[161, 0],
                                   size_hint=[None, None])
        self.music_layout = music_layout
        main_layout.add_widget(music_layout)

        # NOTES GRID
        # Right now Kivy isn't really paying attention to button size and
        # padding. Later on, we'll fix this with a FloatLayout
        note_rows = note_cols = 8
        padding_between = 5
        note_grid = GridLayout(size=[640, 480], pos=[161, 121], 
                               size_hint=[None, None], rows=note_rows, 
                               cols=note_cols, padding=padding_between)
        music_layout.add_widget(note_grid)

        edge_padding = 30

        grid_start_x = note_grid.x + edge_padding
        grid_end_x = note_grid.right - edge_padding
        grid_start_y = note_grid.y + edge_padding
        grid_end_y = note_grid.top - edge_padding
        notes_matrix = []

        note_width = grid_end_x - grid_start_x - padding_between * \
                    (note_rows - 1)
        note_height = grid_end_y - grid_start_y - padding_between * \
                      (note_rows - 1)

        # Adding a rectangle to test playback indicator
        self.playback_indicator = Rectangle(pos=[161,121], size=[75, 480])
        self.playback_canvas = Canvas()
        playback_widget = Widget()
        self.playback_canvas.add(self.playback_indicator)
        self.playback_canvas.opacity = .5    
        playback_widget.canvas = self.playback_canvas
        music_layout.add_widget(playback_widget)


        for row in range(0, note_rows):
            for col in range(0, note_cols):
                new_id = str(row) + "," + str(col)
                new_button = ToggleButton(text=new_id, id=new_id, 
                                          width=note_width, 
                                          height=note_height)
                active_color = (1, 0, 0, 1)
                new_button.background_color = active_color
                new_button.bind(on_press=self.play_note)
                note_grid.add_widget(new_button)
        
        # PLAYBACK BUTTONS
        playback = Button(text="For playback", size=[640, 120], 
                          size_hint=[None, None], pos=[161, 0])
        music_layout.add_widget(playback)
Exemplo n.º 42
0
	def build(self):
	#*******ROOTWIDGET*******
		layout = GridLayout(rows=2)		
	#*******SUB-WIDGETS*******
		layoutTop = GridLayout(cols=3,rows=1)#SUB-WIDGET-1
		layoutTop.size_hint = (1, 0.1)
		layoutMid = FloatLayout()#SUB-WIDGET-2
		layoutMid.size_hint = (1, 1)
		
	#*******CONTENT-OF-SUB-WIDGET-1*******	
		menubtn = Button(text='Menu')
		menubtn.size_hint = (0.1, 0.1)
		head = Label(text='PRO-FORMA',size_hint_y = None,size_hint_x=None, width=200)
		head.size_hint = (0.8, 0.1)
		backbtn = Button(text='Drop')
		backbtn.size_hint = (0.1, 0.1)
		#dropbtn = Button()
	#*******CONTENT-OF-SUB-WIDGET-2*******
		tp_panel = TabbedPanel()
		tp_panel.default_tab_text = "Global News"	
		
		layoutnews = GridLayout(rows=2)
		upperlayout = GridLayout(cols=3, pos_hint ={'center_x': .5, 'center_y': .5},row_force_default=True, row_default_height=40, size_hint_y=None, height = 50, size_hint_x=1)
		lowerlayout = GridLayout(row=1)
		
		upperlayout.add_widget(Button(text='S', size_hint=(0.1, None)))
		upperlayout.add_widget(TextInput(text='search', size_hint=(0.8, None), focus=True, multiline=False))
		upperlayout.add_widget(Button(text='settings', size_hint=(0.1, None)))
		
		lowerlayout.add_widget(Label())
		
		layoutnews.add_widget(upperlayout)
		layoutnews.add_widget(lowerlayout)
		tp_panel.default_tab_content = layoutnews
		
		#*******TAB1*******	
		th_tab1 = TabbedPanelHeader(text = 'Pro-Forma')
		#*******SCROLLABILITY-WIDGET*******
		scroll = ScrollView(size_hint=(1, None), size=(800, 1000))
		
		mainlayout = GridLayout(cols = 1, spacing = 10, size_hint_y=None, size_hint_x=1)
		mainlayout.bind(minimum_height=mainlayout.setter('height'))
		#*******LAYOUT-FOR-PROPERTY-INFORMATION*******
		layouttab1 = GridLayout(cols=2,rows=6, pos_hint ={'center_x': .5, 'center_y': .5},row_force_default=True, row_default_height=40, size_hint_y=None, height = 250, size_hint_x=1)
		#*******LAYOUT-FOR-UNIT-MIX*******
		layoutmix = GridLayout(cols=4, pos_hint ={'center_x': .5, 'center_y': .5},row_force_default=True, row_default_height=40,size_hint_y=None, height = 80)
		#*******LAYOUT-FOR-EXPENSES*******
		layoutexpense = GridLayout(cols=2, pos_hint ={'center_x': .5, 'center_y': .5},row_force_default=True, row_default_height=40, size_hint_y=None, height = 960)
		#*******LAYOUT-FOR-ACCOUNTS*******
		layoutacc = GridLayout(cols=2, pos_hint ={'center_x': .5, 'center_y': .5},row_force_default=True, row_default_height=40,size_hint_y=None, height = 240)
		#*******CONTENT1*****
		mainlayout.add_widget(Label(text='Property Information',size_hint=(None, 1)))
		#*******CONTENT2*******
		layouttab1.add_widget(Label(text= 'Property Name', font_size=15, size_hint=(0.4, None)))
		layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle',size_hint=(0.6, None),multiline=False, focus=True))
		layouttab1.add_widget(Label(text= 'Property Address', font_size=15, size_hint=(0.4, None)))
		layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle',size_hint=(0.6, None),multiline=False, focus=True))
		layouttab1.add_widget(Label(text= 'Town/City', font_size=15, size_hint=(0.4, None)))
		layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle',size_hint=(0.6, None),multiline=False, focus=True))
		layouttab1.add_widget(Label(text= 'Asking Price', font_size=15, size_hint=(0.4, None)))
		layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle',size_hint=(0.6, None),multiline=False, focus=True))
		layouttab1.add_widget(Label(text= 'Total Units', font_size=15, size_hint=(0.4, None)))
		layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle',size_hint=(0.6, None),multiline=False, focus=True))
		layouttab1.add_widget(Label(text= 'Square Footage', font_size=15, size_hint=(0.4, None)))
		layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle',size_hint=(0.6, None),multiline=False, focus=True))
		mainlayout.add_widget(layouttab1)
		#*******CONTENT3*******
		mainlayout.add_widget(Label(text='Unit Mix',size_hint_x=None, width=200, size_hint_y=None, height=50))
		#*******CONTENT4*******
		layoutmix.add_widget(Label(text='# of Units'))
		layoutmix.add_widget(Label(text='Unit Type'))
		layoutmix.add_widget(Label(text='SquareFeet'))
		layoutmix.add_widget(Label(text='Monthly Rent'))
		layoutmix.add_widget(TextInput(text='Input', font_size=15))
		layoutmix.add_widget(TextInput(text='Input', font_size=15))
		layoutmix.add_widget(TextInput(text='Input', font_size=15))
		layoutmix.add_widget(TextInput(text='Input', font_size=15))
		mainlayout.add_widget(layoutmix)
		#*******CONTENT7*******
		mainlayout.add_widget(Label(text='Accounts',size_hint_x=None, width=200, size_hint_y=None, height=50))
		#*******CONTENT7*******
		layoutacc.add_widget(Label(text='Purchase Price'))
		layoutacc.add_widget(TextInput(text='Input'))
		layoutacc.add_widget(Label(text='Deposit'))
		layoutacc.add_widget(TextInput(text='Input'))
		layoutacc.add_widget(Label(text='Loan Amount'))
		layoutacc.add_widget(TextInput(text='Input'))
		layoutacc.add_widget(Label(text='Annual Interest'))
		layoutacc.add_widget(TextInput(text='Input'))
		layoutacc.add_widget(Label(text='Period'))
		layoutacc.add_widget(TextInput(text='Input'))
		layoutacc.add_widget(Label(text='Total Cash Outlay'))
		layoutacc.add_widget(TextInput(text='Input'))
		mainlayout.add_widget(layoutacc)
		#*******CONTENT5*******
		mainlayout.add_widget(Label(text='Expenses',size_hint_x=None, width=200, size_hint_y=None, height=50))
		#*******CONTENT6*******
		layoutexpense.add_widget(Label(text='Accounting'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15,))
		layoutexpense.add_widget(Label(text='Advertising'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Bank Charges'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Electricity'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Gas'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Security'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='All insurance'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Permits and fees'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Maintenance'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Trash Pick-up'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='All other'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		mainlayout.add_widget(layoutexpense)
		#*******CALLING-MAINLAYOUT-IN-TAB1*******
		scroll.add_widget(mainlayout)
		th_tab1.content = scroll
		tp_panel.add_widget(th_tab1)
		
		#___*******TAB3*******___#
		th_tab3 = TabbedPanelHeader(text = 'Saved Reports')
		tp_panel.add_widget(th_tab3)
	
	#*******ADDING-CONTENTS-OF-SUB-WIDGETS*******
		layoutTop.add_widget(menubtn)
		layoutTop.add_widget(head)
		layoutTop.add_widget(backbtn)
		layoutMid.add_widget(tp_panel)
	#*******ADDING-CONTENTS-OF-ROOT-WIDGET*******
		layout.add_widget(layoutTop)
		layout.add_widget(layoutMid)
	#*******CALLING-THE-ROOT-WIDGET*******	
		return layout
Exemplo n.º 43
0
 def tab_info(self):
     self.pbuilder = self.parent.parent
     self.description_tab = TabbedPanel()
     particle_info = TabbedPanelHeader(text = 'Particle')
     behavior_info = TabbedPanelHeader(text = 'Behavior')
     color_info = TabbedPanelHeader(text = 'Color')
     particle_info.font_size = self.size[0]*.28
     behavior_info.font_size = self.size[0]*.28
     color_info.font_size = self.size[0]*.28
     particle_info.content = RstDocument(source="param_descriptions/ParticleTab.rst")
     behavior_info.content = RstDocument(source="param_descriptions/BehaviorTab.rst")
     color_info.content = RstDocument(source="param_descriptions/ColorTab.rst")
     particle_info.scroll_distance = 2
     particle_info.scroll_timeout = 500
     behavior_info.scroll_distance = 2
     behavior_info.scroll_timeout = 500
     color_info.scroll_distance = 2
     color_info.scroll_timeout = 500
     self.description_tab.default_tab = particle_info
     self.description_tab.tab_width = self.size[0]*4.36
     self.description_tab.tab_height = self.size[1]*.7
     self.description_tab.add_widget(particle_info)
     self.description_tab.add_widget(behavior_info)
     self.description_tab.add_widget(color_info)
     self.description_popup = Popup(title="Variable Descriptions", content = self.description_tab, size_hint = (.8,.8), on_open=self._popup_opened, on_dismiss=self._popup_dismissed)
     self.description_popup.open()
Exemplo n.º 44
0
Arquivo: gui.py Projeto: tnason/NetSeq
    def __init__(self, app, music_player):
        """Create main GUI

        Arguments:
        parent -- parent application to this widget
        music_player -- audio generator for full application
        network -- network client and server handler

        """

        # Initialize Tkinter, and instruct it hide root window
        self.tk_root = Tkinter.Tk()
        self.tk_root.withdraw()

        # Perform widget initializations
        super(GUI, self).__init__()

        # OVERALL STRUCTURE
        WINDOW_WIDTH = 800
        WINDOW_HEIGHT = 600
        OUTER_PADDING = 20

        # Set default parameters to be used in accurately loading an
        # initial state to the GUI
        self.app = app
        self.music_player = music_player
        self.track_id = MusicPlayer.WAVETABLE_A
        self.popup_count = 0

        # Turn off multi-touch in this GUI
        Config.set('input', 'mouse', 'mouse,disable_multitouch')

        # Determine image directory
        IMAGE_DIR = system.get_images_dir()

        # For dynamic GUI coloring
        self.TRACK_COLORS = [[.7, .4, .9, 1.0], 
                             [.6, .9, .4, 1.0], 
                             [.8, .5, .3, 1.0]]
        self.colorables = []

        # Create widget for the main layout. This will be added separately
        # from each of our popup windows
        self.main_layout = NSWidget()
        self.add_widget(self.main_layout)

        # BUTTON GRID
        NOTE_BUTTON_WIDTH = 48
        NOTE_BUTTON_HEIGHT = 48
        NOTE_BUTTON_PADDING = 7
        ROW_LABEL_WIDTH = 54
        ROW_LABEL_HEIGHT = NOTE_BUTTON_HEIGHT
        ROW_LABEL_FONT_SIZE = 10
        NOTE_BUTTON_ROWS = MusicPlayer.NUM_ROWS
        NOTE_BUTTON_COLS = MusicPlayer.NUM_COLS

        GRID_WIDTH = NOTE_BUTTON_PADDING + ROW_LABEL_WIDTH + \
                     NOTE_BUTTON_PADDING + (NOTE_BUTTON_COLS * 
                     (NOTE_BUTTON_WIDTH + NOTE_BUTTON_PADDING))
        GRID_HEIGHT = NOTE_BUTTON_PADDING + (NOTE_BUTTON_ROWS * 
                      (NOTE_BUTTON_HEIGHT + NOTE_BUTTON_PADDING))
        GRID_X = OUTER_PADDING
        GRID_Y = WINDOW_HEIGHT - OUTER_PADDING - GRID_HEIGHT

        PLAYHEAD_WIDTH = NOTE_BUTTON_WIDTH + 4
        PLAYHEAD_HEIGHT = GRID_HEIGHT
        PLAYHEAD_OPACITY = .5
        PLAYHEAD_COLOR = Color(1.0, 1.0, 1.0)

        # Playhead
        playhead_widget = Widget()
        playhead_canvas = Canvas()
        playhead_canvas.add(PLAYHEAD_COLOR)
        playhead = Rectangle(size=[PLAYHEAD_WIDTH, PLAYHEAD_HEIGHT])
        playhead_canvas.add(playhead)
        playhead_canvas.opacity = PLAYHEAD_OPACITY
        playhead_widget.canvas = playhead_canvas
        self.main_layout.add_widget(playhead_widget)
        self.playhead = playhead

        # For each row, create labels and notes
        self.row_labels = []
        self.note_buttons = []

        row_top = GRID_Y + GRID_HEIGHT - NOTE_BUTTON_PADDING

        for row in range(0, NOTE_BUTTON_ROWS):
            col_x = GRID_X + NOTE_BUTTON_PADDING

            # Make label for row
            row_label = Label(text=str(row), width=ROW_LABEL_WIDTH, 
                              height=ROW_LABEL_HEIGHT, 
                              text_size=[ROW_LABEL_WIDTH, ROW_LABEL_HEIGHT],
                              font_size=ROW_LABEL_FONT_SIZE, halign='center',
                              valign='middle')
            row_label.x = col_x
            row_label.top = row_top
            self.main_layout.add_widget(row_label)
            self.row_labels.append(row_label)

            col_x = col_x + ROW_LABEL_WIDTH + NOTE_BUTTON_PADDING
            
            # Create all buttons for row
            row_notes = []
            for col in range(0, NOTE_BUTTON_COLS):
                col_button = NSToggleButton(width=NOTE_BUTTON_WIDTH,
                                          height=NOTE_BUTTON_HEIGHT)
                col_button.id = 'row' + str(row) + ',col' + str(col)
                col_button.x = col_x
                col_button.top = row_top
                col_button.bind(on_press=self.trigger_note)
                row_notes.append(col_button)
                self.main_layout.add_widget(col_button)
                self.colorables.append(col_button)
                col_x = col_x + NOTE_BUTTON_WIDTH + NOTE_BUTTON_PADDING
                
            self.note_buttons.append(row_notes)
            row_top = row_top - NOTE_BUTTON_PADDING - NOTE_BUTTON_HEIGHT

        # Set playhead start position
        leftmost_note = self.note_buttons[0][0]
        playhead_x = leftmost_note.center_x - (PLAYHEAD_WIDTH / 2)
        playhead_y = GRID_Y
        self.playhead.pos = [playhead_x, playhead_y]

        # PLAYBACK MENU
        PLAYBACK_X = OUTER_PADDING
        PLAYBACK_Y = OUTER_PADDING
        PLAYBACK_WIDTH = GRID_WIDTH
        PLAYBACK_HEIGHT = WINDOW_HEIGHT - OUTER_PADDING - GRID_HEIGHT - \
                          OUTER_PADDING - OUTER_PADDING
        PLAYBACK_CENTER_Y = PLAYBACK_Y + (PLAYBACK_HEIGHT / 2)
        PLAYBACK_TOP = PLAYBACK_Y + PLAYBACK_HEIGHT

        PLAY_BUTTON_WIDTH = 48
        PLAY_BUTTON_HEIGHT = 48
        PLAYALL_BUTTON_WIDTH = 60
        PLAYALL_BUTTON_HEIGHT = PLAY_BUTTON_HEIGHT / 2
        PLAYALL_BUTTON_FONT_SIZE = 8
        PLAYALL_BUTTON_TEXT_SIZE = [PLAYALL_BUTTON_WIDTH, 
                                    PLAYALL_BUTTON_HEIGHT]
        PAGE_BUTTON_WIDTH = 20
        PAGE_BUTTON_HEIGHT = 30
        NUM_PAGE_BUTTONS = MusicPlayer.NUM_PAGES
        PAGE_LABEL_WIDTH = (PAGE_BUTTON_WIDTH * NUM_PAGE_BUTTONS)
        PAGE_LABEL_HEIGHT = 20
        PAGE_LABEL_FONT_SIZE = 10
        PAGE_LABEL_OFFSET = 5
        TRACK_BUTTON_WIDTH = 48
        TRACK_BUTTON_HEIGHT = 48
        NUM_TRACK_BUTTONS = MusicPlayer.NUM_TRACKS
        NUM_PLAYBACK_ELEMENTS = 4
        TRACK_LABEL_WIDTH = TRACK_BUTTON_WIDTH * NUM_TRACK_BUTTONS
        TRACK_LABEL_HEIGHT = PAGE_LABEL_HEIGHT
        TRACK_LABEL_FONT_SIZE = PAGE_LABEL_FONT_SIZE
        TRACK_LABEL_TEXT_SIZE = [TRACK_LABEL_WIDTH, TRACK_LABEL_HEIGHT]
        TRACK_LABEL_OFFSET = PAGE_LABEL_OFFSET

        PLAYBACK_PADDING = (PLAYBACK_WIDTH - (PAGE_BUTTON_WIDTH * 
                            NUM_PAGE_BUTTONS) - (PLAY_BUTTON_WIDTH) - 
                            (TRACK_BUTTON_WIDTH * NUM_TRACK_BUTTONS) - 
                            PLAYALL_BUTTON_WIDTH) / (NUM_PLAYBACK_ELEMENTS + 1)
        
        # Play/pause button
        PLAY_BUTTON_X = PLAYBACK_X + PLAYBACK_PADDING
        # TODO: add a border for this button
        play_button = ToggleButton(width=PLAY_BUTTON_WIDTH, 
                             height=PLAY_BUTTON_HEIGHT)
        play_button.bind(on_press=self.play_pause)
        play_button.background_normal = \
            os.path.join(IMAGE_DIR, "media-playback-start-4.png")
        play_button.background_down = \
            os.path.join(IMAGE_DIR, "media-playback-pause-4.png")
        play_button.x = PLAY_BUTTON_X
        play_button.center_y = PLAYBACK_CENTER_Y
        self.play_button = play_button
        self.main_layout.add_widget(play_button)
        self.colorables.append(play_button)

        # Buttons to play one page or all
        one_page_button = NSToggleButton(width=PLAYALL_BUTTON_WIDTH,
                                       height=PLAYALL_BUTTON_HEIGHT,
                                       text='One page',
                                       text_size=PLAYALL_BUTTON_TEXT_SIZE,
                                       font_size=PLAYALL_BUTTON_FONT_SIZE,
                                       halign='center', valign='middle')
        one_page_button.bind(on_press=self.play_one_page)
        one_page_button.x = play_button.right + PLAYBACK_PADDING
        one_page_button.top = PLAYBACK_CENTER_Y + PLAYALL_BUTTON_HEIGHT
        self.one_page_button = one_page_button
        self.main_layout.add_widget(one_page_button)
        self.colorables.append(one_page_button)

        all_pages_button = NSToggleButton(width=PLAYALL_BUTTON_WIDTH,
                                        height=PLAYALL_BUTTON_HEIGHT,
                                        text='All pages', 
                                        text_size=PLAYALL_BUTTON_TEXT_SIZE,
                                        font_size=PLAYALL_BUTTON_FONT_SIZE,
                                        halign='center', valign='middle')
        all_pages_button.bind(on_press=self.play_all_pages)
        all_pages_button.x = one_page_button.x
        all_pages_button.top = PLAYBACK_CENTER_Y
        self.all_pages_button = all_pages_button
        self.main_layout.add_widget(all_pages_button)
        self.colorables.append(all_pages_button)
        
        if music_player.play_all == False:
            one_page_button.state = 'down'
            all_pages_button.state = 'normal'
        elif music_player.play_all == True:
            one_page_button.state = 'normal'
            all_pages_button.state = 'down'

        # Page selection buttons
        self.page_buttons = []
        page_buttons = []
        page_label = Label(text='Page Select', text_size=[PAGE_LABEL_WIDTH, 
                           PAGE_LABEL_HEIGHT], font_size=PAGE_LABEL_FONT_SIZE,
                           width=PAGE_LABEL_WIDTH, height=PAGE_LABEL_HEIGHT,
                           halign='center', valign='middle')
        page_button_x = all_pages_button.right + PLAYBACK_PADDING
        page_label.x = page_button_x
        page_label.top = PLAYBACK_CENTER_Y - (PAGE_BUTTON_HEIGHT / 2) - \
                         PAGE_LABEL_OFFSET
        self.main_layout.add_widget(page_label)
        for page_index in range(0, NUM_PAGE_BUTTONS):
            page_id = 'page' + str(page_index)
            page_button = NSToggleButton(width=PAGE_BUTTON_WIDTH,
                                       height=PAGE_BUTTON_HEIGHT, id=page_id)
            page_button.bind(on_press=self.select_page)
            page_button.x = page_button_x
            page_button.center_y = PLAYBACK_CENTER_Y
            page_buttons.append(page_button)
            self.main_layout.add_widget(page_button)
            self.colorables.append(page_button)
            page_button_x += PAGE_BUTTON_WIDTH

        self.page_buttons = page_buttons

        # Select the current music player's page with the GUI
        page_buttons[music_player.page_index].state = 'down'

        # Track selection buttons
        TRACK_BUTTON_FONT_SIZE = 10
        TRACK_BUTTON_TEXT_SIZE = [TRACK_BUTTON_WIDTH, TRACK_BUTTON_HEIGHT]
        
        track_text = ["Bass", "Lead", "Drum"]
        track_buttons = []
        self.track_buttons = []
        track_button_x = page_buttons[len(page_buttons) - 1].right + \
                         PLAYBACK_PADDING
        for track_index in range(0, NUM_TRACK_BUTTONS):
            track_id = 'track' + str(track_index)
            track_button = NSToggleButton(text=track_text[track_index],
                                        width=TRACK_BUTTON_WIDTH, 
                                        height=TRACK_BUTTON_HEIGHT, id=track_id,
                                        text_size=TRACK_BUTTON_TEXT_SIZE,
                                        font_size=TRACK_BUTTON_FONT_SIZE,
                                        halign='center', valign='middle')
            track_button.bind(on_press=self.select_track)
            track_button.x = track_button_x
            track_button.center_y = PLAYBACK_CENTER_Y
            track_buttons.append(track_button)
            self.main_layout.add_widget(track_button)
            track_button_x += TRACK_BUTTON_WIDTH
        
        self.track_buttons = track_buttons        
    
        # Select the current track in the GUI
        track_buttons[self.track_id].state = 'down'

        leftmost_track_button = self.track_buttons[0]

        track_label = Label(text='Instrument Select', 
                           text_size=TRACK_LABEL_TEXT_SIZE,
                           font_size=TRACK_LABEL_FONT_SIZE,
                           width=TRACK_LABEL_WIDTH, 
                           height=TRACK_LABEL_HEIGHT,
                           halign='center', valign='middle')
        track_label.x = leftmost_track_button.x
        track_label.top = leftmost_track_button.y - TRACK_LABEL_OFFSET
        # self.main_layout.add_widget(track_label)

        # SETTINGS TABS
        TABS_X = OUTER_PADDING + GRID_WIDTH + OUTER_PADDING
        TABS_Y = GRID_Y
        TABS_WIDTH = WINDOW_WIDTH - OUTER_PADDING - GRID_WIDTH - \
                     OUTER_PADDING - OUTER_PADDING
        TABS_HEIGHT = GRID_HEIGHT
        
        # Element is button, label, etc. Section is vertical group of elements
        TAB_SECTION_PADDING = 20
        TAB_ELEMENT_PADDING = 10

        # Note: it's a good idea to make these tabs the size of our icons,
        # which is 48x48
        TAB_HEADER_WIDTH = 48
        TAB_HEADER_HEIGHT = TAB_HEADER_WIDTH
        TAB_HEADER_FONT_SIZE = 20
        SECTION_LABEL_FONT_SIZE = 16
        SECTION_LABEL_WIDTH = TABS_WIDTH - TAB_SECTION_PADDING * 2
        SECTION_LABEL_HEIGHT = 30
        SECTION_LABEL_TEXT_SIZE = [SECTION_LABEL_WIDTH, SECTION_LABEL_HEIGHT]
        ELEMENT_LABEL_FONT_SIZE = 10
        ELEMENT_LABEL_WIDTH = TABS_WIDTH - TAB_ELEMENT_PADDING * 2
        ELEMENT_LABEL_HEIGHT = 20
        ELEMENT_LABEL_TEXT_SIZE = [ELEMENT_LABEL_WIDTH, ELEMENT_LABEL_HEIGHT]
        TAB_CONTENT_HEIGHT = TABS_HEIGHT - TAB_HEADER_HEIGHT
        TAB_CONTENT_TOP = TABS_Y + TAB_CONTENT_HEIGHT

        # Create main tabbed panel
        tabs = TabbedPanel(tab_width=TAB_HEADER_WIDTH, 
                           tab_height=TAB_HEADER_HEIGHT, width=TABS_WIDTH, 
                           height=TABS_HEIGHT)
        tabs.x = TABS_X
        tabs.y = TABS_Y
        self.main_layout.add_widget(tabs)
        self.tabs = tabs

        # Music tab (default)
        music_tab_content = Widget(width=TABS_WIDTH, height=TAB_CONTENT_HEIGHT)
        tabs.default_tab_content = music_tab_content
        tabs.default_tab.text = ""
        # TODO: make these paths absolute?
        tabs.default_tab.background_normal = \
            os.path.join(IMAGE_DIR, "audio-keyboard.png")
        print "@@ default tab bg: ", tabs.default_tab.background_normal
        tabs.default_tab.background_down = \
            os.path.join(IMAGE_DIR, "audio-keyboard-down.png")

        # Global music options
        global_music_label = Label(text='Global', 
                                   font_size=SECTION_LABEL_FONT_SIZE,
                                   width=SECTION_LABEL_WIDTH, 
                                   height=SECTION_LABEL_HEIGHT,
                                   text_size=SECTION_LABEL_TEXT_SIZE,
                                   halign='center', valign='middle')
        global_music_label.center_x = tabs.center_x
        global_music_label.top = TAB_CONTENT_TOP - TAB_SECTION_PADDING
        music_tab_content.add_widget(global_music_label)
        
        MUSIC_SLIDER_WIDTH = TABS_WIDTH - 40
        MUSIC_SLIDER_HEIGHT = 20

        # Note: these sliders buttons have a predefined height, so we are a
        # slave to that height for positioning the sliders
        global_volume_slider = NSSlider(min=MusicPlayer.MIN_VOLUME, 
                                        max=MusicPlayer.MAX_VOLUME,
                                        value=music_player.global_volume,
                                        orientation='horizontal',
                                        height=MUSIC_SLIDER_HEIGHT,
                                        width=MUSIC_SLIDER_WIDTH)
        global_volume_slider.bind(on_touch_move=self.change_global_volume)
        global_volume_slider.center_x = tabs.center_x
        global_volume_slider.top = global_music_label.y - TAB_ELEMENT_PADDING
        music_tab_content.add_widget(global_volume_slider)
        self.global_volume_slider = global_volume_slider
        self.colorables.append(global_volume_slider)

        global_volume_label = Label(text='Volume',
                                    font_size=ELEMENT_LABEL_FONT_SIZE,
                                    width=ELEMENT_LABEL_WIDTH,
                                    height=ELEMENT_LABEL_HEIGHT,
                                    text_size=ELEMENT_LABEL_TEXT_SIZE,
                                    halign='center', valign='middle')
        global_volume_label.center_x = tabs.center_x
        global_volume_label.top = global_volume_slider.y - TAB_ELEMENT_PADDING
        music_tab_content.add_widget(global_volume_label)
        
        global_tempo_slider = NSSlider(min=MusicPlayer.MIN_TEMPO, 
                                       max=MusicPlayer.MAX_TEMPO,
                                       value=music_player.tempo,
                                       orientation='horizontal',
                                       height=MUSIC_SLIDER_HEIGHT,
                                       width=MUSIC_SLIDER_WIDTH)
        global_tempo_slider.bind(on_touch_move=self.change_global_tempo)
        global_tempo_slider.center_x = tabs.center_x
        global_tempo_slider.top = global_volume_label.y - TAB_ELEMENT_PADDING
        music_tab_content.add_widget(global_tempo_slider)
        self.global_tempo_slider = global_tempo_slider
        self.colorables.append(global_tempo_slider)

        global_tempo_label = Label(text='Tempo',
                                   font_size=ELEMENT_LABEL_FONT_SIZE,
                                   width=ELEMENT_LABEL_WIDTH,
                                   height=ELEMENT_LABEL_HEIGHT,
                                   text_size=ELEMENT_LABEL_TEXT_SIZE,
                                   halign='center', valign='middle')
        global_tempo_label.center_x = tabs.center_x
        global_tempo_label.top = global_tempo_slider.y - TAB_ELEMENT_PADDING
        music_tab_content.add_widget(global_tempo_label)

        # Instrument settings
        track_music_label = Label(text='Instrument', 
                                  font_size=SECTION_LABEL_FONT_SIZE,
                                  width=SECTION_LABEL_WIDTH, 
                                  height=SECTION_LABEL_HEIGHT,
                                  text_size=SECTION_LABEL_TEXT_SIZE,
                                  halign='center', valign='middle')
        track_music_label.center_x = tabs.center_x
        track_music_label.top = global_tempo_label.y - TAB_SECTION_PADDING
        music_tab_content.add_widget(track_music_label)
        
        track_volume_initial = music_player.get_volume(self.track_id)
        track_volume_slider = NSSlider(min=MusicPlayer.MIN_VOLUME, 
                                       max=MusicPlayer.MAX_VOLUME,
                                       value=track_volume_initial,
                                       orientation='horizontal',
                                       height=MUSIC_SLIDER_HEIGHT,
                                       width=MUSIC_SLIDER_WIDTH)
        track_volume_slider.bind(on_touch_move=self.change_track_volume)
        track_volume_slider.center_x = tabs.center_x
        track_volume_slider.top = track_music_label.y - TAB_ELEMENT_PADDING
        music_tab_content.add_widget(track_volume_slider)
        self.track_volume_slider = track_volume_slider
        self.colorables.append(track_volume_slider)

        track_volume_label = Label(text='Volume',
                                   font_size=ELEMENT_LABEL_FONT_SIZE,
                                   width=ELEMENT_LABEL_WIDTH,
                                   height=ELEMENT_LABEL_HEIGHT,
                                   text_size=ELEMENT_LABEL_TEXT_SIZE,
                                   halign='center', valign='middle')
        track_volume_label.center_x = tabs.center_x
        track_volume_label.top = track_volume_slider.y - TAB_ELEMENT_PADDING
        music_tab_content.add_widget(track_volume_label)
        
        track_reverb_initial = music_player.get_reverb(self.track_id)
        track_reverb_slider = NSSlider(min=MusicPlayer.MIN_REVERB,
                                       max=MusicPlayer.MAX_REVERB,
                                       value=track_reverb_initial,
                                       orientation='horizontal',
                                       height=MUSIC_SLIDER_HEIGHT,
                                       width=MUSIC_SLIDER_WIDTH)
        track_reverb_slider.bind(on_touch_move=self.change_track_reverb)
        track_reverb_slider.center_x = tabs.center_x
        track_reverb_slider.top = track_volume_label.y - TAB_ELEMENT_PADDING
        music_tab_content.add_widget(track_reverb_slider)
        self.track_reverb_slider = track_reverb_slider
        self.colorables.append(track_reverb_slider)

        track_reverb_label = Label(text='Reverb',
                                   font_size=ELEMENT_LABEL_FONT_SIZE,
                                   width=ELEMENT_LABEL_WIDTH,
                                   height=ELEMENT_LABEL_HEIGHT,
                                   text_size=ELEMENT_LABEL_TEXT_SIZE,
                                   halign='center', valign='middle')
        track_reverb_label.center_x = tabs.center_x
        track_reverb_label.top = track_reverb_slider.y - TAB_ELEMENT_PADDING
        music_tab_content.add_widget(track_reverb_label)

        # Network tab
        network_tab = TabbedPanelHeader()
        network_tab.text = ""
        network_tab.background_normal = \
            os.path.join(IMAGE_DIR, "network-wired-2.png")
        network_tab.background_down = \
            os.path.join(IMAGE_DIR, "network-wired-2-down.png")
        tabs.add_widget(network_tab)
        
        TEXT_INPUT_HEIGHT = 30
        PORT_INPUT_WIDTH = 70
        IP_INPUT_WIDTH = TABS_WIDTH - TAB_SECTION_PADDING - \
                         PORT_INPUT_WIDTH - TAB_ELEMENT_PADDING - \
                         TAB_SECTION_PADDING
        PORT_LABEL_TEXT_SIZE = [PORT_INPUT_WIDTH, ELEMENT_LABEL_HEIGHT]
        IP_LABEL_TEXT_SIZE = [IP_INPUT_WIDTH, ELEMENT_LABEL_HEIGHT]
        NETWORK_BUTTON_WIDTH = TABS_WIDTH - TAB_SECTION_PADDING * 2
        NETWORK_BUTTON_HEIGHT = 80
        NETWORK_BUTTON_FONT_SIZE = 16
        NETWORK_BUTTON_TEXT_SIZE = [NETWORK_BUTTON_WIDTH, NETWORK_BUTTON_HEIGHT]

        SERVER_PORT_TEXT = 'Server Port'
        SERVER_IP_TEXT = 'Server IP Address'
        network_tab_content = Widget(width=TABS_WIDTH, height=TAB_CONTENT_HEIGHT)
        network_tab.content = network_tab_content

        # Server input labels
        server_port_label = Label(text=SERVER_PORT_TEXT, 
                                  width=PORT_INPUT_WIDTH,
                                  height=ELEMENT_LABEL_HEIGHT,
                                  text_size=PORT_LABEL_TEXT_SIZE,
                                  font_size=ELEMENT_LABEL_FONT_SIZE)
        server_port_label.top = TAB_CONTENT_TOP - TAB_SECTION_PADDING
        server_port_label.x = TABS_X + TAB_SECTION_PADDING
        network_tab_content.add_widget(server_port_label)

        server_ip_label = Label(text=SERVER_IP_TEXT, 
                                  width=IP_INPUT_WIDTH,
                                  height=ELEMENT_LABEL_HEIGHT,
                                  text_size=IP_LABEL_TEXT_SIZE,
                                  font_size=ELEMENT_LABEL_FONT_SIZE)
        server_ip_label.top = server_port_label.top
        server_ip_label.x = server_port_label.right + TAB_ELEMENT_PADDING
        network_tab_content.add_widget(server_ip_label)

        # Server startup input
        server_port_input = NSTextInput(text='', 
                                        width=PORT_INPUT_WIDTH,
                                        height=TEXT_INPUT_HEIGHT,
                                        multiline=False)
        server_port_input.bind(focus=self.select_text_input)
        server_port_input.original_text = SERVER_PORT_TEXT
        server_port_input.x = server_port_label.x
        server_port_input.top = server_port_label.y - TAB_ELEMENT_PADDING
        network_tab_content.add_widget(server_port_input)
        self.server_port_input = server_port_input

        server_ip_input = NSTextInput(text='',
                                      width=IP_INPUT_WIDTH,
                                      height=TEXT_INPUT_HEIGHT,
                                      multiline=False)
        server_ip_input.bind(focus=self.select_text_input)
        server_ip_input.original_text=SERVER_IP_TEXT
        server_ip_input.x = server_ip_label.x
        server_ip_input.top = server_port_input.top
        network_tab_content.add_widget(server_ip_input)
        self.server_ip_input = server_ip_input

        server_start_button = NSDisableButton(text='Start server', 
                                     width=NETWORK_BUTTON_WIDTH,
                                     height=NETWORK_BUTTON_HEIGHT,
                                     text_size=NETWORK_BUTTON_TEXT_SIZE,
                                     font_size=NETWORK_BUTTON_FONT_SIZE,
                                     halign='center', valign='middle')
        server_start_button.bind(on_press=self.start_server)
        server_start_button.center_x = tabs.center_x
        server_start_button.top = server_ip_input.y - TAB_ELEMENT_PADDING
        network_tab_content.add_widget(server_start_button)
        self.server_start_button = server_start_button

        join_server_button = NSDisableButton(text='Join server',
                                    width=NETWORK_BUTTON_WIDTH,
                                    height=NETWORK_BUTTON_HEIGHT,
                                    text_size=NETWORK_BUTTON_TEXT_SIZE,
                                    font_size=NETWORK_BUTTON_FONT_SIZE,
                                    halign='center', valign='middle')
        join_server_button.bind(on_press=self.ask_join_server)
        join_server_button.x = server_start_button.x
        join_server_button.top = server_start_button.y - TAB_ELEMENT_PADDING
        network_tab_content.add_widget(join_server_button)
        self.join_server_button = join_server_button

        end_connection_button = NSDisableButton(text='End connection',
                                       width=NETWORK_BUTTON_WIDTH,
                                       height=NETWORK_BUTTON_HEIGHT,
                                       text_size=NETWORK_BUTTON_TEXT_SIZE,
                                       font_size=NETWORK_BUTTON_FONT_SIZE,
                                       halign='center', valign='middle')
        end_connection_button.bind(on_press=self.ask_end_connection)
        end_connection_button.disable()
        end_connection_button.x = server_start_button.x
        end_connection_button.top = join_server_button.y - TAB_ELEMENT_PADDING
        network_tab_content.add_widget(end_connection_button)
        self.end_connection_button = end_connection_button
        
        # System options tab
        system_tab = TabbedPanelHeader()
        system_tab.background_normal = \
            os.path.join(IMAGE_DIR, "media-floppy.png")
        system_tab.background_down = \
            os.path.join(IMAGE_DIR, "media-floppy-down.png")
        tabs.add_widget(system_tab)

        system_tab_content = Widget(width=TABS_WIDTH, height=TAB_CONTENT_HEIGHT)
        system_tab.content = system_tab_content

        NUM_SYSTEM_BUTTONS = 3
        SYSTEM_BUTTON_PADDING = 20
        SYSTEM_BUTTON_FONT_SIZE = 24
        SYSTEM_BUTTON_WIDTH = TABS_WIDTH - SYSTEM_BUTTON_PADDING * 2
        SYSTEM_BUTTON_HEIGHT = (TAB_CONTENT_HEIGHT - SYSTEM_BUTTON_PADDING *
                               (NUM_SYSTEM_BUTTONS + 1)) / NUM_SYSTEM_BUTTONS
        SYSTEM_BUTTON_TEXT_SIZE = [SYSTEM_BUTTON_WIDTH, SYSTEM_BUTTON_HEIGHT]

        # Load button
        load_button = NSDisableButton(text='Load', width=SYSTEM_BUTTON_WIDTH,
                                      height=SYSTEM_BUTTON_HEIGHT,
                                      text_size=SYSTEM_BUTTON_TEXT_SIZE,
                                      font_size=SYSTEM_BUTTON_FONT_SIZE,
                                      halign='center', valign='middle')
        load_button.bind(on_press=self.load_file)
        load_button.center_x = tabs.center_x
        load_button.top = TAB_CONTENT_TOP - SYSTEM_BUTTON_PADDING
        system_tab_content.add_widget(load_button)
        self.load_button = load_button

        # Save button
        save_button = NSDisableButton(text='Save', width=SYSTEM_BUTTON_WIDTH,
                                      height=SYSTEM_BUTTON_HEIGHT,
                                      text_size=SYSTEM_BUTTON_TEXT_SIZE,
                                      font_size=SYSTEM_BUTTON_FONT_SIZE,
                                      halign='center', valign='middle')
        save_button.bind(on_press=self.save_file)
        save_button.center_x = tabs.center_x
        save_button.top = load_button.y - SYSTEM_BUTTON_PADDING
        system_tab_content.add_widget(save_button)        

        # Quit button
        quit_button = NSDisableButton(text='Quit', width=SYSTEM_BUTTON_WIDTH,
                                      height=SYSTEM_BUTTON_HEIGHT,
                                      text_size=SYSTEM_BUTTON_TEXT_SIZE, 
                                      font_size=SYSTEM_BUTTON_FONT_SIZE,
                                      halign='center', valign='middle')
        quit_button.bind(on_press=self.request_exit)
        quit_button.center_x = tabs.center_x
        quit_button.top = save_button.y - SYSTEM_BUTTON_PADDING
        system_tab_content.add_widget(quit_button)        

        # APPLICATION TITLE
        TITLE_WIDTH = TABS_WIDTH
        TITLE_HEIGHT = 50
        TITLE_TEXT_SIZE = [TITLE_WIDTH, TITLE_HEIGHT]
        TITLE_FONT_SIZE = 30
        SUBTITLE_WIDTH = TITLE_WIDTH
        SUBTITLE_HEIGHT = 30
        SUBTITLE_TEXT_SIZE = [SUBTITLE_WIDTH, SUBTITLE_HEIGHT]
        SUBTITLE_FONT_SIZE = 15
        TITLE_X = TABS_X

        title_label = Label(text='NetSeq', width=TITLE_WIDTH,
                            height=TITLE_HEIGHT, halign='center', 
                            valign='middle', text_size=TITLE_TEXT_SIZE,
                            font_size=TITLE_FONT_SIZE)
        title_label.top = PLAYBACK_TOP
        title_label.x = TITLE_X
        self.main_layout.add_widget(title_label)

        subtitle_label = Label(text='Music with Friends',
                               width=SUBTITLE_WIDTH,
                               height=SUBTITLE_HEIGHT,  
                               text_size=SUBTITLE_TEXT_SIZE,
                               font_size=SUBTITLE_FONT_SIZE,
                               halign='center', valign='middle')
        subtitle_label.top = title_label.y
        subtitle_label.x = TITLE_X
        self.main_layout.add_widget(subtitle_label)

        # Finishing steps
        self.set_color(self.track_id)
        self.reload_row_labels()
Exemplo n.º 45
0
 def draw_db(self, db):
     for table in db.values():
         th = TabbedPanelHeader(text=table['name'])
         th.content = TableWidget(self.ctrl, table)
         self.add_widget(th)
Exemplo n.º 46
0
    def make_server_tab(self):
        server_tab = TabbedPanelHeader(text="Server")
        server_widget = Widget()

        self.bob = None
        self.send = False
        self.msg = ""
        self.done_auth = False

        # Console
        txt_console = TextInput(multiline=True)
        txt_console.pos = (75, 75)
        txt_console.size = (650, 200)
        txt_console.readonly = True
        server_widget.add_widget(txt_console)

        def print_console(msg):
            txt_console.text = txt_console.text + "\n" + msg
            txt_console.cursor = (999, 999)

        # Config label
        lbl_config = Label(text="Server Config")
        lbl_config.pos = (75, 525)
        lbl_config.size = (100, 40)
        lbl_config.halign = "left"
        lbl_config.text_size = lbl_config.size
        lbl_config.bold = True
        server_widget.add_widget(lbl_config)

        # Port label
        lbl_port = Label(text="Port")
        lbl_port.pos = (125, 450)
        lbl_port.size = (100, 30)
        lbl_port.halign = "right"
        lbl_port.valign = "middle"
        lbl_port.text_size = lbl_port.size
        server_widget.add_widget(lbl_port)

        # Port input
        txt_port = TextInput(multiline=False, text="9001")
        txt_port.pos = (250, 450)
        txt_port.size = (150, 30)
        server_widget.add_widget(txt_port)

        # Secret label
        lbl_secret = Label(text="Secret")
        lbl_secret.pos = (125, 400)
        lbl_secret.size = (100, 30)
        lbl_secret.halign = "right"
        lbl_secret.valign = "middle"
        lbl_secret.text_size = lbl_secret.size
        server_widget.add_widget(lbl_secret)

        # Secret input
        txt_secret = TextInput(multiline=False, text="foobar")
        txt_secret.pos = (250, 400)
        txt_secret.size = (150, 30)
        server_widget.add_widget(txt_secret)

        # Start button
        def on_server_btn_start(instance):
            btn_start.disabled = True
            txt_secret.readonly = True
            txt_port.readonly = True

            print_console("Starting Server on port " + txt_port.text)
            self.bob = None
            while self.bob is None:
                try:
                    self.bob = ChatClientServer("0.0.0.0", int(txt_port.text))
                except socket.error as e:
                    log(
                        logging.warning,
                        self,
                        self.make_server_tab,
                        "Error occurred while trying to connect: " "socket.error: {}; retrying...".format(e),
                    )
                    sleep(1)
            print_console("Setting shared key to " + txt_secret.text)
            self.bob.set_shared_key(txt_secret.text.encode())

        btn_start = Button(text="Start Server")
        btn_start.pos = (500, 395)
        btn_start.size = (200, 100)
        btn_start.bind(on_release=on_server_btn_start)
        server_widget.add_widget(btn_start)

        # Separator line
        with server_widget.canvas:
            Rectangle(pos=(75, 350), size=(650, 2))

        # Communication label
        lbl_comm = Label(text="Server Communication")
        lbl_comm.pos = (75, 300)
        lbl_comm.size = (400, 40)
        lbl_comm.halign = "left"
        lbl_comm.text_size = lbl_comm.size
        lbl_comm.bold = True
        server_widget.add_widget(lbl_comm)

        # Message box
        txt_message = TextInput(multiline=False)
        txt_message.pos = (75, 25)
        txt_message.size = (450, 30)
        server_widget.add_widget(txt_message)

        # Send button
        def on_server_btn_send(instance):
            if self.done_auth:
                self.send = True
                self.msg = txt_message.text
                btn_send.disabled = True
                txt_message.text = ""
                print_console("Will send [" + self.msg + "] on next 'Continue'")
            else:
                print_console("Finish authentication first!")

        btn_send = Button(text="Send")
        btn_send.pos = (535, 25)
        btn_send.size = (90, 30)
        btn_send.bind(on_release=on_server_btn_send)
        server_widget.add_widget(btn_send)

        # Continue button
        def on_server_btn_continue(instance):
            if self.bob is not None:
                if self.done_auth:
                    try:
                        if self.send:
                            print_console("Sending [" + self.msg + "]")
                            self.bob.send(self.msg.encode())
                            self.send = False
                            btn_send.disabled = False
                            self.msg = ""
                        else:
                            data = self.bob.recv(nb=True)
                            if data is not None:
                                print_console("Received [" + data + "]")
                            else:
                                print_console("No data to receive")
                    except NoAuthentication:
                        print_console("We are not authenticated. Reset authentication steps.")
                        self.bob.mutauth_step(reset=True)
                    except DataIntegrityException:
                        print_console(
                            "Either Trudy is attacking or more than one message was received. Not going to display the message. Tell your friend to send only one message at a time."
                        )
                else:
                    try:
                        print_console("Performing a mutual authentication step")
                        self.bob.mutauth_step()
                    except BeingAttacked:
                        print_console("We are being attacked! Reset authentication steps.")
                        self.bob.mutauth_step(reset=True)
                    except NoSharedKey:
                        print_console("Shared key is not yet shared. Please share first")
                        self.bob.mutauth_step(reset=True)
                    except StopIteration:
                        print_console("Successfully Authenticated")
                        self.done_auth = True

        btn_continue = Button(text="Continue")
        btn_continue.pos = (635, 25)
        btn_continue.size = (90, 30)
        btn_continue.bind(on_release=on_server_btn_continue)
        server_widget.add_widget(btn_continue)

        server_tab.content = server_widget
        return server_tab
Exemplo n.º 47
0
    def build(self):
        tab_panel= TabbedPanel()
        tab_panel.do_default_tab = False
        tab_panel.tab_width = 150
        tab_panel.tab_height = 30

        th_playlist = TabbedPanelHeader(text='Playlist Playout')
        th_playlist.content = Label(text='UI to create a playlist rundown')

        th_generic_live = TabbedPanelHeader(text='Generic Live Event')
        th_generic_live.content = Label(text='UI for running random live events')

        th_news = TabbedPanelHeader(text='News Broadcast')
        th_news.content = Label(text='UI for running a live news broadcast')

        th_worship = TabbedPanelHeader(text='Worship')
        th_worship.content= Label(text='UI for running praise & worships')

        th_football = TabbedPanelHeader(text='Football')
        th_football.content= Label(text='UI for running a football match')

        th_volleyball = TabbedPanelHeader(text='Volleyball')
        th_volleyball.content= Label(text='UI for running a volleyball match')

        tab_panel.add_widget(th_playlist)
        tab_panel.add_widget(th_generic_live)
        tab_panel.add_widget(th_news)
        tab_panel.add_widget(th_worship)
        tab_panel.add_widget(th_football)
        tab_panel.add_widget(th_volleyball)

        tab_panel.default_tab = th_playlist

        return tab_panel
Exemplo n.º 48
0
 def get_tab_objetivos(texto_tab, ciclo_id):
     tab=TabbedPanelHeader(text=texto_tab)
     tab.content=Button(text=texto_tab)
     return tab
Exemplo n.º 49
0
	def build(self):
#*******THE-ROOT-WIDGET******
		root = GridLayout(cols=1, rows=2, spacing=10)	
#*******CHILDREN-OF-ROOT-WIDGET******
		layouttop = GridLayout(cols=3, rows=1)
		layouttop.size_hint = (1, 0.1)
		layoutmid = GridLayout(cols=1, spacing=10)
	#******CHILDREN-OF-LAYOUTTOP******
		menubtn = Button()
		menubtn.size_hint = (0.1, 0.1)
		head = Label(text='PRO-FORMA',size_hint_y = None,size_hint_x=None, width=200)
		head.size_hint = (0.8, 0.1)
		backbtn = Button()
		backbtn.size_hint = (0.1, 0.1)
	#******CHILDREN-OF-LAYOUTMID******
		tp_panel = TabbedPanel()
		#___*******TAB1*****************************___#
		th_tab1 = TabbedPanelHeader(text = 'Info. Tab')	
		
		layoutinfo = GridLayout(rows=2)
		layoutinfo.add_widget(Label(text='Powered by kivy'))
	#*******CALLING-SUB-WIDGETS-TAB2******	
		th_tab1.content = layoutinfo
		tp_panel.add_widget(th_tab1)
		
		#___*******TAB2*****************************___#
		th_tab2 = TabbedPanelHeader(text = 'Pro-Forma')
		#******children-of-tab1******
		scroll = ScrollView(size_hint=(None, None), size=(800, 1000), pos_hint={'center_x':1,'center_y':1})
		
		mainlayout = GridLayout(cols = 1, spacing = 10, size_hint_y=None)
		mainlayout.bind(minimum_height=mainlayout.setter('height'))
			#children-of-main-layout
		layouttab1 = GridLayout(cols=2, pos_hint ={'center_x': 1, 'center_y': 1},row_force_default=True, row_default_height=40, size_hint_y=None, height = 250)
		layoutmix = GridLayout(cols=4, pos_hint ={'center_x': 1, 'center_y': 1},row_force_default=True, row_default_height=40 ,size_hint_y=None, height = 80)
		layoutexpense = GridLayout(cols=2, pos_hint ={'center_x': 1, 'center_y': 1},row_force_default=True, row_default_height=40, size_hint_y=None, height = 1000)
		layoutacc = GridLayout(cols=1, pos_hint ={'center_x': 1, 'center_y': 1},row_force_default=True, row_default_height=40, size_hint_y=None, height = 250)
		#******CONTENT1*******
		mainlayout.add_widget(Label(text='Property Information',size_hint_y=None, height=50))
		#*******CONTENT2*******
		layouttab1.add_widget(Label(text= 'Property Name', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp'))
		layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle'))
		layouttab1.add_widget(Label(text= 'Property Address', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp'))
		layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle'))
		layouttab1.add_widget(Label(text= 'Town/City', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp'))
		layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle'))
		layouttab1.add_widget(Label(text= 'Asking Price', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp'))
		layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle'))
		layouttab1.add_widget(Label(text= 'Total Units', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp'))
		layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle'))
		layouttab1.add_widget(Label(text= 'Square Footage', size_hint_x=None, width=200,size_hint_y=None, height=50, font_size='20sp'))
		layouttab1.add_widget(TextInput(text='input', font_size=15, halign ='left', valign='middle'))
		mainlayout.add_widget(layouttab1)
		#*******CONTENT3*******
		mainlayout.add_widget(Label(text='Unit Mix',size_hint_x=None, width=200, size_hint_y=None, height=50))
		#*******CONTENT4*******
		layoutmix.add_widget(Label(text='# of Units'))
		layoutmix.add_widget(Label(text='Unit Type'))
		layoutmix.add_widget(Label(text='SquareFeet'))
		layoutmix.add_widget(Label(text='Monthly Rent'))
		layoutmix.add_widget(TextInput(text='Input', font_size=15))
		layoutmix.add_widget(TextInput(text='Input', font_size=15))
		layoutmix.add_widget(TextInput(text='Input', font_size=15))
		layoutmix.add_widget(TextInput(text='Input', font_size=15))
		mainlayout.add_widget(layoutmix)
		#*******CONTENT5*******
		mainlayout.add_widget(Label(text='Expenses',size_hint_x=None, width=200, size_hint_y=None, height=50))
		#*******CONTENT6*******
		layoutexpense.add_widget(Label(text='Accounting'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Advertising'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Bank Charges'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Electricity'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Gas'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Security'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='All insurance'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Permits and fees'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Maintenance'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='Trash Pick-up'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		layoutexpense.add_widget(Label(text='All other'))
		layoutexpense.add_widget(TextInput(text='Input', font_size=15))
		mainlayout.add_widget(layoutexpense)
		#*******CONTENT7*******
		mainlayout.add_widget(Label(text='Accounts',size_hint_x=None, width=200, size_hint_y=None, height=50))	
		#*******CONTENT8layoutacc
		layoutacc.add_widget(Label(text='Select your financing type'))
		mainlayout.add_widget(layoutacc)
	#*******CALLING-SUB-WIDGETS-TAB2******
		scroll.add_widget(mainlayout)
		th_tab2.content = scroll
		tp_panel.add_widget(th_tab2)
		
		#___*******TAB3*******___#
		th_tab3 = TabbedPanelHeader(text = 'Saved Reports')
	#*******CALLING-SUB-WIDGETS-TAB3******
		tp_panel.add_widget(th_tab3)
		
#******CALLING-WIDGETS******
		layouttop.add_widget(menubtn)
		layouttop.add_widget(head)
		layouttop.add_widget(backbtn)		
		
		layoutmid.add_widget(tp_panel)
			
		root.add_widget(layouttop)
		root.add_widget(layoutmid)
#******RETURN-ROOT******
		return root