def create_window(self, name=None): """ create a new window """ self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) window_display = self.window.get_display() print_debug("Window display is %s" % window_display) if not window_display: from utils import quit_dragbox print_error("Could not get X Display") quit_dragbox() if name: self.window.set_title(name) self.window.connect("destroy", self.quit_all) self.window.connect("button-press-event", self.cb_window_click) self.vbox = gtk.VBox(False, 0) # Add a scrollbox around the vbox # scrolls the list when it's too long scrollbox = gtk.ScrolledWindow() scrollbox.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) scrollbox.set_border_width(0) self.window.add(scrollbox) scrollbox.add_with_viewport(self.vbox) # Add placeholder for newbies self.make_placeholder() pixbuf = self.window.render_icon(gtk.STOCK_DND_MULTIPLE, gtk.ICON_SIZE_DIALOG) self.window.set_icon(pixbuf) # Setup window as a drag TARGET from shelfitem import file_targets, text_targets self.window.drag_dest_set(gtk.DEST_DEFAULT_ALL, file_targets+text_targets, gtk.gdk.ACTION_DEFAULT | gtk.gdk.ACTION_COPY ) self.window.connect("drag-data-received", self.cb_drag_data_received)
def quit_all(self, ignored=None): """ terminate the main loop on window destroy event """ from utils import quit_dragbox quit_dragbox()