Exemple #1
0
def reparent(window, parent):
    """ Forced reparent. When reparenting Gtk applications into Tk
    some extra protocol calls are needed.
    """
    from Xlib import display
    from Xlib.xobject import drawable

    if not parent:
        return window

    plug = gtk.Plug(int(parent))
    plug.show()

    d = display.Display()
    w = drawable.Window(d.display, plug.window.xid, 0)
    # Honor XEmbed spec
    atom = d.get_atom('_XEMBED_INFO')
    w.change_property(atom, atom, 32, [0, 1])
    w.reparent(parent, 0, 0)
    w.map()
    d.sync()

    for c in window.get_children():
        window.remove(c)
        plug.add(c)

    # Hide window if it's displayed
    window.unmap()

    return plug
Exemple #2
0
    def prepare(self):
        '''
		Prepare a widget for embedding. If it is already embeded this will break the widget free.
		'''

        newplug = gtk.Plug(0)

        if None == self.widget:
            self.widget = self.prepare_new_widget()
            newplug.add(self.widget)
        else:
            if None != self.widget.get_parent():
                self.widget.reparent(newplug)
            else:
                newplug.add(self.widget)

        if None != self.plug:
            del self.plug
        self.plug = newplug

        self.plug.show_all()

        Components.Client.logger.info(
            "Prepare plug for insertion, ID={0}".format(self.plug.get_id()))

        return self.plug.get_id()
Exemple #3
0
    def __init__(self):

        usage = "usage: %prog [options]"
        parser = OptionParser(usage=usage)
        parser.disable_interspersed_args()
        parser.add_options(options)
        self.set_theme_font()
        (opts, args) = parser.parse_args()

        self.window = gtk.Window()
        self.window.set_default_size(1024, 600)

        xid = None
        if opts.parent:
            xid = int(opts.parent)
            plug = gtk.Plug(xid)
            for c in self.window.get_children():
                self.window.remove(c)
                plug.add(c)
            self.window = plug

        self.window.connect('destroy', self.quit)

        self.table = gtk.Table(10, 5)

        self.btn_hal = gtk.Button(label="HAL Configuration")
        self.btn_hal.set_border_width(4)
        self.btn_hal.connect("clicked", self.halshow_action)

        self.btn_halscope = gtk.Button(label="HAL Scope")
        self.btn_halscope.set_border_width(4)
        self.btn_halscope.connect("clicked", self.halscope_action)

        self.btn_ladder = gtk.Button(label="Ladder Logic")
        self.btn_ladder.set_border_width(4)
        self.btn_ladder.connect("clicked", self.ladder_action)

        self.btn_teamviewer = gtk.Button(label="Teamviewer")
        self.btn_teamviewer.set_border_width(4)
        self.btn_teamviewer.connect("clicked", self.teamviewer_action)

        self.btn_nautilus = gtk.Button(label="File Manager")
        self.btn_nautilus.set_border_width(4)
        self.btn_nautilus.connect("clicked", self.nautilus_action)

        self.btn_linuxcncop = gtk.Button(label="Linuxcnc Status")
        self.btn_linuxcncop.set_border_width(4)
        self.btn_linuxcncop.connect("clicked", self.linuxcnc_status)

        self.table.attach(self.btn_hal, 0, 1, 0, 1)
        self.table.attach(self.btn_ladder, 0, 1, 1, 2)
        self.table.attach(self.btn_linuxcncop, 0, 1, 2, 3)
        self.table.attach(self.btn_halscope, 1, 2, 0, 1)
        self.table.attach(self.btn_teamviewer, 1, 2, 1, 2)
        self.table.attach(self.btn_nautilus, 1, 2, 2, 3)
        self.window.add(self.table)
    def __init__(self, xid, path):

        self.conn = None
        self.cursor = None
        self.store = None
        self.isopen = False

        self.tables = gtk.combo_box_new_text()
        self.table = gtk.TreeView()

        self.dialog = gtk.Dialog()

        self.table.set_enable_search(True)
        self.table.set_grid_lines(grid_lines)
        self.table.set_hover_selection(hover_selection)

        if query_is_entry:
            self.query = gtk.Entry()
            self.query.set_editable(query_editable)
            self.query.connect("activate", self.entry_activate)
        else:
            self.query = gtk.Label()
            self.query.set_selectable(query_editable)
            self.query.set_alignment(0, 0.5)

        button = gtk.Button("Query", None, False)
        button.connect("pressed", self.kostyl_dialog)

        hbox = gtk.HBox(homogeneous=False, spacing=5)
        hbox.pack_start(gtk.Label("Tables:"), False)
        hbox.pack_start(self.tables, False)
        hbox.add(self.query)
        hbox.pack_end(button, False)
        hbox.set_border_width(5)

        self.sw = gtk.ScrolledWindow()
        self.sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        self.sw.add(self.table)

        self.container = gtk.VBox(homogeneous=False, spacing=5)
        self.container.pack_start(hbox, expand=False)
        self.container.add(self.sw)

        self.open_db(path)
        query = "SELECT * FROM {0};".format(self.tables.get_active_text())

        self.query.set_text(query)
        if self.isopen:
            gobject.idle_add(self.execute, query)
        self.plug = gtk.Plug(xid)
        self.plug.add(self.container)
        self.plug.connect("destroy", self.exit)
        self.plug.show_all()
Exemple #5
0
def add_plug(window):
    """Replace top level with a plug so it can be reparented.
    This doesn't actually reparent the widget
    """
    plug = gtk.Plug(0)
    plug.show()
    for c in window.get_children():
        window.remove(c)
        plug.add(c)

    # Hide window if it's displayed
    window.unmap()
    return plug
Exemple #6
0
    def __init__(self, session_bus, appid, dbus_name, dbus_path):
        dbus.service.Object.__init__(self, session_bus, dbus_path)

        self.appid = appid
        self.dbus_name = dbus_name
        self.dbus_path = dbus_path
        
        # WARING: only use once in one process
        DBusGMainLoop(set_as_default=True) 
        
        self.plug = gtk.Plug(0)

        self.webview = WebView(COOKIE_FILE)
        self.webview.connect('title-changed', self.webview_message_handler)
        self.webview.connect('script-alert', self.webview_message_handler)
        #self.webview.enable_inspector()
        self.paned_box = PanedBox(2, True, 2, True)
        self.paned_box.enter_bottom_win_callback = self.enter_bottom_notify
        self.paned_box.enter_top_win_callback = self.enter_top_notify
        self.paned_box.add_content_widget(self.webview)
        self.plug.add(self.paned_box)
        self.plug.connect('delete-event', self.plug_delete_event)
        
        # Handle signals.
        self.plug.connect("realize", self.flash_frame_realize)
        self.plug.connect("destroy", self.flash_frame_exit)

        glib.timeout_add(1000, self.is_exist)
        glib.timeout_add(200, self.connect_signal)

        def message_receiver(self, *message):
            message_type, contents = message
            if message_type == 'exit':
                self.exit()
            elif message_type == 'load_uri':
                self.load_flash(contents)
            elif message_type == 'load_loading_uri':
                self.webview.load_uri(contents)
                self.send_message('loading_uri_finish', '')
            elif message_type == 'load_string':
                self.webview.load_string(contents)
            elif message_type == 'get_plug_id':
                self.send_flash_info()
            elif message_type == 'app_info_download_finish':
                self.webview.execute_script("app_info=%s" %
                        json.dumps(str(contents), encoding="UTF-8", ensure_ascii=False))

        setattr(FlashFrame, 
                'message_receiver', 
                dbus.service.method(dbus_name)(message_receiver))
Exemple #7
0
    def __init__(self, socket_id, profile):
        """ PlugBrowser(socket_id, profile) -> Basic initialization and 
        setup of a gtk.Plug to hold this browser view.

        """

        super(
            PlugBrowser,
            self,
        ).__init__(profile)

        self._socket_id = socket_id

        self._pid = os.getpid()

        plug = gtk.Plug(socket_id)
        plug.add(self)
        plug.show_all()
Exemple #8
0
    def __init__(self):
        xdot.DotWidget.__init__(self)

        self.connect('clicked', self.on_url_clicked)
        self.connect('activate', self.on_url_activate)
        self.connect('select', self.on_url_select)
        self.connect('unselect-all', self.on_url_unselect_all)
        self.connect('key-press-event', self.on_url_key_press)

        self.flows = {}
        self.current_flow = None

        Wid = 0L
        if len(sys.argv) == 3:
            Wid = long(sys.argv[1])
            locale_dir = str(sys.argv[2])

        self.plug = gtk.Plug(Wid)

        self.plug.add(self)
        self.plug.show_all()

        gettext.install("gebr", locale_dir)
Exemple #9
0
def main(args=None):
    translations.init()

    gtk_options = (_('gtk-specific options'),
                   _("Options specific to bpython's Gtk+ front end"), [
                       optparse.Option('--socket-id',
                                       dest='socket_id',
                                       type='int',
                                       help=_('Embed bpython'))
                   ])
    config, options, exec_args = bpython.args.parse(args, gtk_options, True)

    interpreter = repl.Interpreter(None, getpreferredencoding())
    repl_widget = ReplWidget(interpreter, config)
    repl_widget.connect('exit-event', gtk.main_quit)

    gobject.idle_add(init_import_completion)

    if not exec_args:
        sys.path.insert(0, '')
        gobject.idle_add(repl_widget.startup)
    else:
        if options.interactive:
            gobject.idle_add(bpython.args.exec_code, interpreter, exec_args)
        else:
            bpython.args.exec_code(interpreter, exec_args)
            return 0

    sys.stderr = repl_widget
    sys.stdout = repl_widget

    if not options.socket_id:
        parent = gtk.Window()
        parent.connect('delete-event', lambda widget, event: gtk.main_quit())

        # branding
        # fix icon to be distributed and loaded from the correct path
        icon = gtk.gdk.pixbuf_new_from_file(
            os.path.join(os.path.dirname(__file__), 'logo.png'))

        parent.set_title('bpython')
        parent.set_icon(icon)
        parent.resize(600, 300)
    else:
        parent = gtk.Plug(options.socket_id)
        parent.connect('destroy', gtk.main_quit)

    container = gtk.VBox()
    parent.add(container)

    mb = gtk.MenuBar()
    filemenu = gtk.Menu()

    filem = gtk.MenuItem("File")
    filem.set_submenu(filemenu)

    save = gtk.ImageMenuItem(gtk.STOCK_SAVE)
    save.connect("activate", repl_widget.do_write2file)
    filemenu.append(save)

    pastebin = gtk.MenuItem("Pastebin")
    pastebin.connect("activate", repl_widget.do_paste)
    filemenu.append(pastebin)

    pastebin_partial = gtk.MenuItem(_("Pastebin selection"))
    pastebin_partial.connect("activate", repl_widget.do_partial_paste)
    filemenu.append(pastebin_partial)

    exit = gtk.ImageMenuItem(gtk.STOCK_QUIT)
    exit.connect("activate", gtk.main_quit)
    filemenu.append(exit)

    mb.append(filem)
    vbox = gtk.VBox(False, 2)
    vbox.pack_start(mb, False, False, 0)

    container.pack_start(vbox, expand=False)

    # read from config
    sw = gtk.ScrolledWindow()
    sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
    sw.add(repl_widget)
    container.add(sw)

    sb = repl_widget.interact.statusbar
    container.pack_end(sb, expand=False)

    parent.set_focus(repl_widget)
    parent.show_all()
    parent.connect('delete-event', lambda widget, event: gtk.main_quit())

    try:
        gtk.main()
    except KeyboardInterrupt:
        pass

    return 0
Exemple #10
0
#!/usr/bin/python

import pygtk
pygtk.require('2.0')
import gtk, sys

Wid = 0L
if len(sys.argv) == 2:
    Wid = long(sys.argv[1])

plug = gtk.Plug(Wid)
print "Plug ID=", plug.get_id()


def embed_event(widget):
    print "I (", widget, ") have just been embedded!"


plug.connect("embedded", embed_event)

entry2 = gtk.Entry()
entry2.set_text("Munghi")

entry = gtk.Entry()
entry.set_text("hello")


def entry_point(widget):
    print "You've changed my text to '%s'" % widget.get_text()

Exemple #11
0
    def __init__(self, policy, exceptions, embed=None, execution_path="/usr/share/tomoyo-mdv"):
        """Initializes main window and GUI"""
        if embed:
            self.window = gtk.Plug(embed)
        else:
            self.window = gtk.Window()
            self.window.set_title(_("Tomoyo GUI"))
            self.window.set_default_size(640, 440)
        self.window.connect('delete-event', lambda *w: gtk.main_quit())

        self.policy = policy
        self.exceptions = exceptions
        self.execution_path = execution_path

        # main vbox
        self.main_vbox = gtk.VBox()
        self.window.add(self.main_vbox)

        # toolbar
        toolbar = gtk.Toolbar()
        toolbar.set_style(gtk.TOOLBAR_ICONS)

        toolbar_item = gtk.ToolButton("Refresh")
        toolbar_item.set_stock_id(gtk.STOCK_REFRESH)
        toolbar_item.connect("clicked", lambda *w: self.refresh_domains(self.all_domains, self.active_domains, reload=True))
        toolbar_item.set_tooltip_text(_("Refresh policy"))
        toolbar.insert(toolbar_item, -1)

        toolbar_item = gtk.ToolButton("Save")
        toolbar_item.set_stock_id(gtk.STOCK_SAVE)
        toolbar_item.connect("clicked", lambda *w: self.save_domains())
        toolbar_item.set_tooltip_text(_("Save policy"))
        toolbar.insert(toolbar_item, -1)

        toolbar_item = gtk.ToolButton(label="Save and apply")
        toolbar_item.set_stock_id(gtk.STOCK_APPLY)
        toolbar_item.connect("clicked", lambda *w: self.save_domains(reload=True))
        toolbar_item.set_tooltip_text(_("Save and apply policy"))
        toolbar.insert(toolbar_item, -1)

        toolbar.insert(gtk.SeparatorToolItem(), -1)

        # policy exporting
        self.export_domains = gtk.ToolButton("Export")
        self.export_domains.set_stock_id(gtk.STOCK_SAVE_AS)
        self.export_domains.connect("clicked", self.export_policy)
        self.export_domains.set_tooltip_text(_("Export selected policy"))
        self.export_domains.set_sensitive(False)
        self.selected_domains = None
        toolbar.insert(self.export_domains, -1)

        # policy importing
        self.import_domains = gtk.ToolButton("Import")
        self.import_domains.set_stock_id(gtk.STOCK_OPEN)
        self.import_domains.connect("clicked", self.import_policy)
        self.import_domains.set_tooltip_text(_("Import selected policy"))
        self.import_domains.set_sensitive(True)
        self.selected_domains = None
        toolbar.insert(self.import_domains, -1)

        toolbar.insert(gtk.SeparatorToolItem(), -1)

        # policy initializing
        self.initialize_domains = gtk.ToolButton("Initialize")
        self.initialize_domains.set_stock_id(gtk.STOCK_REVERT_TO_SAVED)
        self.initialize_domains.connect("clicked", self.install_policy)
        self.initialize_domains.set_tooltip_text(_("Initialize policy"))
        self.selected_domains = None
        toolbar.insert(self.initialize_domains, -1)

        toolbar.insert(gtk.SeparatorToolItem(), -1)

        toolbar_item = gtk.ToolButton("Quit")
        toolbar_item.set_stock_id(gtk.STOCK_QUIT)
        toolbar_item.connect("clicked", lambda *w: gtk.main_quit())
        toolbar_item.set_tooltip_text(_("Quit without saving"))
        toolbar.insert(toolbar_item, -1)

        self.main_vbox.pack_start(toolbar, False, False)

        # tabs
        self.notebook = gtk.Notebook()
        self.main_vbox.pack_start(self.notebook)
        self.notebook.connect('switch-page', self.show_help_for_page)

        # domains
        sw_all, self.all_domains = self.build_list_of_domains()
        sw_active, self.active_domains = self.build_list_of_domains()

        # help text for switching pages
        self.num_pages = 0
        self.page_help = {}
        self.notebook.append_page(sw_all, gtk.Label(_("All domains")))
        self.add_page_help("All domains")
        self.notebook.append_page(sw_active, gtk.Label(_("Active domains")))
        self.add_page_help("Active domains")

        # contents
        sw2 = gtk.ScrolledWindow()
        sw2.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        sw2.set_shadow_type(gtk.SHADOW_ETCHED_IN)
        frame = gtk.Frame(_("Details"))
        self.domain_details = gtk.VBox(False, 5)
        frame.add(self.domain_details)
        sw2.add_with_viewport(frame)
        self.main_vbox.pack_start(sw2)

        # size group
        self.size_group = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL)

        # show initial help
        self.show_help(0)

        self.window.show_all()

        self.refresh_domains(self.all_domains, self.active_domains)

        # now building exceptions
        sw_exceptions, self.ls_exceptions = self.build_list_of_exceptions()
        self.update_exceptions()
        self.notebook.append_page(sw_exceptions, gtk.Label(_("Exceptions")))
        self.add_page_help("Exceptions")

        # help
        self.notebook.append_page(self.build_help(), gtk.Label(_("Help")))
        self.add_page_help("Help")