Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
 def getImgName(self, sImgFileName=None):
     """
     Имя образа по файлу образа.
     """
     if sImgFileName:
         return 'img' + ic_file.SplitExt(ic_file.BaseName(sImgFileName))[0]
     return 'img' + str(wx.NewId())
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
 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)
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
 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))
Ejemplo n.º 9
0
 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)
Ejemplo n.º 10
0
 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)
Ejemplo n.º 11
0
 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()
Ejemplo n.º 12
0
    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
Ejemplo n.º 13
0
 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_)
Ejemplo n.º 14
0
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
Ejemplo n.º 15
0
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')
Ejemplo n.º 16
0
    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