2019-06-09 06:24:03 +00:00
|
|
|
#!/usr/bin/python3
|
|
|
|
|
2020-04-17 19:28:19 +00:00
|
|
|
# Python imports
|
|
|
|
import inspect
|
|
|
|
|
|
|
|
from setproctitle import setproctitle
|
|
|
|
|
2019-06-23 03:23:17 +00:00
|
|
|
# Gtk imports
|
2019-06-23 00:21:18 +00:00
|
|
|
import gi, faulthandler, signal
|
2019-06-09 06:24:03 +00:00
|
|
|
gi.require_version('Gtk', '3.0')
|
|
|
|
|
|
|
|
from gi.repository import Gtk as gtk
|
2019-06-11 03:18:30 +00:00
|
|
|
from gi.repository import Gdk as gdk
|
2019-06-23 00:21:18 +00:00
|
|
|
from gi.repository import GLib
|
2019-06-09 06:24:03 +00:00
|
|
|
|
2019-06-23 03:23:17 +00:00
|
|
|
# Application imports
|
2019-06-23 00:21:18 +00:00
|
|
|
from utils import Settings
|
2020-05-09 03:57:22 +00:00
|
|
|
from signal_classes import Signals
|
2019-06-23 03:23:17 +00:00
|
|
|
|
2019-06-09 06:24:03 +00:00
|
|
|
|
|
|
|
class Main:
|
2020-05-09 02:02:13 +00:00
|
|
|
def __init__(self, args):
|
2019-09-29 00:14:32 +00:00
|
|
|
setproctitle('Pytop')
|
2019-07-05 06:08:18 +00:00
|
|
|
GLib.unix_signal_add(GLib.PRIORITY_DEFAULT, signal.SIGINT, gtk.main_quit)
|
|
|
|
faulthandler.enable() # For better debug info
|
2019-06-09 06:24:03 +00:00
|
|
|
|
2019-06-23 03:23:17 +00:00
|
|
|
builder = gtk.Builder()
|
|
|
|
settings = Settings()
|
|
|
|
settings.attachBuilder(builder)
|
2020-03-30 02:03:17 +00:00
|
|
|
self.connectBuilder(settings, builder)
|
2019-06-23 03:23:17 +00:00
|
|
|
|
2020-03-30 02:03:17 +00:00
|
|
|
window = settings.createWindow()
|
|
|
|
window.fullscreen()
|
|
|
|
window.show()
|
|
|
|
|
|
|
|
monitors = settings.returnMonitorsInfo()
|
|
|
|
i = 1
|
|
|
|
if len(monitors) > 1:
|
|
|
|
for mon in monitors[1:]:
|
|
|
|
subBuilder = gtk.Builder()
|
|
|
|
subSettings = Settings(i)
|
|
|
|
subSettings.attachBuilder(subBuilder)
|
|
|
|
self.connectBuilder(subSettings, subBuilder)
|
|
|
|
|
|
|
|
win = subSettings.createWindow()
|
|
|
|
win.set_default_size(mon.width, mon.height)
|
|
|
|
win.set_size_request(mon.width, mon.height)
|
|
|
|
win.set_resizable(False)
|
|
|
|
win.move(mon.x, mon.y)
|
2020-07-06 02:10:55 +00:00
|
|
|
|
2020-03-30 02:03:17 +00:00
|
|
|
win.show()
|
|
|
|
i += 1
|
|
|
|
|
|
|
|
|
|
|
|
def connectBuilder(self, settings, builder):
|
2019-07-05 06:08:18 +00:00
|
|
|
# Gets the methods from the classes and sets to handler.
|
|
|
|
# Then, builder connects to any signals it needs.
|
2020-05-09 03:57:22 +00:00
|
|
|
classes = [Signals(settings)]
|
2019-07-05 06:44:16 +00:00
|
|
|
|
2019-07-05 06:08:18 +00:00
|
|
|
handlers = {}
|
|
|
|
for c in classes:
|
|
|
|
methods = inspect.getmembers(c, predicate=inspect.ismethod)
|
|
|
|
handlers.update(methods)
|
2019-06-09 06:24:03 +00:00
|
|
|
|
2019-07-05 06:08:18 +00:00
|
|
|
builder.connect_signals(handlers)
|
2019-06-09 06:24:03 +00:00
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
2019-06-21 02:58:19 +00:00
|
|
|
try:
|
|
|
|
main = Main()
|
|
|
|
gtk.main()
|
|
|
|
except Exception as e:
|
2020-05-09 02:02:13 +00:00
|
|
|
print( repr(e) )
|