Пример #1
0
 def SetNodeImg(self, Img_, ImgIdx_=-1):
     """
     Добавить картинку компонента в список образов.
     @param Img_: Имя файла образа компонента или сам образ.
     @param ImgIdx_: Указание на какое место поместить картинку.
     @return: Возвращает индекс соответствующий этому образу.
     """
     # Заменять картинку в списке не надо
     if ImgIdx_ < 0:
         # Добавить в список образ
         if isinstance(Img_, str):
             # Указание файла
             return self._img_lst.Add(ic_bmp.createBitmap(Img_))
         elif issubclass(Img_.__class__, wx.Bitmap):
             # Указание непосредственно картинки
             return self._img_lst.Add(Img_)
     # Надо заменить картинку на ImgIdx_
     else:
         # Заменить в списке образ
         if isinstance(Img_, str):
             # Указание файла
             return self.ReplaceImg(ImgIdx_, ic_bmp.createBitmap(Img_))
         elif issubclass(Img_.__class__, wx.Bitmap):
             # Указание непосредственно картинки
             return self.ReplaceImg(ImgIdx_, Img_)
     return -1
Пример #2
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
Пример #3
0
    def SetImage(self, Image_):
        """
        Функция установки образов пункта меню.
        @param Image_: имя файла образа (BMP).
        """
        try:
            item_kind = self.GetKind()
            # для разделителя нельзя установить картинку
            if item_kind == wx.ITEM_SEPARATOR:
                return

            if Image_ and type(Image_) in (str, unicode):
                eval_space = self.context or ic.utils.util.InitEvalSpace(
                    {'MENUITEM': self})
                ret, img = ic.utils.util.ic_eval(Image_, evalSpace=eval_space)
                if not ret:
                    img = Image_
            else:
                img = Image_
            if not img:
                return
            elif isinstance(img, str):
                # Задается имя файла образа
                img = ic_bmp.createBitmap(img)
            if img and (item_kind == wx.ITEM_CHECK
                        or item_kind == wx.ITEM_NORMAL):
                # ВНИМАНИЕ:
                #    Картинки необходимо устанавливать до присоединения
                #    пункта к меню. Иначе она не будет отображаться!
                self.SetBitmap(img)
        except:
            io_prnt.outErr(u'Ошибка установки образа для пункта меню <%s>!' %
                           Image_)
            return
Пример #4
0
    def _get_bitmap(self, id, component, indx, push_indx=-1, dis_indx=-1):
        """
        Возвращает картинки инструмента.
        """
        if self.image_list:
            if indx < self.image_list.GetImageCount():
                bmp = self.image_list.GetBitmap(indx)
            else:
                bmp = None

            if bmp is None:
                bmp = common.imgEdtTBTool

            push_bmp, dis_bmp = wx.NullBitmap, wx.NullBitmap
            if push_indx >= 0:
                push_bmp = self.image_list.GetBitmap(push_indx)
            if dis_indx >= 0:
                dis_bmp = self.image_list.GetBitmap(dis_indx)
            return bmp, push_bmp, dis_bmp

        # Активная картинка
        bitmap = util.getICAttr(component['bitmap'],
                                self.evalSpace,
                                msg='ERROR')
        if not (bitmap and issubclass(bitmap.__class__, wx.Bitmap)):
            bitmap = ic_bmp.createBitmap(component['bitmap'])
            if not bitmap:
                bitmap = common.imgEdtImage
        # Неактивная картинка
        dis_bitmap = util.getICAttr(component['disabledBitmap'],
                                    self.evalSpace,
                                    msg='ERROR')
        if not (dis_bitmap and issubclass(bitmap.__class__, wx.Bitmap)):
            dis_bitmap = ic_bmp.createBitmap(component['disabledBitmap'])
            if not dis_bitmap:
                dis_bitmap = wx.NullBitmap
        #   Картинка в нажатом состоянии
        push_bitmap = util.getICAttr('pushedBitmap',
                                     self.evalSpace,
                                     msg='ERROR')
        if not (push_bitmap and issubclass(push_bitmap.__class__, wx.Bitmap)):
            push_bitmap = ic_bmp.createBitmap(component['pushedBitmap'])
            if not push_bitmap:
                push_bitmap = wx.NullBitmap

        return bitmap, push_bitmap, dis_bitmap
Пример #5
0
    def __init__(self, *args, **kwargs):
        """
        Конструктор
        """
        icWMSCellShape.__init__(self, *args, **kwargs)

        if self.bmp is None:
            bmp_filename = os.path.join(DEFAULT_IMG_DIR, 'box.png')
            self.setBitmap(ic_bmp.createBitmap(bmp_filename))
Пример #6
0
 def __init__(self, GraphFile_=''):
     """
     Конструктор.
     @param GraphFile_: Имя графического файла,
         отображаемого в окне.
     """
     try:
         bmp = ic_bmp.createBitmap(GraphFile_)
         wx.SplashScreen.__init__(
             self, bmp, wx.SPLASH_CENTRE_ON_SCREEN | wx.SPLASH_TIMEOUT,
             SPLASH_DELAY, None, -1, wx.DefaultPosition, wx.DefaultSize,
             wx.SIMPLE_BORDER | wx.FRAME_NO_TASKBAR | wx.STAY_ON_TOP)
     except:
         io_prnt.outErr(u'Ошибка создания всплывающего окошка.')
Пример #7
0
 def setBackgound(self, bmp=None):
     """
     Установить фон.
     @param bmp: Объект wx.Bitmap фона.
         Может задаваться именем файла картинки.
     """
     if isinstance(bmp, str):
         log.debug(u'Фон задается именем файла <%s>' % bmp)
         # Картинка задается именем файла
         if os.path.exists(bmp):
             bmp = ic_bmp.createBitmap(bmp)
         else:
             # Возможно картинка задается именем файла из библиотеки
             bmp = ic_bmp.createLibraryBitmap(bmp)
     self.SetBitmap(bmp)
Пример #8
0
    def __init__(self, Parent_, Msg_, Frames_, style=0):
        """
        Конструктор.
        """
        if Parent_ is None:
            style = wx.STAY_ON_TOP

        # Instead of calling wx.Dialog.__init__ we precreate the dialog
        # so we can set an extra style that must be set before
        # creation, and then we create the GUI object using the Create
        # method.
        pre = wx.PreDialog()
        pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP)
        pre.Create(Parent_, -1, size=wx.Size(150, 34), style=style)

        # This next step is the most important, it turns this Python
        # object into the real wrapper of the dialog (instead of pre)
        # as far as the wxPython extension is concerned.
        self.PostCreate(pre)

        from ic.bitmap import ic_bmp
        self._ani = [
            ic_bmp.createBitmap(frame_file_name) for frame_file_name in Frames_
        ]
        self._cur_ani_state = 0  # Индекс состояния анимации
        self._max_ani_state = len(Frames_)
        self._delay = 0.3
        self._picture = wx.StaticBitmap(self, -1, self._ani[0])
        self._pic_size = (self._ani[0].GetWidth(), self._ani[0].GetHeight())
        self.msg = msg = wx.StaticText(self, -1, Msg_)
        self._lastTime = time.clock()

        sizer = wx.BoxSizer(wx.HORIZONTAL)
        sizer.Add(self._picture, 0, wx.CENTRE, 5)
        sizer.Add(msg, 0, wx.CENTRE, 5)

        self.SetSizer(sizer)
        self.SetAutoLayout(True)
        sizer.Fit(self)
        self.CenterOnScreen()

        self._running = True  # Признак запущенной функции
        self._closed = False  # Признак закрытия окна
        self._result_list = None

        self.Bind(wx.EVT_UPDATE_UI, self.OnCheckClose)
Пример #9
0
 def setBackgroundBmp(self, background_bitmap=None):
     """
     Установить картинку фона.
     @param background_bitmap: Объект картинки wx.Bitmap.
     Может задаваться прсто именем файла.
     """
     if isinstance(background_bitmap, wx.Bitmap):
         self.bg_bmp = background_bitmap
     elif type(background_bitmap) in (str, unicode):
         # Задается именем файла
         bmp = ic_bmp.createBitmap(background_bitmap)
         self.bg_bmp = bmp
     elif background_bitmap is None:
         self.bg_bmp = None
     else:
         log.warning(u'Не обрабатываемый тип входных данных <%s>' %
                     type(background_bitmap))
Пример #10
0
 def SetPageImg(self, Image_, NPage_):
     """
     Установить картинку у страницы главного органайзера.
     @param Image_: Имя файла образа.
     @param NPage_: Номер страницы.
     """
     try:
         if Image_ not in self._img_name:
             # Создание образа
             img = ic_bmp.createBitmap(Image_, False)
             if img is None:
                 img = wx.ArtProvider_GetBitmap(wx.ART_NORMAL_FILE,
                                                wx.ART_OTHER, (16, 16))
             # Добавление образа
             img_idx = self._img_list.Add(img)
             # Запомнить индекс
             self._img_name[Image_] = img_idx
         else:
             img_idx = self._img_name[Image_]
         return self.SetPageImage(NPage_, img_idx)
     except:
         io_prnt.outErr(u'Ошибка установки картинки страницы')