self.raw2] = self.dataread.update(readcmd, ch1, ch2, self.redraw_timer.GetInterval(), Ach1, Ach2, raw_filename) self.draw_plot() if self.redraw_timer.GetInterval() != int(float(self.e.period) * 1000): self.redraw_timer.Stop() self.redraw_timer.Start(int(float(self.e.period) * 1000)) def on_exit(self, event): self.Destroy() def flash_status_message(self, msg, flash_len_ms=1500): self.statusbar.SetStatusText(msg) self.timeroff = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.on_flash_status_off, self.timeroff) self.timeroff.Start(flash_len_ms, oneShot=True) def on_flash_status_off(self, event): self.statusbar.SetStatusText('') if __name__ == '__main__': _app = guidata.qapplication() DataSetEditLayout.register(EvalStringItem, LineEditWidget) DataSetShowLayout.register(EvalStringItem, LineEditWidget) app = wx.PySimpleApp() app.frame = GraphFrame() app.frame.Show() app.MainLoop()
class SubDataSet(DataSet): dir = DirectoryItem("Directory", TEMPDIR) fname = FileOpenItem("Single file (open)", ("csv", "eta"), FILE_CSV.name) fnames = FilesOpenItem("Multiple files", "csv", FILE_CSV.name) fname_s = FileSaveItem("Single file (save)", "eta", FILE_ETA.name) class SubDataSetWidget(DataSetWidget): klass = SubDataSet class SubDataSetItem(ObjectItem): klass = SubDataSet DataSetEditLayout.register(SubDataSetItem, SubDataSetWidget) DataSetShowLayout.register(SubDataSetItem, SubDataSetWidget) class TestParameters(DataSet): """ DataSet test The following text is the DataSet 'comment': <br>Plain text or <b>rich text<sup>2</sup></b> are both supported, as well as special characters (α, β, γ, δ, ...) """ files = SubDataSetItem("files") string = StringItem("String") text = TextItem("Text") _bg = BeginGroup("A sub group") float_slider = FloatItem("Float (with slider)",
from guidata.dataset.qtitemwidgets import LineEditWidget, AbstractDataSetWidget from PyQt4.QtGui import QLineEdit, QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QDialog, QComboBox, QIcon ## Custum items class PasswordItem(StringItem): pass class PasswordLineEditWidget(LineEditWidget): def __init__(self, *args, **kargs): super(PasswordLineEditWidget, self).__init__(*args, **kargs) self.edit.setEchoMode(QLineEdit.Password) DataSetEditLayout.register(PasswordItem, PasswordLineEditWidget) class FloatRangeItem(DataItem): def from_string(self, value): try: l1,l2 = str(value).split(',') l1,l2 = float(l1), float(l2) return l1,l2 except: return None class FloatRangeEditWidget(AbstractDataSetWidget): def __init__(self, item, parent_layout): super(FloatRangeEditWidget, self).__init__(item, parent_layout) self.edit = self.group = QLineEdit()
FILE_CSV = tempfile.NamedTemporaryFile(suffix=".csv", dir=TEMPDIR) atexit.register(FILE_CSV.close) class SubDataSet(DataSet): dir = DirectoryItem("Directory", TEMPDIR) fname = FileOpenItem("Single file (open)", ("csv", "eta"), FILE_CSV.name) fnames = FilesOpenItem("Multiple files", "csv", FILE_CSV.name) fname_s = FileSaveItem("Single file (save)", "eta", FILE_ETA.name) class SubDataSetWidget(DataSetWidget): klass = SubDataSet class SubDataSetItem(ObjectItem): klass = SubDataSet DataSetEditLayout.register(SubDataSetItem, SubDataSetWidget) DataSetShowLayout.register(SubDataSetItem, SubDataSetWidget) class TestParameters(DataSet): """ DataSet test The following text is the DataSet 'comment': <br>Plain text or <b>rich text<sup>2</sup></b> are both supported, as well as special characters (α, β, γ, δ, ...) """ files = SubDataSetItem("files") string = StringItem("String") text = TextItem("Text") _bg = BeginGroup("A sub group") float_slider = FloatItem("Float (with slider)",
def __setitem__(self, key, value): if key in ('scale', 'physical length'): raise TypeError, _("Not mutable item.") setattr(self, key, value) # Register the new class as a DataSetItem class AxisParamWidget(DataSetWidget): klass = AxisParam class AxisParamItem(ObjectItem): klass = AxisParam DataSetEditLayout.register(AxisParamItem, AxisParamWidget) DataSetShowLayout.register(AxisParamItem, AxisParamWidget) class ScanningParam(DataSet): """Store the parameters describing a scanning probe measurement.""" filename = FileOpenItem(_('File name'), ('*'), default='', help=_('Raw file name')) type = ChoiceItem( _('Type of data'), [('topo', _('Topography')), ('ivcurve', _('IV curve')), ('ivmap', _('IV map')), ('didvcurve', _('dIdV curve')), ('didvmap', _('dIdV map')),
from guidata.dataset.qtitemwidgets import LineEditWidget, AbstractDataSetWidget ## Custum items class PasswordItem(StringItem): pass class PasswordLineEditWidget(LineEditWidget): def __init__(self, *args, **kargs): super(PasswordLineEditWidget, self).__init__(*args, **kargs) self.edit.setEchoMode(QLineEdit.Password) DataSetEditLayout.register(PasswordItem, PasswordLineEditWidget) class FloatRangeItem(DataItem): def from_string(self, value): try: l1,l2 = unicode(value).split(',') l1,l2 = float(l1), float(l2) return l1,l2 except: return None class FloatRangeEditWidget(AbstractDataSetWidget): def __init__(self, item, parent_layout): super(FloatRangeEditWidget, self).__init__(item, parent_layout) self.edit = self.group = QLineEdit()
[self.data, self.data2, self.time, self.raw1, self.raw2] = self.dataread.update( readcmd, ch1, ch2, self.redraw_timer.GetInterval(), Ach1, Ach2, raw_filename ) self.draw_plot() if self.redraw_timer.GetInterval() != int(float(self.e.period) * 1000): self.redraw_timer.Stop() self.redraw_timer.Start(int(float(self.e.period) * 1000)) def on_exit(self, event): self.Destroy() def flash_status_message(self, msg, flash_len_ms=1500): self.statusbar.SetStatusText(msg) self.timeroff = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.on_flash_status_off, self.timeroff) self.timeroff.Start(flash_len_ms, oneShot=True) def on_flash_status_off(self, event): self.statusbar.SetStatusText("") if __name__ == "__main__": _app = guidata.qapplication() DataSetEditLayout.register(EvalStringItem, LineEditWidget) DataSetShowLayout.register(EvalStringItem, LineEditWidget) app = wx.PySimpleApp() app.frame = GraphFrame() app.frame.Show() app.MainLoop()
def check_value(self, value): #raise Exception if value is None: return True return super(FloatOrNoneItem, self).check_value(value) def from_string(self, value): if value == 'None' or value == '': # None is allowed return None ret = super(FloatOrNoneItem, self).from_string(value) if ret is None: # But None from super is an error return 'Error' return ret DataSetEditLayout.register(IntOrNoneItem, LineEditWidget) DataSetEditLayout.register(FloatOrNoneItem, LineEditWidget) def valid_params(params): if not params: return False if not params.values()[0]: return False return True def has_ui_params(io): if valid_params(io.read_params): return True return valid_params(io.write_params)
#raise Exception if value is None: return True return super(FloatOrNoneItem, self).check_value(value) def from_string(self, value): if value == 'None' or value == '': # None is allowed return None ret = super(FloatOrNoneItem, self).from_string(value) if ret is None: # But None from super is an error return 'Error' return ret DataSetEditLayout.register(IntOrNoneItem, LineEditWidget) DataSetEditLayout.register(FloatOrNoneItem, LineEditWidget) def valid_params(params): if not params: return False if not params.values()[0]: return False return True def has_ui_params(io): if valid_params(io.read_params): return True return valid_params(io.write_params)