Pytop/src/Pytop/PyTop.py

78 lines
2.1 KiB
Python
Raw Normal View History

2019-06-09 06:24:03 +00:00
#!/usr/bin/python3
# Python imports
import inspect
from setproctitle import setproctitle
# 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
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
# Application imports
2019-06-23 00:21:18 +00:00
from utils import Settings
from signal_classes import CrossClassSignals, GridSignals, TaskbarSignals, DrawSignals
2019-06-09 06:24:03 +00:00
class Main:
def __init__(self):
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
builder = gtk.Builder()
settings = Settings()
settings.attachBuilder(builder)
2020-03-30 02:03:17 +00:00
self.connectBuilder(settings, builder)
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)
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.
classes = [CrossClassSignals(settings),
2019-09-29 00:14:32 +00:00
GridSignals(settings),
TaskbarSignals(settings),
DrawSignals(settings)]
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__":
try:
main = Main()
gtk.main()
except Exception as e:
print(e)