Starten von Sunflower_fm

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
HippieFloppy
Beiträge: 114
Registriert: 10.08.2011 23:59:44
Lizenz eigener Beiträge: GNU General Public License

Starten von Sunflower_fm

Beitrag von HippieFloppy » 01.05.2012 19:03:09

Hi Leute,

Heute wollte ich die neuste Version von http://code.google.com/p/sunflower-fm/d ... -1.all.deb Sunflower fm ansehen und habe mit gdebi installiert. :D

Das Programm startet leider nicht, im Terminal kommt folgendes:

Code: Alles auswählen

# sunflower
Traceback (most recent call last):
  File "/usr/share/sunflower/application/main.py", line 28, in <module>
    app = MainWindow()
  File "/usr/share/sunflower/application/gui/main_window.py", line 87, in __init__
    self.mount_manager = MountsManager(self)
  File "/usr/share/sunflower/application/mounts.py", line 15, in __init__
    self.window = MountsManagerWindow(self)
  File "/usr/share/sunflower/application/gui/mounts_manager_window.py", line 99, in __init__
    self._volumes = VolumesExtension(self._parent, self)
  File "/usr/share/sunflower/application/gui/mounts_manager_window.py", line 485, in __init__
    self._controls.pack_start(self._spinner, False, False, 0)
TypeError: Gtk.Box.pack_start() argument 1 must be gtk.Widget, not None
Failed running with python2.6
Ist da was mit die Einstellungen krumm?

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Starten von Sunflower_fm

Beitrag von rendegast » 02.05.2012 14:28:09

In application/gui/mounts_manager_window.py:

Code: Alles auswählen


                # use spinner if possible to denote busy operation
                if hasattr(gtk, 'Spinner'):
                        self._spinner = gtk.Spinner()
                        self._spinner.set_size_request(20, 20)
                        self._spinner.set_property('no-show-all', True)

                else:
                        self._spinner = None

                # pack interface
                container.add(self._list)

                self._controls.pack_start(self._spinner, False, False, 0)
                self._controls.pack_end(button_unmount, False, False, 0)
                self._controls.pack_end(button_mount, False, False, 0)

                self._container.pack_start(container, True, True, 0)
Es wird self._spinner=None gesetzt, und einfach als widget verwendet,
was aber nach der Fehlermeldung wohl ein gar nicht erlaubter Wert ist.

Welches Paket fehlt noch, damit
hasattr(gtk, 'Spinner')
positiv wird?
Widget Spinner ist wohl aus python-gtk entfernt.



Taucht auch auf in application/widgets/title_bar.py:

Code: Alles auswählen

        def set_state(self, state):
                """Set GTK control state for title bar"""
                self._state = state

                        self._spinner = gtk.Spinner()
                        self._spinner.set_size_request(20, 20)
                        self._spinner.set_property('no-show-all', True)

                else:
                        self._spinner = None

                # pack interface
                vbox.pack_start(self._title_label, True, True, 0)
                vbox.pack_start(self._subtitle_label, False, False, 0)

                self._hbox.pack_start(self._button_menu, False, False, 0)
                self._hbox.pack_start(vbox, True, True, 3)

                if self._spinner is not None:
                        self._hbox.pack_start(self._spinner, False, False, 5)

                self._container.add(self._hbox)
Hier aber gibt es eine "None"-Behandlung.
Das ist auch an anderen Stellen so, also ist application/gui/mounts_manager_window.py da wohl buggy.




Ein bei mir funktionierender walkaround, statt:

Code: Alles auswählen

                else:
                        self._spinner = None

                # pack interface
                container.add(self._list)

                self._controls.pack_start(self._spinner, False, False, 0)
                self._controls.pack_end(button_unmount, False, False, 0)
                self._controls.pack_end(button_mount, False, False, 0)

                self._container.pack_start(container, True, True, 0)
auskommentieren:

Code: Alles auswählen

                else:
                        self._spinner = None

                # pack interface
                container.add(self._list)

                #self._controls.pack_start(self._spinner, False, False, 0)
                self._controls.pack_end(button_unmount, False, False, 0)
                self._controls.pack_end(button_mount, False, False, 0)

                self._container.pack_start(container, True, True, 0)
wohl etwas besser:

Code: Alles auswählen

                else:
                        self._spinner = None

                # pack interface
                container.add(self._list)

                if self._spinner is not None:
                        self._controls.pack_start(self._spinner, False, False, 0)

                self._controls.pack_end(button_unmount, False, False, 0)
                self._controls.pack_end(button_mount, False, False, 0)

                self._container.pack_start(container, True, True, 0)
Da ich gar nix Python kann, weiß ich nicht,
ob die drei Zeilen
self._controls.pack_start(...) und self._controls.pack_end(...)
zusammengehören und die
self._controls.pack_end also genauso behandelt werden müssen.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Antworten