class ConfigForm(Form): redis = Dict.of(RequiredString.named('host'), Integer.named('port').using(validators=[Present()]), String.named('password').using(optional=True), RequiredString.named('mail_queue'), Boolean.named('reconnect'), RequiredString.named('mail_errors_queue')) mailing = Dict.of(RequiredString.named('host'), Integer.named('port').using(validators=[Present()]), RequiredString.named('username'), RequiredString.named('password'), Enum.named('protocol').valued(PROTOCOL.SSL, PROTOCOL.TLS, PROTOCOL.PLAIN)) logging = Dict.of(Enum.named('level').valued('DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'), Boolean.named('console'), Boolean.named('syslog'), Boolean.named('email'), List.named('admins').of(String.named('admin').using(validators=[IsEmail()])))
def integer_entry_dialog(name, value=0, title='Input value', min_value=None, max_value=None, parent=None, use_markup=True): if parent is None: parent = DEFAULTS.parent_widget validators = [] if min_value is not None: ValueAtLeast(minimum=min_value) if max_value is not None: ValueAtMost(maximum=max_value) valid, response = field_entry_dialog(Integer.named(name) .using(validators=validators), value, title, parent=parent, use_markup=use_markup) if valid: return response return None
def integer_entry_dialog(name, value=0, title='Input value', min_value=None, max_value=None, parent=None, use_markup=True): if parent is None: parent = DEFAULTS.parent_widget validators = [] if min_value is not None: ValueAtLeast(minimum=min_value) if max_value is not None: ValueAtMost(maximum=max_value) valid, response = field_entry_dialog( Integer.named(name).using(validators=validators), value, title, parent=parent, use_markup=use_markup) if valid: return response return None
def create_ui(self): self.widget = gtk.Assistant() self.widget.connect("prepare", self.assistant_prepared) self.widget.connect("cancel", self.cancel_button_clicked) self.widget.connect("close", self.close_button_clicked) self.widget.connect("apply", self.apply_button_clicked) # # Introduction # box = gtk.HBox() self.widget.append_page(box) self.widget.set_page_type(box, gtk.ASSISTANT_PAGE_INTRO) self.widget.set_page_title(box, "Introduction") content = ( "This wizard will guide you through the process of " "calibrating the high-voltage reference load feedback " "measurement circuit. This feedback circuit is used to " "measure the output voltage of the amplifier on the control" "board.\n\nSee " r'<a href="http://microfluidics.utoronto.ca/trac/dropbot/wiki/Control board calibration#high-voltage-attenuation-calibration">' "here</a> for more details." ) label = gtk.Label(content) label.set_use_markup(True) label.set_line_wrap(True) image = gtk.Image() img_path = pkg_resources.resource_filename("dmf_control_board_firmware", "gui/reference_feedback_intro.png") image.set_from_file(str(img_path)) box.pack_start(label, True, False, padding=15) box.pack_start(image, True, True, padding=5) self.widget.set_page_complete(box, True) # # Connect hardware # box = gtk.HBox() self.widget.append_page(box) self.widget.set_page_type(box, gtk.ASSISTANT_PAGE_CONTENT) self.widget.set_page_title(box, "Connect hardware") label = gtk.Label( ' - Connect DropBot "<tt>Out to Amp</tt>" to amplifier input.\n' " - Use T-splitter to connect amplifier output to:\n" ' 1) DropBot "<tt>In from Amp</tt>".\n' " 2) Oscilloscope input." ) image = gtk.Image() img_path = pkg_resources.resource_filename("dmf_control_board_firmware", "gui/reference_feedback_setup.png") image.set_from_file(str(img_path)) label.set_line_wrap(True) label.set_use_markup(True) box.pack_start(label, True, False, padding=15) box.pack_start(image, True, True, padding=5) self.widget.set_page_complete(box, True) # # Select frequencies # minimum = self.control_board.min_waveform_frequency maximum = self.control_board.max_waveform_frequency form = Form.of( Integer.named("start_frequency").using( default=minimum, optional=True, validators=[ValueAtLeast(minimum=minimum)] ), Integer.named("end_frequency").using( default=maximum, optional=True, validators=[ValueAtLeast(minimum=minimum)] ), Integer.named("number_of_steps").using(default=10, optional=True, validators=[ValueAtLeast(minimum=2)]), ) box = gtk.HBox() self.form_view = create_form_view(form) self.form_view.form.proxies.connect("changed", display) box.pack_start(self.form_view.widget, fill=False, padding=40) self.widget.append_page(box) self.widget.set_page_type(box, gtk.ASSISTANT_PAGE_CONTENT) self.widget.set_page_title(box, "Select calibration frequencies") self.widget.set_page_complete(box, True) # # Record measurements # box1 = gtk.VBox() self.widget.append_page(box1) self.widget.set_page_type(box1, gtk.ASSISTANT_PAGE_PROGRESS) self.widget.set_page_title(box1, "Record measurements") self.measurements_label = gtk.Label("Ready") self.measurements_label.set_line_wrap(True) self.measure_progress = gtk.ProgressBar() self.measure_progress.set_size_request(300, 40) box1.pack_start(self.measurements_label, True, True, 0) box1.pack_start(self.measure_progress, expand=False, fill=False, padding=15) self.box1 = box1 # # Confirm fitted parameters # box = gtk.VBox() self.widget.append_page(box) self.widget.set_page_type(box, gtk.ASSISTANT_PAGE_CONFIRM) self.widget.set_page_title(box, "Confirm fitted parameters") figure = Figure(figsize=(14, 8), dpi=60) self.canvas = FigureCanvasGTK(figure) toolbar = NavigationToolbar(self.canvas, self.widget) self.axis = figure.add_subplot(111) box.pack_start(self.canvas) box.pack_start(toolbar, False, False) self.widget.set_page_complete(box, True) # # Summary # box = gtk.VBox() self.widget.append_page(box) self.widget.set_page_type(box, gtk.ASSISTANT_PAGE_SUMMARY) self.widget.set_page_title(box, "Summary") label = gtk.Label( "Calibration of reference load feedback circuit is " "complete. The high-voltage output from amplifier " "should now be measured accurately by the control " "board." ) label.set_line_wrap(True) box.pack_start(label, True, True, 0) self.widget.set_page_complete(box, True)
Float: VIEW_FLOAT, Enum: VIEW_ENUM, }) #: map of view types to flatland element types view_widgets.update({ VIEW_FILEPATH: FilepathBuilder(), VIEW_DIRECTORY: DirectoryBuilder(), VIEW_FLOAT: FloatBuilder(), VIEW_ENUM: EnumBuilder(), }) widget_proxies.update({ FilepathWidget: FilepathProxy, DirectoryWidget: FilepathProxy, }) if __name__ == '__main__': window = gtk.Window() form = Form.of( Integer.named('overlay_opacity').using(default=20, optional=True), Float.named('float_value').using(default=10.37, optional=True), Filepath.named('log_filepath').using(default='', optional=True), Directory.named('devices_directory').using(default='', optional=True), ) dialog = FormViewDialog(form) print dialog.run()
def create_ui(self): self.widget = gtk.Assistant() self.widget.connect("prepare", self.assistant_prepared) self.widget.connect("cancel", self.cancel_button_clicked) self.widget.connect("close", self.close_button_clicked) self.widget.connect("apply", self.apply_button_clicked) # # Introduction # box = gtk.HBox() self.widget.append_page(box) self.widget.set_page_type(box, gtk.ASSISTANT_PAGE_INTRO) self.widget.set_page_title(box, "Introduction") content = ('This wizard will guide you through the process of ' 'calibrating the high-voltage reference load feedback ' 'measurement circuit. This feedback circuit is used to ' 'measure the output voltage of the amplifier on the control' 'board.\n\nSee ' r'<a href="http://microfluidics.utoronto.ca/trac/dropbot/wiki/Control board calibration#high-voltage-attenuation-calibration">' 'here</a> for more details.') label = gtk.Label(content) label.set_use_markup(True) label.set_line_wrap(True) image = gtk.Image() img_path = pkg_resources.resource_filename( 'dmf_control_board_firmware', 'gui/reference_feedback_intro.png') image.set_from_file(str(img_path)) box.pack_start(label, True, False, padding=15) box.pack_start(image, True, True, padding=5) self.widget.set_page_complete(box, True) # # Connect hardware # box = gtk.HBox() self.widget.append_page(box) self.widget.set_page_type(box, gtk.ASSISTANT_PAGE_CONTENT) self.widget.set_page_title(box, "Connect hardware") label = gtk.Label(' - Connect DropBot "<tt>Out to Amp</tt>" to amplifier input.\n' ' - Use T-splitter to connect amplifier output to:\n' ' 1) DropBot "<tt>In from Amp</tt>".\n' ' 2) Oscilloscope input.') image = gtk.Image() img_path = pkg_resources.resource_filename( 'dmf_control_board_firmware', 'gui/reference_feedback_setup.png') image.set_from_file(str(img_path)) label.set_line_wrap(True) label.set_use_markup(True) box.pack_start(label, True, False, padding=15) box.pack_start(image, True, True, padding=5) self.widget.set_page_complete(box, True) # # Select frequencies # minimum = self.control_board.min_waveform_frequency maximum = self.control_board.max_waveform_frequency form = Form.of( Integer.named('start_frequency').using( default=minimum, optional=True, validators=[ValueAtLeast(minimum=minimum), ]), Integer.named('end_frequency').using( default=maximum, optional=True, validators=[ValueAtLeast(minimum=minimum), ]), Integer.named('number_of_steps').using( default=10, optional=True, validators=[ValueAtLeast(minimum=2), ]), ) box = gtk.HBox() self.form_view = create_form_view(form) self.form_view.form.proxies.connect('changed', display) box.pack_start(self.form_view.widget, fill=False, padding=40) self.widget.append_page(box) self.widget.set_page_type(box, gtk.ASSISTANT_PAGE_CONTENT) self.widget.set_page_title(box, "Select calibration frequencies") self.widget.set_page_complete(box, True) # # Record measurements # box1 = gtk.VBox() self.widget.append_page(box1) self.widget.set_page_type(box1, gtk.ASSISTANT_PAGE_PROGRESS) self.widget.set_page_title(box1, "Record measurements") self.measurements_label = gtk.Label('Ready') self.measurements_label.set_line_wrap(True) self.measure_progress = gtk.ProgressBar() self.measure_progress.set_size_request(300, 40) box1.pack_start(self.measurements_label, True, True, 0) box1.pack_start(self.measure_progress, expand=False, fill=False, padding=15) self.box1 = box1 # # Confirm fitted parameters # box = gtk.VBox() self.widget.append_page(box) self.widget.set_page_type(box, gtk.ASSISTANT_PAGE_CONFIRM) self.widget.set_page_title(box, "Confirm fitted parameters") figure = Figure(figsize=(14, 8), dpi=60) self.canvas = FigureCanvasGTK(figure) toolbar = NavigationToolbar(self.canvas, self.widget) self.axis = figure.add_subplot(111) box.pack_start(self.canvas) box.pack_start(toolbar, False, False) self.widget.set_page_complete(box, True) # # Summary # box = gtk.VBox() self.widget.append_page(box) self.widget.set_page_type(box, gtk.ASSISTANT_PAGE_SUMMARY) self.widget.set_page_title(box, "Summary") label = gtk.Label('Calibration of reference load feedback circuit is ' 'complete. The high-voltage output from amplifier ' 'should now be measured accurately by the control ' 'board.') label.set_line_wrap(True) box.pack_start(label, True, True, 0) self.widget.set_page_complete(box, True)
element_views.update({ Filepath: VIEW_FILEPATH, Directory: VIEW_DIRECTORY, Float: VIEW_FLOAT, Enum: VIEW_ENUM, }) #: map of view types to flatland element types view_widgets.update({ VIEW_FILEPATH: FilepathBuilder(), VIEW_DIRECTORY: DirectoryBuilder(), VIEW_FLOAT: FloatBuilder(), VIEW_ENUM: EnumBuilder(), }) widget_proxies.update({ FilepathWidget: FilepathProxy, DirectoryWidget: FilepathProxy, }) if __name__ == '__main__': window = Gtk.Window() form = Form.of( Integer.named('overlay_opacity').using(default=20, optional=True), Float.named('float_value').using(default=10.37, optional=True), Filepath.named('log_filepath').using(default='', optional=True), Directory.named('devices_directory').using(default='', optional=True), ) dialog = FormViewDialog(form) print(dialog.run())
def create_ui(self): self.widget = gtk.Assistant() self.widget.connect("prepare", self.assistant_prepared) self.widget.connect("cancel", self.cancel_button_clicked) self.widget.connect("close", self.close_button_clicked) self.widget.connect("apply", self.apply_button_clicked) # # Introduction # box = gtk.HBox() self.widget.append_page(box) self.widget.set_page_type(box, gtk.ASSISTANT_PAGE_INTRO) self.widget.set_page_title(box, "Introduction") content = ('This wizard will guide you through the process of ' 'calibrating the device load feedback measurement circuit. ' 'This feedback circuit is used to measure the impedance ' 'between the actuated area and ground. This impedance is ' 'related to the volume of liquid between the actuated area' '\n\nSee ' r'<a href="http://microfluidics.utoronto.ca/trac/dropbot/wiki/Control board calibration#device-load-impedance-calibration">' 'here</a> for more details.') label = gtk.Label(content) label.set_use_markup(True) label.set_line_wrap(True) image = gtk.Image() img_path = pkg_resources.resource_filename( 'dmf_control_board_firmware', 'gui/impedance_feedback_intro.png') image.set_from_file(str(img_path)) box.pack_start(label, True, False, padding=15) box.pack_start(image, True, True, padding=5) self.widget.set_page_complete(box, True) # # Connect hardware # box = gtk.HBox() self.widget.append_page(box) self.widget.set_page_type(box, gtk.ASSISTANT_PAGE_CONTENT) self.widget.set_page_title(box, "Connect hardware") label = gtk.Label(' - Connect DropBot "<tt>Out to Amp</tt>" to amplifier input.\n' ' - Connect amplifier output to DropBot "<tt>In from Amp</tt>".\n' ' - Connect DropBot "<tt>0-39</tt>" to test board.') image = gtk.Image() img_path = pkg_resources.resource_filename( 'dmf_control_board_firmware', 'gui/impedance_feedback_setup.png') image.set_from_file(str(img_path)) label.set_line_wrap(True) label.set_use_markup(True) box.pack_start(label, True, False, padding=15) box.pack_start(image, True, True, padding=5) self.widget.set_page_complete(box, True) # # Select frequencies # form = Form.of( Integer.named('start_frequency').using( default=self.control_board.min_waveform_frequency, optional=True, validators= [ValueAtLeast(minimum= self.control_board.min_waveform_frequency), ValueAtMost(maximum= self.control_board.max_waveform_frequency)]), Integer.named('end_frequency').using( default=self.control_board.max_waveform_frequency, optional=True, validators= [ValueAtLeast(minimum= self.control_board.min_waveform_frequency), ValueAtMost(maximum= self.control_board.max_waveform_frequency)]), Integer.named('number_of_steps').using( default=10, optional=True, validators=[ValueAtLeast(minimum=2), ]), Integer.named('RMS_voltage').using( default=min(100, self.control_board.max_waveform_voltage), optional=True, validators= [ValueAtLeast(minimum=10), ValueAtMost(maximum= self.control_board.max_waveform_voltage)])) box = gtk.HBox() self.form_view = create_form_view(form) box.pack_start(self.form_view.widget, fill=False, padding=40) self.widget.append_page(box) self.widget.set_page_type(box, gtk.ASSISTANT_PAGE_CONTENT) self.widget.set_page_title(box, "Select calibration frequencies") self.widget.set_page_complete(box, True) ## # Record measurements # box1 = gtk.VBox() self.widget.append_page(box1) self.widget.set_page_type(box1, gtk.ASSISTANT_PAGE_PROGRESS) self.widget.set_page_title(box1, "Record measurements") self.measurements_label = gtk.Label('Ready.') self.measurements_label.set_line_wrap(True) self.measure_progress = gtk.ProgressBar() box1.pack_start(self.measurements_label, True, True, 0) box1.pack_start(self.measure_progress, expand=False, fill=False, padding=15) self.box1 = box1 # # Confirm fitted parameters # box = gtk.VBox() self.widget.append_page(box) self.widget.set_page_type(box, gtk.ASSISTANT_PAGE_CONFIRM) self.widget.set_page_title(box, "Confirm fitted parameters") self.figure = Figure(dpi=72) self.canvas = FigureCanvasGTK(self.figure) toolbar = NavigationToolbar(self.canvas, self.widget) #self.axis = figure.add_subplot(111) box.pack_start(self.canvas) box.pack_start(toolbar, False, False) self.widget.set_page_complete(box, True) ## # Summary # box = gtk.VBox() self.widget.append_page(box) self.widget.set_page_type(box, gtk.ASSISTANT_PAGE_SUMMARY) self.widget.set_page_title(box, "Summary") label = gtk.Label('Calibration of device load feedback circuit is ' 'complete. The impedance between actuated device ' 'area and ground should now be measured accurately ' 'by the control board.') label.set_line_wrap(True) box.pack_start(label, True, True, 0) self.widget.set_page_complete(box, True)
def create_ui(self): self.widget = gtk.Assistant() self.widget.connect("prepare", self.assistant_prepared) self.widget.connect("cancel", self.cancel_button_clicked) self.widget.connect("close", self.close_button_clicked) self.widget.connect("apply", self.apply_button_clicked) # # Introduction # box = gtk.HBox() self.widget.append_page(box) self.widget.set_page_type(box, gtk.ASSISTANT_PAGE_INTRO) self.widget.set_page_title(box, "Introduction") content = ( 'This wizard will guide you through the process of ' 'calibrating the device load feedback measurement circuit. ' 'This feedback circuit is used to measure the impedance ' 'between the actuated area and ground. This impedance is ' 'related to the volume of liquid between the actuated area' '\n\nSee ' r'<a href="http://microfluidics.utoronto.ca/trac/dropbot/wiki/Control board calibration#device-load-impedance-calibration">' 'here</a> for more details.') label = gtk.Label(content) label.set_use_markup(True) label.set_line_wrap(True) image = gtk.Image() img_path = pkg_resources.resource_filename( 'dmf_control_board_firmware', 'gui/impedance_feedback_intro.png') image.set_from_file(str(img_path)) box.pack_start(label, True, False, padding=15) box.pack_start(image, True, True, padding=5) self.widget.set_page_complete(box, True) # # Connect hardware # box = gtk.HBox() self.widget.append_page(box) self.widget.set_page_type(box, gtk.ASSISTANT_PAGE_CONTENT) self.widget.set_page_title(box, "Connect hardware") label = gtk.Label( ' - Connect DropBot "<tt>Out to Amp</tt>" to amplifier input.\n' ' - Connect amplifier output to DropBot "<tt>In from Amp</tt>".\n' ' - Connect DropBot "<tt>0-39</tt>" to test board.') image = gtk.Image() img_path = pkg_resources.resource_filename( 'dmf_control_board_firmware', 'gui/impedance_feedback_setup.png') image.set_from_file(str(img_path)) label.set_line_wrap(True) label.set_use_markup(True) box.pack_start(label, True, False, padding=15) box.pack_start(image, True, True, padding=5) self.widget.set_page_complete(box, True) # # Select frequencies # form = Form.of( Integer.named('start_frequency').using( default=self.control_board.min_waveform_frequency, optional=True, validators=[ ValueAtLeast( minimum=self.control_board.min_waveform_frequency), ValueAtMost( maximum=self.control_board.max_waveform_frequency) ]), Integer.named('end_frequency').using( default=self.control_board.max_waveform_frequency, optional=True, validators=[ ValueAtLeast( minimum=self.control_board.min_waveform_frequency), ValueAtMost( maximum=self.control_board.max_waveform_frequency) ]), Integer.named('number_of_steps').using(default=10, optional=True, validators=[ ValueAtLeast(minimum=2), ]), Integer.named('RMS_voltage').using( default=min(100, self.control_board.max_waveform_voltage), optional=True, validators=[ ValueAtLeast(minimum=10), ValueAtMost( maximum=self.control_board.max_waveform_voltage) ])) box = gtk.HBox() self.form_view = create_form_view(form) box.pack_start(self.form_view.widget, fill=False, padding=40) self.widget.append_page(box) self.widget.set_page_type(box, gtk.ASSISTANT_PAGE_CONTENT) self.widget.set_page_title(box, "Select calibration frequencies") self.widget.set_page_complete(box, True) ## # Record measurements # box1 = gtk.VBox() self.widget.append_page(box1) self.widget.set_page_type(box1, gtk.ASSISTANT_PAGE_PROGRESS) self.widget.set_page_title(box1, "Record measurements") self.measurements_label = gtk.Label('Ready.') self.measurements_label.set_line_wrap(True) self.measure_progress = gtk.ProgressBar() box1.pack_start(self.measurements_label, True, True, 0) box1.pack_start(self.measure_progress, expand=False, fill=False, padding=15) self.box1 = box1 # # Confirm fitted parameters # box = gtk.VBox() self.widget.append_page(box) self.widget.set_page_type(box, gtk.ASSISTANT_PAGE_CONFIRM) self.widget.set_page_title(box, "Confirm fitted parameters") self.figure = Figure(dpi=72) self.canvas = FigureCanvasGTK(self.figure) toolbar = NavigationToolbar(self.canvas, self.widget) #self.axis = figure.add_subplot(111) box.pack_start(self.canvas) box.pack_start(toolbar, False, False) self.widget.set_page_complete(box, True) ## # Summary # box = gtk.VBox() self.widget.append_page(box) self.widget.set_page_type(box, gtk.ASSISTANT_PAGE_SUMMARY) self.widget.set_page_title(box, "Summary") label = gtk.Label('Calibration of device load feedback circuit is ' 'complete. The impedance between actuated device ' 'area and ground should now be measured accurately ' 'by the control board.') label.set_line_wrap(True) box.pack_start(label, True, True, 0) self.widget.set_page_complete(box, True)