from kiwi.model import Model from kiwi.ui.views import BaseView from kiwi.ui.gadgets import quit_if_last # define the class that holds our application data class Person(Model): name = "" address = "" phone = "" person = Person() view1 = BaseView(delete_handler=quit_if_last, widgets=("name", "address", "phone"), gladefile="person") # create and run a proxy interface attached to person view1.add_proxy(person, ("name", "address", "phone")) view1.focus_topmost() view1.show_all() view2 = BaseView(delete_handler=quit_if_last, widgets=("name", "address", "phone"), gladefile="person") # create and run a proxy interface attached to person view2.add_proxy(person, ("name", "address", "phone")) view2.focus_topmost() view2.show_all()
#!/usr/bin/env python import gtk from kiwi.ui.gadgets import quit_if_last from kiwi.ui.views import BaseView app = BaseView(gladefile="hey.ui", delete_handler=quit_if_last) # the_label, a widget defined in glade, is text = app.the_label.get_text() # now an instance variable of the view app.the_label.set_markup('<b>%s</b>' % text) app.the_label.set_use_markup(True) app.show() gtk.main()
#!/usr/bin/env python import gtk from kiwi.controllers import BaseController from kiwi.ui.views import BaseView from kiwi.ui.gadgets import quit_if_last class FarenControl(BaseController): def on_quitbutton__clicked(self, *args): self.view.hide_and_quit() def after_temperature__insert_text(self, entry, *args): try: temp = float(entry.get_text()) except ValueError: temp = 0 celsius = (temp - 32) * 5 / 9.0 farenheit = (temp * 9 / 5.0) + 32 self.view.celsius.set_text("%.2f" % celsius) self.view.farenheit.set_text("%.2f" % farenheit) widgets = ["quitbutton", "temperature", "celsius", "farenheit"] view = BaseView(gladefile="faren.ui", delete_handler=quit_if_last, widgets=widgets) ctl = FarenControl(view) view.show() gtk.main()
#!/usr/bin/env python from gi.repository import Gtk from kiwi.ui.gadgets import quit_if_last from kiwi.ui.views import BaseView class NewsItem: """An instance representing an item of news. Attributes: title, author, url, size""" title = '' url = '' author = '' size = 0 item = NewsItem() my_widgets = ["title", "author", "url", "size"] view = BaseView(gladefile="newsform.ui", widgets=my_widgets, delete_handler=quit_if_last) view.add_proxy(item, my_widgets) view.focus_topmost() view.show() Gtk.main() # runs till window is closed as per delete_handler print('Item: "%s" (%s) %s %d' % (item.title, item.author, item.url, item.size))
#!/usr/bin/env python import gtk from kiwi.ui.views import BaseView, SlaveView from kiwi.ui.objectlist import Column from kiwi.ui.gadgets import quit_if_last # Main window addressbook = BaseView(gladefile="addressbook", widgets=("add", "del"), delete_handler=quit_if_last) ## Slave Components: # Entry editor GUI component entry_editor = SlaveView(toplevel=addressbook, widgets=("name", "address", "phone"), gladefile="entry_editor") # Entries list GUI component list_entries = SlaveView(toplevel=addressbook, widgets=("table",), gladefile="list_entries") list_entries.table.set_columns([Column("name", title="Name"), Column("address", title="Address"), Column("phone", title="Phone")]) ## Attach slaves to main window addressbook.attach_slave("entry_editor", entry_editor) addressbook.attach_slave("list", list_entries)
("Those Crazy Dutch Have Resurrected Elvis", "Miss Conduct", "http://www.pigdog.org/auto/viva_la_musica/link/2678.html") ] class News(SlaveView): def __init__(self): model = Gtk.ListStore(str, str) treeview = Gtk.TreeView(model) renderer = Gtk.CellRendererText() col1 = Gtk.TreeViewColumn('News', renderer, text=0) col2 = Gtk.TreeViewColumn('Author', renderer, text=1) treeview.append_column(col1) treeview.append_column(col2) treeview.get_selection().set_mode(Gtk.SelectionMode.BROWSE) for item in news: model.append(item[:-1]) SlaveView.__init__(self, treeview) news = News() shell = BaseView(gladefile="news_shell.ui", delete_handler=quit_if_last) shell.attach_slave("placeholder", news) news.show_all() news.focus_toplevel() # explained next section, don't worry shell.show() Gtk.main()