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()
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)
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)
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)
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()
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)
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()
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
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)
def __init__(self, ctx): SirannonBase.__init__(self, ctx) self.registerEvents() self.menu = gtk.Menu() self.reload()
def __init__(self, ctx, widget): SirannonBase.__init__(self, ctx) self.registerEvents() self.widget = widget self.name = () self.button = None
def __init__(self, ctx, widget): SirannonBase.__init__(self, ctx) self.registerEvents() self.widget = widget self.widget.get_buffer().connect("changed", self.eventEdit)