def __init__(self, datadir, desktopdir, cache, db, icons, apps_filter=None, # FIXME: kill this, its not needed anymore? apps_limit=0): """ init the widget, takes datadir - the base directory of the app-store data desktopdir - the dir where the applications.menu file can be found db - a Database object icons - a Gtk.IconTheme apps_filter - ? apps_limit - the maximum amount of items to display to query for """ self.cache = cache self.db = db self.icons = icons self.properties_helper = AppPropertiesHelper( self.db, self.cache, self.icons) self.section = None Viewport.__init__(self) CategoriesParser.__init__(self, db) self.set_name("category-view") # setup base widgets # we have our own viewport so we know when the viewport grows/shrinks # setup widgets self.vbox = Gtk.VBox() self.add(self.vbox) # atk stuff atk_desc = self.get_accessible() atk_desc.set_name(_("Departments")) # appstore stuff self.categories = [] self.header = "" #~ self.apps_filter = apps_filter self.apps_limit = apps_limit # for comparing on refreshes self._supported_only = False # more stuff self._poster_sigs = [] self._allocation = None self._cache_art_assets() #~ assets = self._cache_art_assets() #~ self.vbox.connect("draw", self.on_draw, assets) self._prev_alloc = None self.connect("size-allocate", self.on_size_allocate) return
def __init__( self, datadir, desktopdir, cache, db, icons, apps_filter=None, # FIXME: kill this, its not needed anymore? apps_limit=0): """ init the widget, takes datadir - the base directory of the app-store data desktopdir - the dir where the applications.menu file can be found db - a Database object icons - a Gtk.IconTheme apps_filter - ? apps_limit - the maximum amount of items to display to query for """ self.cache = cache self.db = db self.icons = icons self.properties_helper = AppPropertiesHelper(self.db, self.cache, self.icons) self.section = None Viewport.__init__(self) CategoriesParser.__init__(self, db) self.set_name("category-view") # setup base widgets # we have our own viewport so we know when the viewport grows/shrinks # setup widgets self.vbox = Gtk.VBox() self.add(self.vbox) # atk stuff atk_desc = self.get_accessible() atk_desc.set_name(_("Departments")) # appstore stuff self.categories = [] self.header = "" #~ self.apps_filter = apps_filter self.apps_limit = apps_limit # for comparing on refreshes self._supported_only = False # more stuff self._poster_sigs = [] self._allocation = None self._cache_art_assets() #~ assets = self._cache_art_assets() #~ self.vbox.connect("draw", self.on_draw, assets) self._prev_alloc = None self.connect("size-allocate", self.on_size_allocate) return
def test_visual_glitch_lp1048912(self): win = Gtk.Window() win.set_size_request(500, 300) scroll = Gtk.ScrolledWindow() win.add(scroll) viewport = Viewport() scroll.add(viewport) top_hbox = Gtk.HBox() viewport.add(top_hbox) right_column = Gtk.Box.new(Gtk.Orientation.VERTICAL, 0) top_hbox.pack_start(right_column, True, True, 0) apptiles = Gtk.VBox() apptiles_frame = FramedHeaderBox() apptiles_frame.set_name("apptiles top") apptiles_frame.set_header_label("Frame1") apptiles_frame.add(apptiles) right_column.pack_start(apptiles_frame, True, True, 0) apptiles_frame.header_implements_more_button() apptiles2 = Gtk.VBox() apptiles2_frame = FramedHeaderBox() apptiles2_frame.set_name("apptiles bottom") apptiles2_frame.set_header_label("Frame2") apptiles2_frame.add(apptiles2) right_column.pack_start(apptiles2_frame, True, True, 0) apptiles2_frame.header_implements_more_button() # this delayed adding of the tiles causes a visual glitch like # described in #1048912 on the top of the bottom frame the line # will not be drawn correctly - any subsequent redraw of the # window will fix it GLib.timeout_add(1000, add_tiles, apptiles2) # this "viewport.queue_draw()" will fix the glitch #GLib.timeout_add_seconds(2, lambda: viewport.queue_draw()) # stop the test GLib.timeout_add_seconds(3, Gtk.main_quit) win.connect("destroy", Gtk.main_quit) win.show_all() Gtk.main()