1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@author: Alessandro Facciorusso
"""
from gi.repository import Gtk, Gdk, GObject
import os
import sys
import platform
import pkg_resources
from gettext import gettext as _
from bumblebee_config.utils import determine_module_path
from bumblebee_config.apt_helper import AptHelper
from bumblebee_config.bumblebee_config_window import BumblebeeConfigWindow
from bumblebee_config import bumblebee_helper
from bumblebee_config.install_progress_dialog import InstallProgressDialog
APP = "bumblebee-config-gui"
try:
__version__ = pkg_resources.require(APP)[0].version
except:
__version__ = ""
class BumblebeeMainWindow(object):
def __init__(self):
super(BumblebeeMainWindow, self).__init__()
self.bumblebeeInstalled = False
self.aptHelper = AptHelper()
self.builder = Gtk.Builder()
self.builder.set_translation_domain(APP)
self.builder.add_from_file(os.path.join(determine_module_path(), "main_window.ui"))
self.mainWindow = self.builder.get_object("window1")
self.mainWindow.set_title(_("Bumblebee Configurator GUI") + " " + __version__)
self.installButton = self.builder.get_object("installButton")
self.installButton.connect("clicked", self._onInstallButtonClicked)
self.builder.get_object("configureButton").connect("clicked", self._onConfigureButtonClicked)
self.builder.get_object("restartButton").connect("clicked", self._onRestartButtonClicked)
self.builder.get_object("checkStatusButton").connect("clicked", self._onCheckStatusButtonClicked)
if self.isUbuntu():
if self.aptHelper.checkBumblebeeInstalled():
self.installButton.set_label(_("Reinstall Bumblebee"))
self.bumblebeeInstalled = True
else:
self.installButton.set_label(_("Install Bumblebee"))
else:
self.installButton.set_sensitive(False)
def isUbuntu(self):
if platform.linux_distribution()[0].lower() == "ubuntu":
return True
else:
return False
def _onInstallButtonClicked(self, widget):
dialog = InstallProgressDialog(self.mainWindow)
self.aptHelper.installBumblebee(dialog.downloadingCb, dialog.installingCb, self.bumblebeeInstalled)
dialog.run()
dialog.destroy()
self.installButton.set_label(_("Reinstall Bumblebee"))
self.bumblebeeInstalled = True
def _onConfigureButtonClicked(self, widget):
confWnd = BumblebeeConfigWindow()
confWnd.runAsDialog(self.mainWindow)
def _onRestartButtonClicked(self, widget):
msg = ""
msg += _("Executing \'service bumblebeed restart\':") + "\n"
msg += bumblebee_helper.restartBumblebeed()
dialog = Gtk.MessageDialog(self.mainWindow, 0, Gtk.MessageType.INFO,
Gtk.ButtonsType.OK, _("Bumblebee output"))
dialog.format_secondary_text(msg)
dialog.run()
dialog.destroy()
print msg
def _onCheckStatusButtonClicked(self, widget):
msg = ""
msg += "\n" + _("Bumblebeed status:") + "\n"
msg += bumblebee_helper.checkBumblebeedStatus()
dialog = Gtk.MessageDialog(self.mainWindow, 0, Gtk.MessageType.INFO,
Gtk.ButtonsType.OK, _("Bumblebee output"))
dialog.format_secondary_text(msg)
dialog.run()
dialog.destroy()
print msg
def run(self):
GObject.threads_init()
Gdk.threads_init();
Gdk.threads_enter();
self.mainWindow.show_all()
self.mainWindow.connect("delete-event", Gtk.main_quit)
Gdk.threads_leave()
Gtk.main()
return 0
|