diff options
-rwxr-xr-x | gui.py | 33 | ||||
-rw-r--r-- | iw/language_gui.py | 4 | ||||
-rw-r--r-- | iw/language_support_gui.py | 5 | ||||
-rw-r--r-- | iw/mouse_gui.py | 4 | ||||
-rw-r--r-- | iw/package_gui.py | 33 | ||||
-rw-r--r-- | iw/xconfig_gui.py | 6 |
6 files changed, 84 insertions, 1 deletions
@@ -75,6 +75,39 @@ if iutil.getArch() == 'sparc': elif iutil.getArch() == 's390': stepToClass["bootloader"] = ("zipl_gui", "ZiplWindow") + +# +# HACK to make treeview work +# + +def setupTreeViewFixupIdleHandler(view, store): + id = {} + id["id"] = gtk.idle_add(scrollToIdleHandler, (view, store, id)) + +def scrollToIdleHandler((view, store, iddict)): + if not view or not store or not iddict: + return + + try: + id = iddict["id"] + except: + return + + selection = view.get_selection() + if not selection: + return + + model, iter = selection.get_selected() + if not iter: + return + + path = store.get_path(iter) + col = view.get_column(0) + view.scroll_to_cell(path, col, gtk.TRUE, 0.5, 0.5) + + if id: + gtk.idle_remove(id) + # setup globals def processEvents(): gtk.gdk.flush() diff --git a/iw/language_gui.py b/iw/language_gui.py index c2d5b28fd..540cf6abf 100644 --- a/iw/language_gui.py +++ b/iw/language_gui.py @@ -16,6 +16,8 @@ import gtk from iw_gui import * from rhpl.translate import _, N_ +from gui import setupTreeViewFixupIdleHandler + class LanguageWindow (InstallWindow): windowTitle = N_("Language Selection") @@ -98,6 +100,8 @@ class LanguageWindow (InstallWindow): sw.set_policy (gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) sw.add (self.listView) + setupTreeViewFixupIdleHandler(self.listView, self.listStore) + mainBox.pack_start (hbox, gtk.FALSE, gtk.FALSE, 10) mainBox.pack_start (sw, gtk.TRUE, gtk.TRUE) diff --git a/iw/language_support_gui.py b/iw/language_support_gui.py index 65ca1847e..066eb7792 100644 --- a/iw/language_support_gui.py +++ b/iw/language_support_gui.py @@ -18,6 +18,8 @@ from iw_gui import * from flags import flags from rhpl.translate import _, N_ +from gui import setupTreeViewFixupIdleHandler + class LanguageSupportWindow (InstallWindow): windowTitle = _("Additional Language Support") htmlTag = "langsupport" @@ -239,4 +241,7 @@ class LanguageSupportWindow (InstallWindow): store = self.languageList.get_model() + setupTreeViewFixupIdleHandler(self.languageList, store) + + return vbox diff --git a/iw/mouse_gui.py b/iw/mouse_gui.py index ec53c0f74..1cb742118 100644 --- a/iw/mouse_gui.py +++ b/iw/mouse_gui.py @@ -20,6 +20,8 @@ from re import * from rhpl.translate import _, N_ from flags import flags +from gui import setupTreeViewFixupIdleHandler + class MouseWindow(InstallWindow): windowTitle = N_("Mouse Configuration") htmlTag = "mouse" @@ -245,6 +247,8 @@ class MouseWindow(InstallWindow): box.pack_start(sw) label.set_mnemonic_widget(self.mouseview) + setupTreeViewFixupIdleHandler(self.mouseview, self.mousestore) + # then the port list frame = gtk.Frame() frame.set_shadow_type(gtk.SHADOW_IN) diff --git a/iw/package_gui.py b/iw/package_gui.py index 41ba01191..de2a35d69 100644 --- a/iw/package_gui.py +++ b/iw/package_gui.py @@ -929,7 +929,29 @@ class PackageSelectionWindow (InstallWindow): self.setCompCountLabel(comp, count) return - + + def focusIdleHandler(self, data): + if not self.needToFocus: + return + + if self.scrolledWindow is None: + return + + vadj = self.scrolledWindow.get_vadjustment() + swmin = vadj.lower + swmax = vadj.upper + pagesize = vadj.page_size + curval = vadj.get_value() + + self.scrolledWindow.get_vadjustment().set_value(swmax-pagesize) + + if self.idleid is not None: + gtk.idle_remove(self.idleid) + + self.idleid = None + self.needToFocus = 0 + + def getScreen(self, comps, langSupport, instClass, dispatch): @@ -1102,13 +1124,22 @@ class PackageSelectionWindow (InstallWindow): topbox.set_focus_hadjustment(sw.get_hadjustment()) topbox.set_focus_vadjustment(sw.get_vadjustment()) + # save so we can scrfoll if needed + self.scrolledWindow = sw + self.needToFocus = 0 + # if special case we do things a little differently if minimalActive: self.setComponentsSensitive(minimalComp, 0) sw.set_focus_child(minimalCB) + self.needToFocus = 1 elif everythingActive: self.setComponentsSensitive(everythingComp, 0) sw.set_focus_child(everythingCB) + self.needToFocus = 1 + + if self.needToFocus: + self.idleid = gtk.idle_add(self.focusIdleHandler, None) # pack rest of screen hbox = gtk.HBox (gtk.FALSE, 5) diff --git a/iw/xconfig_gui.py b/iw/xconfig_gui.py index 6e00cadea..8dc361d20 100644 --- a/iw/xconfig_gui.py +++ b/iw/xconfig_gui.py @@ -30,6 +30,8 @@ from rhpl.videocard import Videocard_blacklist from desktop import ENABLE_DESKTOP_CHOICE +from gui import setupTreeViewFixupIdleHandler + ddc_monitor_string = _("DDC Probed Monitor") unprobed_monitor_string = _("Unprobed Monitor") @@ -737,6 +739,8 @@ class MonitorWindow (InstallWindow): synctable.attach(align, 3, 4, 1, 2) box.pack_start (synctable, gtk.FALSE, gtk.FALSE) + + setupTreeViewFixupIdleHandler(self.monitorview, self.monitorstore) return box @@ -1069,4 +1073,6 @@ class XConfigWindow (InstallWindow): self.probedMem = self.videocard.primaryCard(useProbed=1).getVideoRam() self.setCurrent(self.currentCard, self.currentMem) + setupTreeViewFixupIdleHandler(self.cardview, self.cardstore) + return self.topbox |