Пример #1
0
class GraphsProperties(BaseWidget):
    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 show(self):
        super(GraphsProperties, self).show()
        self._loaded = False

        self._graphs_list.clear()
        for graph in self._timeline._charts:
            self._graphs_list += [graph.name]

    def __graphs_list_selection_changed(self):
        index = self._graphs_list.mouseSelectedRowIndex
        if index is not None:
            graph = self._timeline._charts[index]

            exponent_min = abs(
                decimal.Decimal(graph._graphMin).as_tuple().exponent)
            exponent_max = abs(
                decimal.Decimal(graph._graphMax).as_tuple().exponent)
            exponent_min = 4 if exponent_min > 4 else exponent_min
            exponent_max = 4 if exponent_min > 4 else exponent_min

            self._name.value = graph.name
            self._min_value.decimals = exponent_min
            self._min_value.value = graph._graphMin
            self._max_value.decimals = exponent_max

            self._max_value.value = graph._graphMax
            self._values_zoom.value = graph._zoom * 100.0
            self._values_top.value = graph._top

            self._loaded = True

    def __save_graphs_changes(self):
        index = self._graphs_list.mouseSelectedRowIndex

        if self._loaded and index is not None:
            graph = self._timeline._charts[index]

            graph.name = self._name.value
            self._graphs_list.setValue(0, index, self._name.value)
            graph._graphMin = self._min_value.value
            graph._graphMax = self._max_value.value
            graph._zoom = self._values_zoom.value / 100.0
            graph._top = self._values_top.value

            self._timeline.repaint()
Пример #2
0
class GraphsProperties(BaseWidget):

	def __init__(self, timelineWidget=None, parentWindow=None):
		super(GraphsProperties, self).__init__('Graphs properties', parentWindow=parentWindow)
		self.setContentsMargins(10, 10, 10, 10)
		self._timeline = timelineWidget

		# Definition of the forms fields
		self._graphs_list = ControlList('Datasets')
		self._name        = ControlText('Name')
		self._min_value   = ControlNumber('Min', 0, -sys.float_info.max, sys.float_info.max)
		self._max_value   = ControlNumber('Max', 0, -sys.float_info.max, sys.float_info.max)
		self._values_zoom = ControlSlider('Amplitude', 100, 60, 400)
		self._values_top  = ControlNumber('Bottom', 0, -1000, 1000)
		self._remove_graph_btn = ControlButton('Remove graph')
		self._value 	  = ControlLabel()

		self._formset = [
			(
				['_graphs_list','_remove_graph_btn'],
				'||', 
				[
					' ',
					'_name',
					('_min_value', '_max_value'),
					('_values_top',' '),
					'_values_zoom',
					'info:Choose one dataset and move the mouse over the graph line to visualize the coordenates.',
					'_value'
				]),
			]

		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

		self._name.enabled          = False
		self._min_value.enabled     = False
		self._max_value.enabled     = False
		self._values_zoom.enabled   = False
		self._values_top.enabled    = False
		self._remove_graph_btn.enabled = False

		self._remove_graph_btn.value = self.__remove_chart

	@property
	def selected_chart(self):
		index = self._graphs_list.mouseSelectedRowIndex
		return self._timeline._charts[0] if (index is not None) else None
	
	@property
	def coordenate_text(self): return self._value
	@coordenate_text.setter
	def coordenate_text(self, value): self._value.value = str(value) if value else ''
	


	def show(self):
		super(GraphsProperties, self).show()
		self._loaded = False

		self._graphs_list.clear()            
		for graph in self._timeline._charts:
			self._graphs_list += [graph.name]

	def __remove_chart(self):
		index = self._graphs_list.mouseSelectedRowIndex
		if index is not None:
			self._graphs_list -= -1
			self._timeline._charts.pop(index)
			self._timeline.repaint()


	def __graphs_list_selection_changed(self):        
		index = self._graphs_list.mouseSelectedRowIndex
		if index is not None:
			graph = self._timeline._charts[index]

			exponent_min = abs(decimal.Decimal(graph._graphMin).as_tuple().exponent)
			exponent_max = abs(decimal.Decimal(graph._graphMax).as_tuple().exponent)
			exponent_min = 4 if exponent_min>4 else exponent_min
			exponent_max = 4 if exponent_min>4 else exponent_min

			self._name.value            = graph.name
			self._min_value.decimals    = exponent_min
			self._min_value.value       = graph._graphMin
			self._max_value.decimals    = exponent_max
			
			self._max_value.value   = graph._graphMax
			self._values_zoom.value = graph._zoom * 100.0
			self._values_top.value  = graph._top

			self._loaded = True

			self._name.enabled          = True
			self._min_value.enabled     = True
			self._max_value.enabled     = True
			self._values_zoom.enabled   = True
			self._values_top.enabled    = True
			self._remove_graph_btn.enabled = True
		else:
			self._name.enabled          = False
			self._min_value.enabled     = False
			self._max_value.enabled     = False
			self._values_zoom.enabled   = False
			self._values_top.enabled    = False
			self._remove_graph_btn.enabled = False


	def __save_graphs_changes(self):
		index = self._graphs_list.mouseSelectedRowIndex
			
		if self._loaded and index is not None:
			graph = self._timeline._charts[index]

			logger.debug('Before: Min: {0} | Max: {1} Zoom: {2}'.format(graph.graph_min, graph.graph_max,graph.zoom ) )


			graph.name      = self._name.value; self._graphs_list.setValue(0, index, self._name.value)
			graph.graph_min = self._min_value.value
			graph.graph_max = self._max_value.value

			graph.zoom     	= self._values_zoom.value / 100.0
			graph.top      	= self._values_top.value  

			logger.debug('Min: {0} | Max: {1} Zoom: {2}'.format(graph.graph_min, graph.graph_max,graph.zoom ) )

			self._timeline.repaint()

	@property
	def charts(self):
		return self._timeline._charts
Пример #3
0
class GraphsProperties(BaseWidget):

	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 show(self):
		super(GraphsProperties, self).show()
		self._loaded = False

		self._graphs_list.clear()            
		for graph in self._timeline._charts:
			self._graphs_list += [graph.name]

	def __graphs_list_selection_changed(self):        
		index = self._graphs_list.mouseSelectedRowIndex
		if index is not None:
			graph = self._timeline._charts[index]

			exponent_min = abs(decimal.Decimal(graph._graphMin).as_tuple().exponent)
			exponent_max = abs(decimal.Decimal(graph._graphMax).as_tuple().exponent)
			exponent_min = 4 if exponent_min>4 else exponent_min
			exponent_max = 4 if exponent_min>4 else exponent_min

			self._name.value            = graph.name
			self._min_value.decimals    = exponent_min
			self._min_value.value       = graph._graphMin
			self._max_value.decimals    = exponent_max
			
			self._max_value.value   = graph._graphMax
			self._values_zoom.value = graph._zoom * 100.0
			self._values_top.value  = graph._top

			self._loaded = True

	def __save_graphs_changes(self):
		index = self._graphs_list.mouseSelectedRowIndex
			
		if self._loaded and index is not None:
			graph = self._timeline._charts[index]

			graph.name      = self._name.value; self._graphs_list.setValue(0, index, self._name.value)
			graph._graphMin = self._min_value.value   
			graph._graphMax = self._max_value.value   
			graph._zoom     = self._values_zoom.value / 100.0
			graph._top      = self._values_top.value  

			self._timeline.repaint()