class MDSplusXdBox(props, MDSplusDtypeSelWidget, MDSplusWidget, Window): __gtype_name__ = "MDSplusXdBox" def inHBox(self, w): hb = HBox() hb.pack_start(w, False, False, 0) return hb def __init__(self, node=None, value=None): Window.__init__(self) MDSplusWidget.__init__(self) if node is not None: self.node = node else: self.value = value hbtop = HBox(homogeneous=False) self.on = CheckButton(label="On") self.parent_on = CheckButton(label="Parent") self.parent_on.set_sensitive(False) self.path = MDSplusPathWidget() if node is not None: self.path._node = self._node hbtags = HBox(homogeneous=False) self.tags = Entry() self.tags.set_width_chars(60) expression_menu = self.dtype_menu(tuple(), varname="dtype_expression", no_show=True) axis_menu = self.dtype_menu(("Range",), varname="dtype_axis", no_show=True) window_menu = self.dtype_menu(("Window",), varname="dtype_window", no_show=True) dispatch_menu = self.dtype_menu(("Dispatch",), varname="dtype_dispatch", no_show=True) action_menu = self.dtype_menu(("Action",), varname="dtype_action", no_show=True) task_menu = self.dtype_menu(("Method", "Routine"), varname="dtype_task", no_show=True) any_menu = self.dtype_menu( ("Range", "Window", "Dispatch", "Action", "Method", "Routine"), varname="dtype_any", no_show=True ) menus = ( self.dtype_expression, self.dtype_axis, self.dtype_dispatch, self.dtype_action, self.dtype_task, self.dtype_window, self.dtype_any, ) hbtop.pack_start(self.on, False, False, 10) hbtop.pack_start(self.parent_on, False, False, 10) hbtop.pack_start(self.path, False, False, 0) hbtags.pack_start(Label("Tags:"), False, False, 10) hbtags.pack_start(self.tags, False, False, 0) self.action = MDSplusActionWidget() self.windoww = MDSplusWindowWidget() self.sequential = MDSplusSequentialWidget() self.expression = MDSplusExpressionWidget() self.method = MDSplusMethodWidget() self.routine = MDSplusRoutineWidget() self.dispatch = MDSplusDispatchWidget() self.range = MDSplusRangeWidget() self.widgets = ( self.action, self.sequential, self.expression, self.method, self.routine, self.dispatch, self.range, self.windoww, ) self.ok = Button(stock=STOCK_OK) self.cancel = Button(stock=STOCK_CANCEL) self.redo = Button(stock=STOCK_REDO) self.ok.connect("clicked", self.do_ok) self.cancel.connect("clicked", self.do_cancel) self.redo.connect("clicked", self.do_redo) hb2 = HBox() hb2.add(self.ok) hb2.add(self.redo) hb2.add(self.cancel) vb = VBox(homogeneous=False) vb.set_border_width(10) vb.pack_start(hbtop, False, False, 0) vb.pack_start(hbtags, False, False, 0) vb.pack_start(expression_menu, False, False, 0) vb.pack_start(axis_menu, False, False, 0) vb.pack_start(window_menu, False, False, 0) vb.pack_start(dispatch_menu, False, False, 0) vb.pack_start(action_menu, False, False, 0) vb.pack_start(task_menu, False, False, 0) vb.pack_start(any_menu, False, False, 0) for w in self.widgets: w.set_no_show_all(True) vb.pack_start(w, False, False, 0) vb.pack_start(hb2, False, False, 20) self.add(vb) self.do_redo(self.redo) self.putOnApply = True self.nidOffset = -1 def set_dtype(self): if hasattr(self, "_node"): try: exec("self.dtype=self.dtype_%s" % (self.node.usage.lower(),)) except Exception: self.dtype = self.dtype_expression else: self.dtype = self.dtype_any self.dtype.set_no_show_all(False) def do_ok(self, button): try: value = self.value if not self.putOnApply: self.hide() elif hasattr(self, "_node"): try: self.node.record = value self.hide() except Exception: self.popupError(sys.exc_info()) else: self.value = value self.hide() except: pass def do_redo(self, button): if not hasattr(self, "_node"): self.value = _value self.set_dtype() else: self.path.reset() self.on.set_active(self.node.disabled == False) self.parent_on.set_active(self.node.parent_disabled == False) tags = self.node.tags if tags is None: self.tags.set_text("") else: taglist = "" for tag in tags: if taglist == "": taglist = tag else: taglist = taglist + "," + tag self.tags.set_text(taglist) self.set_dtype() try: self.value = self.record except: self.value = None self.reset() def do_cancel(self, button): self.hide()
class MDSplusXdBox(props,MDSplusDtypeSelWidget,MDSplusWidget,Window): __gtype_name__ = 'MDSplusXdBox' def inHBox(self,w): hb=HBox() hb.pack_start(w,False,False,0) return hb def __init__(self,node=None,value=None): Window.__init__(self) MDSplusWidget.__init__(self) if node is not None: self.node=node else: self.value=value hbtop=HBox(homogeneous=False) self.on=CheckButton(label="On") self.parent_on=CheckButton(label="Parent") self.parent_on.set_sensitive(False) self.path=MDSplusPathWidget() if node is not None: self.path._node=self._node hbtags=HBox(homogeneous=False) self.tags=Entry() self.tags.set_width_chars(60) expression_menu=self.dtype_menu(tuple(),varname='dtype_expression',no_show=True) axis_menu=self.dtype_menu(('Range',),varname='dtype_axis',no_show=True) window_menu=self.dtype_menu(('Window',),varname='dtype_window',no_show=True) dispatch_menu=self.dtype_menu(('Dispatch',),varname='dtype_dispatch',no_show=True) action_menu=self.dtype_menu(('Action',),varname='dtype_action',no_show=True) task_menu=self.dtype_menu(('Method','Routine'),varname='dtype_task',no_show=True) any_menu=self.dtype_menu(('Range','Window','Dispatch','Action','Method','Routine'),varname='dtype_any',no_show=True) menus=(self.dtype_expression,self.dtype_axis,self.dtype_dispatch,self.dtype_action,self.dtype_task,self.dtype_window,self.dtype_any) hbtop.pack_start(self.on,False,False,10) hbtop.pack_start(self.parent_on,False,False,10) hbtop.pack_start(self.path,False,False,0) hbtags.pack_start(Label("Tags:"),False,False,10) hbtags.pack_start(self.tags,False,False,0) self.action=MDSplusActionWidget() self.windoww=MDSplusWindowWidget() self.sequential=MDSplusSequentialWidget() self.expression=MDSplusExpressionWidget() self.method=MDSplusMethodWidget() self.routine=MDSplusRoutineWidget() self.dispatch=MDSplusDispatchWidget() self.range=MDSplusRangeWidget() self.widgets=(self.action,self.sequential,self.expression,self.method,self.routine,self.dispatch,self.range,self.windoww) self.ok=Button(stock=STOCK_OK) self.cancel=Button(stock=STOCK_CANCEL) self.redo=Button(stock=STOCK_REDO) self.ok.connect("clicked",self.do_ok) self.cancel.connect("clicked",self.do_cancel) self.redo.connect("clicked",self.do_redo) hb2=HBox() hb2.add(self.ok) hb2.add(self.redo) hb2.add(self.cancel) vb=VBox(homogeneous=False) vb.set_border_width(10) vb.pack_start(hbtop,False,False,0) vb.pack_start(hbtags,False,False,0) vb.pack_start(expression_menu,False,False,0) vb.pack_start(axis_menu,False,False,0) vb.pack_start(window_menu,False,False,0) vb.pack_start(dispatch_menu,False,False,0) vb.pack_start(action_menu,False,False,0) vb.pack_start(task_menu,False,False,0) vb.pack_start(any_menu,False,False,0) for w in self.widgets: w.set_no_show_all(True) vb.pack_start(w,False,False,0) vb.pack_start(hb2,False,False,20) self.add(vb) self.do_redo(self.redo) self.putOnApply = True self.nidOffset = -1 def set_dtype(self): if hasattr(self,'_node'): try: exec 'self.dtype=self.dtype_%s' % (self.node.usage.lower(),) except Exception,e: self.dtype=self.dtype_expression else:
class GeoForm(Table): __gsignals__ = { 'search': (SIGNAL_ACTION, TYPE_NONE, (TYPE_FLOAT, TYPE_FLOAT)) } def __init__(self): Table.__init__(self, 1, 5) self.entry1 = Entry() self.entry2 = Entry() self.button = Button("Search") self.attach(self.entry1, 0, 1, 0, 1) self.attach(self.entry2, 1, 2, 0, 1) self.attach(self.button, 2, 3, 0, 1) self.entry1.set_width_chars(12) self.entry2.set_width_chars(12) self.entry1.set_text("59.666042") self.entry2.set_text("16.481794") self.button.connect('clicked', self.clicked) def get_lat_long(self): s1 = self.entry1.get_text() s2 = self.entry2.get_text() re1 = FMT1.match(s1) re2 = FMT1.match(s2) if re1 and re2: return float(re1.group(0)), float(re2.group(0)) re1 = FMT2.match(s1) re2 = FMT3.match(s2) if re1 and re2: c1 = re1.group(3), re1.group(1), re1.group(2) c2 = re2.group(3), re2.group(1), re2.group(2) return geo2dec(c1, c2) re1 = FMT4.match(s1) re2 = FMT5.match(s2) if re1 and re1: c1 = re1.group(1), re1.group(2), re1.group(3) c2 = re2.group(1), re2.group(2), re2.group(3) return geo2dec(c1, c2) raise SyntaxError() def clicked(self, event): try: self.emit('search', *self.get_lat_long()) except SyntaxError: pass
class MDSplusXdBox(props,MDSplusDtypeSelWidget,MDSplusWidget,Window): __gtype_name__ = 'MDSplusXdBox' def inHBox(self,w): hb=HBox() hb.pack_start(w,False,False,0) return hb def __init__(self,node=None,value=None): Window.__init__(self) MDSplusWidget.__init__(self) if node is not None: self.node=node else: self.value=value hbtop=HBox(homogeneous=False) self.on=CheckButton(label="On") self.parent_on=CheckButton(label="Parent") self.parent_on.set_sensitive(False) self.path=MDSplusPathWidget() if node is not None: self.path._node=self._node hbtags=HBox(homogeneous=False) self.tags=Entry() self.tags.set_width_chars(60) expression_menu=self.dtype_menu(tuple(),varname='dtype_expression',no_show=True) axis_menu=self.dtype_menu(('Range',),varname='dtype_axis',no_show=True) window_menu=self.dtype_menu(('Window',),varname='dtype_window',no_show=True) dispatch_menu=self.dtype_menu(('Dispatch',),varname='dtype_dispatch',no_show=True) action_menu=self.dtype_menu(('Action',),varname='dtype_action',no_show=True) task_menu=self.dtype_menu(('Method','Routine'),varname='dtype_task',no_show=True) any_menu=self.dtype_menu(('Range','Window','Dispatch','Action','Method','Routine'),varname='dtype_any',no_show=True) menus=(self.dtype_expression,self.dtype_axis,self.dtype_dispatch,self.dtype_action,self.dtype_task,self.dtype_window,self.dtype_any) hbtop.pack_start(self.on,False,False,10) hbtop.pack_start(self.parent_on,False,False,10) hbtop.pack_start(self.path,False,False,0) hbtags.pack_start(Label("Tags:"),False,False,10) hbtags.pack_start(self.tags,False,False,0) self.action=MDSplusActionWidget() self.windoww=MDSplusWindowWidget() self.sequential=MDSplusSequentialWidget() self.expression=MDSplusExpressionWidget() self.method=MDSplusMethodWidget() self.routine=MDSplusRoutineWidget() self.dispatch=MDSplusDispatchWidget() self.range=MDSplusRangeWidget() self.widgets=(self.action,self.sequential,self.expression,self.method,self.routine,self.dispatch,self.range,self.windoww) self.ok=Button(stock=STOCK_OK) self.cancel=Button(stock=STOCK_CANCEL) self.redo=Button(stock=STOCK_REDO) self.ok.connect("clicked",self.do_ok) self.cancel.connect("clicked",self.do_cancel) self.redo.connect("clicked",self.do_redo) hb2=HBox() hb2.add(self.ok) hb2.add(self.redo) hb2.add(self.cancel) vb=VBox(homogeneous=False) vb.set_border_width(10) vb.pack_start(hbtop,False,False,0) vb.pack_start(hbtags,False,False,0) vb.pack_start(expression_menu,False,False,0) vb.pack_start(axis_menu,False,False,0) vb.pack_start(window_menu,False,False,0) vb.pack_start(dispatch_menu,False,False,0) vb.pack_start(action_menu,False,False,0) vb.pack_start(task_menu,False,False,0) vb.pack_start(any_menu,False,False,0) for w in self.widgets: w.set_no_show_all(True) vb.pack_start(w,False,False,0) vb.pack_start(hb2,False,False,20) self.add(vb) self.do_redo(self.redo) self.putOnApply = True self.nidOffset = -1 def set_dtype(self): if hasattr(self,'_node'): try: exec('self.dtype=self.dtype_%s' % (self.node.usage.lower(),)) except Exception: self.dtype=self.dtype_expression else: self.dtype=self.dtype_any self.dtype.set_no_show_all(False) def do_ok(self,button): try: value=self.value if not self.putOnApply: self.hide() elif hasattr(self,'_node'): try: self.node.record=value self.hide() except Exception: self.popupError(sys.exc_info()[1]) else: self.value=value self.hide() except: pass def do_redo(self,button): if not hasattr(self,'_node'): self.value=_value self.set_dtype() else: self.path.reset() self.on.set_active(self.node.disabled==False) self.parent_on.set_active(self.node.parent_disabled==False) tags = self.node.tags if tags is None: self.tags.set_text('') else: taglist='' for tag in tags: if taglist == '': taglist=tag else: taglist=taglist+','+tag self.tags.set_text(taglist) self.set_dtype() try: self.value=self.record except: self.value=None self.reset() def do_cancel(self,button): self.hide()