def addRequisiteData(self, RequisiteData_=None): """ Создать новую запись со всеми реквизиты объекта в хранилище. Данные реквизитов в виде словаря. @param RequisiteData_: Словарь значений реквизитов. Словарь реквизитов представлен в виде { 'имя реквизита':значение реквизита, ... 'имя спецификации документа':[список словарей реквизитов], ... } Если словарь значений не определен, тогда значения реквизитов заполняются значениями по умолчанию. @return: Возвращает True-сохранение прошло удачно, False-не удачно,None-ошибка. """ try: if RequisiteData_ is None: RequisiteData_ = {} self._setRequisiteData(RequisiteData_) if 'uuid' in RequisiteData_: obj_uuid = RequisiteData_['uuid'] else: obj_uuid = ic_uuid.get_uuid() result = self.add(obj_uuid, RequisiteData_) return obj_uuid except: ic.io_prnt.outErr( u'ОШИБКА сохранения словаря данных объекта <%s>' % self.name) return None
def init_data(self): """ Инициализация объекта. """ # Генерация идентификатора документа self.uuid = ic_uuid.get_uuid() # Проинициализировать все дочерние объекты self.init_children_data() self.save()
def _genLineName(self, Line_): """ Генерация имени линии по ее данным. @param Line_: Данные, описывающие линию. """ if 'name' in Line_: return Line_['name'] elif ('name' not in Line_) and \ ('from' in Line_ and 'to' in Line_): return Line_['from'] + '->' + Line_['to'] from ic.utils import ic_uuid return ic_uuid.get_uuid()
def init_signal(self): """ Функция инициации сигнала. """ # Генерируем uuid self.uuid = ic_uuid.get_uuid() # Значение self.value = None # Признак дальнейшей обработки сигнала. self._bSkip = True # Тип сигнала self.type = self.__class__.__name__
def PyScriptEdtDlg(parent, attr, text, pos, size, uuid_attr, bEnable=True): """ Диалоговое окно для редактирования скриптов. @type parent: C{wx.Window} @param parent: Указатель на родительское окно. @type attr: C{string} @param attr: Имя атрибута. @type text: C{string} @param text: Текст скрипта. @type pos: C{wx.Point} @param pos: Позиция. @type size: C{wx.Size} @param size: Размер редактора. @rtype: C{tuplpe} @return: Первый элемент признак редактирования, второй текст, третий новый uuid. """ # Определяем смещение видимой части окна old = text x, y = pos pos = parent.ClientToScreenXY(x, y) dlg = ic_pyed.icPyEditorDlg(parent, text, pos, size) if not bEnable: self.dlg.editor.SetReadOnlyMode() ret = dlg.ShowModal() prz = False if ret == wx.ID_OK: # Генерируем новый UUID old_uuid = uuid_attr if bEnable: text = dlg.editor.GetText() # Если текст изменился генерируем новый uuid if old != text: prz = True uuid_attr = ic_uuid.get_uuid() # запомнинаем точки останова dlg.editor.GetBreakpoints() SysProc.SetPointList(old_uuid, uuid_attr, attr, dlg.editor._Breakpoints, dlg.editor.GetText(), (dlg.editor.GetLineCount(), dlg.editor.GetIndent(), dlg.editor.GetEOLMode())) if dlg: dlg.Destroy() return prz, text, uuid_attr
def InitResource(res, *arg, **kwarg): if len(res['cols']) == 0: from ic.components import icgrid, icfont component = {} component['type'] = 'GridCell' spc = icgrid.SPC_IC_CELL util.icSpcDefStruct(icgrid.SPC_IC_CELL, component, True) util.icSpcDefStruct(icgrid.SPC_IC_CELLATTR, component['cell_attr'], True) util.icSpcDefStruct(icfont.SPC_IC_FONT, component['cell_attr']['font'], True) component['_uuid'] = ic_uuid.get_uuid() res['cols'].append(component) wx.MessageBox(_('Editor add default column to GridDataset')) return res
def __init__(self, component={}, logType=0, evalSpace=None, bDefSearch=True, fltDict=None): """ Конструктор для создания ссылки. @type component: C{dictionary} @param component: Словарь описания компонента. @type logType: C{int} @param logType: Тип лога (0 - консоль, 1- файл, 2- окно лога). @param evalSpace: Пространство имен, необходимых для вычисления внешних выражений. @type evalSpace: C{dictionary} @type bDefSearch: C{bool} @param bDefSearch: Используется если в пространстве имен нужный объект не обнаружен. Признак определяет искать ли нужное ресурсное описание в ресурсных файлах по умолчанию (./res/resource.tab). @type fltDict: C{dictionary} @param fltDict: Словарь заменяемых фильтров у источников данных. """ icwidget.icSimple.__init__(self, parent=None, component=component, logType=logType, evalSpace=evalSpace) # self.evalSpace = evalSpace # self.logType = logType self.obj = None if fltDict: self.fltDict = fltDict else: self.fltDict = {} icSpcDefStruct(SPC_IC_DATALINK, component) self._component = component self.name = component['name'] self.source = util.getSpcAttr(component, 'file', evalSpace).strip() self._uuid = component['_uuid'] if not self._uuid: self._uuid = ic_uuid.get_uuid() self.resource = self.GetResource(component)
def __init__(self, passport, func, *arg, **kwarg): """ Конструктор сигнала. @type passport: C{icObjectPassport} @param passport: Объект идентификации (паспорт) объекта приемника сигнала. """ self.uuid = ic_uuid.get_uuid() self.passport = passport # Указатель на объект, к которому прикреплен слот self._object = None # Функция возбуждения self._func = func # Признак активации слота self._bAcivated = True # self.init_slot()
def _init_ctrls(self, prnt): """ Создаем необходимые компоненты """ icEvent.__init__(self) # UUID ресурса self._uuidRes = None self._uuid = ic_uuid.get_uuid() # Список свойств self.NameValues = [] # Список удаленных свойств self._delPropertyLst = [] self.oldLen = 0 self.parent = prnt id_sash = icwidget.icNewId() self.splitter = wx.SplitterWindow(self, id_sash, wx.Point(0, 0), prnt.GetSize(), style=wx.SP_LIVE_UPDATE | wx.NO_3D | wx.SP_3D | wx.SP_NOBORDER) self.splitter.SetSashSize(4) # Создаем панели self.panel1 = wx.Panel(self.splitter, icwidget.icNewId(), style=wx.WANTS_CHARS) self.panel1.Bind(wx.EVT_SIZE, self.OnNameSize) self.panel1.box = None self.panel1._uuid = self._uuid + ':p1' self.panel2 = wx.Panel(self.splitter, icwidget.icNewId(), style=wx.WANTS_CHARS) self.panel2.box = None self.panel2._uuid = self._uuid + ':p2' self.splitter.SplitVertically(self.panel1, self.panel2) self.splitter.SetMinimumPaneSize(20) self.splitter.SetSashPosition(100) self.Bind(wx.EVT_SIZE, self.OnSize)
def setPropertyValue(self, name, value, bConvert=True): """ Установить значение свойства в ресурсе. @param name: Имя свойства/аттрибута. @param value: Значение свойства/аттрибута. @param bConvert: Произвести конвертацию строкового значения? """ # ВНИМАНИЕ! Значение может задаваться в виде строки. # Если задается в виде строки, то возможно необходимо # сделать преобразование типа if bConvert and type(value) in (str, unicode): str_value = value value = self.convertPropertyValue(name, str_value, self._spc) log.info(u'Set string property [%s] value <%s - \'%s\'>' % (name, value, str_value)) self._resource[name] = value # Синхронизировать ресурс с редактором ресурса resource.RefreshResUUID(self._resource, self.getParentResource(), ic_uuid.get_uuid())
def GenNewUUIDObj(self): """ Генерирует новый идентификатор ресурса. """ self._uuidRes = ic_uuid.get_uuid() return self._uuidRes
def HlpDlg(parent, attr, value, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0, *arg, **par): """ Диалоговое окно для редактирования словаря в текстовом редакторе. @type parent: C{wx.Window} @param parent: Указатель на родительское окно (грид). @type attr: C{string} @param attr: Имя текущего атрибута. @type value: C{string} @param value: Текущее значение. @type pos: C{wx.Point} @param pos: Расположение диалога на гриде. @type size: C{wx.Size} @param size: Размер диалогового окна. @type style: C{int} @param style: Стиль диалогового окна. @type par: C{dictionary} @param par: Словарь дополнительных именованных параметров. <attr> - имя атрибута, <uuid_attr> - старый UUID атрибута, <bEnable=True> - признак режима редактирования. @rtype: C{tuplpe} @return: Первый элемент признак редактирования, второй текст, третий новый uuid. """ from ic.PropertyEditor import ic_pyed text = value uuid_attr = par['uuid_attr'] if 'bEnable' in par: bEnable = par['bEnable'] else: bEnable = True try: # Определяем смещение видимой части окна old = text x, y = pos sx, sy = size if sx < 450: size = (450, sy) pos = parent.ClientToScreenXY(x, y) dlg = ic_pyed.icPyEditorDlg(parent, text, pos, size, style=style) if not bEnable: dlg.editor.SetReadOnlyMode() ret = dlg.ShowModal() prz = False if ret == wx.ID_OK: # Генерируем новый UUID old_uuid = uuid_attr if bEnable: text = dlg.editor.GetText() # Если текст изменился генерируем новый uuid if old != text: prz = True uuid_attr = ic_uuid.get_uuid() if dlg: dlg.Destroy() except: io_prnt.outLastErr(u'icTextDictEdt HlpDlg ERROR') return prz, text, uuid_attr
def __init__(self, name=None, id=-1, context=None, bCreate=False, cmpInterface=None, typ=None, *arg, **kwarg): """ Конструктор. @type name: C{string} @param name: Имя объекта. @type id: C{int} @param id: Идентификатор объекта. @type context: C{icContext} @param context: Окружение (контекст) объекта. @type bCreate: C{bool} @param bCreate: Признак создания нового окружения объекта. Если = True, то создается новое окружение и из старого заимствуются объекты родительского контекста. @type cmpInterface: C{icObject} @param cmpInterface: Имя интерфеса, которому принадлежит объект (в случае комбинированных компонентов). """ # self.permissions = list() # Тип объекта if typ: self.type = typ else: self.type = self.__class__.__name__ # Имя объекта self.name = name # self.__wrapper = None # Идентификатор объекта системы в рабочем состоянии. При каждом создании # он может быть разным. self._uniqId = id # Уникальный идентификатор объекта описания (ресурса, если он есть) self._uuid = None # Уникальный универсальный идентификатор объекта self._uuidObject = ic_uuid.get_uuid() # Описание прав доступа к данному объект self._acl = None # Атрибуты, за которыми ведется наблюдение self.__spy_attr = [] # Функции, за которыми ведется наблюдение self.__spy_function = [] self.spy_function_dct = {} # Паспорт объекта if context and not isinstance(context, dict): rfn = context.resFileName subsys = context.subsys else: rfn = None subsys = None # Определяем паспорт объекта self.__interface = cmpInterface self.__passport = icObjectPassport((self.type, self.name, cmpInterface, rfn, subsys), id, self._uuidObject) # Список соединений, в котором объект выступает в качестве источника self.srcCntLst = [] # Список соединений, в котором объект выступает в качестве приемника self.slotCntLst = [] # Список преобразователей событий в сигналы базовой сигнальной ситемы self.convLst = [] # Создаем контекст if context is None: self.context = icContext.Context() # Заимствуем пространство имен (кроме служебных) elif bCreate: self.context = icContext.Context() self.context.update_context(context) self.context.SetParentContext(context) # Полностью заимствуем контекст else: self.context = context self.init_object() # Регестрируем соединения с данным объектом self._reg_connection()