Пример #1
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
Пример #2
0
 def __init__(self, parentscm, nom_cours, **kwargs):
     self.nom_cours = nom_cours
     self.parentscm = parentscm
     super(CoursConsultationEvaluations, self).__init__(**kwargs)
     nb = TabbedPanel(cols=1, spacing=5, padding=5, do_default_tab=False)
     self.add_widget(nb)
     liste_groupes = formation_db.trouver_groupes_par_cours([nom_cours])
     liste_modules = formation_db.trouver_modules_par_cours(
         formation_db.trouver_cours([nom_cours]))
     self.liste_obj_recap = list()
     for gr in liste_groupes:
         ce = ConsultationEvaluationsGroupe(parentscm,
                                            liste_modules,
                                            gr.participants,
                                            text=gr.__str__())
         nb.add_widget(ce)
         self.liste_obj_recap.append(ce)
     retour = TabbedPanelHeader(text='Retour')
     retour.bind(on_release=self.retour)
     nb.add_widget(retour)
Пример #3
0
    def build(self):
        tp = TabbedPanel()

        wid = Widget(size_hint=(0.9, 1))
        slider = Slider(min=0,
                        max=32,
                        value=0,
                        value_track=True,
                        orientation='vertical',
                        step=1.0,
                        value_track_color=[1, 0, 0, 1],
                        size_hint=(0.1, 1))
        self.label_pattern = "Axis {} : {}"
        self.edit_label_pattern = "Edit Color {}. Keep Axis {} : Layer Index {}. Slide : {}"
        self.color_preview_data = None
        self.fileroot = Root()
        self.axis = 0
        self.edit_axis = 1
        self.slider_value = 0
        self.layer_index = 0
        self.load_file = 0
        self.plot3d = Draw3DSurface()
        upper_layout = BoxLayout()
        upper_layout.add_widget(wid)
        upper_layout.add_widget(slider)

        self.label = Label(
            text=self.label_pattern.format(AxisList[self.axis], 0))

        btn_load_lut1 = Button(text='Load LUT 1',
                               on_press=partial(self.load_lut, wid, 1))

        btn_load_lut2 = Button(text='Load LUT 2',
                               on_press=partial(self.load_lut, wid, 2))

        btn_showlayer = Button(text='Show LUT Layer',
                               on_press=partial(self.show_lut_layer, wid))

        btn_showplot = Button(text='Show 3D Plot',
                              on_press=partial(self.show_3D_plot, wid))

        btn_double = Button(text='Change Axis',
                            on_press=partial(self.change_axis, wid))

        btn_save_lut = Button(text='Save LUT',
                              on_press=partial(self.save_lut, wid))

        layout = BoxLayout(size_hint=(1, None), height=50)
        layout.add_widget(btn_load_lut1)
        layout.add_widget(btn_load_lut2)
        layout.add_widget(btn_showlayer)
        layout.add_widget(btn_showplot)
        layout.add_widget(btn_double)
        layout.add_widget(btn_save_lut)
        layout.add_widget(self.label)

        root = BoxLayout(orientation='vertical')
        root.add_widget(upper_layout)
        root.add_widget(layout)
        slider.bind(value=partial(self.onlutlayerchange, wid))
        tp.default_tab_text = "Analysis"
        tp.background_color = (0, 0, 0, 1)
        tp.default_tab_content = root

        #Edit tab define
        th_text_head = TabbedPanelHeader(text='Edit')

        slider_layout = BoxLayout(size_hint=(1, 0.9))
        color_wid = Widget(size_hint=(1, 0.1))
        self.slider_list = []
        for i in range(33):
            self.slider_list.append(
                Slider(min=0,
                       max=1,
                       value=0,
                       value_track=False,
                       orientation='vertical',
                       cursor_size=(18, 18),
                       step=0.000001,
                       background_width=0))
        for slider_item in self.slider_list:
            slider_layout.add_widget(slider_item)
            slider_item.bind(value=partial(self.oneditcolorvalue, color_wid))

        edit_preview = BoxLayout(orientation='vertical', size_hint=(0.9, 1))
        edit_preview.add_widget(slider_layout)
        edit_preview.add_widget(color_wid)

        edit_layout_upper = BoxLayout()
        c_slider = Slider(min=0,
                          max=32,
                          value=0,
                          value_track=True,
                          orientation='vertical',
                          step=1.0,
                          value_track_color=[1, 0, 0, 1],
                          size_hint=(0.1, 1))
        c_slider.bind(value=partial(self.onslidervaluechange, color_wid))
        edit_layout_upper.add_widget(edit_preview)
        edit_layout_upper.add_widget(c_slider)

        edit_layout_lower = BoxLayout(size_hint=(1, None), height=50)
        btn_swap_axis = Button(text='Swap Axis',
                               size_hint=(0.15, 1),
                               on_press=partial(self.swap_axis, color_wid))

        btn_apply_change = Button(text='Apply Change',
                                  size_hint=(0.15, 1),
                                  on_press=partial(self.apply_change))
        self.edit_label = Label(text=self.edit_label_pattern.format(
            AxisList[self.edit_axis], AxisList[self.axis], 0, 0),
                                size_hint=(0.5, 1))
        edit_layout_lower.add_widget(btn_swap_axis)
        edit_layout_lower.add_widget(btn_apply_change)
        edit_layout_lower.add_widget(self.edit_label)
        edit_layout = BoxLayout(orientation='vertical')
        edit_layout.add_widget(edit_layout_upper)
        edit_layout.add_widget(edit_layout_lower)

        th_text_head.content = edit_layout

        tp.add_widget(th_text_head)
        th_text_head.bind(
            on_press=partial(self.edit_press_callback, color_wid))

        return tp
Пример #4
0
 def coin_page(self):
     mainview = ModalView(size_hint=(0.75, 0.75))
     grid = GridLayout(
         rows=2,
         cols=1,
         padding=[10, 15, 10, 30]  # left, top, right, bottom
     )
     # Area to contain price graphs located at the top half of the screen.
     graph_box = BoxLayout(orientation="vertical",
                           size_hint_y=0.5,
                           size_hint_x=.6)
     # Will contain the alerts below graph - once user sets them
     alarm_box = GridLayout(cols=2, size_hint_x=1, size_hint_y=.5)
     # First row of alerts box contains current price.
     self.current_price = coin_gecko.get_crypto_fiat_price(
         cryptoCurrency=self.current_coin)
     live_price_text = 'The current price is $' \
                       + str(self.current_price)
     live_price_label = Label(text="", size_hint_x=.5)
     dummy_label = Label(text=live_price_text, size_hint_x=.5)
     alarm_box.add_widget(live_price_label)
     alarm_box.add_widget(dummy_label)
     # Second row of alerts box contains alerts input box
     set_alarm_label = Label(text='Set Target Price: ', size_hint_x=0.5)
     self.alarm_textinput = TextInput(multiline=False, size_hint_x=0.5)
     # method actioned to check text input
     self.alarm_textinput.bind(text=self.on_text)
     alarm_box.add_widget(set_alarm_label)
     alarm_box.add_widget(self.alarm_textinput)
     # Third row of alerts box to contain buttons to set alerts
     alarm_button_less_than = Button(text="<", size_hint_x=1)
     alarm_button_more_than = Button(text=">", size_hint_x=1)
     alarm_box.add_widget(alarm_button_less_than)
     alarm_box.add_widget(alarm_button_more_than)
     # methods called on press of third row buttons, and then alerts added to log
     alarm_button_less_than.bind(on_release=self.alert_callback_less_than)
     alarm_button_more_than.bind(on_release=self.alert_callback_more_than)
     # Fourth row of alerts box will contain the alerts log.
     # self.scroll_label = ScrollableLabel(size_hint_x=1) #shown as self.history in sentdex tutorial
     # how to use self for input/label while not using self for old alerts
     # existing alerts
     scrollable_label = ScrollableLabel(size_hint_x=1)  # existing alerts
     alarm_box.add_widget(scrollable_label)
     # new alerts
     self.new_alerts_scrollable_label = ScrollableLabel(size_hint_x=1)
     alarm_box.add_widget(self.new_alerts_scrollable_label)
     self.price_chart()
     # Fourth row of alerts box continued
     graph_tabs = TabbedPanel(pos_hint={'center_x': .5, 'center_y': 1})
     graph_tabs.default_tab_text = '24hr'
     graph_tabs.default_tab.bind = self.one_day_chart()
     graph_tabs.default_tab_content = self.graph
     # graph title
     seven_days_tab = TabbedPanelHeader(text='7 days')
     seven_days_tab.bind = self.seven_day_chart()
     seven_days_tab.content = self.graph
     graph_tabs.add_widget(seven_days_tab)
     # make the actual plots
     graph_box.add_widget(graph_tabs)
     grid.add_widget(graph_box)
     grid.add_widget(alarm_box)
     # grid.add_widget(scrollable_label)
     mainview.add_widget(grid)
     mainview.open()
     parsedatabase.check_alerts(scrollable_label)
Пример #5
0
class MainApp(App):
    def __init__(self):
        super(MainApp, self).__init__()
        self.x = .5
        self.y = .5

        self.tabs = TabPnl()
        self.tabs.default_tab_text = "Main"
        self.tabhdr = TabHdr(text='Graph')

        # Set up the amount of tallies to take in
        self.total = int()
        self.tally_mask_amt = int()
        self.tally_no_mask_amt = int()
        self.tally_take_w_mask_amt = int()
        self.tally_take_wo_mask_amt = int()
        self.total_txt = 'Total: '
        self.mask_txt = 'Mask: '
        self.no_mask_txt = 'No Mask: '
        self.take_w_mask_txt = 'Take W Mask: '
        self.take_wo_mask_txt = 'Take WO Mask: '

        # Graph
        self.graph = None

        # Set up GUI
        self.total_lbl = None
        self.mask_lbl = None
        self.no_mask_lbl = None
        self.take_w_mask_lbl = None
        self.take_wo_mask_lbl = None
        self.tally_mask = None
        self.tally_no_mask = None
        self.tally_take_w_mask = None
        self.tally_take_wo_mask = None
        self.export_info = None

        # Get today's date
        _today = datetime.today()
        self.date = "{0}/{1}/{2}".format(_today.month, _today.day, _today.year)

        # Information to catalog
        self.analytics = {
            # Put in the format of tallies
            "Mask": [self.tally_mask_amt, {}],
            "NoMask": [self.tally_no_mask_amt, {}],
            "TookMask": [self.tally_take_w_mask_amt, {}],
            "WoMask": [self.tally_take_wo_mask_amt, {}],
            "Total": self.total
        }

    def build(self):
        _grid = GLayout(cols=1, rows=6)
        _box = BLayout(padding=10)
        _graph_box = BLayout(padding=10)
        _inside = GLayout(cols=2)
        _title = Lbl(
            text='People Tracker\n{0}'.format(self.date),
            size_hint=(self.x, self.y),
            pos_hint={
                "center_x": 0.5,
                "center_y": 0.5
            },
        )
        self.total_lbl = Lbl(
            text="{0}{1}".format(self.total_txt, self.total),
            size_hint=(self.x, self.y),
            pos_hint={
                "center_x": 0.5,
                "center_y": 0.5
            },
        )
        self.mask_lbl = Lbl(
            text="{0}{1}".format(self.mask_txt, self.tally_mask_amt),
            size_hint=(self.x, self.y),
            pos_hint={
                "center_x": 0.5,
                "center_y": 0.5
            },
        )
        self.no_mask_lbl = Lbl(
            text="{0}{1}".format(self.no_mask_txt, self.tally_no_mask_amt),
            size_hint=(self.x, self.y),
            pos_hint={
                "center_x": 0.5,
                "center_y": 0.5
            },
        )
        self.take_w_mask_lbl = Lbl(
            text="{0}{1}".format(self.take_w_mask_txt,
                                 self.tally_take_w_mask_amt),
            size_hint=(self.x, self.y),
            pos_hint={
                "center_x": 0.5,
                "center_y": 0.5
            },
        )
        self.take_wo_mask_lbl = Lbl(
            text="{0}{1}".format(self.take_wo_mask_txt,
                                 self.tally_take_wo_mask_amt),
            size_hint=(self.x, self.y),
            pos_hint={
                "center_x": 0.5,
                "center_y": 0.5
            },
        )
        self.tally_mask = Btn(
            text="Wearing Mask",
            size_hint=(self.x, self.y),
            pos_hint={
                "center_x": 0.5,
                "center_y": 0.5
            },
        )
        self.tally_no_mask = Btn(
            text="Refuse Mask",
            size_hint=(self.x, self.y),
            pos_hint={
                "center_x": 0.5,
                "center_y": 0.5
            },
        )
        self.tally_take_w_mask = Btn(
            text="No Mask, Take Mask",
            size_hint=(self.x, self.y),
            pos_hint={
                "center_x": 0.5,
                "center_y": 0.5
            },
        )
        self.tally_take_wo_mask = Btn(
            text="Has Mask, Take Mask",
            size_hint=(self.x, self.y),
            pos_hint={
                "center_x": 0.5,
                "center_y": 0.5
            },
        )

        self.export_info = Btn(
            text="Export JSON",
            size_hint=(self.x, self.y),
            pos_hint={
                "center_x": 0.5,
                "center_y": 0.5
            },
        )

        self.graph = Logic(self.analytics)

        # Append all widgets
        _box.add_widget(_title)
        _box.add_widget(_inside)
        _inside.add_widget(self.total_lbl)
        _inside.add_widget(self.mask_lbl)
        _inside.add_widget(self.no_mask_lbl)
        _inside.add_widget(self.take_w_mask_lbl)
        _inside.add_widget(self.take_wo_mask_lbl)
        _grid.add_widget(widget=_box)
        _grid.add_widget(widget=self.tally_mask)
        _grid.add_widget(widget=self.tally_no_mask)
        _grid.add_widget(widget=self.tally_take_w_mask)
        _grid.add_widget(widget=self.tally_take_wo_mask)
        _grid.add_widget(widget=self.export_info)

        _graph_box.add_widget(widget=self.graph)

        self.tabs.add_widget(widget=self.tabhdr)
        self.tabs.default_tab_content = _grid
        self.tabhdr.content = _graph_box

        self.add_functionality()

        return self.tabs

    def add_functionality(self):
        """
        Bind events to the buttons.
        :return:
        """

        self.tally_mask.bind(on_press=lambda x: self.tallier(0))
        self.tally_no_mask.bind(on_press=lambda x: self.tallier(1))
        self.tally_take_w_mask.bind(on_press=lambda x: self.tallier(2))
        self.tally_take_wo_mask.bind(on_press=lambda x: self.tallier(3))
        self.export_info.bind(on_press=lambda x: self.export_doc())

        self.tabhdr.bind(on_press=lambda x: self.graph.update())

    def tallier(self, _input=int()):
        """
        Press buttons and get results.

        :param _input: Passed input.
        :return:
        """

        _get_time = str(datetime.today().time()).split(".")[0]
        if _input == 0:
            self.tally_mask_amt += 1
            self.analytics["Mask"][0] = self.tally_mask_amt
            self.analytics["Mask"][1].setdefault(self.tally_mask_amt,
                                                 _get_time)
            self.mask_lbl.text = "{0}{1}".format(self.mask_txt,
                                                 self.tally_mask_amt)

        if _input == 1:
            self.tally_no_mask_amt += 1
            self.analytics["NoMask"][0] = self.tally_no_mask_amt
            self.analytics["NoMask"][1].setdefault(self.tally_no_mask_amt,
                                                   _get_time)
            self.no_mask_lbl.text = "{0}{1}".format(self.no_mask_txt,
                                                    self.tally_no_mask_amt)

        if _input == 2:
            self.tally_take_w_mask_amt += 1
            self.analytics["TookMask"][0] = self.tally_take_w_mask_amt
            self.analytics["TookMask"][1].setdefault(
                self.tally_take_w_mask_amt, _get_time)
            self.take_w_mask_lbl.text = "{0}{1}".format(
                self.take_w_mask_txt, self.tally_take_w_mask_amt)

        if _input == 3:
            self.tally_take_wo_mask_amt += 1
            self.analytics["WoMask"][0] = self.tally_take_wo_mask_amt
            self.analytics["WoMask"][1].setdefault(self.tally_take_wo_mask_amt,
                                                   _get_time)
            self.take_wo_mask_lbl.text = "{0}{1}".format(
                self.take_wo_mask_txt, self.tally_take_wo_mask_amt)

        self.total += 1
        self.analytics['Total'] = self.total
        self.total_lbl.text = "{0}{1}".format(self.total_txt, self.total)

    def export_doc(self):
        if DEBUG:
            print(self.analytics)

        with open("analytics_{0}.json".format(self.date).replace("/", "_"),
                  "w") as f:
            json.dump(self.analytics, f)