示例#1
0
 def __init__(self, ctx):
     SirannonBase.__init__(self, ctx)
     self.registerEvents()
     self.widget = self.ctx.getWidget('Run')
     self.console = self.ctx.getWidget('Console')
     self.consoleWidget = self.ctx.getWidget('ConsoleWidget')
     self.commandBin = self.ctx.getWidget('CommandBin')
     self.commandArgs = self.ctx.getWidget('CommandArgs')
     self.commandXML = self.ctx.getWidget('CommandXML')
     self.commandFlags = self.ctx.getWidget('CommandFlags')
     self.commandFlags.set_text('-vv')
     self.consoleWidget.connect('notify::expanded', self.eventExpanderToggle)
     self.buttonPlay = self.ctx.getWidget('buttonPlay')
     self.buttonStop = self.ctx.getWidget('buttonStop')
     self.buttonStop.set_sensitive(False)
     self.process = None
     self.args = {}
     self.shell_file = None
     self.shell_str = ''
     self.active = False        
     buffer = self.console.get_buffer()
     self.mark_end = buffer.create_mark('end', buffer.get_end_iter(), False )
     self.console.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse("black"))
     self.console.modify_text(gtk.STATE_NORMAL, gtk.gdk.color_parse("white"))
     self.sanitize()
示例#2
0
 def __init__(self, ctx, widget):
     SirannonBase.__init__(self, ctx)
     self.registerEvents()
     self.widget = widget
     self.h0 = None
     self.h1 = None
     self.line = crcanvas.Line(line_width=ARROW_WIDTH, outline_color=ARROW_COLOR, close=False)
     self.widget.root.add(self.line)
     self.arrow = crcanvas.Arrow(point_id=-2, fatness=7, scaleable=True, angle=0, length=ARROW_LENGTH, depth=0, outline_color=ARROW_COLOR, line_width=ARROW_WIDTH)
     self.line.add(self.arrow)
     self.arrow.connect_parent(self.line)        
     self.line.connect('event', self.event)
示例#3
0
    def __init__(self, ctx, widget, name, type, x=0, y=0, w=MODEL_DEFAULT_WIDTH, h=MODEL_DEFAULT_HEIGHT, r=0.0):
        # Master
        SirannonBase.__init__(self, ctx)
        self.registerEvents()
        self.widget = widget
        self.name = name
        self.type = type
        self.sync = True

        # The model will be a rectangle.
        self.model = crcanvas.Rectangle(x=x, y=y, width=w, height=h, outline_color=MODEL_BORDER_COLOR, fill_color=MODEL_COLOR)
        self.text = crcanvas.Text(fill_color=MODEL_TEXT_COLOR, anchor=gtk.ANCHOR_CENTER, use_markup=True)
        self.model.add(self.text)
        self.text.props.text = '{0}\n(<i>{1}</i>)'.format(self.name, self.type)
        self.model.mode = MODE_MOVE
        self.model.id = -1
        self.model.connect('event', self.event)
        
        matrix = self.model.matrix
        matrix.rotate(r)
        self.model.matrix = matrix        
         
        # The controllers
        self.controllers = [form(width=CONTROLLER_WIDTH,
                                  height=CONTROLLER_HEIGHT,
                                  outline_color=color,
                                  line_width=CONTROLLER_BORDER_NORMAL,
                                  test_fill=True) \
                             for form, color in zip(CONTROLLER_FORM, CONTROLLER_COLOR)]       

        # Position the controllers
        for i, controller in enumerate(self.controllers):
            controller.id = i
            controller.mode = CONTROLLER_MODE[i]
            controller.orientation = CONTROLLER_ORIENTATION[i]
            controller.master = self
            controller.connect('event', self.event)
            
        # Check
        w, h = self.min_size()
        self.model.props.width = max(self.model.props.width, w)
        self.model.props.height = max(self.model.props.height, h)       
        self.update_controllers()
            
        # Add
        self.widget.canvas.props.root.add(self.model)
        for controller in self.controllers:           
            self.widget.canvas.props.root.add(controller)
示例#4
0
 def __init__(self, ctx, master, widget):
     SirannonBase.__init__(self, ctx)
     self.registerEvents()
     self.master = master
     self.widget = widget
     self.components = {}
     self.arrows = {}
     self.line = None        
     self.canvas = crcanvas.Canvas(auto_scale=True, maintain_center=True, maintain_aspect=True, show_less=False)
     self.widget.add(self.canvas)
     self.root = self.canvas.props.root
     self.root.connect('event', self.eventClickComponent)
     self.canvas.connect('event', self.eventClickCanvas)
     #self.canvas.set_repaint_mode(True)
     self.fresh = True
     self.canvas.set_max_scale_factor(5.0, 5.0)
     self.canvas.set_min_scale_factor(0.2, 0.2)        
示例#5
0
    def __init__(self, ctx):
        SirannonBase.__init__(self, ctx)
        self.registerEvents()
        self.registerWidgets('cstTable')
        self.prev = None
        self.prev2 = None
        self.current = None
        self.x = canvas.MODEL_DEFAULT_WIDTH * 1.2
        self.y = canvas.MODEL_DEFAULT_WIDTH * 1.2

        self.source = self.source = SirannonPalette()
        self.source.addExpander('Source', ('File', 'file'), ('URL', 'entry'),
                                expanded=True)
        self.video = SirannonPalette()
        self.video.addExpander('Video Transcoding', ('No', None),
                               ('H264', None), ('WebM', None), ('M2V', None),
                               ('Other', 'entry'))
        self.audio = SirannonPalette()
        self.audio.addExpander('Audio Transcoding', ('No', None),
                               ('M4A', None), ('Vorbis', None), ('MP3', None),
                               ('Other', 'entry'))
        self.pack = SirannonPalette()
        self.pack.addExpander('Packetization', ('Default', None), ('No', None),
                              ('Other', 'entry'))
        self.mux = SirannonPalette()
        self.mux.addExpander('Multiplexing', ('No', None), ('Basic', None),
                             ('MPEG-2 Transport Stream (.ts)', None),
                             ('Flash Video (.flv)', None),
                             ('MPEG-4 (.mp4, .mov)', None),
                             expanded=True)
        self.impair = SirannonPalette()
        self.impair.addExpander('Impair', ('No', None), ('Random', 'entry'),
                                ('Gilbert', 'entry'))
        self.sink = SirannonPalette()
        self.sink.addExpander('Sink', ('File', 'file'), ('RTP', 'entry'),
                              ('UDP', 'entry'),
                              expanded=True)
        self.cstTable.attach(self.source, 0, 1, 0, 1)
        self.cstTable.attach(self.mux, 1, 2, 0, 1)
        self.cstTable.attach(self.sink, 2, 3, 0, 1)
        self.cstTable.attach(self.pack, 0, 1, 1, 2)
        self.cstTable.attach(self.video, 1, 2, 1, 2)
        self.cstTable.attach(self.audio, 2, 3, 1, 2)
        self.cstTable.attach(self.impair, 0, 1, 2, 3)
        self.cstTable.show_all()
示例#6
0
文件: tab.py 项目: erdincay/sirrannon
    def __init__(self, master, config, gladefile, notebook):
        SirannonBase.__init__(self, self)
        self.__config = config
        self.__master = master
        self.__tree = gtk.glade.XML(gladefile, 'Tabs')

        # Tab label
        box = gtk.HBox()
        self.__label = gtk.Label(str=self.__config.getName())
        box.pack_start(self.__label, False, False, 0)
        button = gtk.Button()
        box.pack_start(button, False, False, 0)
        image = gtk.image_new_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_MENU)
        button.add(image)
        button.connect("clicked", self.__close)
        button.set_relief(gtk.RELIEF_NONE)
        box.show_all()

        # Tab notebook
        self.__notebook = self.__tree.get_widget('Tabs')
        self.__notebook.show_all()

        # New page
        self.__page = notebook.append_page(self.__notebook, box)

        # Controller classes
        self.__draw = canvas.SirannonDraw(self, self.getWidget("Canvas"),
                                          self.getWidget("Properties"))
        self.editor = editor.SirannonEditor(self, self.getWidget("XMLEditor"))
        self.run = command.SirannonCommand(self)
        self.construct = construct.SirannonConstruct(self)
        self.library = library.SirannonLibrary(self)
        self.__tabs = (self.construct, self.__draw, self.editor, self.run,
                       self.library)
        self.__tab = self.construct

        # Events
        self.registerEvents()
        gobject.timeout_add(100, self.setTitle)
示例#7
0
    def __init__(self, ctx):
        SirannonBase.__init__(self, ctx)
        self.registerWidgets('libDesc', 'libTable', 'libPalette')

        config = self.ctx.getConfig()
        templates = config.getTemplates()
        self.dLib = {}

        abstracts = [
            item
            for item in sorted(templates, key=lambda x: x.getAttribute('name'))
            if item.getAttribute('abstract').lower() == 'true'
        ]
        for abstract in abstracts:
            type = abstract.getAttribute('name')
            group = gtk.ToolItemGroup(type)
            group.set_collapsed(True)
            self.libPalette.add(group)

            components = [
                item for item in sorted(templates,
                                        key=lambda x: x.getAttribute('name'))
                if item.getAttribute('type') == type
            ]
            for j, component in enumerate(sorted(components)):
                name = component.getAttribute('name')

                item = gtk.ToolItem()
                group.insert(item, -1)
                button = gtk.Button(label=name)
                button.connect("clicked", self.componentSelected, name)
                item.add(button)

                params = config.getTemplateParams(name)
                self.dLib[name] = component, params
            group.show_all()
示例#8
0
    def __init__(self, gladefile=GLADE_FILE):
        SirannonBase.__init__(self, self)
        self.__gladefile = gladefile
        self.__tree = gtk.glade.XML(self.__gladefile)
        self.registerEvents()

        # Main window
        self.window = self.__tree.get_widget("Main")
        self.window.connect("delete-event", self.eventQuit)
        self.window.set_title('Sirannon')
        self.window.maximize()

        # Notebook with file tabs
        self.__notebook = self.__tree.get_widget("FileTabs")
        self.__tabs = []

        # Dialogs
        self.xml_filter = gtk.FileFilter()
        self.xml_filter.set_name('XML file')
        self.xml_filter.add_pattern('*.xml')
        dialog = self.__tree.get_widget("LoadDialog")
        dialog.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
        dialog.add_button(gtk.STOCK_OPEN, gtk.RESPONSE_OK)
        dialog.set_current_folder(DEFAULT_XML_FOLDER)
        dialog.add_filter(self.xml_filter)
        dialog = self.__tree.get_widget("SaveDialog")
        dialog.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
        dialog.add_button(gtk.STOCK_SAVE, gtk.RESPONSE_OK)
        dialog.set_current_folder(DEFAULT_XML_FOLDER)
        dialog.add_filter(self.xml_filter)
        dialog = self.__tree.get_widget("TripleDialog")
        dialog.add_button(gtk.STOCK_NO, gtk.RESPONSE_NO)
        dialog.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
        dialog.add_button(gtk.STOCK_YES, gtk.RESPONSE_YES)
        dialog = self.__tree.get_widget('RenameDialog')
        self.renameEntry = gtk.Entry()
        content = dialog.get_content_area()
        content.pack_start(self.renameEntry, fill=False)
        content.show()
        accel = gtk.AccelGroup()
        self.window.add_accel_group(accel)
        self.undoButton = self.__tree.get_widget('MenuUndo')
        self.undoButton.add_accelerator('activate', accel, ord('z'),
                                        gtk.gdk.CONTROL_MASK,
                                        gtk.ACCEL_VISIBLE | gtk.ACCEL_LOCKED)
        self.redoButton = self.__tree.get_widget('MenuRedo')
        self.redoButton.add_accelerator('activate', accel, ord('y'),
                                        gtk.gdk.CONTROL_MASK,
                                        gtk.ACCEL_VISIBLE | gtk.ACCEL_LOCKED)

        commandXML = self.__tree.get_widget('CommandXML')
        commandXML.add_filter(self.xml_filter)

        # Simulate a new event
        self.eventNew(None)
        self.__notebook.remove_page(0)
        gobject.timeout_add(100, self.update)

        # Override some settings
        settings = gtk.settings_get_default()
        settings.props.gtk_button_images = True
示例#9
0
 def __init__(self, ctx, canvas_widget, properties_widget):
     SirannonBase.__init__(self, ctx)
     self.registerEvents()
     self.__props = SirannonProperties(ctx, properties_widget)
     self.__menu = SirannonMenu(ctx)
     self.__canvas = SirannonCanvas(ctx, self, canvas_widget)
示例#10
0
 def __init__(self, ctx):
     SirannonBase.__init__(self, ctx)
     self.registerEvents()
     self.menu = gtk.Menu()
     self.reload()
示例#11
0
 def __init__(self, ctx, widget):
     SirannonBase.__init__(self, ctx)
     self.registerEvents()
     self.widget = widget
     self.name = ()
     self.button = None     
示例#12
0
 def __init__(self, ctx, widget):
     SirannonBase.__init__(self, ctx)
     self.registerEvents()
     self.widget = widget
     self.widget.get_buffer().connect("changed", self.eventEdit)