def _selectedPassport(self): """ Определить какой паспорт выбран. """ type_name = None obj_name = None interface = None res_name = None subsys_name = None prj_node = self._prj_viewer.getSelectionNode() res_viewer = self._splitter.GetWindow2() if res_viewer is None: res_object = None else: res_object = res_viewer.getSelectedObject() res_file_name = None if res_object: type_name = res_object['type'] obj_name = res_object['name'] res_file_name = res_viewer.getNodeResFileName() else: res_file_name = prj_node.getFullResFileName() if res_file_name: # Это нужно чтобы мы точно были уверены что выбираем рут prj = prj_node.getRoot() if prj.isPrjRoot(): prj_path = prj.getPath() else: prj_path = prj.getParentRoot().getPath() root_prj_path = ic_file.DirName(prj_path) res_dirname = ic_file.DirName(res_file_name) # Заменить в пути файла ресурса путь до проекта if prj_path in res_file_name: # Ресурс находиться в этом же проекте res_name = res_file_name.replace(prj_path, '') subsys_name = ic_file.BaseName(prj_path) elif root_prj_path in res_dirname: # Ресурс находиться в подсистеме res_name = res_file_name.replace(res_dirname, '') subsys_name = ic_file.BaseName(res_dirname) if res_name[0] == '/': res_name = res_name[1:] unicode_psp = ((type_name, obj_name, interface, res_name, subsys_name), ) self._passport = ic_util.encode_unicode_struct(unicode_psp)
def getImgName(self, sImgFileName=None): """ Имя образа по файлу образа. """ if sImgFileName: return 'img' + ic_file.SplitExt(ic_file.BaseName(sImgFileName))[0] return 'img' + str(wx.NewId())
def addImg(self, sImgFileName=None): """ Добавить новый образ в библиотеку. """ if self._img_lib_res.isEmpty(): ic_dlg.icMsgBox(u'ОШИБКА', u'Не определена библиотека образов!', self.getObject()) return None dlg = self.GetNameObj('ImgLibDlg') if sImgFileName is None: sImgFileName = ic_dlg.icImageDlg(dlg, self._img_dir) # Сохранить выбранную папку как папку картинок self.setImgDir(ic_file.DirName(sImgFileName)) self.saveImgDir() if sImgFileName: # Серилизовать и добавить образ self._img_lib_res.addImg(sImgFileName) self._img_lib_res.saveImgLib() # Добавить в словарь образов img_name = ic_file.SplitExt(ic_file.BaseName(sImgFileName))[0] # Заменить все минусы на подчеркивание # иначе в генерирумом фалйе будут имена объектов с минусами (SyntaxisError) img_name = img_name.replace('-', '_') img = ic_bmp.createBitmap(sImgFileName) self._img_dict[img_name] = img return img_name return None
def isTemplateModule(self, FileName_): """ Проверка является ли файл модулем шаблона проекта. @param FileName_: Имя файла. @return: Возвращает True/False. """ return ic_file.IsFile(FileName_) and \ (ic_file.SplitExt(FileName_)[1] == '.py' and \ ic_file.BaseName(FileName_) != '__init__.py') and \ self._findModuleSignature(FileName_, TEMPLATE_MODULE_SIGNATURE)
def isFBModule(self, FileName_): """ Проверка является ли файл модулем форм wxFormBuilder. @param FileName_: Имя файла. @return: Возвращает True/False. """ return ic_file.IsFile(FileName_) and \ (ic_file.SplitExt(FileName_)[1] == '.py' and ic_file.BaseName(FileName_) != '__init__.py') and \ self._findModuleSignature(FileName_, WXFB_MODULE_SIGNATURE)
def isImageModule(self, FileName_): """ Проверка является ли файл модулем библиотеки образов проекта. @param FileName_: Имя файла. @return: Возвращает True/False. """ return ic_file.IsFile(FileName_) and \ (ic_file.SplitExt(FileName_)[1] == '.py' and \ ic_file.BaseName(FileName_) != '__init__.py') and \ self._findModuleSignature(FileName_, IMAGE_MODULE_SIGNATURE)
def isResourceModule(self, FileName_): """ Проверка является ли файл ресурсным модулем проекта. @param FileName_: Имя файла. @return: Возвращает True/False. """ return ic_file.IsFile(FileName_) and \ (ic_file.SplitExt(FileName_)[1] == '.py' and \ ic_file.BaseName(FileName_) != '__init__.py') and \ self._findModuleSignature(FileName_, RESOURCE_MODULE_SIGNATURE)
def isModule(self, FileName_): """ Проверка является ли файл модулм проекта. @param FileName_: Имя файла. @return: Возвращает True/False. """ return ic_file.IsFile(FileName_) and \ (ic_file.SplitExt(FileName_)[1] == '.py' and ic_file.BaseName(FileName_) != '__init__.py') and \ (not self._findModuleSignature(FileName_, INTERFACE_MODULE_SIGNATURE))
def addImg(self, ImgFileName_): """ Добавить образ в библиотеку образов из файла. @param ImgFileName_: Имя файла образа. """ img_name = ic_file.SplitExt(ic_file.BaseName(ImgFileName_))[0] img_data = self.getImgData(ImgFileName_) if img_data: img_block = self.createImgBlock(img_name, img_data) self.addImgBlock(img_block)
def isXRCModule(self, FileName_): """ Проверка является ли файл модулем форм, сгенерированных утилитой pywxrc (из XRC ресурса). @param FileName_: Имя файла. @return: Возвращает True/False. """ return ic_file.IsFile(FileName_) and \ (ic_file.SplitExt(FileName_)[1] == '.py' and ic_file.BaseName(FileName_) != '__init__.py') and \ self._findModuleSignature(FileName_, XRC_MODULE_SIGNATURE)
def __init__(self, Dir_): """ Конструктор. @param Dir_: Папка - хранилище. """ # Привести относительные пути к папке проекта Dir_ = ic_file.AbsolutePath(Dir_) storage_interface.icObjectStorageInterface.__init__(self, None) storesrc.icTreeDirStorage.__init__(self, Dir_) self.name = ic_file.BaseName(Dir_) self.Open()
def _getNSIFieldsSpc(self, NSIRes_, NSIType_, FieldNames_): """ Взять спецификацию поля справочника. @param NSIRes_: Имя ресурсного файла справочника. @param NSIType_: Тип справочника. @param FieldNames_: Список имен полей справочника. """ if NSIRes_ is None: nsi_res_name = 'nsi_sprav' nsi_res_ext = 'mtd' else: nsi_res = ic_file.SplitExt(ic_file.BaseName(NSIRes_)) nsi_res_name = nsi_res[0] nsi_res_ext = nsi_res[1][1:] # И стереть первую точку # Получить ресурсное описание справочника nsi_sprav_manager_res = resource.icGetRes(nsi_res_name, nsi_res_ext, nameRes=nsi_res_name) if nsi_sprav_manager_res['name'] == NSIType_: # Справочник определен просто в ресурсе nsi_sprav_res = [nsi_sprav_manager_res] else: # Справочник определен в менеджере справочников nsi_sprav_res = [ sprav for sprav in nsi_sprav_manager_res['child'] if sprav['name'] == NSIType_ ] if not nsi_sprav_res: ic.io_prnt.outWarning(u'Не найден справочник <%s> в ресурсе [%s]' % (NSIType_, NSIRes_)) return None nsi_sprav_res = nsi_sprav_res[0] # Получить ресурсное описание полей nsi_tab_psp = nsi_sprav_res['table'] if nsi_tab_psp: nsi_tab_name = nsi_tab_psp[0][1] else: nsi_tab_name = 'nsi_data' nsi_tab_spc = resource.icGetRes(nsi_tab_name, 'tab', nameRes=nsi_tab_name) nsi_fields_spc = [ util.DeepCopy(field_spc) for field_spc in [ fld for fld in nsi_tab_spc['child'] if fld['name'] in FieldNames_ ] ] return nsi_fields_spc
def openChildPane(self, Page_, PaneName_): """ Открыть дочернее окно как AUI панель. @param Page_: Имя ресурсного файла окна. @param PaneName_: Имя дочерней AUI панели. """ pane = self.GetChildByName(PaneName_) if type(Page_) in (str, unicode): res_name, res_ext = ic_file.SplitExt(Page_) # По умолчанию ресурс форм: *.frm if not res_ext: res_ext = '.frm' Page_ = icResourceParser.icCreateObject(res_name, res_ext[1:], parent=self) if Page_: pane.control_name = ic_file.BaseName(res_name) pane.control_res = res_name+res_ext return pane.showControl(Page_)
def getRolesChoiceList(): """ Функция получения списка ролей, определенных в проекте. """ prj_dir = ic_user.icGet('PRJ_DIR') role_files = ic_file.GetFilesByExt(prj_dir, '.rol') # Сразу отфильтровать Pkl файлы role_files = [ role_file for role_file in role_files if '_pkl.rol' not in role_file.lower() ] # Получить только базовые имена файлов role_files = [ ic_file.SplitExt(ic_file.BaseName(role_file))[0] for role_file in role_files ] return role_files
def InitEnv(PrjDir_, **environ): """ Инициализация окружения по папке проекта. @param PrjDir_: Папке проекта. """ try: # Подгрузить дополнительные атрибуты проекта from ic.prj import PrjRes prj_res_manager = PrjRes.icPrjRes() prj_dir = ic_file.NormPathUnix(PrjDir_) prj_res_file_name = os.path.join(prj_dir, ic_file.BaseName(prj_dir) + '.pro') if os.path.exists(prj_res_file_name): prj_res_manager.openPrj(prj_res_file_name) env_dict = prj_res_manager.getPrjEnv() environ.update(env_dict) log.info(u'Чтение дополнительных атрибутов проекта <%s> ... ОК' % prj_res_file_name) else: log.warning(u'Не найден файл проекта <%s>' % prj_res_file_name) return getKernel().GetContext().initEnv(PrjDir_, **environ) except: log.fatal(u'Ошибка ic_user.InitEnv')
def installScript(self): """ Создание скрипта инсталяционного пакета проекта. """ prj_name = self.getPrjName() sub_sys_name = os.path.basename(self._prj_dir) package_text = reduce(lambda txt, line: txt+line, [self._makeNSISSection(ic_file.BaseName(package)) for package in self.getPackages()]) icon_name = os.path.basename(self.getPrjIcon()) script = _NSISScriptTemplate % (self.getPrjTitle().replace('\"', '\''), self.getPrjCopyright().replace('\"', '\''), self.getPrjAuthor().replace('\"', '\''), icon_name, prj_name, prj_name, prj_name, package_text, prj_name, prj_name, prj_name, sub_sys_name, icon_name, sub_sys_name, icon_name, prj_name, prj_name) return script