def __init__(self, section, item_name, item_value): super(BoxLayoutItemBoolean, self).__init__(section, item_name, item_value) self.item_value = Switch(active=item_value) self.add_widget(self.item_value) self.item_value.bind(active=self.item_activated)
class FftWidget(GridLayout): def __init__(self, **kwargs): self.rows = 1 self.cols = 1 GridLayout.__init__(self, **kwargs) topLayout = BoxLayout(orientation="vertical") midLayout = BoxLayout(orientation="horizontal", size_hint=(1.0, 0.8)) swLayout = BoxLayout(orientation="vertical", size_hint=(0.2, 1.0)) swLayout.add_widget(Label(text="Zoom")) self.zs = Switch() self.zs.bind(active=self.zoomSwitchLogic) swLayout.add_widget(self.zs) swLayout.add_widget(Label(text="Pan")) self.ps = Switch() self.ps.bind(active=self.panSwitchLogic) swLayout.add_widget(self.ps) midLayout.add_widget(Renderer(self.zs, self.ps, size_hint=(0.8, 1.0))) midLayout.add_widget(swLayout) topLayout.add_widget(Button(text="first", size_hint=(1.0, 0.1))) #topLayout.add_widget(Renderer(size_hint=(1.0, 0.8))) topLayout.add_widget(midLayout) topLayout.add_widget(Button(text="second", size_hint=(1.0, 0.1))) self.add_widget(topLayout) def zoomSwitchLogic(self, a, b): if self.zs.active and self.ps.active: self.ps.active = False def panSwitchLogic(self, a, b): if self.zs.active and self.ps.active: self.zs.active = False
def build_overview(self): alarm_overview = self.ids['Alarm_Overview_Stack'] alarm_overview.bind(minimum_height=alarm_overview.setter('height')) alarm_overview.clear_widgets(children=None) SortedAlarms = sorted(Alarms, key=lambda Alarm: Alarm.MinutesAfterMidnight()) for alarm in SortedAlarms: alarm_overview.add_widget( Label(text=alarm.to_string(), font_size=25, height=80, size_hint=(0.4, None))) alarm_switch = Switch(active=alarm.IsActive, height=80, size_hint=(0.3, None)) alarm_switch.bind(active=alarm.toggle_active) alarm_delete = Button( background_normal='images/AccordionSelected.png', height=64, size_hint=(0.2, None)) alarm_delete.bind(on_press=partial(self.delete_alarm, alarm)) alarm_overview.add_widget(alarm_switch) alarm_overview.add_widget(alarm_delete)
def build(self): if platform == "android": from android import AndroidService service = AndroidService('desire sensors service', 'running') service.start('service started') self.service = service status_page = StatusPage() accelerometer.enable() compass.enable() self.gps = gps self.gps.configure(on_location=self.on_gps_location, on_status=self.on_gps_status) self.gps.start() notification.notify(title="Hello",message="Just Checking") #vibrator.vibrate(0.2) # vibrate for 0.2 seconds print("Hello World") status_page.gps_data = self.gps_data # Clock.schedule_interval(status_page.update, 1.0 / 10.0) # 10H Clock.schedule_interval(status_page.update, 1.0) # 1Hz button=Button(text='Service',size_hint=(0.12,0.12)) button.bind(on_press=self.callback) status_page.add_widget(button) switch = Switch() switch.bind(active=self.callback) status_page.add_widget(switch) return status_page
def __init__(self, **kwargs): super().__init__(**kwargs) Window.size = (640, 700) self.cross_img = Image(source="", size=(640, 640), pos=(0, 120)) self.add_widget(self.cross_img) self.noise_slider = Slider(min=-1, max=1, value=0, pos=(290, 40)) self.add_widget(self.noise_slider) self.Generate_button = Button(text="Generate", size=(320, 60), pos=(0, 0), font_size=default_font_size) self.Generate_button.bind(on_press=self.Generate_image) self.add_widget(self.Generate_button) self.back_button = Button(text="Back", size=(320, 60), pos=(320, 0), font_size=default_font_size) self.back_button.bind(on_press=self.back) self.add_widget(self.back_button) self.switch = Switch(size=(50, 60), pos=(30, 50)) self.switch.bind(active=self.switch_training) self.add_widget(self.switch)
def build(self): Config.set('graphics', 'width', 320) Config.set('graphics', 'height', 512) print(kivy.__version__) # -------- funciones ------------- def sw(instance, value): print('the switch', instance, 'is', value) print(layout.size) if value: labelMensaje.text = "ACTIVADO." print(kivy.__version__) else: labelMensaje.text = "DESACTIVADO." # capas layout layout = BoxLayout(spacing=2, orientation="horizontal", padding=30) layout2 = BoxLayout(spacing=10, orientation="vertical", padding=30) # elementos widgets labelsw1 = Label(text="Luz del pasillo:") btn1 = Button(text='Entrar') labelMensaje = Label(text="DESACTIVADO.", font_size=30) switch = Switch() layout.add_widget(switch, index=0) layout.add_widget(labelsw1, index=1) layout2.add_widget(layout, index=2) layout2.add_widget(btn1, index=0) layout2.add_widget(labelMensaje, index=1) switch.bind(active=sw) return layout2
def __init__(self, **kwargs): super(SwitchContainer, self).__init__(**kwargs) self.cols = 2 # #Switch1 # #switch label self.add_widget(Label(text="SW 1: ")) #switch1 button self.sw1 = Switch(active=False) self.add_widget(self.sw1) self.sw1.disabled = True #Make the switch unclickable on the app # #Led1 # #led label self.add_widget( Label(text="LED 1: ")) #Create a label that displays "LED 1" #led1 button self.led1 = Switch(active=False) self.add_widget( self.led1) #Create a switch that can be turned off or on #schedule the JSONrequest function to trigger every second to read/write database event = Clock.schedule_interval(partial(self.JSONrequest), 1)
def build(self): if platform == "android": from android import AndroidService service = AndroidService('desire sensors service', 'running') service.start('service started') self.service = service status_page = StatusPage() accelerometer.enable() compass.enable() self.gps = gps self.gps.configure(on_location=self.on_gps_location, on_status=self.on_gps_status) self.gps.start() notification.notify(title="Hello", message="Just Checking") #vibrator.vibrate(0.2) # vibrate for 0.2 seconds print("Hello World") status_page.gps_data = self.gps_data # Clock.schedule_interval(status_page.update, 1.0 / 10.0) # 10H Clock.schedule_interval(status_page.update, 1.0) # 1Hz button = Button(text='Service', size_hint=(0.12, 0.12)) button.bind(on_press=self.callback) status_page.add_widget(button) switch = Switch() switch.bind(active=self.callback) status_page.add_widget(switch) return status_page
class Switch_implementare(GridLayout): def __init__(self, **kwargs): super(Switch_implementare, self).__init__(**kwargs) self.cols = 1 self.padding = 150 self.switch1 = Switch() self.switch1.active = True self.add_widget(self.switch1) self.arata_volum = Label(text="volum: 10") self.add_widget(self.arata_volum) self.slide_muzica = Slider(min=0, max=100, value=10) self.slide_muzica.step = 5 self.slide_muzica.orientation = "horizontal" # alte optiuni 'vertical' self.add_widget(self.slide_muzica) self.switch1.bind(active=self.dezactiveaza_volum) self.slide_muzica.bind(value=self.valoare_volum) def valoare_volum(self, x, y): '''utilziat pentru a vedea volumul''' self.arata_volum.text = "volum: " + str(int(self.slide_muzica.value)) def dezactiveaza_volum(self, x, y): '''utilziat pentru a acctiva sau a dezactiva slider-ul''' if (self.switch1.active == False): self.slide_muzica.disabled = True else: self.slide_muzica.disabled = False self.slide_muzica.value = 0
def __init__(self, **kwargs): super(SwitchContainer, self).__init__(**kwargs) self.cols = 2 self.add_widget(Label(text="Auto jump status:")) self.settings_sample = Switch(active=False) self.add_widget(self.settings_sample) self.settings_sample.bind(active=switch_callback)
def sw_factory(self): def cb(ins, val): self.value = val print(self.value) ti = Switch(size_hint_y=None, height=30) ti.bind(active=cb) return ti
def __init__(self, **kwargs): super(SettingsLiteScreen, self).__init__(**kwargs) # Set up the settings in a grid popup = GridLayout(cols=1, size_hint_y=None) # Make sure the height is such that there is something to scroll. popup.bind(minimum_height=popup.setter('height')) # Set up setting buttons with open(join(dirname(__file__), 'camera.json')) as json_file: json_data = json.load(json_file) for setting in json_data: if setting['settings_lite'] == '1': # Check if the setting is boolean if setting['type'] == 'bool': # Check if the current setting is on or off if main.App.get_running_app().config.getint('Camera', setting['key']) == 1: cur_state = True else: cur_state = False # Create the widgets label = Label(text=setting['title'], size_hint_y=None, height=48) switch = Switch(active=cur_state, size_hint_y=None, height=48) switch.bind(active=partial(self.settings_lite_switch_toggle, setting['key'])) # Add to main settings_lite widget popup.add_widget(label) popup.add_widget(switch) # Else just make the setting a button else: btn = Button(text=setting['title'], size_hint_y=None, height=96) btn.bind(on_release=self.settings_lite_button_push) popup.add_widget(btn) # Setup the scrollable section and add to floatlayout. scrolly = ScrollView(size_hint=(0.2, 0.83), pos_hint={'x':0.8, 'y':0.17}) scrolly.add_widget(popup) floaty = FloatLayout() floaty.add_widget(scrolly) # Add the close button to the bottom close_button = Button(text='Close', size_hint=(0.2, 0.16), pos_hint={'x':0.8, 'y':0}) close_button.bind(on_release=self.close_settings_lite) floaty.add_widget(close_button) self.add_widget(floaty)
def dashboard_speed_tab(self): canvas = BoxLayout(orientation='vertical') # 1st layer setup = BoxLayout(orientation='horizontal') #setup.height = 20 setup.size_hint = (1, None) btnPlus = Button(text='-', id="minus") self.w_spd_targetspeed = Label(text='10', font_size="20sp") btnMinus = Button(text='+', id="plus") btnAspd = ToggleButton(text='AirSpeed', id="aspd", group='speed_source', state='down') btnGspd = ToggleButton(text='GndSpeed', id="gspd", group='speed_source') btnAspd.bind(state=self.cb_set_speed_source) btnGspd.bind(state=self.cb_set_speed_source) btnPlus.bind(state=self.cb_set_speed_source) btnMinus.bind(state=self.cb_set_speed_source) swRead = Switch(active=False) swRead.bind(active=self.toggle_reading) setup.add_widget(btnPlus) setup.add_widget(self.w_spd_targetspeed) setup.add_widget(btnMinus) setup.add_widget(btnAspd) setup.add_widget(btnGspd) setup.add_widget(swRead) # zaskrtavatko - hlas, tón, pipani # Ukazatel data = BoxLayout(orientation='horizontal') data_actual = BoxLayout(orientation='vertical') self.w_spd_release_status = Label(text="--Release--", markup=True) self.w_spd_speed_info = Label(text="info", markup=True, halign="center") data_actual.add_widget(self.w_spd_release_status) data_actual.add_widget(self.w_spd_speed_info) data_offset = BoxLayout(orientation='vertical') self.w_spd_offset = Label(text="Err", font_size="50sp", markup=True) data_offset.add_widget(self.w_spd_offset) self.w_spd_range = Range() data.add_widget(data_actual) data.add_widget(data_offset) data.add_widget(self.w_spd_range) canvas.add_widget(setup) canvas.add_widget(data) return canvas
class Tela(FloatLayout): def __init__(self, **kwargs): super(Tela, self).__init__(**kwargs) self.switch = Switch(active=False) self.switch.bind(active=self.esta_ativo) self.add_widget(self.switch) def esta_ativo(self, instance, value): if value == True: print('O switch Ativo') else: print('O switch Desativado')
class FlashApp(App): def build(self): self.root = Switch() self.service = AndroidService('Kivy FlashLight', 'I haz a FlashLight!') self.root.bind(active=self.toggle_flash) return self.root def toggle_flash(self, *args): if self.root.active: self.service.start() else: self.service.stop()
def BrowserPop(self): layout = GridLayout(cols=1, size_hint=(None, 1.0), width=700) layout.bind(minimum_height=layout.setter("height")) panel = SettingsPanel(title="Browser Mods", settings=self) main = BoxLayout(orientation="vertical") root = ScrollView( size_hint=(None, None), bar_margin=-11, bar_color=(47 / 255.0, 167 / 255.0, 212 / 255.0, 1.0), do_scroll_x=False ) root.size = (600, 400) root.add_widget(layout) main.add_widget(root) done = Button(text="Done Choosing Options") main.add_widget(done) if "const/4 v0, 0x4" in open("%s/BrowserSettings.smali" % (Browser)).read(): fp = open("%s/BrowserSettings.smali" % (Browser), "r") lines = fp.readlines() fp.close() tabs = SettingItem( panel=panel, title="Unlimited Browser Tabs", disabled=False, desc="Allows Unlimited number of browser tabs to be open", ) for i in range(len(lines)): if "const/4 v0, 0x4" in open("%s/BrowserSettings.smali" % (Browser)).read(): tabs_switch = Switch(active=False) continue if "const/4 v0, 0x4" in open("%s/BrowserSettings.smali" % (Browser)).read(): tabs_switch = Switch(active=True) tabs.add_widget(tabs_switch) layout.add_widget(tabs) def callback(instance, value): tabs_state(instance, value) tabs_switch.bind(active=callback) popup = Popup( background="atlas://images/eds/pop", title="Browser Mods", content=main, auto_dismiss=False, size_hint=(None, None), size=(630, 500), ) popup.open() def finish(self): finish_browser(self) popup.dismiss() done.bind(on_release=finish)
def __init__(self, **kwargs): super(RVViewClass, self).__init__(**kwargs) self.label_user_info = Label(text='', bold=True, italic=True) self.add_widget(self.label_user_info) self.label_estimator_info = Label(text='', bold=True, italic=True) self.add_widget(self.label_estimator_info) self.switch_is_accessible = Switch(active=True) self.add_widget(self.switch_is_accessible) self.bind(user_id=self.represent_info) self.bind(estimator_id=self.represent_info) self.bind(db=self.represent_info) self.switch_is_accessible.bind(active=self.switch_is_accessible_bind)
class BoxLayoutItemBoolean(BoxLayoutItem): def __init__(self, section, item_name, item_value): super(BoxLayoutItemBoolean, self).__init__(section, item_name, item_value) self.item_value = Switch(active=item_value) self.add_widget(self.item_value) self.item_value.bind(active=self.item_activated) def item_activated(self, *args): self.changed_value(args[1]) def restore_item_value(self): self.item_value.active = self.server_value
def __init__(self, **kwargs): super(Switch_implementare, self).__init__(**kwargs) self.cols = 1 self.padding = 150 self.switch1 = Switch() self.switch1.active = True self.add_widget(self.switch1) self.arata_volum = Label(text="volum: 10") self.add_widget(self.arata_volum) self.slide_muzica = Slider(min=0, max=100, value=10) self.slide_muzica.step = 5 self.slide_muzica.orientation = "horizontal" # alte optiuni 'vertical' self.add_widget(self.slide_muzica) self.switch1.bind(active=self.dezactiveaza_volum) self.slide_muzica.bind(value=self.valoare_volum)
def __init__(self, **kwargs): super(WhiteNoise, self).__init__(**kwargs) pos_hint = {"x": .5, "y": .1} def callback(instance, value): if (value is True): noise1.play() elif (value is False): noise1.stop() self.text = "white noise" noise1 = SoundLoader.load('sounds/noise1.wav') noise1.loop = True switch = Switch() switch.bind(active=callback) self.add_widget(switch)
def __init__(self, **kwargs): super(Alarm_widget, self).__init__(**kwargs) # Alarm_Body=FloatLayout(pos_hint={'center_x':0.5,'y':0}) self.DataBar = DataBar =BoxLayout(size_hint=[.5,1],pos_hint={'x':0,'center_y':0.5}, orientation='vertical') self.frst=frst=Label(text='Alarm1') self.scnd=scnd=Label(text='0:0') self.size_hint=(1,None) self.height=100 self.sound_inst_loop=['Sound1.mp3','Sound2.mp3','Sound3.mp3','Sound4.mp3','Sound5.mp3'] self.sound_loop=['1','2','3','4','5'] for i in range(len(self.sound_inst_loop)): self.sound_loop[i] = SoundLoader.load(self.sound_inst_loop[i]) self.touchedS=BooleanProperty(False) self.audiobool=BooleanProperty(False) DataBar.add_widget(frst) DataBar.add_widget(scnd) self.callScr=Call_Time_Screen() self.popupsi=Popup(title='Unexpected/uninputed value',content=self.callScr) self.add_widget(DataBar) self.ONOFF= ONOFF= Switch(size_hint=[1/2,.5],pos_hint={'x': 0, 'center_y': 0.5}) ONOFF.bind(active=self.LetsGetActivate) self.Alarm_ToolBar=Alarm_ToolBar=FloatLayout(size_hint=(.5,1),pos_hint={'right':1,'center_y':0.5}) # self.Button_Delete=Button_Delete= Alarm_manager_Lables(size_hint=[1/5,.4],pos_hint={'right': .9, 'center_y': 0.5}) # Button_Delete.img1.source='icons8-no-96.png' # Button_Delete.btn1.bind(on_release=self.LetsDelete) Alarm_ToolBar.add_widget(ONOFF) # Alarm_ToolBar.add_widget(Button_Delete) # Button_Stop.btn1.bind(on_release=self.LetsGetDelete) self.add_widget(Alarm_ToolBar)
def show_plugins(self, plugins_list): def on_active(sw, value): self.plugins.toggle_enabled(self.electrum_config, sw.name) run_hook('init_kivy', self) for item in self.plugins.descriptions: if 'kivy' not in item.get('available_for', []): continue name = item.get('__name__') label = Label(text=item.get('fullname'), height='48db', size_hint=(1, None)) plugins_list.add_widget(label) sw = Switch() sw.name = name p = self.plugins.get(name) sw.active = (p is not None) and p.is_enabled() sw.bind(active=on_active) plugins_list.add_widget(sw)
class LabeledSwitch(BoxLayout): def __init__(self, text, color=[1] * 4, pos_hint={ "x": 0, "y": 0 }, size_hint=[1, 1], *args, **kwargs): super(LabeledSwitch, self).__init__(pos_hint=pos_hint, size_hint=size_hint, *args, **kwargs) # self.Initialize(*args,**kwargs) #def Initialize(self,*args,**kwargs): self.Label = Label(text=text, color=color) self.add_widget(self.Label) self.Switch = Switch(*args, **kwargs) self.add_widget(self.Switch) #print self.size, self.Switch.size def bindSwitch(self, *args, **kwargs): return self.Switch.bind(*args, **kwargs) def IsActive(self): return self.Switch.active
def build(self): layout = GridLayout(cols=2) layout.add_widget(Button(text='Widget 1')) layout.add_widget(Switch()) layout.add_widget(Slider()) layout.add_widget(Button(text='Widget 4')) return layout
def __init__(self, json_device, *args, **kwargs): super(DeviceBox, self).__init__(*args, **kwargs) self.app = App.get_running_app() print 'building device box' print json_device print '\n' self.maj_id = json_device['id'] self.model = json_device['device_key'] self.name = json_device['name'] self.orientation = 'vertical' self.add_widget(Label(text = self.name, text_size = (self.width-dp(10), 35))) if self.model in self.nexa_controllers: self.switches = [] for switch in json_device['switches']: if switch['state'] != None: state = switch['state'] else: state = False new_switch = Switch(id = switch['id'], active = state, disabled = True) self.switches.append(new_switch) self.add_widget(new_switch) elif self.model in self.nexa_sensors: self.last_activated = Label(text = json_device['last_activated'], size_hint = (None, 1), text_size = (self.width-dp(10), 100), pos_hint = {'center_x': 0.5}) self.add_widget(self.last_activated) elif self.model in self.nexa_devices: self.switch = Switch(id = json_device['id']) self.switch.bind(active = self.user_action) self.add_widget(self.switch)
class MainApp(App): user_id = 1 def build(self): return GUI def on_start(self): # get database data result = requests.get( "https://chainapp-1e9a9-default-rtdb.europe-west1.firebasedatabase.app/{}.json" .format(str(self.user_id))) print("ok?", result) data = json.loads(result.content.decode()) print(data) # Root is the main widget in layout, = gridlayout def change_screen(self, screen_name): print(self.root.ids) screen_manager = self.root.ids['screen_manager'] screen_manager.current = screen_name def callback(instance, value): print('the switch', instance, 'is', value) switch = Switch() switch.bind(active=callback)
def update(self, *args): self.ids["Title"].text = self.title self.ids["Description"].text = self.description self._editorHolder.clear_widgets() if self.type == "numericSlider": if self.sliderMin is None or self.sliderMax is None: raise ValueError("'sliderMin' and / or 'sliderMax' cannot be 'None' if type is numericSlider") self._editorWidget = Slider(min=self.sliderMin, max=self.sliderMax, value=Config.getint(self.section, self.option), step=1) self._editorWidget.bind(value=self.value_changed) self._editorWidget2 = TextInput(multiline=False, font_size=self._editorHolder.height / 2, text=Config.get(self.section, self.option), input_filter="int") self._editorWidget2.bind(on_text_validate=self.text_box_int_validator) self._editorWidget2.bind(focus=self.text_box_int_validator) elif self.type == "bool": self._editorWidget = Switch(active=Config.getboolean(self.section, self.option)) self._editorWidget.bind(active=self.value_changed) elif self.type == "string": self._editorWidget = TextInput(multiline=False, font_size=self._editorHolder.height / 2, text=Config.get(self.section, self.option)) self._editorWidget.bind(on_text_validate=lambda *args: self.value_changed(None, self._editorWidget.text)) self._editorWidget.bind(focus=lambda *args: self.value_changed(None, self._editorWidget.text)) elif self.type == "option": self._editorWidget = Button(text=Config.get(self.section, self.option)) dropDown = DropDown() for option in self.options: text = str(option) try: text = text + " - " + str(self.extra_info[option]) except KeyError: pass btn = Button(text=text, size_hint_y=None, height=self.height) btn.tag = str(option) btn.bind(on_release=lambda _btn: dropDown.select(_btn.tag)) dropDown.add_widget(btn) self._editorWidget.bind(on_release=dropDown.open) self._editorWidget.bind(on_release=lambda *args: emptyFunction(dropDown.children)) dropDown.bind(on_select=lambda instance, x: setattr(self._editorWidget, 'text', x)) dropDown.bind(on_select=self.value_changed) if self._editorWidget2 is not None: self._editorHolder.add_widget(self._editorWidget2) if self.type != "title": self._editorHolder.add_widget(self._editorWidget)
def Options(self, buton): self.layout.clear_widgets() self.switch = Switch(text = 'Music') self.switch.active = True self.switch.size_hint = (0.3, 0.2) self.switch.pos = (300, 360) self.layout.add_widget(self.switch) self.show_volume = Label(text = 'Volume = 50') self.layout.add_widget(self.show_volume) self.music_slide = Slider(min = 0, max = 100, value = 50) self.music_slide.step = 5 self.music_slide.size_hint = (0.3, 0.1) self.music_slide.pos = (300, 180) self.music_slide.orientation = 'horizontal' self.layout.add_widget(self.music_slide) self.button = Button(text = 'Back', bold = True, background_color = (0, 0, 1, 1)) self.button.pos = (300, 120) self.button.size_hint = (0.3, 0.1) self.button.opacity = 0.7 self.layout.add_widget(self.button) self.switch.bind(active = self.mute) self.music_slide.bind(value = self.volume_value) self.button.bind(on_press = self.Menu)
def __init__(self, label="", **kwargs): super(SwitchButton, self).__init__(**kwargs) self.cols = 2 self.rows = 1 self.label = Label(text=label) self.switch = Switch(active=True) self.add_widget(self.label) self.add_widget(self.switch)
def __init__(self, **kwargs): super(SwitchContainer, self).__init__(**kwargs) self.inside = GridLayout() self.inside.cols = 4 self.cols = 1 self.inside.add_widget( Label(text="Iris Scanner: ")) #create a label for SW1 self.sw1 = Switch( active=False) #create a SwitchCompat for SW1(default to OFF) self.inside.add_widget( self.sw1) #add the created SwitchCompat to the screen self.sw1.disabled = True #make SW1unclickable on the app self.inside.add_widget( Label(text="Proximity Fab: ")) #create a label for SW2 self.sw2 = Switch( active=False) #create a SwitchCompat for SW2(default to OFF) self.inside.add_widget( self.sw2) #add the created SwitchCompat to the screen self.sw2.disabled = True #make SW2unclickable on the app self.inside.add_widget(Label(text="Door: ")) #create a label for LED1 self.led1 = Switch( active=False) #create a SwitchCompat for LED1(default to OFF) self.inside.add_widget( self.led1) #add the created SwitchCompat to the screen self.inside.add_widget(Label(text="Alarm: ")) #create a label for LED2 self.led2 = Switch( active=False) #create a SwitchCompat for LED2(default to OFF) self.inside.add_widget( self.led2) #add the created SwitchCompat to the screen self.add_widget(self.inside) self.add_widget( Label(text="Acknowldege Alarm:")) #create a label for LED2 self.ACK = Switch( active=False) #create a SwitchCompat for LED2(default to OFF) self.add_widget(self.ACK) #add the created SwitchCompat to the screen #schedule the JSONrequest function to trigger every 5 seconds to read/write databases event = Clock.schedule_interval(partial(self.JSONrequest), 3)
def create_save_image_buttons(self): time_lapse_layout = BoxLayout(orientation = 'vertical', size_hint_y = 0.6) save_image_button = Button(text = 'save image', size_hint_y = 0.2, background_color = [0, 0.3, 1, 1]) time_lapse_interval_input = TextInput(text = str(self.time_lapse_interval), multiline = False, size_hint_y = 0.3) time_lapse_interval_label = Label(text = 'time_lapse\ninterval(sec)', size_hint_y = 0.15, color = [0, 1, 0, 1]) time_lapse_button = Switch(size_hint_y = 0.2) # need to make a popup to choose time_interval etc. time_lapse_button_label = Label(text = 'on/off\ntime_lapse', size_hint_y = 0.15, color = [0, 1, 0, 1]) def save_image(instance): ''' Callback for save_image_button''' self.filepath_update = False # this prevents saving image mess up naming self.filepath = self.format_filepath(update = False) if debug_mode is True: print('save image to {}'.format(self.filepath)) if debug_mode is False: mc.camera_library('save_image', self.folder, self.filepath) self.image_number = self.image_number + 1 def start_time_lapse(instance, value): ''' Callback for time_lapse_button''' update_time_lapse_interval(time_lapse_interval_input) if value is True: # start time lapse save_image('') self.event = Clock.schedule_interval(save_image, self.time_lapse_interval) if value is False: Clock.unschedule(self.event) def update_time_lapse_interval(instance): try: self.time_lapse_interval = float(time_lapse_interval_input.text) except: # if the text_input is not a valid value, use 60 as default value time_lapse_interval_input.text = str(self.time_lapse_interval) self.time_lapse_interval = float(time_lapse_interval_input.text) print(self.time_lapse_interval) save_image_button.bind(on_release = save_image) time_lapse_button.bind(active = start_time_lapse) if debug_mode is False: # When click the time_lapse_interval_input, stop the preview time_lapse_interval_input.bind(focus = partial(mc.camera_library, 'stop_preview')) time_lapse_interval_input.bind(on_text_validate = update_time_lapse_interval) for i in [save_image_button, time_lapse_interval_label, time_lapse_interval_input, time_lapse_button_label, time_lapse_button]: time_lapse_layout.add_widget(i) return time_lapse_layout
class RamdomFacePage(GridLayout): def __init__(self, **kwargs): super().__init__(**kwargs) Window.size = (640, 700) self.cross_img = Image(source="", size=(640, 640), pos=(0, 120)) self.add_widget(self.cross_img) self.noise_slider = Slider(min=-1, max=1, value=0, pos=(290, 40)) self.add_widget(self.noise_slider) self.Generate_button = Button(text="Generate", size=(320, 60), pos=(0, 0), font_size=default_font_size) self.Generate_button.bind(on_press=self.Generate_image) self.add_widget(self.Generate_button) self.back_button = Button(text="Back", size=(320, 60), pos=(320, 0), font_size=default_font_size) self.back_button.bind(on_press=self.back) self.add_widget(self.back_button) self.switch = Switch(size=(50, 60), pos=(30, 50)) self.switch.bind(active=self.switch_training) self.add_widget(self.switch) def Generate_image(self, instance): if cgan.test(is_training=is_training, desc='', noise=self.noise_slider.value, alt_path=alt_path): # self.cross_img = Image(source=cgan.test_dir + cgan.version + '/test.jpg', size=(640, 640), pos=(0, 120)) self.cross_img.source = cgan.test_dir + cgan.version + '/test.jpg' print(self.cross_img.source) self.cross_img.reload() def back(self, instance): chat_app.screen_manager.current = 'MainMenu' def switch_training(self, instance, value): global is_training is_training = value
def MmsPop(self): layout = GridLayout(cols=1, size_hint=(None, 1.0), width=700) layout.bind(minimum_height=layout.setter('height')) panel = SettingsPanel(title="Mms Mods", settings=self) main = BoxLayout(orientation = 'vertical') root = ScrollView(size_hint=(None, None),bar_margin=-11, bar_color=(47 / 255., 167 / 255., 212 / 255., 1.), do_scroll_x=False) root.size = (600, 400) root.add_widget(layout) main.add_widget(root) done = Button(text ='Done Choosing Options') main.add_widget(done) if """ .line 77 const/4 v0, 0x1 sput-boolean v0, Lcom/android/mms/model/ImageModel;->mCheckResolution:Z""" in open("%s/ImageModel.smali" % (Mms)).read(): fp = open("%s/ImageModel.smali" % (Mms), "r") lines = fp.readlines() fp.close() comp = SettingItem(panel = panel, title = "Remove Mms Compression",disabled=False, desc = "Disables Compression of Mms Messages") for i in range(len(lines)): if """ .line 77 const/4 v0, 0x1 sput-boolean v0, Lcom/android/mms/model/ImageModel;->mCheckResolution:Z""" in open("%s/ImageModel.smali" % (Mms)).read(): comp_switch = Switch(active=False) continue if """ .line 77 const/4 v0, 0x1 sput-boolean v0, Lcom/android/mms/model/ImageModel;->mCheckResolution:Z""" in open("%s/ImageModel.smali" % (Mms)).read(): comp_switch = Switch(active=True) comp.add_widget(comp_switch) layout.add_widget(comp) def callback(instance, value): comp_state(instance, value) comp_switch.bind(active=callback) popup = Popup(background='atlas://images/eds/pop', title='Mms Mods', content=main, auto_dismiss=False, size_hint=(None, None), size=(630, 500)) popup.open() def finish(self): finish_comp(self) popup.dismiss() done.bind(on_release=finish)
def __init__(self, **kwargs): super(Automatic, self).__init__(**kwargs) self.orientation = 'horizontal' self.file = FileChooserIconView() self.add_widget(self.file) self.ip = TextInput(text="IP", multiline=False) self.add_widget(self.ip) self.add_widget(Label(text="aggressive:")) self.aggressive = Switch(active=True) self.add_widget(self.aggressive)
def Optiuni(self, Buton): self.layout0.clear_widgets() # Cream un widget Switch si atributele sale self.switch1 = Switch(text="muzica") self.switch1.active = True self.switch1.size_hint = (0.3, 0.2) self.switch1.pos = (300, 360) self.layout0.add_widget(self.switch1) # leaga Switch-ul de metoda dezactiveaza_volum self.switch1.bind(active=self.dezactiveaza_volum) # cream un widget Label si atributele sale # textul de pe acesta urmand sa se schimbe odata cu volumul self.arata_volum = Label(text="volum: 50") self.arata_volum.size_hint = (0.3, 0.1) self.arata_volum.pos = (300, 260) self.layout0.add_widget(self.arata_volum) # cream un widget Slider si atributele sale # nu am urmat exact indicatiile din cerinta pt. a crea atributele # am incercercat sa fac fereastra sa semene cu poza self.slide_muzica = Slider(min=0, max=100, value=50) self.slide_muzica.step = 5 self.slide_muzica.pos = (300, 100) self.slide_muzica.size_hint = (0.3, 0.5) self.slide_muzica.orientation = "horizontal" self.layout0.add_widget(self.slide_muzica) # leaga Slider-ul de metoda valoare_volum self.slide_muzica.bind(value=self.valoare_volum) # crearea widgetu-lui inapoiButon si atributelor sale self.inapoiButon = Button(text="Inapoi", bold=True, background_color=(0, 0, 1, 1)) self.inapoiButon.pos = (300, 120) self.inapoiButon.size_hint = (0.3, 0.1) self.inapoiButon.opacity = 0.7 self.layout0.add_widget(self.inapoiButon) # legam apasarea butonului de intoarcerea la meniul principal self.inapoiButon.bind(on_press=self.Menu)
def __init__(self, text, color, bold=False, **kwargs): super(SwitchLayout, self).__init__(**kwargs) self.cols = 2 label = Label(text=text, bold=bold) self.add_widget(label) self.add_widget(Switch()) self.bind(size=self.update_rect, pos=self.update_rect) with self.canvas.before: Color(color[0], color[1], color[2], color[3]) self.rect = Rectangle(size=self.size, pos=self.pos)
class RVViewClass(BoxLayout): user_id = NumericProperty(None, allownone=True) estimator_id = NumericProperty(None, allownone=True) db = ObjectProperty(None, allownone=True) def __init__(self, **kwargs): super(RVViewClass, self).__init__(**kwargs) self.label_user_info = Label(text='', bold=True, italic=True) self.add_widget(self.label_user_info) self.label_estimator_info = Label(text='', bold=True, italic=True) self.add_widget(self.label_estimator_info) self.switch_is_accessible = Switch(active=True) self.add_widget(self.switch_is_accessible) self.bind(user_id=self.represent_info) self.bind(estimator_id=self.represent_info) self.bind(db=self.represent_info) self.switch_is_accessible.bind(active=self.switch_is_accessible_bind) def switch_is_accessible_bind(self, *args): user = self.db.get_user_by_id(self.user_id) estimator = self.db.get_estimator_by_id(self.estimator_id) if self.switch_is_accessible.active: if not (estimator in user.estimators): user.estimators.append(estimator) else: if estimator in user.estimators: user.estimators.remove(estimator) def represent_info(self, *args): if self.user_id and self.estimator_id and self.db: user = self.db.get_user_by_id(self.user_id) estimator = self.db.get_estimator_by_id(self.estimator_id) self.label_user_info.text = represent_user_in_rv(user) self.label_estimator_info.text = represent_estimator_in_rv( estimator) self.switch_is_accessible.active = estimator in user.estimators
def settings(self): screen = Screen(name=ROOT + 'Settings') settings_background = Image(source='settings_background.jpg', allow_stretch=True, keep_ratio=False) layout = FloatLayout(size=(500, 500)) layout.add_widget(settings_background) btn_singleplayer = Button(text='Single Player', size_hint=(.15, .08), pos_hint={ 'x': .65, 'y': .45 }) btn_singleplayer.bind(on_press=self.singleplayer) btn_multiplayer = Button(text='Multiplayer', size_hint=(.15, .08), pos_hint={ 'x': .825, 'y': .45 }) btn_multiplayer.bind(on_press=self.multiplayer) label_switch = Label(text='Random Map Generator', size_hint=(.15, .08), pos_hint={ 'x': .5, 'y': .1 }) switch = Switch(active=False, size_hint=(.15, .08), pos_hint={ 'x': .7, 'y': .1 }) switch.bind(active=self.map_setting) layout.add_widget(btn_multiplayer) layout.add_widget(btn_singleplayer) layout.add_widget(label_switch) layout.add_widget(switch) screen.add_widget(layout) return screen
class Switch_implementare(GridLayout): def __init__(self, **kwargs): super(Switch_implementare, self).__init__(**kwargs) global x self.cols = 1 self.padding = 150 self.switch1 = Switch(text="muzica") self.switch1.active =True self.add_widget(self.switch1) self.arata_volum = Label (text = "volum: 50") self.add_widget(self.arata_volum) self.slide_muzica = Slider(min=0, max=100, value=50) self.slide_muzica.step = 5 self.slide_muzica.orientation="horizontal" # alte optiuni 'vertical' self.add_widget(self.slide_muzica) self.switch1.bind(active=self.dezactiveaza_volum) self.slide_muzica.bind(value=self.valoare_volum) self.sound = SoundLoader.load('JO_-_09_-_Fortitude.ogg') self.sound.play() self.sound.loop = True self.sound.volume=0.5 x = self.sound def valoare_volum (self,x,y): '''utiliziat pentru seta volumul''' self.arata_volum.text = "volum: "+str(int(self.slide_muzica.value)) self.sound.volume = self.slide_muzica.value/100 def dezactiveaza_volum (self,x,y): '''utilziat pentru a acctiva sau a dezactiva slider-ul''' if (self.switch1.active == False) : self.slide_muzica.disabled =True self.sound.stop() else: self.slide_muzica.disabled =False self.slide_muzica.value = 0 self.sound.play()
def build(self): self.availablePorts = listSerialPorts() if len(self.availablePorts) == 0: self.availablePorts.append("----") tabbedPannel = TabbedPanel(do_default_tab=False) # Connection Tab self.connectionTab = TabbedPanelItem(text="Connection") self.layout1 = BoxLayout(orientation='vertical', spacing=10, padding=(200, 200)) self.connectionTab.add_widget(self.layout1) self.lblSerialSettings = Label(text="Connection settings") self.layout1.add_widget(self.lblSerialSettings) self.dlBaudrate = Spinner(values = ["57600", "115200", "230400", "460800", "921600"], text = "115200") self.layout1.add_widget(self.dlBaudrate) self.dlPort = Spinner(values = self.availablePorts, text = self.availablePorts[0]) self.layout1.add_widget(self.dlPort) self.btnConnect = Switch() self.btnConnect.bind(active = self.connect) self.layout1.add_widget(self.btnConnect) # Graph tab self.graphTab = TabbedPanelItem(text = "Graph") # self.layout2 = BoxLayout(orientation='vertical', spacing=10, padding=(200, 200)) # self.graphTab.add_widget(self.layout2) graph = Graph(xlabel='X', ylabel='Y', x_ticks_minor=5, x_ticks_major=25, y_ticks_major=1, y_grid_label=True, x_grid_label=True, padding=5, x_grid=True, y_grid=True, xmin=-0, xmax=100, ymin=-1, ymax=1) plot = MeshLinePlot(color=[1, 1, 0, 1]) plot.points = [(x, sin(x / 10.)) for x in range(0, 101)] graph.add_plot(plot) self.graphTab.add_widget(graph) tabbedPannel.add_widget(self.connectionTab) tabbedPannel.add_widget(self.graphTab) return tabbedPannel
def __init__(self, **kwargs): super(Anritsu, self).__init__(kwargs=kwargs) self.is_source_active = False on_off_label = Label(text="Use Source") self.on_off_switch = Switch(active=False) self.on_off_switch.bind(active=self.on_off) on_off_layout = BoxLayout(orientation="horizontal", size_hint=(1, None), size=(1, 40)) on_off_layout.add_widget(on_off_label) on_off_layout.add_widget(self.on_off_switch) init_frec_label = Label(text="Frequency") self.init_frec_value = TextInput(multiline=False) self.init_frec_value.disabled = True self.init_frec_value.text = "0.0" self.init_frec_unit = UnitSpinner(UnitSpinner.hz) amplitud_frec_label = Label(text="Power") self.amplitud_frec_value = TextInput(multiline=False) self.amplitud_frec_value.disabled = True self.amplitud_frec_value.bind(text=self._check_input_number) self.amplitud_frec_unit = UnitSpinner(UnitSpinner.db) buttons_configuration = GridLayout(cols=3, row_force_default=True, row_default_height=40) buttons_configuration.add_widget(init_frec_label) buttons_configuration.add_widget(self.init_frec_value) buttons_configuration.add_widget(self.init_frec_unit) buttons_configuration.add_widget(amplitud_frec_label) buttons_configuration.add_widget(self.amplitud_frec_value) buttons_configuration.add_widget(self.amplitud_frec_unit) main_layout = BoxLayout(orientation="vertical") main_layout.add_widget(on_off_layout) main_layout.add_widget(buttons_configuration) self.add_widget(main_layout)
def __init__(self, **kwargs): super(Switch_implementare, self).__init__(**kwargs) global x self.cols = 1 self.padding = 150 self.switch1 = Switch(text="muzica") self.switch1.active =True self.add_widget(self.switch1) self.arata_volum = Label (text = "volum: 50") self.add_widget(self.arata_volum) self.slide_muzica = Slider(min=0, max=100, value=50) self.slide_muzica.step = 5 self.slide_muzica.orientation="horizontal" # alte optiuni 'vertical' self.add_widget(self.slide_muzica) self.switch1.bind(active=self.dezactiveaza_volum) self.slide_muzica.bind(value=self.valoare_volum) self.sound = SoundLoader.load('JO_-_09_-_Fortitude.ogg') self.sound.play() self.sound.loop = True self.sound.volume=0.5 x = self.sound
class DeviceBox(BoxLayout): nexa_controllers = ['Nexa3ButtonRemote', 'Nexa2ButtonSwitch'] nexa_sensors = ['NexaOpeningSensor', 'NexaMovementSensor'] nexa_devices = ['NexaDevice'] def __init__(self, json_device, *args, **kwargs): super(DeviceBox, self).__init__(*args, **kwargs) self.app = App.get_running_app() print 'building device box' print json_device print '\n' self.maj_id = json_device['id'] self.model = json_device['device_key'] self.name = json_device['name'] self.orientation = 'vertical' self.add_widget(Label(text = self.name, text_size = (self.width-dp(10), 35))) if self.model in self.nexa_controllers: self.switches = [] for switch in json_device['switches']: if switch['state'] != None: state = switch['state'] else: state = False new_switch = Switch(id = switch['id'], active = state, disabled = True) self.switches.append(new_switch) self.add_widget(new_switch) elif self.model in self.nexa_sensors: self.last_activated = Label(text = json_device['last_activated'], size_hint = (None, 1), text_size = (self.width-dp(10), 100), pos_hint = {'center_x': 0.5}) self.add_widget(self.last_activated) elif self.model in self.nexa_devices: self.switch = Switch(id = json_device['id']) self.switch.bind(active = self.user_action) self.add_widget(self.switch) def update(self, json_update): if self.model in self.nexa_controllers: for switch in json_update['switches']: for my_switch in self.switches: if switch['id'] == my_switch.id: if switch['state'] != None: my_switch.active = switch['state'] elif self.model in self.nexa_sensors: self.last_activated.text = json_update['last_activated'] elif self.model in self.nexa_devices: if json_update['state'] != None: self.switch.unbind(active = self.user_action) self.switch.active = json_update['state'] self.switch.bind(active = self.user_action) def user_action(self, instance, value): print 'sending action request' print {'command': 'device_action', 'model': self.model, 'id': instance.id} self.app.send_request(None, {'command': 'device_action', 'model': self.model, 'id': instance.id})
def __init__(self, **kwargs): super(CommonSource, self).__init__(kwargs=kwargs) main_layout = BoxLayout(orientation='vertical') on_off_layout = BoxLayout(orientation='horizontal', size_hint=(1,None), size=(1,40)) sweep_layout = BoxLayout(orientation='horizontal', size_hint=(1,None), size=(1,40)) buttons_configuration = GridLayout(cols=3, row_force_default=True, row_default_height=40) self.is_source_active = False self.do_a_sweep = False on_off_label = Label(text='Use Source') self.on_off_switch = Switch(active=False) self.on_off_switch.bind(active=self.on_off) on_off_layout.add_widget(on_off_label) on_off_layout.add_widget(self.on_off_switch) sweep_label = Label(text='Do Sweep') self.sweep_switch = Switch(active=False) self.sweep_switch.bind(active=self.sweepe_or_not) sweep_layout.add_widget(sweep_label) sweep_layout.add_widget(self.sweep_switch) init_frec_label = Label(text='Initial\nFrequency',) self.init_frec_value = TextInput(multiline=False) self.init_frec_value.disabled = True self.init_frec_value.bind(text=self.update_values) self.init_frec_unit = UnitSpinner(UnitSpinner.hz) final_frec_label = Label(text='Final\nFrequency') self.final_frec_value = TextInput(multiline=False) self.final_frec_value.disabled = True self.final_frec_value.bind(text=self.update_values) self.final_frec_unit = UnitSpinner(UnitSpinner.hz) delta_frec_label = Label(text='Frequency\nStep') self.delta_frec_value = TextInput(multiline=False) self.delta_frec_value.disabled = True self.delta_frec_value.bind(text=self.change_delta_frec) self.delta_frec_unit = UnitSpinner(UnitSpinner.hz) puntos_frec_label = Label(text='Number\nof Points') self.puntos_frec_value = TextInput(multiline=False) self.puntos_frec_value.disabled = True self.puntos_frec_value.bind(text=self.change_points_number) self.puntos_frec_unit = UnitSpinner(UnitSpinner.simple) amplitud_frec_label = Label(text='Power') self.amplitud_frec_value = TextInput(multiline=False) self.amplitud_frec_value.disabled = True self.amplitud_frec_value.bind(text=self._check_input_number) self.amplitud_frec_unit = UnitSpinner(UnitSpinner.db) buttons_configuration.add_widget(init_frec_label) buttons_configuration.add_widget(self.init_frec_value) buttons_configuration.add_widget(self.init_frec_unit) buttons_configuration.add_widget(final_frec_label) buttons_configuration.add_widget(self.final_frec_value) buttons_configuration.add_widget(self.final_frec_unit) buttons_configuration.add_widget(delta_frec_label) buttons_configuration.add_widget(self.delta_frec_value) buttons_configuration.add_widget(self.delta_frec_unit) buttons_configuration.add_widget(puntos_frec_label) buttons_configuration.add_widget(self.puntos_frec_value) buttons_configuration.add_widget(self.puntos_frec_unit) buttons_configuration.add_widget(amplitud_frec_label) buttons_configuration.add_widget(self.amplitud_frec_value) buttons_configuration.add_widget(self.amplitud_frec_unit) main_layout.add_widget(on_off_layout) main_layout.add_widget(sweep_layout) main_layout.add_widget(buttons_configuration) self.add_widget(main_layout) self.manual_change_delta = False self.manual_change_puntos = False self.manual_change_init = False self.manual_change_final = False
class BeamScanner(AbstractSource): def __init__(self, **kwargs): super(BeamScanner, self).__init__(kwargs=kwargs) # activate the beam scanner self.active_state = False self.sweep_state = False sweep_label = Label(text='Do Sweep') self.sweep_switch = Switch(active=False) self.sweep_switch.bind(active=self.sweepe_or_not) sweep_layout = BoxLayout(orientation='horizontal', size_hint=(1,None), size=(1,40)) sweep_layout.add_widget(sweep_label) sweep_layout.add_widget(self.sweep_switch) # this is the controll to move the beam scanner self.set_center = Button(text='Set Center', size_hint=(1, None), size=(1, 30)) self.set_center.bind(on_press=self.set_zero_xy) self.move_up = Button(text='/\\', size_hint=(0.33, None), size=(1, 30)) self.move_up.bind(on_press=self.move_up_beam) move_up_padding_l = Label(size_hint=(0.33, None), size=(1, 30)) move_up_padding_r = Label(size_hint=(0.33, None), size=(1, 30)) self.move_left = Button(text='<', size_hint=(0.33, None), size=(1, 30)) self.move_left.bind(on_press=self.move_left_beam) self.move_rigth = Button(text='>', size_hint=(0.33, None), size=(1, 30)) self.move_rigth.bind(on_press=self.move_rigth_beam) self.step_size = TextInput(size_hint=(0.33, None), size=(1, 30), multiline=False) self.step_size.text = '0.0' self.move_down = Button(text='\\/', size_hint=(0.33, None), size=(1, 30)) self.move_down.bind(on_press=self.move_down_beam) move_down_padding_l = Label(size_hint=(0.33, None), size=(1, 30)) move_down_padding_r = Label(size_hint=(0.33, None), size=(1, 30)) move_top = BoxLayout(orientation='horizontal', size_hint=(1, None), size=(1, 30)) move_top.add_widget(move_up_padding_l) move_top.add_widget(self.move_up) move_top.add_widget(move_up_padding_r) move_middle = BoxLayout(orientation='horizontal', size_hint=(1, None), size=(1, 30)) move_middle.add_widget(self.move_left) move_middle.add_widget(self.step_size) move_middle.add_widget(self.move_rigth) move_bottom = BoxLayout(orientation='horizontal', size_hint=(1, None), size=(1, 30)) move_bottom.add_widget(move_down_padding_l) move_bottom.add_widget(self.move_down) move_bottom.add_widget(move_down_padding_r) move_xy_layes = BoxLayout(orientation='vertical', size_hint=(1, None), size=(1, 120)) move_xy_layes.add_widget(self.set_center) move_xy_layes.add_widget(move_top) move_xy_layes.add_widget(move_middle) move_xy_layes.add_widget(move_bottom) # this is the controll to rotate the beam scanner self.set_origin = Button(text='Set Zero', size_hint=(0.33, None), size=(1, 30)) self.set_origin.bind(on_press=self.set_zero_ang) self.do_rotation = Button(text='Rotate to:', size_hint=(0.33, None), size=(1, 30)) self.do_rotation.bind(on_press=self.rotate) self.destination_angle = TextInput(size_hint=(0.33, None), size=(1, 30), multiline=False) self.destination_angle.text = '0.0' rotation_layou = BoxLayout(orientation='horizontal', size_hint=(1, None), size=(1, 30)) rotation_layou.add_widget(self.set_origin) rotation_layou.add_widget(self.do_rotation) rotation_layou.add_widget(self.destination_angle) # rotation speed speed_rotation = Label(text='Angular Speed', size_hint=(1, None), size=(1, 30)) self.speed_rotation_value = TextInput(size_hint=(1, None), size=(1, 30)) self.speed_rotation_value.text = '10.0' rotation_speed = BoxLayout(orientaion='horizontal', size_hint=(1, None), size=(1, 30)) rotation_speed.add_widget(speed_rotation) rotation_speed.add_widget(self.speed_rotation_value) # check the plane movility size_of_plane_label = Label(text='Plane size [mm]', size=(1, 30)) self.size_of_plane_val = TextInput(size=(1, 30), multiline=False) self.size_of_plane_val.text = '0.0' self.size_of_plane_val.bind(focus=self.set_number_of_points) plane_size = BoxLayout(orientaion='horizontal', size_hint=(1, None), size=(1, 30)) plane_size.add_widget(size_of_plane_label) plane_size.add_widget(self.size_of_plane_val) # configuration # frecuency frec_label = Label(text='Set Lambda [mm]: ', size_hint=(1, None), size=(1, 30)) self.frec_value = TextInput(size_hint=(1, None), size=(1, 30), multiline=False) self.frec_value.text = '0.0' self.frec_value.bind(focus=self.set_number_of_points) frec_step = Label(text='Step factor: ', size_hint=(1, None), size=(1, 30)) self.frec_step_value = TextInput(size_hint=(1, None), size=(1, 30), multiline=False) self.frec_step_value.text = '0.45' self.frec_step_value.bind(focus=self.set_number_of_points) frec_layout_val = BoxLayout(orientation='horizontal', size_hint=(1, None), size=(1, 30)) frec_layout_val.add_widget(frec_label) frec_layout_val.add_widget(self.frec_value) frec_layout_step = BoxLayout(orientation='horizontal', size_hint=(1, None), size=(1, 30)) frec_layout_step.add_widget(frec_step) frec_layout_step.add_widget(self.frec_step_value) frec_layout = BoxLayout(orientation='vertical', size_hint=(1, None), size=(1, 60)) frec_layout.add_widget(frec_layout_val) frec_layout.add_widget(frec_layout_step) # display step step_label = Label(text='Number of Points: ') self.step_val = Label(text='0') display_step = BoxLayout(orientation='horizontal', size_hint=(1, None), size=(1, 30)) display_step.add_widget(step_label) display_step.add_widget(self.step_val) # fast sweep enable self.fast_sweepp = ToggleButton(text='fast sweep', size_hint=(1,None), size=(1,30)) # goto configuration goto_label = Label(text='Go to Position') self.goto_switch = Switch(active=False) self.goto_switch.bind(active=self.goto_or_not) x_dest = Label(text = 'x position [mm]') y_dest = Label(text = 'y position [mm]') theta_dest = Label(text = 'angle [Degree]') self.x_dest_val = TextInput(size_hint=(0.33, None), size=(1, 30), multiline=False) self.x_dest_val.text = '0.0' self.y_dest_val = TextInput(size_hint=(0.33, None), size=(1, 30), multiline=False) self.y_dest_val.text = '0.0' self.theta_dest_val = TextInput(size_hint=(0.33, None), size=(1, 30), multiline=False) self.theta_dest_val.text = '0.0' goto_layout = BoxLayout(orientation='horizontal', size_hint=(1, None), size=(1, 30)) goto_layout.add_widget(goto_label) goto_layout.add_widget(self.goto_switch) goto_layout_x = BoxLayout(orientation='horizontal', size_hint=(1, None), size=(1, 30)) goto_layout_x.add_widget(x_dest) goto_layout_x.add_widget(self.x_dest_val) goto_layout_y = BoxLayout(orientation='horizontal', size_hint=(1, None), size=(1, 30)) goto_layout_y.add_widget(y_dest) goto_layout_y.add_widget(self.y_dest_val) goto_layout_theta = BoxLayout(orientation='horizontal', size_hint=(1, None), size=(1, 30)) goto_layout_theta.add_widget(theta_dest) goto_layout_theta.add_widget(self.theta_dest_val) goto_switch = BoxLayout(orientation='vertical', size_hint=(1, None), size=(1, 120)) goto_switch.add_widget(goto_layout) goto_switch.add_widget(goto_layout_x) goto_switch.add_widget(goto_layout_y) goto_switch.add_widget(goto_layout_theta) # big container configuration paddind = BoxLayout(size_hint=(1, 1), size=(1, 1000)) self.big_one = BoxLayout(orientation='vertical') self.big_one.add_widget(sweep_layout) self.big_one.add_widget(move_xy_layes) self.big_one.add_widget(rotation_layou) self.big_one.add_widget(rotation_speed) self.big_one.add_widget(plane_size) self.big_one.add_widget(frec_layout) self.big_one.add_widget(display_step) self.big_one.add_widget(self.fast_sweepp) self.big_one.add_widget(goto_switch) self.big_one.add_widget(paddind) self.add_widget(self.big_one) # attributes that lets you connect to beam scanner self.ip_beam = '192.168.1.62' self.ip_port = 9988 self.move_xy = MoveXY(self.ip_beam, self.ip_port) self.move_ang = Rotate(self.ip_beam, self.ip_port) # disconnect thread configuration self.monitor = threading.Event() self.disconnect = True self.launch_thread = False def sweepe_or_not(self, instance, value): if value: self.sweep_state = value self.goto_switch.active = False self.active_state = value def goto_or_not(self, instance, value): if value: self.sweep_state = False self.sweep_switch.active = False self.active_state = value def is_active(self): return self.active_state def do_sweep(self): return self.sweep_state # connecto to configure and move around def start_connection(self): self.disconnect = False if not self.launch_thread: try: self.move_xy.start_connection() self.move_ang.start_connection() threading.Thread(target=self.close_connection_timer).start() self.launch_thread = True try: self.move_ang.set_hspd(float(self.speed_rotation_value.text)) except: pass return True except socket.error as e: Popup(title='Error BeamScanner', content=Label(text=e.message), size_hint=(None, None), size=(200, 200)).open() return False return True def stop_connection(self): self.move_xy.close_connection() self.move_ang.close_connection() # movement of the beam scanner def move_left_beam(self, instance): if self.start_connection(): try: if not self.move_xy.move_relative(float(self.step_size.text), 0): self.stop_connection() self.disconnect = True except Exception as e: self.stop_connection() def move_rigth_beam(self, instance): if self.start_connection(): try: if not self.move_xy.move_relative(-float(self.step_size.text), 0): self.stop_connection() self.disconnect = True except Exception: self.stop_connection() def move_up_beam(self, instance): if self.start_connection(): try: if not self.move_xy.move_relative(0, -float(self.step_size.text)): self.stop_connection() self.disconnect = True except Exception as e: self.stop_connection() def move_down_beam(self, instance): if self.start_connection(): try: if not self.move_xy.move_relative(0, float(self.step_size.text)): self.stop_connection() self.disconnect = True except Exception as e: self.stop_connection() def rotate(self, instance): if self.start_connection(): try: if not self.move_ang.move_absolute(float(self.destination_angle.text)): self.stop_connection() self.disconnect = True except Exception: self.stop_connection() def set_zero_xy(self, instance): if self.start_connection(): try: if not self.move_xy.set_origin(): self.stop_connection() self.disconnect = True except Exception: self.stop_connection() def set_zero_ang(self, instance): if self.start_connection(): try: if not self.move_ang.set_origin(): self.stop_connection() self.disconnect = True except Exception: self.stop_connection() def set_number_of_points(self, instance, value): try: lambda_ = float(self.frec_value.text) factor = float(self.frec_step_value.text) if lambda_*factor > 0: size = float(self.size_of_plane_val.text) points = int(0.5 + size/(lambda_*factor)) + 1 self.step_val.text = str(points*points) except: pass # thead de apagado def close_connection_timer(self): print 'close function initiated' while 1: if self.disconnect: print 'closing function' self.stop_connection() break self.disconnect = True self.monitor.wait(15) self.launch_thread = False def get_source_config(self): return_dic = {} try : if self.sweep_state: return_dic['size'] = float(self.size_of_plane_val.text) return_dic['frec_number_point'] = (int(self.step_val.text)) return_dic['angle_to_measure'] = float(self.destination_angle.text) return_dic['instance'] = BeamScannerController return_dic['angle_speed'] = float(self.speed_rotation_value.text) return_dic['name'] = self.get_my_name() return_dic['fast'] = self.fast_sweepp.state != 'normal' if return_dic['fast']: return_dic['total_points'] = sqrt(int(self.step_val.text))*2 return_dic['frec_number_point'] = sqrt(int(self.step_val.text))*2 else: return_dic['total_points'] = int(self.step_val.text) return_dic['frec_number_point'] = int(self.step_val.text) else: return_dic['angle_speed'] = float(self.speed_rotation_value.text) return_dic['name'] = self.get_my_name() return_dic['instance'] = BeamScannerControllerTone return_dic['x'] = float(self.x_dest_val.text) return_dic['y'] = float(self.y_dest_val.text) return_dic['theta'] = float(self.theta_dest_val.text) except: raise Exception('Please Enter Numbers only') return return_dic def get_my_name(self): return 'BeamScanner' def save_config_dictionary(self): dic_return = {} dic_return['on_off'] = self.active_state dic_return['sweep'] = self.sweep_state dic_return['size'] = self.size_of_plane_val.text dic_return['total_points'] = self.step_val.text dic_return['angle_to_measure'] = self.destination_angle.text dic_return['angle_speed'] = self.speed_rotation_value.text dic_return['x'] = float(self.x_dest_val.text) dic_return['y'] = float(self.y_dest_val.text) dic_return['theta'] = float(self.theta_dest_val.text) dic_return['lambda'] = self.frec_value.text dic_return['step_factor'] = self.step_size.text return {self.get_my_name():dic_return} def set_configuration(self, config_dictionary): if self.get_my_name() in config_dictionary: config_dictionary_ = config_dictionary[self.get_my_name()] self.active_state = config_dictionary_['on_off'] self.sweep_state = config_dictionary_['sweep'] self.size_of_plane_val.text = config_dictionary_['size'] self.step_val.text = config_dictionary_['total_points'] self.destination_angle.text = config_dictionary_['angle_to_measure'] self.speed_rotation_value.text = config_dictionary_['angle_speed'] self.x_dest_val.text = str(config_dictionary_['x']) self.y_dest_val.text = str(config_dictionary_['y']) self.theta_dest_val.text = str(config_dictionary_['theta']) self.frec_value.text = config_dictionary_['lambda'] self.step_size.text = config_dictionary_['step_factor'] if self.active_state: if self.sweep_state: self.sweep_switch.active = True else: self.goto_switch.active = True else: self.sweep_switch.active = False self.goto_switch.active = False else: self.sweep_switch.active = False self.goto_switch.active = False
class Screen(FloatLayout): def build(self): self.object1 = BoxLayout() return self.object1 def __init__(self, **kwargs): super(Screen, self).__init__(**kwargs) #Fundal image with self.canvas.before: self.fundal_image = Image(source = "E:/PROGRAMMIN/Curs/Pentru examen/fisiere proiect/fundal.jpg") self.fundal_image.opacity = 0.7 self.add_widget(self.fundal_image) self.rect = Rectangle(size = self.size, pos = self.pos) self.bind(size = self._update_rect, pos = self._update_rect) self.layout = FloatLayout() self.layout.size_hint = (None, None) self.layout.size = (600, 500) self.layout.padding = 20 self.fundal_image.add_widget(self.layout) self.sound = SoundLoader.load("E:/PROGRAMMIN/Curs/Pentru examen/fisiere proiect/JO_-_09_-_Fortitude.ogg") self.sound.play() self.sound.loop = True self.sound.volume = 0.5 self.Menu(None) def Menu(self, buton): self.layout.clear_widgets() self.button1 = Button(text = 'Carousel', bold = True, background_color =(0, 0, 1, 1)) self.button1.pos = (290, 380) self.button1.size_hint = (0.3, 0.1) self.layout.add_widget(self.button1) self.button2 = Button(text = 'Optiuni', bold = True, background_color =(0, 0, 1, 1)) self.button2.pos = (290, 280) self.button2.size_hint = (0.3, 0.1) self.layout.add_widget(self.button2) self.button3 = Button(text = 'About', bold = True, background_color =(0, 0, 1, 1)) self.button3.pos = (290, 180) self.button3.size_hint = (0.3, 0.1) self.layout.add_widget(self.button3) self.button4 = Button(text = 'Iesi', bold = True, background_color =(0, 0, 1, 1)) self.button4.pos = (290, 80) self.button4.size_hint = (0.3, 0.1) self.layout.add_widget(self.button4) self.button1.bind(on_press = self.Carousel) self.button2.bind(on_press = self.Options) self.button3.bind(on_press = self.About) self.button4.bind(on_press = self.Exit) def Carousel(self, buton): self.layout.clear_widgets() self.carousel = Carousel(direction = 'right') self.carousel.anim_move_duration = 1 self.carousel.loop = True self.carousel.size_hint = (0.7, 0.7) self.carousel.pos = (200, 120) self.layout.add_widget(self.carousel) self.image1 = Image(source = 'E:/PROGRAMMIN/Curs/Pentru examen/fisiere proiect/nature1.jpg') self.carousel.add_widget(self.image1) self.image2 = Image(source= 'E:/PROGRAMMIN/Curs/Pentru examen/fisiere proiect/nature2.jpg') self.carousel.add_widget(self.image2) self.image3 = Image(source = 'E:/PROGRAMMIN/Curs/Pentru examen/fisiere proiect/nature3.jpg') self.carousel.add_widget(self.image3) self.image4 = Image(source = 'E:/PROGRAMMIN/Curs/Pentru examen/fisiere proiect/nature4.jpg') self.carousel.add_widget(self.image4) self.label = Label(text = 'This is the end of the list!', font_size = 30) self.carousel.add_widget(self.label) self.backbutton = Button(text = 'Back', bold = True, background_color = (0, 0, 1, 1)) self.backbutton.pos = (200, 100) self.backbutton.size_hint = (0.7, 0.1) self.layout.add_widget(self.backbutton) self.backbutton.bind(on_press = self.Menu) def Options(self, buton): self.layout.clear_widgets() self.switch = Switch(text = 'Music') self.switch.active = True self.switch.size_hint = (0.3, 0.2) self.switch.pos = (300, 360) self.layout.add_widget(self.switch) self.show_volume = Label(text = 'Volume = 50') self.layout.add_widget(self.show_volume) self.music_slide = Slider(min = 0, max = 100, value = 50) self.music_slide.step = 5 self.music_slide.size_hint = (0.3, 0.1) self.music_slide.pos = (300, 180) self.music_slide.orientation = 'horizontal' self.layout.add_widget(self.music_slide) self.button = Button(text = 'Back', bold = True, background_color = (0, 0, 1, 1)) self.button.pos = (300, 120) self.button.size_hint = (0.3, 0.1) self.button.opacity = 0.7 self.layout.add_widget(self.button) self.switch.bind(active = self.mute) self.music_slide.bind(value = self.volume_value) self.button.bind(on_press = self.Menu) def volume_value(self,x,y): self.show_volume.text = 'Volume ' + str(int(self.music_slide.value)) self.sound.volume = self.music_slide.value / 100 def mute(self,x,y): if (self.switch.active == False): self.music_slide.disabled = True self.sound.stop() else: self.music_slide.disabled = False self.music_slide.value = 0 self.sound.play() def About(self, buton): self.layout.clear_widgets() self.backbutton = Button(text = 'Back', background_color = (0, 0, 1, 1)) self.backbutton.size_hint = (1, 0.1) self.label = Label(text = 'Thanks InfoAcademy!', bold = True, font_size = 24) self.blayout = BoxLayout() self.blayout.orientation = 'vertical' self.blayout.padding = 40 self.blayout.add_widget(self.backbutton) self.blayout.add_widget(self.label) self.backbutton.bind(on_press = self.Menu) self.popup = Popup(background = 'E:/PROGRAMMIN/Curs/Pentru examen/fisiere proiect/fundal4_tema.jpg') self.popup.size_hint =(None, None) self.popup.size = (400, 400) self.popup.title = 'Who made this aplication?' self.popup.content = self.blayout self.popup.open() self.popup.bind(on_press = self.close_popup) self.backbutton.bind(on_press = self.close_popup) def close_popup(self, buton): self.popup.dismiss() def Exit(self, buton): sys.exit() def _update_rect(self, instance, value): self.rect.pos = instance.pos self.rect.size = instance.size
def build(self): self.root = Switch() self.service = AndroidService('Kivy FlashLight', 'I haz a FlashLight!') self.root.bind(active=self.toggle_flash) return self.root
class CommonSource(AbstractSource): def __init__(self, **kwargs): super(CommonSource, self).__init__(kwargs=kwargs) main_layout = BoxLayout(orientation='vertical') on_off_layout = BoxLayout(orientation='horizontal', size_hint=(1,None), size=(1,40)) sweep_layout = BoxLayout(orientation='horizontal', size_hint=(1,None), size=(1,40)) buttons_configuration = GridLayout(cols=3, row_force_default=True, row_default_height=40) self.is_source_active = False self.do_a_sweep = False on_off_label = Label(text='Use Source') self.on_off_switch = Switch(active=False) self.on_off_switch.bind(active=self.on_off) on_off_layout.add_widget(on_off_label) on_off_layout.add_widget(self.on_off_switch) sweep_label = Label(text='Do Sweep') self.sweep_switch = Switch(active=False) self.sweep_switch.bind(active=self.sweepe_or_not) sweep_layout.add_widget(sweep_label) sweep_layout.add_widget(self.sweep_switch) init_frec_label = Label(text='Initial\nFrequency',) self.init_frec_value = TextInput(multiline=False) self.init_frec_value.disabled = True self.init_frec_value.bind(text=self.update_values) self.init_frec_unit = UnitSpinner(UnitSpinner.hz) final_frec_label = Label(text='Final\nFrequency') self.final_frec_value = TextInput(multiline=False) self.final_frec_value.disabled = True self.final_frec_value.bind(text=self.update_values) self.final_frec_unit = UnitSpinner(UnitSpinner.hz) delta_frec_label = Label(text='Frequency\nStep') self.delta_frec_value = TextInput(multiline=False) self.delta_frec_value.disabled = True self.delta_frec_value.bind(text=self.change_delta_frec) self.delta_frec_unit = UnitSpinner(UnitSpinner.hz) puntos_frec_label = Label(text='Number\nof Points') self.puntos_frec_value = TextInput(multiline=False) self.puntos_frec_value.disabled = True self.puntos_frec_value.bind(text=self.change_points_number) self.puntos_frec_unit = UnitSpinner(UnitSpinner.simple) amplitud_frec_label = Label(text='Power') self.amplitud_frec_value = TextInput(multiline=False) self.amplitud_frec_value.disabled = True self.amplitud_frec_value.bind(text=self._check_input_number) self.amplitud_frec_unit = UnitSpinner(UnitSpinner.db) buttons_configuration.add_widget(init_frec_label) buttons_configuration.add_widget(self.init_frec_value) buttons_configuration.add_widget(self.init_frec_unit) buttons_configuration.add_widget(final_frec_label) buttons_configuration.add_widget(self.final_frec_value) buttons_configuration.add_widget(self.final_frec_unit) buttons_configuration.add_widget(delta_frec_label) buttons_configuration.add_widget(self.delta_frec_value) buttons_configuration.add_widget(self.delta_frec_unit) buttons_configuration.add_widget(puntos_frec_label) buttons_configuration.add_widget(self.puntos_frec_value) buttons_configuration.add_widget(self.puntos_frec_unit) buttons_configuration.add_widget(amplitud_frec_label) buttons_configuration.add_widget(self.amplitud_frec_value) buttons_configuration.add_widget(self.amplitud_frec_unit) main_layout.add_widget(on_off_layout) main_layout.add_widget(sweep_layout) main_layout.add_widget(buttons_configuration) self.add_widget(main_layout) self.manual_change_delta = False self.manual_change_puntos = False self.manual_change_init = False self.manual_change_final = False def get_my_name(self): pass def get_my_ip(self): pass def get_my_port(self): pass def sweepe_or_not(self, spinner, text): self.do_a_sweep = text self.final_frec_value.disabled = not (text and self.is_source_active) self.delta_frec_value.disabled = not (text and self.is_source_active) self.puntos_frec_value.disabled = not (text and self.is_source_active) def on_off(self, spinner, text): self.is_source_active = text self.final_frec_value.disabled = not (text and self.do_a_sweep) self.delta_frec_value.disabled = not (text and self.do_a_sweep) self.puntos_frec_value.disabled = not (text and self.do_a_sweep) self.init_frec_value.disabled = not text self.amplitud_frec_value.disabled = not text def _check_input_number(self,instance, value): try: if len(value) > 0: float(value) except ValueError: if not value == '-': instance.text = value[0:-1] popup = Popup(title='Error', content=Label(text='Mal valor,\nsolo numeros'),\ size_hint=(None, None), size=(120, 100)) popup.open() def update_values(self, instance, value): self._check_input_number(instance, value) def change_delta_frec(self, instance, value): self._check_input_number(instance, value) print 'frec' if self.manual_change_delta: self.manual_change_delta = False return frec_init = self.init_frec_value._get_text() frec_final = self.final_frec_value._get_text() if len(frec_init) < 1 or len(frec_final) < 1: return frec_init = float(frec_init)*self.init_frec_unit.get_unit_norm() frec_final = float(frec_final)*self.final_frec_unit.get_unit_norm() delta = float(self.delta_frec_value.text)*self.delta_frec_unit.get_unit_norm() npoints = int((delta + frec_final - frec_init)/delta) + 1 power10 = 1 while npoints >= 1000 or npoints < 1: if npoints >= 1000: power10 *= 10**3 npoints *= 10**-3 elif npoints < 1: power10 *=10**-3 npoints *= 10**3 self.manual_change_puntos = True self.puntos_frec_value.text = str(npoints) self.puntos_frec_unit.set_unit(power10) print 'end' def change_points_number(self, instance, value): self._check_input_number(instance, value) if self.manual_change_puntos: self.manual_change_puntos = False return frec_init = self.init_frec_value._get_text() frec_final = self.final_frec_value._get_text() if len(frec_init) < 1 or len(frec_final) < 1: return frec_init = float(frec_init)*self.init_frec_unit.get_unit_norm() frec_final = float(frec_final)*self.final_frec_unit.get_unit_norm() if frec_init > frec_final: return npoint = float(self.puntos_frec_value.text)*self.puntos_frec_unit.get_unit_norm() if npoint < 2: return delta = (frec_final - frec_init)/(npoint - 1) power10 = 1 while delta >= 1000 or delta < 1: if delta >= 1000: power10 *= 10**3 delta *= 10**-3 elif delta < 1: power10 *=10**-3 delta *= 10**3 self.manual_change_delta = True self.delta_frec_unit.set_unit(power10) self.delta_frec_value.text = str(delta) print 'end pp' def is_active(self): return self.is_source_active def do_sweep(self): return self.do_a_sweep def get_source_config(self): data_dic = {} data_dic['ip'] = self.get_my_ip() data_dic['port'] = self.get_my_port() data_dic['power'] = self.amplitud_frec_value._get_text() if self.do_a_sweep: data_dic['frec_init'] = float(self.init_frec_value._get_text())*self.init_frec_unit.get_unit_norm() data_dic['frec_end'] = float(self.final_frec_value._get_text())*self.final_frec_unit.get_unit_norm() data_dic['frec_number_point'] = int(self.puntos_frec_value._get_text())*self.puntos_frec_unit.get_unit_norm() data_dic['instance'] = SourceThread else: data_dic['frec'] = float(self.init_frec_value._get_text())*self.init_frec_unit.get_unit_norm() data_dic['instance'] = ToneDCSource data_dic['name'] = self.get_my_name() return data_dic def save_config_dictionary(self): data_dic = {} data_dic['use_source'] = self.is_source_active data_dic['sweep'] = self.do_a_sweep data_dic['ip'] = self.get_my_ip() data_dic['port'] = self.get_my_port() data_dic['power'] = self.amplitud_frec_value._get_text() data_dic['frec_init'] = self.init_frec_value._get_text() data_dic['frec_init_unit'] = self.init_frec_unit.get_unit() data_dic['frec_end'] = self.final_frec_value._get_text() data_dic['frec_end_unit'] = self.final_frec_unit.get_unit() data_dic['frec_number_point'] = self.puntos_frec_value._get_text() data_dic['frec_numer_points_unit'] = self.puntos_frec_unit.get_unit() return {self.get_my_name():data_dic} def set_configuration(self, config_dictionary): if self.get_my_name() in config_dictionary: config_dictionary_ = config_dictionary[self.get_my_name()] self.is_source_active = config_dictionary_['use_source'] self.on_off_switch.active = self.is_source_active self.do_a_sweep = config_dictionary_['sweep'] self.sweep_switch.active = self.do_a_sweep self.amplitud_frec_value.text = config_dictionary_['power'] self.init_frec_value.text = config_dictionary_['frec_init'] self.init_frec_unit.text = config_dictionary_['frec_init_unit'] self.final_frec_value.text = config_dictionary_['frec_end'] self.final_frec_unit.text = config_dictionary_['frec_end_unit'] self.puntos_frec_value.text = config_dictionary_['frec_number_point'] self.puntos_frec_unit.text = config_dictionary_['frec_numer_points_unit']
def __init__(self, **kwargs): ''' Init main class ui ''' super(MainBox, self).__init__(**kwargs) self.f_size = '15sp' # Shape Widget self.shape = Shape(size_hint=(0.7, 1)) self.add_widget(self.shape) # Right Menu self.panel = TabbedPanel(size_hint=(0.3, 1), do_default_tab=False) self.tab_param = TabbedPanelItem(text='Parameters') self.tab_color = TabbedPanelItem(text='Shape') self.tab_color_bg = TabbedPanelItem(text='Background') self.tab_export = TabbedPanelItem(text='Export') self.panel.add_widget(self.tab_param) self.panel.add_widget(self.tab_color) self.panel.add_widget(self.tab_color_bg) self.panel.add_widget(self.tab_export) self.menu_right = RightMenu( padding=15, orientation="vertical") # Switch mode line self.box_switch = BoxLayout(orientation='horizontal') self.mode_label = Label( text="Line mode", font_size=self.f_size, markup=True) self.box_switch.add_widget(self.mode_label) self.switch_mode = Switch(active=False) self.switch_mode.bind(active=self.on_switch) self.box_switch.add_widget(self.switch_mode) self.menu_right.add_widget(self.box_switch) # Size value self.box_size = BoxLayout(orientation='horizontal') self.size_label = Label( text="Shape size", font_size=self.f_size, markup=True) self.size_label_value = Label( text=str(self.shape.shape_size), font_size=self.f_size, markup=True) self.box_size.add_widget(self.size_label) self.box_size.add_widget(self.size_label_value) self.slider_shape_size = Slider( min=self.shape.property('shape_size').get_min(self.shape), max=self.shape.property('shape_size').get_max(self.shape), value=self.shape.shape_size, step=1) self.slider_shape_size.bind(value=self.change_shape_size) self.menu_right.add_widget(self.box_size) self.menu_right.add_widget(self.slider_shape_size) # Width point or line self.box_stroke = BoxLayout(orientation='horizontal') self.wdth_label = Label( text="Stroke width", font_size=self.f_size, markup=True) self.wdth_label_value = Label( text=str(self.shape.wdth), font_size=self.f_size, markup=True) self.box_stroke.add_widget(self.wdth_label) self.box_stroke.add_widget(self.wdth_label_value) self.slider_wdth = Slider( min=self.shape.property('wdth').get_min(self.shape), max=self.shape.property('wdth').get_max(self.shape), value=self.shape.wdth, step=1) self.slider_wdth.bind(value=self.change_wdth) self.menu_right.add_widget(self.box_stroke) self.menu_right.add_widget(self.slider_wdth) # a value self.box_a = BoxLayout(orientation='horizontal') self.a_label = Label( text="Param a ", font_size=self.f_size, markup=True) self.a_label_value = Label( text=str(self.shape.a), font_size=self.f_size, markup=True) self.box_a.add_widget(self.a_label) self.box_a.add_widget(self.a_label_value) self.slider_a = Slider( min=self.shape.property('a').get_min(self.shape), max=self.shape.property('a').get_max(self.shape), value=self.shape.a) self.slider_a.bind(value=self.change_a) self.menu_right.add_widget(self.box_a) self.menu_right.add_widget(self.slider_a) # b value self.box_b = BoxLayout(orientation='horizontal') self.b_label = Label( text="Param b ", font_size=self.f_size, markup=True) self.b_label_value = Label( text=str(self.shape.b), font_size=self.f_size, markup=True) self.box_b.add_widget(self.b_label) self.box_b.add_widget(self.b_label_value) self.slider_b = Slider( min=self.shape.property('b').get_min(self.shape), max=self.shape.property('b').get_max(self.shape), value=self.shape.b) self.slider_b.bind(value=self.change_b) self.menu_right.add_widget(self.box_b) self.menu_right.add_widget(self.slider_b) # m value self.box_m = BoxLayout(orientation='horizontal') self.m_label = Label( text="Param m ", font_size=self.f_size, markup=True) self.m_label_value = Label( text=str(self.shape.m), font_size=self.f_size, markup=True) self.box_m.add_widget(self.m_label) self.box_m.add_widget(self.m_label_value) self.slider_m = Slider( min=self.shape.property('m').get_min(self.shape), max=self.shape.property('m').get_max(self.shape), value=self.shape.m) self.slider_m.bind(value=self.change_m) self.menu_right.add_widget(self.box_m) self.menu_right.add_widget(self.slider_m) # n1 value self.box_n1 = BoxLayout(orientation='horizontal') self.n1_label = Label( text="Param n1 ", font_size=self.f_size, markup=True) self.n1_label_value = Label( text=str(self.shape.n1), font_size=self.f_size, markup=True) self.box_n1.add_widget(self.n1_label) self.box_n1.add_widget(self.n1_label_value) self.slider_n1 = Slider( min=self.shape.property('n1').get_min(self.shape), max=self.shape.property('n1').get_max(self.shape), value=self.shape.n1) self.slider_n1.bind(value=self.change_n1) self.menu_right.add_widget(self.box_n1) self.menu_right.add_widget(self.slider_n1) # n2 value self.box_n2 = BoxLayout(orientation='horizontal') self.n2_label = Label( text="Param n2 ", font_size=self.f_size, markup=True) self.n2_label_value = Label( text=str(self.shape.n2), font_size=self.f_size, markup=True) self.box_n2.add_widget(self.n2_label) self.box_n2.add_widget(self.n2_label_value) self.slider_n2 = Slider( min=self.shape.property('n2').get_min(self.shape), max=self.shape.property('n2').get_max(self.shape), value=self.shape.n2) self.slider_n2.bind(value=self.change_n2) self.menu_right.add_widget(self.box_n2) self.menu_right.add_widget(self.slider_n2) # n3 value self.box_n3 = BoxLayout(orientation='horizontal') self.n3_label = Label( text="Param n3 ", font_size=self.f_size, markup=True) self.n3_label_value = Label( text=str(self.shape.n3), font_size=self.f_size, markup=True) self.box_n3.add_widget(self.n3_label) self.box_n3.add_widget(self.n3_label_value) self.slider_n3 = Slider( min=self.shape.property('n3').get_min(self.shape), max=self.shape.property('n3').get_max(self.shape), value=self.shape.n3) self.slider_n3.bind(value=self.change_n3) self.menu_right.add_widget(self.box_n3) self.menu_right.add_widget(self.slider_n3) # Nb points self.box_nbp = BoxLayout(orientation='horizontal') self.nbp_label = Label( text="Points number ", font_size=self.f_size, markup=True) self.nbp_label_value = Label( text=str(self.shape.nbp), font_size=self.f_size, markup=True) self.box_nbp.add_widget(self.nbp_label) self.box_nbp.add_widget(self.nbp_label_value) self.slider_nbp = Slider( min=self.shape.property('nbp').get_min(self.shape), max=self.shape.property('nbp').get_max(self.shape), value=self.shape.nbp, step=2) self.slider_nbp.bind(value=self.change_nbp) self.menu_right.add_widget(self.box_nbp) self.menu_right.add_widget(self.slider_nbp) # Percent self.box_percent = BoxLayout(orientation='horizontal') self.percent_label = Label( text="Percent ", font_size=self.f_size, markup=True) self.percent_label_value = Label( text=str(self.shape.percent), font_size=self.f_size, markup=True) self.box_percent.add_widget(self.percent_label) self.box_percent.add_widget(self.percent_label_value) self.slider_percent = Slider( min=self.shape.property('percent').get_min(self.shape), max=self.shape.property('percent').get_max(self.shape), value=self.shape.percent, step=1) self.slider_percent.bind(value=self.change_percent) self.menu_right.add_widget(self.box_percent) self.menu_right.add_widget(self.slider_percent) # Travel self.box_travel = BoxLayout(orientation='horizontal') self.travel_label = Label( text="Travel ", font_size=self.f_size, markup=True) self.travel_label_value = Label( text=str(self.shape.travel), font_size=self.f_size, markup=True) self.box_travel.add_widget(self.travel_label) self.box_travel.add_widget(self.travel_label_value) self.slider_travel = Slider( min=self.shape.property('travel').get_min(self.shape), max=self.shape.property('travel').get_max(self.shape), value=self.shape.travel, step=2) self.slider_travel.bind(value=self.change_travel) self.menu_right.add_widget(self.box_travel) self.menu_right.add_widget(self.slider_travel) # ColorPicker for Shape self.picker = ColorPicker() self.picker.bind(color=self.on_color) # ColorPicker for background self.picker_bg = ColorPicker() self.picker_bg.bind(color=self.on_color_bg) # Export svg button self.export_button = Button(text='Export', size_hint=(1, 0.15)) self.export_button.bind(on_press=self.export) # Tab packs self.tab_param.add_widget(self.menu_right) self.tab_color.add_widget(self.picker) self.tab_color_bg.add_widget(self.picker_bg) self.tab_export.add_widget(self.export_button) self.add_widget(self.panel) # Popups self.pop_export = Popup( title="Export file", content=Label(text="File exported"), size_hint=(None, None), size=(640, 240))
from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.switch import Switch from var import var layout = BoxLayout() switch = Switch(text="setting") if var == 0: switch.active = False elif var == 1: switch.active = True layout.add_widget(switch) def fun(x, y): if y == True: f = opne("var.py", "w") switch.bind(active=fun) class MyApp(App): def build(self): return layout if __name__ == "__main__": MyApp().run()
class MainBox(BoxLayout): ''' Mainbox class ''' def __init__(self, **kwargs): ''' Init main class ui ''' super(MainBox, self).__init__(**kwargs) self.f_size = '15sp' # Shape Widget self.shape = Shape(size_hint=(0.7, 1)) self.add_widget(self.shape) # Right Menu self.panel = TabbedPanel(size_hint=(0.3, 1), do_default_tab=False) self.tab_param = TabbedPanelItem(text='Parameters') self.tab_color = TabbedPanelItem(text='Shape') self.tab_color_bg = TabbedPanelItem(text='Background') self.tab_export = TabbedPanelItem(text='Export') self.panel.add_widget(self.tab_param) self.panel.add_widget(self.tab_color) self.panel.add_widget(self.tab_color_bg) self.panel.add_widget(self.tab_export) self.menu_right = RightMenu( padding=15, orientation="vertical") # Switch mode line self.box_switch = BoxLayout(orientation='horizontal') self.mode_label = Label( text="Line mode", font_size=self.f_size, markup=True) self.box_switch.add_widget(self.mode_label) self.switch_mode = Switch(active=False) self.switch_mode.bind(active=self.on_switch) self.box_switch.add_widget(self.switch_mode) self.menu_right.add_widget(self.box_switch) # Size value self.box_size = BoxLayout(orientation='horizontal') self.size_label = Label( text="Shape size", font_size=self.f_size, markup=True) self.size_label_value = Label( text=str(self.shape.shape_size), font_size=self.f_size, markup=True) self.box_size.add_widget(self.size_label) self.box_size.add_widget(self.size_label_value) self.slider_shape_size = Slider( min=self.shape.property('shape_size').get_min(self.shape), max=self.shape.property('shape_size').get_max(self.shape), value=self.shape.shape_size, step=1) self.slider_shape_size.bind(value=self.change_shape_size) self.menu_right.add_widget(self.box_size) self.menu_right.add_widget(self.slider_shape_size) # Width point or line self.box_stroke = BoxLayout(orientation='horizontal') self.wdth_label = Label( text="Stroke width", font_size=self.f_size, markup=True) self.wdth_label_value = Label( text=str(self.shape.wdth), font_size=self.f_size, markup=True) self.box_stroke.add_widget(self.wdth_label) self.box_stroke.add_widget(self.wdth_label_value) self.slider_wdth = Slider( min=self.shape.property('wdth').get_min(self.shape), max=self.shape.property('wdth').get_max(self.shape), value=self.shape.wdth, step=1) self.slider_wdth.bind(value=self.change_wdth) self.menu_right.add_widget(self.box_stroke) self.menu_right.add_widget(self.slider_wdth) # a value self.box_a = BoxLayout(orientation='horizontal') self.a_label = Label( text="Param a ", font_size=self.f_size, markup=True) self.a_label_value = Label( text=str(self.shape.a), font_size=self.f_size, markup=True) self.box_a.add_widget(self.a_label) self.box_a.add_widget(self.a_label_value) self.slider_a = Slider( min=self.shape.property('a').get_min(self.shape), max=self.shape.property('a').get_max(self.shape), value=self.shape.a) self.slider_a.bind(value=self.change_a) self.menu_right.add_widget(self.box_a) self.menu_right.add_widget(self.slider_a) # b value self.box_b = BoxLayout(orientation='horizontal') self.b_label = Label( text="Param b ", font_size=self.f_size, markup=True) self.b_label_value = Label( text=str(self.shape.b), font_size=self.f_size, markup=True) self.box_b.add_widget(self.b_label) self.box_b.add_widget(self.b_label_value) self.slider_b = Slider( min=self.shape.property('b').get_min(self.shape), max=self.shape.property('b').get_max(self.shape), value=self.shape.b) self.slider_b.bind(value=self.change_b) self.menu_right.add_widget(self.box_b) self.menu_right.add_widget(self.slider_b) # m value self.box_m = BoxLayout(orientation='horizontal') self.m_label = Label( text="Param m ", font_size=self.f_size, markup=True) self.m_label_value = Label( text=str(self.shape.m), font_size=self.f_size, markup=True) self.box_m.add_widget(self.m_label) self.box_m.add_widget(self.m_label_value) self.slider_m = Slider( min=self.shape.property('m').get_min(self.shape), max=self.shape.property('m').get_max(self.shape), value=self.shape.m) self.slider_m.bind(value=self.change_m) self.menu_right.add_widget(self.box_m) self.menu_right.add_widget(self.slider_m) # n1 value self.box_n1 = BoxLayout(orientation='horizontal') self.n1_label = Label( text="Param n1 ", font_size=self.f_size, markup=True) self.n1_label_value = Label( text=str(self.shape.n1), font_size=self.f_size, markup=True) self.box_n1.add_widget(self.n1_label) self.box_n1.add_widget(self.n1_label_value) self.slider_n1 = Slider( min=self.shape.property('n1').get_min(self.shape), max=self.shape.property('n1').get_max(self.shape), value=self.shape.n1) self.slider_n1.bind(value=self.change_n1) self.menu_right.add_widget(self.box_n1) self.menu_right.add_widget(self.slider_n1) # n2 value self.box_n2 = BoxLayout(orientation='horizontal') self.n2_label = Label( text="Param n2 ", font_size=self.f_size, markup=True) self.n2_label_value = Label( text=str(self.shape.n2), font_size=self.f_size, markup=True) self.box_n2.add_widget(self.n2_label) self.box_n2.add_widget(self.n2_label_value) self.slider_n2 = Slider( min=self.shape.property('n2').get_min(self.shape), max=self.shape.property('n2').get_max(self.shape), value=self.shape.n2) self.slider_n2.bind(value=self.change_n2) self.menu_right.add_widget(self.box_n2) self.menu_right.add_widget(self.slider_n2) # n3 value self.box_n3 = BoxLayout(orientation='horizontal') self.n3_label = Label( text="Param n3 ", font_size=self.f_size, markup=True) self.n3_label_value = Label( text=str(self.shape.n3), font_size=self.f_size, markup=True) self.box_n3.add_widget(self.n3_label) self.box_n3.add_widget(self.n3_label_value) self.slider_n3 = Slider( min=self.shape.property('n3').get_min(self.shape), max=self.shape.property('n3').get_max(self.shape), value=self.shape.n3) self.slider_n3.bind(value=self.change_n3) self.menu_right.add_widget(self.box_n3) self.menu_right.add_widget(self.slider_n3) # Nb points self.box_nbp = BoxLayout(orientation='horizontal') self.nbp_label = Label( text="Points number ", font_size=self.f_size, markup=True) self.nbp_label_value = Label( text=str(self.shape.nbp), font_size=self.f_size, markup=True) self.box_nbp.add_widget(self.nbp_label) self.box_nbp.add_widget(self.nbp_label_value) self.slider_nbp = Slider( min=self.shape.property('nbp').get_min(self.shape), max=self.shape.property('nbp').get_max(self.shape), value=self.shape.nbp, step=2) self.slider_nbp.bind(value=self.change_nbp) self.menu_right.add_widget(self.box_nbp) self.menu_right.add_widget(self.slider_nbp) # Percent self.box_percent = BoxLayout(orientation='horizontal') self.percent_label = Label( text="Percent ", font_size=self.f_size, markup=True) self.percent_label_value = Label( text=str(self.shape.percent), font_size=self.f_size, markup=True) self.box_percent.add_widget(self.percent_label) self.box_percent.add_widget(self.percent_label_value) self.slider_percent = Slider( min=self.shape.property('percent').get_min(self.shape), max=self.shape.property('percent').get_max(self.shape), value=self.shape.percent, step=1) self.slider_percent.bind(value=self.change_percent) self.menu_right.add_widget(self.box_percent) self.menu_right.add_widget(self.slider_percent) # Travel self.box_travel = BoxLayout(orientation='horizontal') self.travel_label = Label( text="Travel ", font_size=self.f_size, markup=True) self.travel_label_value = Label( text=str(self.shape.travel), font_size=self.f_size, markup=True) self.box_travel.add_widget(self.travel_label) self.box_travel.add_widget(self.travel_label_value) self.slider_travel = Slider( min=self.shape.property('travel').get_min(self.shape), max=self.shape.property('travel').get_max(self.shape), value=self.shape.travel, step=2) self.slider_travel.bind(value=self.change_travel) self.menu_right.add_widget(self.box_travel) self.menu_right.add_widget(self.slider_travel) # ColorPicker for Shape self.picker = ColorPicker() self.picker.bind(color=self.on_color) # ColorPicker for background self.picker_bg = ColorPicker() self.picker_bg.bind(color=self.on_color_bg) # Export svg button self.export_button = Button(text='Export', size_hint=(1, 0.15)) self.export_button.bind(on_press=self.export) # Tab packs self.tab_param.add_widget(self.menu_right) self.tab_color.add_widget(self.picker) self.tab_color_bg.add_widget(self.picker_bg) self.tab_export.add_widget(self.export_button) self.add_widget(self.panel) # Popups self.pop_export = Popup( title="Export file", content=Label(text="File exported"), size_hint=(None, None), size=(640, 240)) def change_wdth(self, *args): ''' Change stroke width ''' self.shape.wdth = self.slider_wdth.value self.wdth_label_value.text = str(self.slider_wdth.value) def on_switch(self, *args): ''' Switch mode line or point ''' self.shape.line = self.switch_mode.active def on_color(self, *args): ''' Shape color ''' self.shape.color = self.picker.hex_color def on_color_bg(self, *args): ''' Shape background color ''' self.shape.bg_color = self.picker_bg.hex_color def change_shape_size(self, *args): ''' Shape size ''' self.shape.shape_size = self.slider_shape_size.value self.size_label_value.text = str(self.slider_shape_size.value) def change_a(self, *args): ''' a value ''' self.shape.a = self.slider_a.value self.a_label_value.text = str(self.slider_a.value) def change_b(self, *args): ''' b value ''' self.shape.b = self.slider_b.value self.b_label_value.text = str(self.slider_b.value) def change_m(self, *args): ''' m value ''' self.shape.m = self.slider_m.value self.m_label_value.text = str(self.slider_m.value) def change_n1(self, *args): ''' n1 value ''' self.shape.n1 = self.slider_n1.value self.n1_label_value.text = str(self.slider_n1.value) def change_n2(self, *args): ''' n2 value ''' self.shape.n2 = self.slider_n2.value self.n2_label_value.text = str(self.slider_n2.value) def change_n3(self, *args): ''' n3 value ''' self.shape.n3 = self.slider_n3.value self.n3_label_value.text = str(self.slider_n3.value) def change_nbp(self, *args): ''' point number ''' self.shape.nbp = self.slider_nbp.value self.nbp_label_value.text = str(self.slider_nbp.value) def change_percent(self, *args): ''' Percent value ''' self.shape.percent = self.slider_percent.value self.percent_label_value.text = str(self.slider_percent.value) def change_travel(self, *args): ''' Travel number ''' self.shape.travel = self.slider_travel.value self.travel_label_value.text = str(self.slider_travel.value) def export(self, *args): ''' Export to svg file ''' document = svgwrite.Drawing(filename='export.svg', debug=True) tmp = [(float("%.4g" % e)) for e in self.shape.path] # Export polygon if self.shape.line: svg_path = coupled(tmp) document.add(document.polygon(points=svg_path)) else: # Export points svg_path = coupled(coupled(tmp)) for elem in svg_path: document.add(document.line( start=elem[0], end=elem[1] )) document.save() self.shape.export_to_png('export.png') self.pop_export.open()
class Anritsu(AbstractSource): def __init__(self, **kwargs): super(Anritsu, self).__init__(kwargs=kwargs) self.is_source_active = False on_off_label = Label(text="Use Source") self.on_off_switch = Switch(active=False) self.on_off_switch.bind(active=self.on_off) on_off_layout = BoxLayout(orientation="horizontal", size_hint=(1, None), size=(1, 40)) on_off_layout.add_widget(on_off_label) on_off_layout.add_widget(self.on_off_switch) init_frec_label = Label(text="Frequency") self.init_frec_value = TextInput(multiline=False) self.init_frec_value.disabled = True self.init_frec_value.text = "0.0" self.init_frec_unit = UnitSpinner(UnitSpinner.hz) amplitud_frec_label = Label(text="Power") self.amplitud_frec_value = TextInput(multiline=False) self.amplitud_frec_value.disabled = True self.amplitud_frec_value.bind(text=self._check_input_number) self.amplitud_frec_unit = UnitSpinner(UnitSpinner.db) buttons_configuration = GridLayout(cols=3, row_force_default=True, row_default_height=40) buttons_configuration.add_widget(init_frec_label) buttons_configuration.add_widget(self.init_frec_value) buttons_configuration.add_widget(self.init_frec_unit) buttons_configuration.add_widget(amplitud_frec_label) buttons_configuration.add_widget(self.amplitud_frec_value) buttons_configuration.add_widget(self.amplitud_frec_unit) main_layout = BoxLayout(orientation="vertical") main_layout.add_widget(on_off_layout) main_layout.add_widget(buttons_configuration) self.add_widget(main_layout) def do_sweep(self): return False def is_active(self): return self.is_source_active def get_source_config(self): return_dic = {} return_dic["ip_direction"] = "TCPIP0::192.168.1.36::inst0::INSTR" return_dic["power"] = self.amplitud_frec_value.text return_dic["frequency"] = float(self.init_frec_value.text) * self.init_frec_unit.get_unit_norm() return_dic["instance"] = AnritsuTone return return_dic def save_config_dictionary(self): data_dic = {} data_dic["active"] = self.is_source_active data_dic["power"] = self.amplitud_frec_value.text data_dic["frequency"] = float(self.init_frec_value.text) * self.init_frec_unit.get_unit_norm() return {self.get_my_name(): data_dic} def get_my_name(self): return "Anritsu" def set_configuration(self, config_dictionary): if self.get_my_name() in config_dictionary: config_dictionary_ = config_dictionary[self.get_my_name()] self.is_source_active = config_dictionary_["active"] self.on_off_switch.active = self.is_source_active self.amplitud_frec_value.text = config_dictionary_["power"] self.init_frec_value.text = str(config_dictionary_["frequency"]) self.init_frec_unit.text = "Hz" def on_off(self, spinner, text): self.is_source_active = text self.init_frec_value.disabled = not text self.amplitud_frec_value.disabled = not text def _check_input_number(self, instance, value): try: if len(value) > 0: float(value) except ValueError: if not value == "-": instance.text = value[0:-1] popup = Popup( title="Error", content=Label(text="Mal valor,\nsolo numeros"), size_hint=(None, None), size=(120, 100), ) popup.open()
def build(self): # create the root window for the app self.root = BoxLayout( orientation="horizontal", spacing=10, padding=10 ) # create settings panel self.settings_panel = ColoredBoxLayout( orientation="vertical", background_color=(0,169,184,0.5), size_hint=(0.3, 1), padding=10, ) self.root.add_widget(self.settings_panel) # client and server toggle buttons self.clientmode = ClientServerToggle( text='Client', group='mode', state='down', allow_no_selection=False, size=(300,100), size_hint=(1, None) ) self.servermode = ClientServerToggle( text='Server', group='mode', allow_no_selection=False, size=(300,100), size_hint=(1, None) ) self.clientmode.bind(state=self.client_callback) self.servermode.bind(state=self.server_callback) self.settings_panel.add_widget(self.clientmode) self.settings_panel.add_widget(self.servermode) # add empty space empty_widget = Widget() self.settings_panel.add_widget(empty_widget) # add ip address input self.ip_address = self.SettingsEntry(text="VPN Server IP Address") self.settings_panel.add_widget(self.ip_address) # add port input self.port = self.SettingsEntry(text="VPN Server Port") self.settings_panel.add_widget(self.port) # add shared value self.shared_value = self.SettingsEntry(text="Shared Secret Value") self.settings_panel.add_widget(self.shared_value) # add debug mode self.debug_boxlayout = BoxLayout(orientation="vertical", padding=30) self.debug_label = Label(text="Debug Mode", size=(300, 50), size_hint=(1, None)) self.debug_boxlayout.add_widget(self.debug_label) self.debug_switch = Switch(active=False, size=(300, 50), size_hint=(1, None)) self.debug_switch.bind(active=self.debug_callback) self.debug_boxlayout.add_widget(self.debug_switch) #self.settings_panel.add_widget(self.debug_boxlayout) # add debug continue button self.debug_continue = Button( text="Continue", background_color=(0,0,1,1), size=(300, 100), size_hint=(1, None), disabled=True, ) self.debug_continue.bind(on_press=self.debug_continue_callback) #self.settings_panel.add_widget(self.debug_continue) # add empty space empty_widget = Widget() self.settings_panel.add_widget(empty_widget) # add connect and disconnect buttons self.connect = Button( text="Connect", background_color=(0,1,0,1), size=(300, 150), size_hint=(1, None) ) self.connect.bind(on_press=self.connect_callback) self.disconnect = Button( text="Disconnect", background_color=(1,0,0,1), size=(300, 150), size_hint=(1, None), disabled=True, ) self.disconnect.bind(on_press=self.disconnect_callback) self.settings_panel.add_widget(self.connect) self.settings_panel.add_widget(self.disconnect) # create chat panel self.chat_layout = BoxLayout( orientation="vertical", spacing=10, size_hint=(0.7, 1) ) self.chat_panel = ChatPanel( markup=True, readonly=True, scroll_y=1, focused=True, cursor_color=(0,0,0,0), bar_color=(1,0,0,1), ) self.input_layout = BoxLayout( orientation="horizontal", spacing=10, size=(0, 50), size_hint=(1, None) ) self.chat_input = TextInput(size_hint=(0.8, 1)) self.send_button = Button(size_hint=(0.2, 1), text="Send") self.send_button.bind(on_press=self.send_msg) self.input_layout.add_widget(self.chat_input) self.input_layout.add_widget(self.send_button) self.chat_layout.add_widget(self.chat_panel) self.chat_layout.add_widget(self.input_layout) self.root.add_widget(self.chat_layout) self.chat_input.disabled=True self.send_button.disabled=True return self.root
class VpnApp(App): def __init__(self, **kwargs): super(VpnApp, self).__init__(**kwargs) self.client = None self.server = None self.message_receiver = None self.debug = False self.continue_pressed = False def client_connected_callback(self, ip_addr, port): self.enable_disable_widgets( chat_input=True, send_button=True, debug_continue=False, ) sender = "SERVER" conn = self.client chat_panel = self.chat_panel if self.servermode.state == "down": self.chat_panel.write_info("Client connected from (%s, %i)" % (ip_addr, port)) sender = "CLIENT" conn = self.server self.message_receiver = MessageReceiver(sender, conn, chat_panel) self.message_receiver.start() # specify which widgets to enable. All unspecified widgets will get disabled def enable_disable_widgets( self, clientmode=None, servermode=None, ip_address=None, port=None, shared_value=None, connect=None, disconnect=None, chat_panel=None, chat_input=None, send_button=None, debug_switch=None, debug_continue=None, ): def enable_widget(enable, widget): if enable is None: return if enable: widget.disabled = False else: widget.disabled = True enable_widget(clientmode, self.clientmode) enable_widget(servermode, self.servermode) enable_widget(ip_address, self.ip_address) enable_widget(port, self.port) enable_widget(shared_value, self.shared_value) enable_widget(connect, self.connect) enable_widget(disconnect, self.disconnect) enable_widget(chat_panel, self.chat_panel) enable_widget(chat_input, self.chat_input) enable_widget(send_button, self.send_button) enable_widget(debug_continue, self.debug_continue) enable_widget(debug_switch, self.debug_switch) # called when 'Client' toggle button is pressed def client_callback(self, *args): state = args[1] if state == "down": self.settings_panel.add_widget(self.ip_address, 7) self.settings_panel.remove_widget(self.debug_boxlayout) self.settings_panel.remove_widget(self.debug_continue) self.chat_panel.write_info("Switched to Client Mode") # called when 'Server' toggle button is pressed def server_callback(self, *args): state = args[1] if state == "down": self.settings_panel.remove_widget(self.ip_address) self.settings_panel.add_widget(self.debug_boxlayout, 3) self.settings_panel.add_widget(self.debug_continue, 3) self.chat_panel.write_info("Switched to Server Mode") def debug_continue_callback(self, instance): self.continue_pressed = True # called when 'debug' toggled def debug_callback(self, btn, value): if value: self.debug = True else: self.debug = False # called when 'Connect' button is pressed def connect_callback(self, btn): self.disconnect.disabled = True # get inserted port number port = 0 for child in self.port.children: if isinstance(child, TextInput): try: port = int(child.text) except ValueError: self.chat_panel.write_info("Invalid port: " + child.text) return # get the shared key value shared_key = "" for child in self.shared_value.children: if isinstance(child, TextInput): shared_key = str(child.text) if not shared_key: self.chat_panel.write_info("Shared key must have some value") return # get the inserted ip address if (self.clientmode.state == 'down'): ip_address = "" for child in self.ip_address.children: if isinstance(child, TextInput): try: ip_address = child.text ipaddress.ip_address(unicode(child.text, 'utf-8')) except ValueError: #TODO: print error to chat panel self.chat_panel.write_info("Invalid IP Address: " + child.text) return if (self.servermode.state == 'down'): # vpn is in 'server' mode self.server = VpnServer( port, shared_key, self.client_connected_callback, self.broken_conn_callback, self.debug_continue, self.debug, self ) error, message = self.server.setup() if (error != 0): # error while setting up socket self.chat_panel.write_info(message) return else: self.chat_panel.write_info(message) self.enable_disable_widgets( clientmode=False, servermode=False, port=False, shared_value=False, connect=False, disconnect=True, chat_input=False, send_button=False, debug_switch=False, debug_continue=False, ) self.server.start(callback=self.client_connected_callback) else: # vpn is in 'client' mode self.client = VpnClient( ip_address, port, shared_key, self.broken_conn_callback, self ) error, message = self.client.connect() if (error != 0): self.chat_panel.write_info(message) return else: self.chat_panel.write_info(message) self.enable_disable_widgets( clientmode=False, servermode=False, ip_address=False, port=False, shared_value=False, connect=False, disconnect=True, chat_input=False, send_button=False, debug_switch=False, debug_continue=True, ) self.client_connected_callback(ip_address, port) def send_msg(self, btn): msg = self.chat_input.text if (len(msg) > 500): self.chat_panel.write_info("Input cannot be more than 500 characters") else: if self.servermode.state == 'down': self.chat_panel.write_server(msg) self.server.send(msg) else: self.chat_panel.write_client(msg) self.client.send(msg) self.chat_input.text = "" def SettingsEntry(self,text=None): boxlayout = BoxLayout(orientation="vertical", padding=30) self.label = Label(text=text, size=(300, 50),size_hint=(1, None)) boxlayout.add_widget(self.label) self.textinput = TextInput(multiline=False, size=(300, 50), size_hint=(1, None)) boxlayout.add_widget(self.textinput) return boxlayout def build(self): # create the root window for the app self.root = BoxLayout( orientation="horizontal", spacing=10, padding=10 ) # create settings panel self.settings_panel = ColoredBoxLayout( orientation="vertical", background_color=(0,169,184,0.5), size_hint=(0.3, 1), padding=10, ) self.root.add_widget(self.settings_panel) # client and server toggle buttons self.clientmode = ClientServerToggle( text='Client', group='mode', state='down', allow_no_selection=False, size=(300,100), size_hint=(1, None) ) self.servermode = ClientServerToggle( text='Server', group='mode', allow_no_selection=False, size=(300,100), size_hint=(1, None) ) self.clientmode.bind(state=self.client_callback) self.servermode.bind(state=self.server_callback) self.settings_panel.add_widget(self.clientmode) self.settings_panel.add_widget(self.servermode) # add empty space empty_widget = Widget() self.settings_panel.add_widget(empty_widget) # add ip address input self.ip_address = self.SettingsEntry(text="VPN Server IP Address") self.settings_panel.add_widget(self.ip_address) # add port input self.port = self.SettingsEntry(text="VPN Server Port") self.settings_panel.add_widget(self.port) # add shared value self.shared_value = self.SettingsEntry(text="Shared Secret Value") self.settings_panel.add_widget(self.shared_value) # add debug mode self.debug_boxlayout = BoxLayout(orientation="vertical", padding=30) self.debug_label = Label(text="Debug Mode", size=(300, 50), size_hint=(1, None)) self.debug_boxlayout.add_widget(self.debug_label) self.debug_switch = Switch(active=False, size=(300, 50), size_hint=(1, None)) self.debug_switch.bind(active=self.debug_callback) self.debug_boxlayout.add_widget(self.debug_switch) #self.settings_panel.add_widget(self.debug_boxlayout) # add debug continue button self.debug_continue = Button( text="Continue", background_color=(0,0,1,1), size=(300, 100), size_hint=(1, None), disabled=True, ) self.debug_continue.bind(on_press=self.debug_continue_callback) #self.settings_panel.add_widget(self.debug_continue) # add empty space empty_widget = Widget() self.settings_panel.add_widget(empty_widget) # add connect and disconnect buttons self.connect = Button( text="Connect", background_color=(0,1,0,1), size=(300, 150), size_hint=(1, None) ) self.connect.bind(on_press=self.connect_callback) self.disconnect = Button( text="Disconnect", background_color=(1,0,0,1), size=(300, 150), size_hint=(1, None), disabled=True, ) self.disconnect.bind(on_press=self.disconnect_callback) self.settings_panel.add_widget(self.connect) self.settings_panel.add_widget(self.disconnect) # create chat panel self.chat_layout = BoxLayout( orientation="vertical", spacing=10, size_hint=(0.7, 1) ) self.chat_panel = ChatPanel( markup=True, readonly=True, scroll_y=1, focused=True, cursor_color=(0,0,0,0), bar_color=(1,0,0,1), ) self.input_layout = BoxLayout( orientation="horizontal", spacing=10, size=(0, 50), size_hint=(1, None) ) self.chat_input = TextInput(size_hint=(0.8, 1)) self.send_button = Button(size_hint=(0.2, 1), text="Send") self.send_button.bind(on_press=self.send_msg) self.input_layout.add_widget(self.chat_input) self.input_layout.add_widget(self.send_button) self.chat_layout.add_widget(self.chat_panel) self.chat_layout.add_widget(self.input_layout) self.root.add_widget(self.chat_layout) self.chat_input.disabled=True self.send_button.disabled=True return self.root def broken_conn_callback(self): if self.message_receiver: self.message_receiver.close() if self.server: self.server.broken_conn() self.server.start(callback=self.client_connected_callback) self.chat_panel.write_info("Client disconnected") self.chat_panel.write_info("Listening for connections...") self.enable_disable_widgets( chat_input=False, send_button=False, debug_continue=False, ) else: self.client.close() self.enable_disable_widgets( clientmode=True, servermode=True, ip_address=True, port=True, shared_value=True, connect=True, disconnect=False, chat_input=False, send_button=False, debug_switch=True, debug_continue=False, ) self.chat_panel.write_info("Lost connection to server") def disconnect_callback(self, instance): if self.servermode.state == 'down': self.server.close() self.chat_panel.write_info("Closing Server...") else: self.client.close() self.chat_panel.write_info("Disconnecting from server...") if self.message_receiver: self.message_receiver.close() self.clientmode.disabled=False self.servermode.disabled=False self.ip_address.disabled=False self.port.disabled=False self.shared_value.disabled=False self.connect.disabled=False self.disconnect.disabled=True self.chat_input.disabled=True self.send_button.disabled=True self.debug_switch.disabled=False self.debug_continue.disabled=True def close(self): if self.server: self.server.close() if self.client: self.client.close() if self.message_receiver: self.message_receiver.close()
def __init__(self, **kwargs): super(BeamScanner, self).__init__(kwargs=kwargs) # activate the beam scanner self.active_state = False self.sweep_state = False sweep_label = Label(text='Do Sweep') self.sweep_switch = Switch(active=False) self.sweep_switch.bind(active=self.sweepe_or_not) sweep_layout = BoxLayout(orientation='horizontal', size_hint=(1,None), size=(1,40)) sweep_layout.add_widget(sweep_label) sweep_layout.add_widget(self.sweep_switch) # this is the controll to move the beam scanner self.set_center = Button(text='Set Center', size_hint=(1, None), size=(1, 30)) self.set_center.bind(on_press=self.set_zero_xy) self.move_up = Button(text='/\\', size_hint=(0.33, None), size=(1, 30)) self.move_up.bind(on_press=self.move_up_beam) move_up_padding_l = Label(size_hint=(0.33, None), size=(1, 30)) move_up_padding_r = Label(size_hint=(0.33, None), size=(1, 30)) self.move_left = Button(text='<', size_hint=(0.33, None), size=(1, 30)) self.move_left.bind(on_press=self.move_left_beam) self.move_rigth = Button(text='>', size_hint=(0.33, None), size=(1, 30)) self.move_rigth.bind(on_press=self.move_rigth_beam) self.step_size = TextInput(size_hint=(0.33, None), size=(1, 30), multiline=False) self.step_size.text = '0.0' self.move_down = Button(text='\\/', size_hint=(0.33, None), size=(1, 30)) self.move_down.bind(on_press=self.move_down_beam) move_down_padding_l = Label(size_hint=(0.33, None), size=(1, 30)) move_down_padding_r = Label(size_hint=(0.33, None), size=(1, 30)) move_top = BoxLayout(orientation='horizontal', size_hint=(1, None), size=(1, 30)) move_top.add_widget(move_up_padding_l) move_top.add_widget(self.move_up) move_top.add_widget(move_up_padding_r) move_middle = BoxLayout(orientation='horizontal', size_hint=(1, None), size=(1, 30)) move_middle.add_widget(self.move_left) move_middle.add_widget(self.step_size) move_middle.add_widget(self.move_rigth) move_bottom = BoxLayout(orientation='horizontal', size_hint=(1, None), size=(1, 30)) move_bottom.add_widget(move_down_padding_l) move_bottom.add_widget(self.move_down) move_bottom.add_widget(move_down_padding_r) move_xy_layes = BoxLayout(orientation='vertical', size_hint=(1, None), size=(1, 120)) move_xy_layes.add_widget(self.set_center) move_xy_layes.add_widget(move_top) move_xy_layes.add_widget(move_middle) move_xy_layes.add_widget(move_bottom) # this is the controll to rotate the beam scanner self.set_origin = Button(text='Set Zero', size_hint=(0.33, None), size=(1, 30)) self.set_origin.bind(on_press=self.set_zero_ang) self.do_rotation = Button(text='Rotate to:', size_hint=(0.33, None), size=(1, 30)) self.do_rotation.bind(on_press=self.rotate) self.destination_angle = TextInput(size_hint=(0.33, None), size=(1, 30), multiline=False) self.destination_angle.text = '0.0' rotation_layou = BoxLayout(orientation='horizontal', size_hint=(1, None), size=(1, 30)) rotation_layou.add_widget(self.set_origin) rotation_layou.add_widget(self.do_rotation) rotation_layou.add_widget(self.destination_angle) # rotation speed speed_rotation = Label(text='Angular Speed', size_hint=(1, None), size=(1, 30)) self.speed_rotation_value = TextInput(size_hint=(1, None), size=(1, 30)) self.speed_rotation_value.text = '10.0' rotation_speed = BoxLayout(orientaion='horizontal', size_hint=(1, None), size=(1, 30)) rotation_speed.add_widget(speed_rotation) rotation_speed.add_widget(self.speed_rotation_value) # check the plane movility size_of_plane_label = Label(text='Plane size [mm]', size=(1, 30)) self.size_of_plane_val = TextInput(size=(1, 30), multiline=False) self.size_of_plane_val.text = '0.0' self.size_of_plane_val.bind(focus=self.set_number_of_points) plane_size = BoxLayout(orientaion='horizontal', size_hint=(1, None), size=(1, 30)) plane_size.add_widget(size_of_plane_label) plane_size.add_widget(self.size_of_plane_val) # configuration # frecuency frec_label = Label(text='Set Lambda [mm]: ', size_hint=(1, None), size=(1, 30)) self.frec_value = TextInput(size_hint=(1, None), size=(1, 30), multiline=False) self.frec_value.text = '0.0' self.frec_value.bind(focus=self.set_number_of_points) frec_step = Label(text='Step factor: ', size_hint=(1, None), size=(1, 30)) self.frec_step_value = TextInput(size_hint=(1, None), size=(1, 30), multiline=False) self.frec_step_value.text = '0.45' self.frec_step_value.bind(focus=self.set_number_of_points) frec_layout_val = BoxLayout(orientation='horizontal', size_hint=(1, None), size=(1, 30)) frec_layout_val.add_widget(frec_label) frec_layout_val.add_widget(self.frec_value) frec_layout_step = BoxLayout(orientation='horizontal', size_hint=(1, None), size=(1, 30)) frec_layout_step.add_widget(frec_step) frec_layout_step.add_widget(self.frec_step_value) frec_layout = BoxLayout(orientation='vertical', size_hint=(1, None), size=(1, 60)) frec_layout.add_widget(frec_layout_val) frec_layout.add_widget(frec_layout_step) # display step step_label = Label(text='Number of Points: ') self.step_val = Label(text='0') display_step = BoxLayout(orientation='horizontal', size_hint=(1, None), size=(1, 30)) display_step.add_widget(step_label) display_step.add_widget(self.step_val) # fast sweep enable self.fast_sweepp = ToggleButton(text='fast sweep', size_hint=(1,None), size=(1,30)) # goto configuration goto_label = Label(text='Go to Position') self.goto_switch = Switch(active=False) self.goto_switch.bind(active=self.goto_or_not) x_dest = Label(text = 'x position [mm]') y_dest = Label(text = 'y position [mm]') theta_dest = Label(text = 'angle [Degree]') self.x_dest_val = TextInput(size_hint=(0.33, None), size=(1, 30), multiline=False) self.x_dest_val.text = '0.0' self.y_dest_val = TextInput(size_hint=(0.33, None), size=(1, 30), multiline=False) self.y_dest_val.text = '0.0' self.theta_dest_val = TextInput(size_hint=(0.33, None), size=(1, 30), multiline=False) self.theta_dest_val.text = '0.0' goto_layout = BoxLayout(orientation='horizontal', size_hint=(1, None), size=(1, 30)) goto_layout.add_widget(goto_label) goto_layout.add_widget(self.goto_switch) goto_layout_x = BoxLayout(orientation='horizontal', size_hint=(1, None), size=(1, 30)) goto_layout_x.add_widget(x_dest) goto_layout_x.add_widget(self.x_dest_val) goto_layout_y = BoxLayout(orientation='horizontal', size_hint=(1, None), size=(1, 30)) goto_layout_y.add_widget(y_dest) goto_layout_y.add_widget(self.y_dest_val) goto_layout_theta = BoxLayout(orientation='horizontal', size_hint=(1, None), size=(1, 30)) goto_layout_theta.add_widget(theta_dest) goto_layout_theta.add_widget(self.theta_dest_val) goto_switch = BoxLayout(orientation='vertical', size_hint=(1, None), size=(1, 120)) goto_switch.add_widget(goto_layout) goto_switch.add_widget(goto_layout_x) goto_switch.add_widget(goto_layout_y) goto_switch.add_widget(goto_layout_theta) # big container configuration paddind = BoxLayout(size_hint=(1, 1), size=(1, 1000)) self.big_one = BoxLayout(orientation='vertical') self.big_one.add_widget(sweep_layout) self.big_one.add_widget(move_xy_layes) self.big_one.add_widget(rotation_layou) self.big_one.add_widget(rotation_speed) self.big_one.add_widget(plane_size) self.big_one.add_widget(frec_layout) self.big_one.add_widget(display_step) self.big_one.add_widget(self.fast_sweepp) self.big_one.add_widget(goto_switch) self.big_one.add_widget(paddind) self.add_widget(self.big_one) # attributes that lets you connect to beam scanner self.ip_beam = '192.168.1.62' self.ip_port = 9988 self.move_xy = MoveXY(self.ip_beam, self.ip_port) self.move_ang = Rotate(self.ip_beam, self.ip_port) # disconnect thread configuration self.monitor = threading.Event() self.disconnect = True self.launch_thread = False