def __init__(self, axis): super().__init__("Aux Jog") assert isinstance(axis, ControlAxis) self._axis = axis self.label = axis.get_name() self._value_field = ControlText(label="Target", default=str(axis.get_value())) self._set_button = ControlButton(label="Go to target") self._set_button.value = self._update_value self._saved_point_field = ControlCombo(label="Saved Point") self._saved_point_button = ControlButton(label="Go to saved point") self._saved_point_button.value = self._update_saved_point self._current_field = ControlLabel( label="Current Value ({})".format(axis.get_units())) self.setFrameShape(QFrame.StyledPanel) self.setSizePolicy( QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Fixed)) self.set_margin(10) self.formset = [("info:{0} ({1}):".format(axis.get_name(), axis.get_units()), '', '', '_current_field'), ('_value_field', '_set_button'), ('_saved_point_field', '_saved_point_button')]
def __init__(self): super(DOE2py_Utility,self).__init__('DOE2py Utility') self._Input = ControlFile('Input file') self._Weather = ControlFile('Weather file') self._Library = ControlFile('User Library') self._Version = ControlCombo('DOE-2 Version') #self._Status_1 = ControlLabel('Simulation Status:') #self._Status_2 = ControlLabel('-') self._Run = ControlButton('Run Simulation') self._Close = ControlButton('Close') self._formset = ['',(' ','_Input',' '), ('', '_Weather', '' ), ('', '_Library', '' ), ('','_Version', '' ), ('', '_Run', '' ), ('','_Close',''),''] #('','_Status_1','','_Status_2', '' ) self._Run.value = self.__RunAction self._Close.value = self.__CloseAction with open('settings-gui.json') as data_file: data = json.load(data_file) self._Input.value = data["lastinput"] self._Weather.value = data["lastweather"] self._Library.value = data["lastlibrary"] for i in range(0,len(data["doe2versions"])): self._Version.add_item(data["doe2versions"][i])
def __init__(self, update_function=None): super().__init__("Jog Tab") self._update_function = update_function self._timer.timeout.connect(self._timer_update) self._timer.start(200) self._xy_panel = ControlEmptyWidget() self._xy_panel.setSizePolicy( QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)) self._xy_panel.value = ControlJog() self._aux_panel = ControlEmptyWidget() self._aux_panel.form.setSizePolicy( QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)) self._space = ControlEmptyWidget() self._enable_button = ControlButton(label='Enable LightSource') self._enable_button.value = self._enable_lightsource self._disable_button = ControlButton(label='Disable LightSource') self._disable_button.value = self._disable_lightsource self.formset = [ '_xy_panel', '_aux_panel', '_space', ('_enable_button', '_disable_button') ]
def __init__(self, parent=None, parentWindow=None): BaseWidget.__init__(self, 'Events stats', parentWindow=parentWindow) self._parent = parent self._bounds = ControlBoundingSlider('Frames range', 1, 100, horizontal=True) self._nframes = ControlNumber('Merge in a group of', 1800) self._videofsp = ControlNumber('FPS', 30.0) self._analyseButton = ControlButton('Calculate graphs') self._events = ControlCheckBoxList() self._graph = ControlVisVis('Graph') self._showTotalCounts = ControlCheckBox('Show total events counting') self._showEvtsCounts = ControlCheckBox('Show events counting', True) self._progress = ControlProgress() self._exportDurations = ControlButton('Export durations') self._exportTotals = ControlButton('Export totals') self._formset = [ (' ', '_showEvtsCounts', '|', '_showTotalCounts', '|', '_nframes', '_videofsp', '_analyseButton', '_exportDurations', '_exportTotals'), '_bounds', {'a:Graph': ['_graph'], 'c:Events selection':['_events']}, '_progress' ] self._analyseButton.value = self.__generate_graph self._exportDurations.value = self.__export_durations self._exportTotals.value = self.__export_totals self._progress.hide() self.__load_events() self.setMinimumWidth(800) self.setMinimumHeight(600)
def __init__(self): super(SimpleExample1, self).__init__('my_variant_api') #init clinvar self._clinvariants = ControlTextArea('rsvariants', 'rs12315123') self._clinbutton = ControlButton('Press this button') self._clinresult = ControlTextArea('result') self._clinbutton.value = self.__clinbuttonAction #init flanking site self._flancchrom = ControlText('chrom') self._flancpos = ControlText('pos') self._flancthree = ControlText('expand_3prime', 300) self._flancfive = ControlText('expand_5prime', 300) self._flancassembly = ControlCombo('assembly') self._flancassembly.add_item('GRCh37') self._flancassembly.add_item('GRCh38') self._flancbutton = ControlButton('Press this button') self._flancresult = ControlTextArea('result') self._flancbutton.value = self.__flancbuttonAction self.formset = [{ "Clinvar": ('_clinvariants', '_clinbutton', '_clinresult'), "Flanking Site": [('_flancchrom', '_flancpos', '_flancthree', '_flancfive', '_flancassembly'), '_flancbutton', '_flancresult'] }]
def __init__(self): super().__init__('Home') self.button_new = ControlButton('Nieuwe oogstlijst') self.button_open = ControlButton('Open bestaande oogstlijst') self.formset = ['button_new', 'button_open'] self.button_new.value = self._new self.button_open.value = self._open
def __init__(self): super().__init__('Oogstlijst Manager') self._plan_button = ControlButton('Genereer planning') self._harvest_list_button = ControlButton('Genereer oogstlijst') self._save = ControlButton('Opslaan') self._plan_button.value = self.generate_plan self._harvest_list_button.value = self.generate_list self._save.value = self.save_pickle self.formset = ['_plan_button', '_harvest_list_button', '_save']
def __init__(self): super(MySettingsApp,self).__init__('My settings') self._user_uid = ControlText('API password') self._new_uid_btn = ControlButton('New password') self._save_btn = ControlButton('Save') self._formset = [ ('_user_uid','_new_uid_btn'), ('_save_btn', ' ')] self._save_btn.value = self.__save_form self._new_uid_btn.value = self.__new_uid
def __init__(self, name, target): super(PopUpGetText, self).__init__('Add {}'.format(name)) self.target = target self._text = ControlText('') self._add_button = ControlButton('Add') self._add_button.value = self.__add_action self._cancel_button = ControlButton('Cancel') self._cancel_button.value = self.__cancel_action self._formset = [('', '_text', ''), ('', '_add_button', '_cancel_button', '')]
def __init__(self): super(VehTrajAnalytics, self).__init__('Vehicle Trajectory Analytics') #Definition of the forms fields self._firstname = ControlText('First name', 'Default value') self._middlename = ControlText('Middle name') self._lastname = ControlText('Lastname name') self._fullname = ControlText('Full name') self._button = ControlButton('Press this button') self._button2 = ControlButton('Press this button2') self._outputDir = ControlDir("Output Directory") self._inputFile = ControlFile("Input Trajectory File") self._load = ControlButton("Load") self._save = ControlButton("Save") self._vehicleId = ControlCombo("Vehicle id") self._time = ControlCombo("Time(sec)") self._positionX = ControlCombo("PositionX (feet)") self._positionY = ControlCombo("PositionY (feet)") # Instrumented vehicle trajectories self._radarRange = ControlCombo("Radar range (feet)") self._radarAngle = ControlCombo("Radar angle (degrees)") self._centerline = ControlFile("CenterlineFile") #all traffic stream self._lane = ControlCombo("Lane") self._vLength = ControlCombo("Vehicle Length") self._distanceAlong = ControlCombo("Distance Along Corridor") #Define the button action self._button.value = self.__buttonAction self.data = None self.outFolder = None self.formset = [[('_inputFile', '_load'), '_vehicleId', "_time", '_positionX', "_positionY", "_distanceAlong"], "=", { 'All Vehicle Trajectories': ['_lane', '_vLength'], 'Instrumented Vehicle Trajectories': ['_radarAngle', '_radarRange'] }, '=', ('_outputDir', '_save')] self._load.value = self.__loadAction self._save.value = self.__saveAction
def __init__(self, timeline=None): super(GraphsEventsGenerator, self).__init__('Apply a function to the graph values', parent_win=timeline) self.setContentsMargins(10, 10, 10, 10) self._timeline = timeline # Definition of the forms fields self._graphs_list = ControlList('Graphs list (try double click)') self._equation = ControlTextArea('Equation') self._graphname = ControlText('Graph name') self._genevts_btn = ControlButton('Generate graph') self._formset = [ (['_graphs_list'], '||', [ '_graphname', '_equation', '_genevts_btn', ]), ] self._graphs_list.cell_double_clicked_event = self.__cell_double_clicked_evt self._graphs_list.readonly = True self._graphs_list.select_entire_row = True self._genevts_btn.value = self.__generage_events_evt
def __init__(self, timelineWidget=None): super(GraphsProperties, self).__init__('Graphs properties') self.setContentsMargins(10, 10, 10, 10) self._timeline = timelineWidget # Definition of the forms fields self._graphs_list = ControlList('Graphs list') self._name = ControlText('Name') self._min_value = ControlNumber('Min') self._max_value = ControlNumber('Max') self._values_zoom = ControlSlider('Amplitude', 100, 60, 400) self._values_top = ControlNumber('Top position', 0, -1000, 1000) self._remove_graph_btn = ControlButton('Remove graph') self._formset = [ (['_graphs_list', '_remove_graph_btn'], '||', [ ' ', '_name', ('_min_value', '_max_value'), ('_values_top', ' '), '_values_zoom', ' ' ]), ] self._graphs_list.itemSelectionChanged = self.__graphs_list_selection_changed self._loaded = False self._name.changed = self.__save_graphs_changes self._min_value.changed = self.__save_graphs_changes self._max_value.changed = self.__save_graphs_changes self._values_zoom.changed = self.__save_graphs_changes self._values_top.changed = self.__save_graphs_changes
def __init__(self): # Begin making the GUI shown when this sensor is selected self._widget = BaseWidget() self._widget.threshold = ControlSlider( label="Threshold", default=18, min=0, max=255 ) self._widget.threshold.changed_event = self._update_params self._widget.min_size = ControlSlider( label="Minimum Size", default=50, min=0, max=200, ) self._widget.min_size.changed_event = self._update_params self._widget.on_threshold = ControlSlider( label="Frequency Threshold", default=17, min=0, max=255 ) self._widget.on_threshold.changed_event = self._update_params self._widget.x_bounds_label = ControlLabel( label="X Bounds" ) self._widget.x_bounds = ControlBoundingSlider( label="X Bounds", default=[0, 640], min=0, max=640, horizontal=True ) self._widget.x_bounds.convert_2_int = True self._widget.x_bounds.changed_event = self._update_params self._widget.y_bounds_label = ControlLabel( label="Y Bounds" ) self._widget.y_bounds = ControlBoundingSlider( label="Y Bounds", default=[0, 512], min=0, max=512, horizontal=True ) self._widget.y_bounds.convert_2_int = True self._widget.y_bounds.changed_event = self._update_params self._widget.save_background = ControlButton( label="Save background" ) self._widget.save_background.value = self._save_background
def __init__(self): super(AdminStatsApp, self).__init__('Admin stats') self._totalExec_begin = ControlDate('Starting date', '2014-10-10') self._totalExec_end = ControlDate('Ending date', '2015-10-10') self._totalExec_btn = ControlButton('Refresh') self._totalExec_graph = ControlVisVis('Total execution time') self._apps_list = ControlCombo('Filter by application') self._totalExecApp_graph = ControlVisVis( 'Total execution time per application') self._servers_list = ControlCombo('Filter by server') self._totalExecServer_graph = ControlVisVis( 'Total execution time per server') self._formset = [ ('_totalExec_begin', '_totalExec_end', '_totalExec_btn'), 'h3:Total execution time', '_totalExec_graph', 'h3:Total execution time per application', '_apps_list', '_totalExecApp_graph', 'h3:Total execution time per server', '_servers_list', '_totalExecServer_graph' ] self._totalExec_btn.value = self.__total_exec_stats self._apps_list.addItem('--- All ---', '') for application in Algorithm.objects.all(): self._apps_list.addItem(str(application.algorithm_name), str(application.algorithm_class)) self._servers_list.addItem('--- All ---', '') for server in Server.objects.all().order_by('server_name'): self._servers_list.addItem(str(server.server_name), str(server.pk))
def __init__(self): super().__init__('Open oogstlijst') self._file = ControlFile('Project') self._file.filter = "OLM files (*.olm)" self._button_continue = ControlButton('Kies') self._button_continue.value = self.open_file
def __init__(self, timeline=None): super(Graph2Event, self).__init__('Graph to event', parent_win=timeline) self.setContentsMargins(10, 10, 10, 10) self._timeline = timeline # Definition of the forms fields self._graphs_list = ControlList('Graphs list (try double click)') self._equation = ControlTextArea('Equation') self._eventname = ControlText('Event name', 'New event') self._rownumber = ControlNumber('Row number', 0, 0, 1000) self._mindiff = ControlNumber('Minimum of frames', 0, 0, 1000000) self._genevts_btn = ControlButton('Generate events') self._formset = [ (['_graphs_list'], '||', [ ('_eventname', '_rownumber', '_mindiff'), '_equation', '_genevts_btn', ]), ] self._graphs_list.cell_double_clicked_event = self.__cell_double_clicked_evt self._graphs_list.readonly = True self._graphs_list.select_entire_row = True self._genevts_btn.value = self.__generage_events_evt
def __init__(self): super(BaseWindow, self).__init__('Test') #Definition of the forms fields self._mdiArea = ControlMdiArea() self._textField = ControlText("Example") self._projectTree = ControlDockWidget('Project tree', side=ControlDockWidget.SIDE_RIGHT) self._details = ControlDockWidget('Details', side=ControlDockWidget.SIDE_RIGHT) self._addWindow = ControlButton('Add window') self._formset = [ '_addWindow','_textField', '_mdiArea'] self._details.value = SimpleExample1() #self._mdiArea.showCloseButton = False self._addWindow.value = self.__addWindow self.mainmenu.append( { 'File': [ {'Save as': self.saveWindow}, {'Open as': self.loadWindow}, '-', {'Exit': self.__exit}, ] } )
def __init__(self): # Begin making the GUI shown when this sensor is selected self._widget = BaseWidget() self._widget.threshold = ControlSlider(label="Threshold", default=18, min=0, max=255) self._widget.threshold.changed_event = self._update_params self._widget.min_size = ControlSlider( label="Minimum Size", default=50, min=0, max=200, ) self._widget.min_size.changed_event = self._update_params self._widget.sample_radius = ControlSlider(label="Sample Radius", default=17, min=0, max=200) self._widget.sample_radius.changed_event = self._update_params self._widget.show_button = ControlButton(label="Show Camera") self._widget.show_button.value = self._show_camera self._widget.before_close_event = self._hide_camera
def __init__(self, timeline=None): super(ImportWindow, self).__init__('Import file', parent_win=timeline) self.setContentsMargins(10, 10, 10, 10) self._timeline = timeline # Definition of the forms fields self._filetype = ControlCombo('Please select the type of file you would like to import:') self._importButton = ControlButton('Import') self._panel = ControlEmptyWidget('Panel') self._file = ControlFile('File to import') self._panel.value = self._file self._filetype.add_item('Events file', 0) self._filetype.add_item('Graph file', 1) self._filetype.add_item('Bonsai events file', 2) self._formset = [ ('_filetype', ' '), '_panel', (' ', '_importButton'), ' '] self._filetype.changed_event = self.__fileTypeChanged self._importButton.value = self.__importData from pyforms.gui.dialogs.csv_parser import CsvParserDialog self._graphCsvParserDlg = CsvParserDialog() self._graphCsvParserDlg.xField.label = "Value column" self._graphCsvParserDlg.yField.hide() self._graphCsvParserDlg.zField.hide() self._graphCsvParserDlg.loadButton.hide() self._bonsaiImportDlg = BonsaiImportFileDlg()
def __init__(self): self._camera = ThorlabsDCx() self._measuring = False # Begin making the GUI shown when this sensor is selected self._widget = BaseWidget() self._widget.threshold = ControlSlider(label="Threshold", default=18, min=0, max=255) self._widget.min_size = ControlSlider( label="Minimum Size", default=50, min=0, max=200, ) self._widget.sample_radius = ControlSlider(label="Sample Radius", default=17, min=0, max=200) self._widget.show_button = ControlButton(label="Show Camera") self._widget.show_button.value = self._show_camera self._widget.before_close_event = self._hide_camera self._timer.timeout.connect(self._get_frame)
def __init__(self): super(SimpleExample1, self).__init__('Simple example 1') #Definition of the forms fields self._firstname = ControlText('Senetence', 'Default value') self._button = ControlButton('Press this button')
def __init__(self): super(SimpleExample1,self).__init__('CoolStuff') self._filename = ControlText('Filename') self._readcard = ControlText('Readout Card Number') self._frames = ControlText('Number of Frames') self._datamode = ControlText('Data Mode') self._button = ControlButton('Start Data Acquisition')
def __init__(self, columns, parent=None): super(GenericCsvParserDialog, self).__init__('CSV Choose the columns', parent_win=parent) self._filename = None self._columns = columns self._columns_indexes = [] self._rownum = 0 # Definition of the forms fields self._filename = ControlFile('CSV File') self._separator = ControlText('Separator', 'auto') self._startingrow = ControlNumber('Starting row', 0) for index, column in enumerate(columns): setattr(self, '_col_{0}'.format(index), ControlNumber(column, index, -1, 1000)) self._filePreview = ControlList('Preview') self._loadButton = ControlButton('Load') form_row = ['_separator'] + [ '_col_{0}'.format(index) for index, column in enumerate(columns) ] + ['_loadButton'] self._formset = [('_filename', '_startingrow'), tuple(form_row), '_filePreview'] self._separator.changed_event = self.__refreshPreview self._filename.changed_event = self.__refreshPreview self._startingrow.changed_event = self.__refreshPreview self._loadButton.value = self.load self._load_event = None
def __init__(self): super().__init__('Oogstlijst Manager') self._file = ControlSaveFile('Opslaan') self._file.filter = 'Oogstlijst Manager bestanden (*.olm)' self._select_button = ControlButton('Verder') self._select_button.value = self.select self.formset = ['_file', '_select_button']
def __init__(self): super().__init__('Nieuwe oogstlijst') self._nameField = ControlText('Naam') self._button_continue= ControlButton('Begin') self._button_continue.value = self._continue self.formset = ['_nameField', '_button_continue']
def __init__(self): super(SimpleExample1, self).__init__('Simple Example 1') self._firstname = ControlText('First Name', 'Default value') self._middlename = ControlText('Middle name') self._lastname = ControlText('Last name') self._fullname = ControlText('Full name') self._button = ControlButton("press this button") self._button.value = self._buttonAction
def __init__(self): super(SimpleExample1, self).__init__('Simple example 1') #Definition of the forms fields self._firstname = ControlText('First name', 'Default value') self._middlename = ControlText('Middle name') self._lastname = ControlText('Lastname name') self._fullname = ControlText('Full name') self._button = ControlButton('Press this button')
def __init__(self, parent=None): super(CsvParserDialog, self).__init__('CSV Choose the columns', parent_win = parent) self._filename = None # Definition of the forms fields self._filename = ControlFile('CSV File') self._separator = ControlText('Separator', ';') self._startingrow = ControlNumber('Starting row', 0) self._frameCol = ControlNumber('Frame column', 0, 0, 100) self._xCol = ControlNumber('X column', 1, 0, 100) self._yCol = ControlNumber('Y column', 2, 0, 100) self._zCol = ControlNumber('Z column', 3, 0, 100) self._filePreview = ControlList('Preview') self._loadButton = ControlButton('Load') self._formset = [('_filename','_startingrow'), ('_separator', '_frameCol', '_xCol', '_yCol', '_zCol', '_loadButton'), '_filePreview'] self._separator.changed_event = self.__refreshPreview self._filename.changed_event = self.__refreshPreview self._startingrow.changed_event = self.__refreshPreview
def __init__(self, update_function): super().__init__("New Saved Point") self._update_function = update_function self._text = ControlText(label="Name") self._done_button = ControlButton(label="Done") self._done_button.value = self._done
def __init__(self, isCreating): Client.__init__(self, '', '') BaseWidget.__init__(self, 'Client') self.__isCreating = isCreating self._idField = ControlText("Id") if not isCreating: self._idField.enabled = False self._nameField = ControlText("Name") self._buttonField = ControlButton('Add a new client') self._buttonField.value = self._updateAction self._label = ControlLabel("")
def __init__(self, parent=None): super(CsvParserDialog, self).__init__('CSV Choose the columns', parentWindow = parent) self._filename = None # Definition of the forms fields self._filename = ControlFile('CSV File') self._separator = ControlText('Separator', ';') self._startingrow = ControlNumber('Starting row', 0) self._frameCol = ControlNumber('Frame column', 0, 0, 100) self._xCol = ControlNumber('X column', 1, 0, 100) self._yCol = ControlNumber('Y column', 2, 0, 100) self._zCol = ControlNumber('Z column', 3, 0, 100) self._filePreview = ControlList('Preview') self._loadButton = ControlButton('Load') self._formset = [('_filename','_startingrow'), ('_separator', '_frameCol', '_xCol', '_yCol', '_zCol', '_loadButton'), '_filePreview'] self._separator.changed = self.__refreshPreview self._filename.changed = self.__refreshPreview self._startingrow.changed = self.__refreshPreview
class CsvParserDialog(BaseWidget): def __init__(self, parent=None): super(CsvParserDialog, self).__init__('CSV Choose the columns', parentWindow = parent) self._filename = None # Definition of the forms fields self._filename = ControlFile('CSV File') self._separator = ControlText('Separator', ';') self._startingrow = ControlNumber('Starting row', 0) self._frameCol = ControlNumber('Frame column', 0, 0, 100) self._xCol = ControlNumber('X column', 1, 0, 100) self._yCol = ControlNumber('Y column', 2, 0, 100) self._zCol = ControlNumber('Z column', 3, 0, 100) self._filePreview = ControlList('Preview') self._loadButton = ControlButton('Load') self._formset = [('_filename','_startingrow'), ('_separator', '_frameCol', '_xCol', '_yCol', '_zCol', '_loadButton'), '_filePreview'] self._separator.changed = self.__refreshPreview self._filename.changed = self.__refreshPreview self._startingrow.changed = self.__refreshPreview #self._filename.value = '/home/ricardo/Downloads/2012.12.01_13.48_3D_POSITIONS_version_03.06.2015.csv' @property def filename(self): return self._filename.value @filename.setter def filename(self, value): self._filename.value = value self.__refreshPreview() @property def loadFileEvent(self): return self._loadButton.value @loadFileEvent.setter def loadFileEvent(self, value): self._loadButton.value = value @property def separator(self): return self._separator.value @property def starting_row(self): return self._startingrow.value @starting_row.setter def starting_row(self, value): self._startingrow.value = value @property def frameColumn(self): return self._frameCol.value @frameColumn.setter def frameColumn(self, value): self._frameCol.value = value @property def xColumn(self): return self._xCol.value @xColumn.setter def xColumn(self, value): self._xCol.value = value @property def yColumn(self): return self._yCol.value @yColumn.setter def yColumn(self, value): self._yCol.value = value @property def zColumn(self): return self._zCol.value @zColumn.setter def zColumn(self, value): self._zCol.value = value @property def loadButton(self): return self._loadButton @property def xField(self): return self._xCol @property def yField(self): return self._yCol @property def zField(self): return self._zCol def __iter__(self): if self._filename.value != None and self._filename.value != '': csvfile = open(self._filename.value, 'U') self._spamreader = csv.reader(csvfile, delimiter=self._separator.value) for i in range(int(self._startingrow.value)): next(self._spamreader, None) # skip the headers self._cols = [self.frameColumn] if self.xField.visible: self._cols.append(self.xColumn) if self.yField.visible: self._cols.append(self.yColumn) if self.zField.visible: self._cols.append(self.zColumn) else: self._spamreader = None return self # For compatibility with python 3 def __next__(self): return self.next() def next(self): if self._spamreader != None: row = self._spamreader.next() return [row[int(col)] for col in self._cols] else: raise StopIteration() def __refreshPreview(self): if self._filename.value != None and self._filename.value != '': with open(self._filename.value, 'U') as csvfile: spamreader = csv.reader(csvfile, delimiter=self._separator.value) for i in range(int(self._startingrow.value)): next(spamreader, None) # skip the headers self._filePreview.value = [] self._filePreview.horizontalHeaders = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", ] for i, row in enumerate(spamreader): self._filePreview += row if i >= 10: break def load(self): self.__refreshPreview() self._loadButton.value()