コード例 #1
0
ファイル: enum_element.py プロジェクト: wrl/mfp
    def create_obj(self):
        if self.obj_id is None:
            self.create(self.proc_type, str(self.value))
        if self.obj_id is None:
            print "MessageElement: could not create message obj"
        else:
            MFPGUI().mfp.set_do_onload(self.obj_id, True)
            self.obj_state = self.OBJ_COMPLETE

        self.draw_ports()
        self.texture.invalidate()
コード例 #2
0
    def update_value(self, value):
        if value >= self.max_value:
            value = self.max_value

        if value <= self.min_value:
            value = self.min_value

        if value != self.value:
            self.value = value
            self.texture.invalidate()
            MFPGUI().mfp.send(self.obj_id, 0, self.value)
コード例 #3
0
    def show_tip(self, xpos, ypos, details):
        tiptxt = None 
        orig_x, orig_y = self.get_stage_position()

        if self.obj_id is None:
            return False 

        for (pid, pobj) in self.port_elements.items(): 
            x, y = pobj.get_position()
            x += orig_x - 1
            y += orig_y - 1
            w, h = pobj.get_size()
            w += 2
            h += 2
            if (xpos >= x) and (xpos <= x+w) and (ypos >= y) and (ypos <= y+h):
                tiptxt = MFPGUI().mfp.get_tooltip(self.obj_id, pid[0], pid[1], details)
        if tiptxt is None:             
            tiptxt = MFPGUI().mfp.get_tooltip(self.obj_id, None, None, details)
        self.stage.hud_banner(tiptxt)
        return True 
コード例 #4
0
ファイル: message_element.py プロジェクト: swipswaps/mfp-1
 def label_edit_finish(self, widget=None, text=None):
     if text is not None:
         self.message_text = text
         for to in self.target_obj:
             if to is not self:
                 MFPGUI().mfp.eval_and_send(to.obj_id, self.target_port,
                                            self.message_text)
     for to in self.target_obj:
         self.stage.select(to)
     self.message_text = None
     self.delete()
コード例 #5
0
    def send_params(self, **extras):
        if self.obj_id is None:
            return

        prms = {} 
        for k in self.param_list:
            prms[k] = getattr(self, k)

        for k, v in extras.items():
            prms[k] = v

        MFPGUI().mfp.set_params(self.obj_id, prms)
コード例 #6
0
ファイル: patch_element.py プロジェクト: swipswaps/mfp-1
    def delete(self):
        self.stage.unregister(self)
        if self.obj_id is not None and not self.is_export:
            MFPGUI().mfp.delete(self.obj_id)
        elif self.obj_id is None:
            for conn in [c for c in self.connections_out]:
                conn.delete()
            for conn in [c for c in self.connections_in]:
                conn.delete()

        self.obj_id = None
        self.obj_state = self.OBJ_DELETED
コード例 #7
0
    def toggle_console(self):
        from gi.repository import Gdk
        alloc = self.window.content_console_pane.get_allocation()
        oldpos = self.window.content_console_pane.get_position()

        self.window.content_console_pane.set_position(
            alloc.height - self.next_console_position)
        self.next_console_position = alloc.height - oldpos

        # KLUDGE!
        MFPGUI().clutter_do_later(100, self._refresh)

        return False
コード例 #8
0
    def make_connection(self):
        # are both ends selected?
        if self.reverse and self.source_obj is None and self.window.selected:
            self.source_obj = self.window.selected[0]

        if not self.reverse and self.dest_obj is None and self.window.selected:
            self.dest_obj = self.window.selected[0]

        if (self.source_obj and self.dest_obj
                and self.connection.obj_state != PatchElement.OBJ_DELETED):
            if MFPGUI().mfp.connect(self.source_obj.obj_id, self.source_port,
                                    self.dest_obj.obj_id, self.dest_port):
                c = ConnectionElement(self.window, self.source_obj,
                                      self.source_port, self.dest_obj,
                                      self.dest_port)
                MFPGUI().appwin.register(c)
                self.source_obj.connections_out.append(c)
                self.dest_obj.connections_in.append(c)
            else:
                log.debug("ConnectionMode: Cannot make connection")

        self.manager.disable_minor_mode(self)
        return True
コード例 #9
0
ファイル: connection_element.py プロジェクト: wrl/mfp
    def delete(self):
        if (not self.dashed and self.obj_1 and self.obj_2
                and self.obj_1.obj_id is not None
                and self.obj_2.obj_id is not None):
            MFPGUI().mfp.disconnect(self.obj_1.obj_id, self.port_1,
                                    self.obj_2.obj_id, self.port_2)
        if self.obj_1 and self in self.obj_1.connections_out:
            self.obj_1.connections_out.remove(self)
        if self.obj_2 and self in self.obj_2.connections_in:
            self.obj_2.connections_in.remove(self)

        self.obj_1 = None
        self.obj_2 = None
        PatchElement.delete(self)
コード例 #10
0
    def patch_close(self):
        def close_confirm(answer):
            if answer is not None:
                aa = answer.strip().lower()
                if aa in ['y', 'yes']:
                    self.window.patch_close()

        from mfp import log
        p = self.window.selected_patch
        log.debug("patch_close: checking for unsaved changes")
        if MFPGUI().mfp.has_unsaved_changes(p.obj_id):
            self.window.get_prompted_input(
                "Patch has unsaved changes. Close anyway? [yN]", close_confirm,
                '')
        else:
            self.window.patch_close()
コード例 #11
0
ファイル: enum_element.py プロジェクト: wrl/mfp
    def update_value(self, value):
        if self.min_value is not None and value < self.min_value:
            value = self.min_value 

        if self.max_value is not None and value > self.max_value:
            value = self.max_value 

        # called by enumcontrolmode
        str_rep = self.format_value(value)
        self.label.set_text(str_rep)
        self.value = float(str_rep)

        if self.obj_id is None:
            self.create_obj()
        if self.obj_id is not None:
            MFPGUI().mfp.send(self.obj_id, 0, self.value)
コード例 #12
0
    def set_bounds(self, min_val, max_val):
        self.max_value = max_val
        self.min_value = min_val

        newval = False
        if self.value > self.max_value:
            self.value = self.max_value
            newval = True

        if self.value < self.min_value:
            self.value = self.min_value
            newval = True

        if newval:
            MFPGUI().mfp.send(self.obj_id, 0, self.value)

        self.scale_ticks = None
        self.update()
        self.send_params()
コード例 #13
0
 def cb(fname):
     MFPGUI().mfp.open_file(fname)
コード例 #14
0
 def cb(plugname):
     if plugname:
         MFPGUI().mfp.save_lv2(patch.obj_name, plugname)
コード例 #15
0
ファイル: patch_element.py プロジェクト: swipswaps/mfp-1
 def get_params(self):
     return MFPGUI().mfp.get_params(self.obj_id)
コード例 #16
0
ファイル: message_element.py プロジェクト: swipswaps/mfp-1
 def clicked(self, *args):
     self.clickstate = True
     if self.obj_id is not None:
         MFPGUI().mfp.send_bang(self.obj_id, 0)
     self.texture.invalidate()
     return False
コード例 #17
0
ファイル: patch_element.py プロジェクト: swipswaps/mfp-1
 def combine_styles(self):
     styles = {}
     for styleset in (MFPGUI().style_defaults, PatchElement.style_defaults,
                      type(self).style_defaults, self.style):
         styles.update(styleset)
     return styles
コード例 #18
0
ファイル: via_element.py プロジェクト: wrl/mfp
 def label_edit_finish(self, *args):
     ViaElement.label_edit_finish(self, *args)
     MFPGUI().mfp.send(self.obj_id, 1, self.label.get_text())
コード例 #19
0
ファイル: patch_element.py プロジェクト: swipswaps/mfp-1
    def create(self, obj_type, init_args):
        scopename = self.layer.scope
        patchname = self.layer.patch.obj_name
        connections_out = self.connections_out
        connections_in = self.connections_in
        self.connections_out = []
        self.connections_in = []

        # FIXME: optional name-root argument?  Need to pass the number at all,
        # with the scope handling it?
        if self.obj_name is not None:
            name = self.obj_name
        else:
            name_index = self.stage.object_counts_by_type.get(
                self.display_type, 0)
            name = "%s_%03d" % (self.display_type, name_index)

        if self.obj_id is not None:
            MFPGUI().mfp.set_gui_created(self.obj_id, False)
            MFPGUI().mfp.delete(self.obj_id)
            self.obj_id = None

        objinfo = MFPGUI().mfp.create(obj_type, init_args, patchname,
                                      scopename, name)
        if self.layer is not None and objinfo:
            objinfo["layername"] = self.layer.name

        if objinfo is None:
            self.stage.hud_write(
                "ERROR: Could not create, see log for details")
            self.connections_out = connections_out
            self.connections_in = connections_in
            return None

        self.obj_id = objinfo.get('obj_id')
        self.obj_name = objinfo.get('name')
        self.obj_args = objinfo.get('initargs')
        self.obj_type = obj_type
        self.scope = objinfo.get('scope')
        self.num_inlets = objinfo.get("num_inlets")
        self.num_outlets = objinfo.get("num_outlets")
        self.dsp_inlets = objinfo.get("dsp_inlets", [])
        self.dsp_outlets = objinfo.get("dsp_outlets", [])

        if self.obj_id is not None:
            self.configure(objinfo)

            # rebuild connections if necessary
            for c in connections_in:
                if c.obj_2 is self and c.port_2 >= self.num_inlets:
                    c.obj_2 = None
                    c.delete()
                else:
                    self.connections_in.append(c)
                    if not c.dashed:
                        MFPGUI().mfp.connect(c.obj_1.obj_id, c.port_1,
                                             c.obj_2.obj_id, c.port_2)

            for c in connections_out:
                if c.obj_1 is self and c.port_1 >= self.num_outlets:
                    c.obj_1 = None
                    c.delete()
                else:
                    self.connections_out.append(c)
                    if not c.dashed:
                        MFPGUI().mfp.connect(c.obj_1.obj_id, c.port_1,
                                             c.obj_2.obj_id, c.port_2)

            MFPGUI().remember(self)
            self.send_params()
            MFPGUI().mfp.set_gui_created(self.obj_id, True)

        self.stage.refresh(self)

        return self.obj_id
コード例 #20
0
 def delete(self):
     self.stage.unregister(self)
     if self.obj_id is not None and not self.is_export:
         MFPGUI().mfp.delete(self.obj_id)
     self.obj_id = None
     self.obj_state = self.OBJ_DELETED