Esempio n. 1
0
    def place_list(self, req):
        if req['data'] is None:
            self.ids.content_layout.add_widget(
                Label(text="No camera added yet"))
        else:
            # pprint.pprint(req)
            for x in req['data']:
                actionbar = F.ActionBar(pos_hint={'top': 1})

                av = F.ActionView()
                av.add_widget(
                    F.ActionPrevious(title=x['name'],
                                     with_previous=False,
                                     size=[0.5, 0.5]))
                av.add_widget(F.ActionOverflow())

                ag = F.ActionGroup(text='CV')
                ag.add_widget(
                    F.ActionPrevious(title=x['ip'], with_previous=False))

                class OffActionButton(Button, ActionItem):
                    def __init__(self, **kwargs):
                        super(OffActionButton, self).__init__(**kwargs)
                        self.camera_id = x['id']
                        self.text = "Delete"
                        self.size = [0.5, 1]
                        self.size_hint_x = .3
                        self.size_hint_y = 1

                    def on_release(self):
                        try:
                            URL = api_uri + '/gui/deletecamera/{0}'.format(
                                self.camera_id)
                            r = requests.get(URL)
                            rjson = r.json()
                            print rjson
                        except Exception as e:
                            print e

                ag.add_widget(OffActionButton())
                av.add_widget(ag)
                actionbar.add_widget(av)

                self.ids.content_layout.add_widget(actionbar)
Esempio n. 2
0
    def place_list(self, req):
        try:
            if req['data'] is None:
                self.ids.content_layout.add_widget(
                    Label(text="No camera added yet"))

            else:
                # Print active camera list
                # pprint.pprint(req)

                for x in req['data']:
                    actionbar = F.ActionBar(pos_hint={'top': 1})

                    av = F.ActionView()
                    av.add_widget(
                        F.ActionPrevious(title=x['name'],
                                         with_previous=False,
                                         size=[0.5, 0.5]))
                    av.add_widget(F.ActionOverflow())

                    # Print CV STATUS of active camera list
                    # print 'CV assigned ' + str(x['cv_assigned'])
                    # print 'CV status   ' + str(x['cv_status'])

                    if x['cv_assigned'] is False:
                        titlestr = "Computer Vision: Not Assigned"
                    elif x['cv_status'] is False:
                        titlestr = "Computer Vision: OFF"
                    elif x['cv_status'] is True:
                        titlestr = "Computer Vision: ON"

                    ag = F.ActionGroup(text='CV')
                    ag.add_widget(
                        F.ActionPrevious(title=titlestr, with_previous=False))

                    class OffActionButton(Button, ActionItem):
                        def __init__(self, **kwargs):
                            super(OffActionButton, self).__init__(**kwargs)
                            self.camera_id = x['id']
                            self.text = "Off"
                            self.size = [0.5, 1]
                            self.size_hint_x = .3
                            self.size_hint_y = 1

                        def on_release(self):
                            try:
                                URL = api_uri + '/gui/disablecv/{0}'.format(
                                    self.camera_id)
                                r = requests.get(URL)
                                rjson = r.json()
                                print rjson
                            except Exception as e:
                                print e

                    class OnActionButton(Button, ActionItem):
                        def __init__(self, **kwargs):
                            super(OnActionButton, self).__init__(**kwargs)
                            self.camera_id = x['id']
                            self.text = "On"
                            self.size = [0.5, 1]
                            self.size_hint_x = .3
                            self.size_hint_y = 1

                        def on_release(self):
                            try:
                                URL = api_uri + '/gui/enablecv/{0}'.format(
                                    self.camera_id)
                                r = requests.get(URL)
                                rjson = r.json()
                                print rjson
                            except Exception as e:
                                print e

                    class ManualButton(Button, ActionItem):
                        def __init__(self, **kwargs):
                            super(ManualButton, self).__init__(**kwargs)
                            self.camera_id = x['id']
                            self.text = "Manual"
                            self.size = [0.5, 1]
                            self.size_hint_x = .3
                            self.size_hint_y = 1

                        def on_press(self):
                            try:
                                box = GridLayout(cols=3)
                                box.add_widget(
                                    Button(text='up_left',
                                           on_release=lambda *args: self.
                                           move_request('up_left', *args)))
                                box.add_widget(
                                    Button(text='up',
                                           on_release=lambda *args: self.
                                           move_request('up', *args)))
                                box.add_widget(
                                    Button(text='up_right',
                                           on_release=lambda *args: self.
                                           move_request('up_right', *args)))
                                box.add_widget(
                                    Button(text='left',
                                           on_release=lambda *args: self.
                                           move_request('left', *args)))
                                box.add_widget(
                                    Button(text='close',
                                           on_release=self.popup_close))
                                box.add_widget(
                                    Button(text='right',
                                           on_release=lambda *args: self.
                                           move_request('right', *args)))
                                box.add_widget(
                                    Button(text='down_left',
                                           on_release=lambda *args: self.
                                           move_request('down_left', *args)))
                                box.add_widget(
                                    Button(text='down',
                                           on_release=lambda *args: self.
                                           move_request('down', *args)))
                                box.add_widget(
                                    Button(text='down_right',
                                           on_release=lambda *args: self.
                                           move_request('down_right', *args)))
                                box.add_widget(Label(text='Size of margins'))
                                controlSlider = Slider(min=0.8,
                                                       max=1.05,
                                                       value=1)
                                box.add_widget(controlSlider)
                                box.add_widget(
                                    Button(text='Send Margins',
                                           on_release=lambda *args: self.
                                           send_slider_value(controlSlider.
                                                             value)))
                                self.popup = Popup(title='Manual Control',
                                                   content=box,
                                                   auto_dismiss=False,
                                                   size_hint=(.8, .8),
                                                   size=(400, 400))
                                self.popup.open()

                            except Exception as e:
                                traceback.print_exc()
                                print e

                        def send_slider_value(self, value):
                            URL = api_uri + '/get/slider/value={}'.format(
                                value)
                            r = requests.get(URL)
                            sleep(2)

                        def move_request(self, direction, *args):
                            print str(direction)
                            requests.get(
                                (api_uri +
                                 '/gui/move/manual/camera_id={}/direction={}'.
                                 format(self.camera_id, direction)))

                        def popup_close(self, *args):
                            self.popup.dismiss()

                    ag.add_widget(OffActionButton())
                    ag.add_widget(OnActionButton())
                    ag.add_widget(ManualButton())

                    av.add_widget(ag)

                    actionbar.add_widget(av)

                    self.ids.content_layout.add_widget(actionbar)
        except TypeError as e:
            traceback.print_exc()
            print(e)