diff --git a/pytest_gui_status/status_gui/gui_backend.py b/pytest_gui_status/status_gui/gui_backend.py index 379b220..66398d3 100644 --- a/pytest_gui_status/status_gui/gui_backend.py +++ b/pytest_gui_status/status_gui/gui_backend.py @@ -8,6 +8,7 @@ import humanfriendly import os.path from ..utils import s from ..utils import REDIS_PORT +from PyQt4.QtGui import QApplication class Controller(htmlPy.Object): @@ -19,12 +20,35 @@ class Controller(htmlPy.Object): "end": "Finished Tests" } + dict_tmpl = { + "default": "index.html", + "minimal": "minimal.html", + } + + dict_tmpl_size = { + "default": (150, 80), + "minimal": (50, 50) + } + def __init__(self, app_gui): super(Controller, self).__init__() self.i = 0 self.app_gui = app_gui self.last_state = None - # Initialize the class here, if required. + + self.tmpl_name_full = self.dict_tmpl.get(self.app_gui.tmpl_name) + if self.tmpl_name_full is None: + raise TypeError("template name must be valid, one of these: {allowed_tmpl_names}".format( + allowed_tmpl_names=(", ".join(self.dict_tmpl.keys())))) + + # set correct width, height + # self.app_gui.window.minimumWidth, self.app_gui.window.minimumHeight = (0, 0) + self.app_gui.width, self.app_gui.height = self.dict_tmpl_size.get(self.app_gui.tmpl_name) + + screen_geo = QApplication.desktop().availableGeometry() + screen_topright = screen_geo.topRight() + self.app_gui.x_pos = (screen_topright.x() - 20) - self.app_gui.width + self.app_gui.y_pos = (screen_topright.y() + 20) @htmlPy.Slot() def redraw(self): @@ -78,6 +102,8 @@ class Controller(htmlPy.Object): dict_state["skip"] = s(redis_db.lrange("{hash_a}_skip".format(hash_a=hash_dir_name), 0, -1)) if (not self.last_state) or (self.last_state != dict_state): - self.app_gui.html = render_template(self.app_gui, "index.html", dict_state) + self.app_gui.title = u"{dir_name_topfolder} - Test Status".format( + dir_name_topfolder=dict_state["dir_name_topfolder"]) + self.app_gui.html = render_template(self.app_gui, self.tmpl_name_full, dict_state) self.last_state = dict_state diff --git a/pytest_gui_status/status_gui/gui_frontend.py b/pytest_gui_status/status_gui/gui_frontend.py index add12fa..4d0223c 100644 --- a/pytest_gui_status/status_gui/gui_frontend.py +++ b/pytest_gui_status/status_gui/gui_frontend.py @@ -1,36 +1,46 @@ import htmlPy import os -import sys -from PyQt4.QtGui import QApplication + import PyQt4.QtCore as QtCore +import argparse # Import back-end functionalities from gui_backend import Controller def main(): - if len(sys.argv) > 1: - dir_name_raw = sys.argv[1] - else: + arg_parser = argparse.ArgumentParser() + arg_parser.add_argument("--dir_name", help="root directory where py.test was executed") + arg_parser.add_argument("--minimal", help="use minimal template", action="store_true") + parsed_args = arg_parser.parse_args() + + dir_name_raw = parsed_args.dir_name + if dir_name_raw is None: dir_name_raw = "." dir_name = os.path.abspath(dir_name_raw) + if parsed_args.minimal: + app_tmpl = "minimal" + else: + app_tmpl = "default" + # GUI initializations - app = htmlPy.AppGUI(title=u"{dir_name} - Test Status".format(dir_name=dir_name), - developer_mode=True, width=150, height=80) - app.window.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) - screen_geo = QApplication.desktop().availableGeometry() - screen_topright = screen_geo.topRight() - app.x_pos = (screen_topright.x() - 20) - app.width - app.y_pos = (screen_topright.y() + 20) + app = htmlPy.AppGUI(title=u"to_be_set_later", + developer_mode=True, width=1, height=1) + + app.window.setWindowFlags(QtCore.Qt.WindowTitleHint) + # app.window.setWindowFlags(app.window.windowFlags() & ~QtCore.Qt.WindowMaximizeButtonHint) + app.window.setWindowFlags(app.window.windowFlags() | QtCore.Qt.WindowStaysOnTopHint) # GUI configarg BASE_DIR = os.path.abspath(os.path.dirname(__file__)) app.static_path = os.path.join(BASE_DIR, "static/") app.template_path = os.path.join(BASE_DIR, "tmpl/") app.dir_name = dir_name + app.tmpl_name = app_tmpl # Register back-end functionalities + # allow minimal tmpl with sys.arg app_backend = Controller(app) app.bind(app_backend) diff --git a/pytest_gui_status/status_gui/tmpl/index.html b/pytest_gui_status/status_gui/tmpl/index.html index d0722dd..6762b7f 100644 --- a/pytest_gui_status/status_gui/tmpl/index.html +++ b/pytest_gui_status/status_gui/tmpl/index.html @@ -2,7 +2,7 @@
-