예제 #1
0
    def get_kernel(self):
        """
        """
        kernel = ic_user.icGetRunner()
        
        if not kernel:
            kernel = ickernel.icKernel()

        return kernel
예제 #2
0
    def __init__(self,
                 parent,
                 id=-1,
                 component=None,
                 logType=0,
                 evalSpace=None,
                 bCounter=False,
                 progressDlg=None):
        """
        Конструктор.

        @type parent: C{wx.Window}
        @param parent: Указатель на родительское окно
        @type id: C{int}
        @param id: Идентификатор окна
        @type component: C{dictionary}
        @param component: Словарь описания компонента
        @type logType: C{int}
        @param logType: Тип лога (0 - консоль, 1- файл, 2- окно лога)
        @param evalSpace: Пространство имен, необходимых для вычисления внешних выражений
        @type evalSpace: C{dictionary}
        @type bCounter: C{bool}
        @param bCounter: Признак отображения в ProgressBar-е. Иногда это не нужно -
            для создания объектов полученных по ссылки. Т. к. они не учтены при подсчете
            общего количества объектов.
        @type progressDlg: C{wx.ProgressDialog}
        @param progressDlg: Указатель на идикатор создания формы.
        """
        component = util.icSpcDefStruct(self.component_spc, component)
        icwidget.icSimple.__init__(self, parent, id, component, logType,
                                   evalSpace)

        main_win_parent = None
        if parent:
            main_win_parent = parent

        ic_win.icMainWindow.__init__(self,
                                     component['name'],
                                     component,
                                     Parent_=main_win_parent,
                                     Runner_=ic_user.icGetRunner())

        # Дополнительный функционал инициализации
        if component.get('init_expr', None):
            self.eval_attr('init_expr')
예제 #3
0
    def __init__(self,
                 Parent_,
                 Frames_,
                 Msg_,
                 min=0,
                 max=100,
                 Msg2_=None,
                 min2=None,
                 max2=None,
                 style=0,
                 bAutoIncr=False):
        """
        Конструктор.
        
        @type Parent_: C{wx.Window}
        @param Parent_: Указатель на родительское окно.
        @type Msg_: C{string}
        @param Msg_: Сообщение верхнего индикатора.
        @type min: C{int}
        @param min: Минимальное значение верхнего индикатора.
        @type max: C{int}
        @param max: Максимальное значение верхнего индикатора.
        @type Msg2_: C{string}
        @param Msg2_: Сообщение нижнего индикатора.
        @type min2: C{int}
        @param min2: Минимальное значение нижнего индикатора.
        @type max2: C{int}
        @param max2: Максимальное значение нижнего индикатора.
        @type style: C{int}
        @param style: Стиль окна процесса.
        @type bAutoIncr: C{bool}
        @param bAutoIncr: Признак автоматического изменения состояния индикаторов.
            Используется в тех случаях, когда размерность процесса не определена,
            а показывать чего то надо.
        """
        if Msg2_ is not None:
            sy = 70
        else:
            sy = 40

        if Parent_:
            self.defBackClr = Parent_.GetBackgroundColour()
        else:
            app = ic_user.icGetRunner()
            if app:
                Parent_ = app.GetTopWindow()
                self.defBackClr = app.GetTopWindow().GetBackgroundColour()
            else:
                self.defBackClr = wx.SystemSettings.GetColour(
                    wx.SYS_COLOUR_3DFACE)

        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, sy), 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)

        self._ani = [
            ic_bmp.icCreateBitmap(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._autoIncr = bAutoIncr

        if self._ani:
            self._pic_size = (self._ani[0].GetWidth(),
                              self._ani[0].GetHeight())
        else:
            self._pic_size = (0, 0)

        self.title = ''
        self.label = Msg_
        self.label2 = Msg2_
        self.min = min
        self.max = max
        self.value = min
        self.min2 = min2
        self.max2 = max2
        self.value2 = min2

        #
        self.indBgrClr = wx.Colour(230, 230, 230)
        self.indClr = wx.Colour(100, 100, 135)

        self.indBgrBrush = wx.Brush(self.indBgrClr, wx.SOLID)
        self.indBrush = wx.Brush(self.indClr, wx.SOLID)

        self.bgrBrush = wx.Brush(self.defBackClr, wx.SOLID)
        self.font = icfont.icFont({})

        # Высота индикатора
        self.indH = 15

        self.CenterOnScreen()
        self._count = 0
        self._running = True  # Признак запущенной функции
        self._closed = False  # Признак закрытия окна
        self._result_list = None
        self.old_time = time.clock()

        self._oSize = self.GetSize()
        self._oPos = self.GetPosition()
        self._oPar = None

        self.timer = wx.FutureCall(1, self.OnTimer, None)
예제 #4
0
    def __init__(self,
                 parent,
                 id,
                 component,
                 logType=0,
                 evalSpace=None,
                 bCounter=False,
                 progressDlg=None):
        """
        Конструктор базового класса пользовательских компонентов.

        @type parent: C{wx.Window}
        @param parent: Указатель на родительское окно.
        @type id: C{int}
        @param id: Идентификатор окна.
        @type component: C{dictionary}
        @param component: Словарь описания компонента.
        @type logType: C{int}
        @param logType: Тип лога (0 - консоль, 1- файл, 2- окно лога).
        @param evalSpace: Пространство имен, необходимых для вычисления внешних выражений.
        @type evalSpace: C{dictionary}
        @type bCounter: C{bool}
        @param bCounter: Признак отображения в ProgressBar-е. Иногда это не нужно -
            для создания объектов полученных по ссылки. Т. к. они не учтены при подсчете
            общего количества объектов.
        @type progressDlg: C{wx.ProgressDialog}
        @param progressDlg: Указатель на идикатор создания формы.
        """
        component = util.icSpcDefStruct(self.component_spc, component)
        icwidget.icSimple.__init__(self, parent, id, component, logType,
                                   evalSpace)

        #   По спецификации создаем соответствующие атрибуты (кроме служебных атрибутов)
        lst_keys = [x for x in component.keys() if x.find('__') <> 0]

        for key in lst_keys:
            setattr(self, key, component[key])

        # ВНИМАНИЕ!!! Сначала нужно создать все сигналы и слоты
        #   Создаем дочерние компоненты
        if 'child' in component:
            self.childCreator(bCounter, progressDlg)

        #   !!! Конструктор наследуемого класса !!!
        #   Необходимо вставить реальные параметры конструкора.
        #   На этапе генерации их не всегда можно определить.
        try:
            first_signal = filter(
                lambda item: item.type in
                ('WxSignal', 'ChangeAttrSignal', 'PostFuncSignal'),
                self.components.values())[0]
        except IndexError:
            io_prnt.outWarning(
                u'CONNECTION CREATE ERROR! Connection has\'t signal <%s>' %
                self.name)
        slot_list = [
            item for item in self.components.values()
            if item.type in ('SimpleSlot', )
        ]
        if not slot_list:
            io_prnt.outWarning(
                u'CONNECTION CREATE ERROR! Connection has\'t slots <%s>' %
                self.name)

        parentModule.icConnection.__init__(self, first_signal, slot_list)

        # Регистрируем соединение через ядро
        kernel = ic_user.icGetRunner()
        if kernel:
            io_prnt.outLog(
                u'>>> Регистрируем соединение first_signal = <%s>, slot_list = <%s>'
                % (first_signal, slot_list))
            kernel.add_connection_lst([self])
        else:
            io_prnt.outLog(u'WARNING! Ядро системы не инициализировано')