chatimusmaximus/gui/main_window.py
import glob
from os import path
from PyQt5 import QtWidgets, QtGui
from chatimusmaximus.gui import CentralWidget, StatusBar, MenuBar
from chatimusmaximus.gui.models.settings_model import SettingsModel
def _get_icon_dict():
icon_path = path.join(path.dirname(__file__), 'resources', 'icons', '')
filepaths = glob.glob(str(icon_path) + '*.png')
filenames = [path.basename(f).split('.')[0] for f in filepaths]
file_platform = zip(filepaths, filenames)
icon_dict = {name: QtGui.QImage(path) for (path, name) in file_platform}
return icon_dict
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, settings: dict=None, parent=None):
"""
MainWindow uses a QTextEdit to display chat
"""
# initialize parent class. Req'd for PyQt subclasses
super().__init__(parent)
# set title window to `CHATIMUSMAXIMUS`
self.setWindowTitle("CHATIMUSMAXIMUS")
self.setStyleSheet('background: black;')
# Create the central widget
self.central_widget = CentralWidget(parent=self)
# duck type for easier access in `main`
self.command_line_signal = self.central_widget.command_line_signal
self.chat_slot = self.central_widget.chat_slot
self.setCentralWidget(self.central_widget)
self.status_bar = StatusBar(parent=self)
self.set_widget_state = self.status_bar.set_widget_status
self.setStatusBar(self.status_bar)
self.settings_model = SettingsModel()
self._set_settings(self.settings_model.root)
# alias for pep8
msg_area = self.central_widget.message_area
msg_area.time_signal.connect(self.status_bar.time_label.setText)
self.menu_bar = MenuBar(self.settings_model, parent=self)
self.setMenuBar(self.menu_bar)
icon_dict = _get_icon_dict()
for platform, icon_path in icon_dict.items():
msg_area.set_icon(icon_path, platform)
def _set_settings(self, settings):
# FIXME: not used
# display = settings.get('display')
for service, platform in settings['services'].items():
if not service == 'youtube':
for platform_name, settings in platform.items():
if settings['display_missing']:
self.status_bar.set_up_helper(platform_name.title())
else:
if platform['display_missing']:
self.status_bar.set_up_helper(service.title())
def set_command_prompt(self, prompt):
self.central_widget.command_line.button.setText(prompt)