Esempio n. 1
0
    def __init__(self, parent, MainWidgetClass):
        super(FireflyMainWindow, self).__init__()

        self.subscribers = []
        asset_cache.api = api
        asset_cache.handler = self.on_assets_update

        self.setWindowTitle(app_settings["title"])
        self.setStyleSheet(app_skin)
        self.app = parent
        self.restore_state()
        self.main_widget = MainWidgetClass(self)
        self.setCentralWidget(self.main_widget)
        self.show()

        self.setWindowIcon(QIcon(pixlib["icon"]))
        title = f"Firefly {FIREFLY_VERSION}"
        title += f" ({user['login']}@{config['site_name']})"
        self.setWindowTitle(title)
        self.setAttribute(Qt.WA_AlwaysShowToolTips)
        logging.handlers = [self.log_handler]
        self.listener = SeismicListener()

        self.seismic_timer = QTimer(self)
        self.seismic_timer.timeout.connect(self.on_seismic_timer)
        self.seismic_timer.start(40)

        self.load_window_state()

        for id_channel in config["playout_channels"]:
            if (user.has_right("rundown_view", id_channel)
                    or user.has_right("rundown_edit", id_channel)
                    or user.has_right("scheduler_view", id_channel)
                    or user.has_right("scheduler_edit", id_channel)):
                self.id_channel = min(config["playout_channels"].keys())
                self.set_channel(self.id_channel)
                break

        logging.info("[MAIN WINDOW] Firefly is ready")
Esempio n. 2
0
    def __init__(self, parent, **kwargs):
        super(EventDialog, self).__init__(parent)
        self.setWindowTitle("Scheduler")
        self.kwargs = kwargs
        self.setStyleSheet(app_skin)

        self.event = kwargs.get("event", Event())
        self.accepted = False
        self.can_edit = user.has_right("scheduler_edit",
                                       self.event["id_channel"])

        for key in ["start", "id_channel"]:
            if kwargs.get(key, False):
                self.event[key] = kwargs[key]

        keys = config["playout_channels"][self.event["id_channel"]].get(
            "meta_set", default_meta_set)

        if "asset" in self.kwargs:
            asset = self.kwargs["asset"]
            for key in [k for k in meta_types if meta_types[k]["ns"] == "m"]:
                if key not in asset.meta:
                    continue
                self.event[key] = asset[key]

        self.form = MetaEditor(self, keys)
        for key in self.form.keys():
            self.form[key] = self.event[key]

        if not self.can_edit:
            self.form.setEnabled(False)

        buttons = QDialogButtonBox(
            QDialogButtonBox.Ok | QDialogButtonBox.Cancel, Qt.Horizontal, self)
        buttons.accepted.connect(self.on_accept)
        buttons.rejected.connect(self.on_cancel)

        layout = QVBoxLayout()
        layout.addWidget(self.form, 2)
        layout.addWidget(buttons)
        self.setLayout(layout)
Esempio n. 3
0
    def __init__(self, main_window):
        super(FireflyMainWidget, self).__init__(main_window)
        self.main_window = main_window
        current_tab = self.main_window.app_state.get("current_module", 0)
        self.perform_on_switch_tab = True

        self.tabs = QTabWidget(self)

        self.browser = self.detail = self.rundown = self.scheduler = self.jobs = False

        # MAM modules

        self.browser = BrowserModule(self)
        self.detail = DetailModule(self)
        self.tabs.addTab(self.detail, "DETAIL")

        self.main_window.add_subscriber(self.browser, ["objects_changed"])
        self.main_window.add_subscriber(self.detail, ["objects_changed"])

        # Jobs module

        if config["actions"]:
            self.jobs = JobsModule(self)
            self.tabs.addTab(self.jobs, "JOBS")
            self.main_window.add_subscriber(self.jobs, ["job_progress"])

        # Channel control modules

        if config["playout_channels"]:
            if user.has_right("scheduler_view", anyval=True) or user.has_right(
                    "scheduler_edit", anyval=True):
                self.scheduler = SchedulerModule(self)
                self.main_window.add_subscriber(self.scheduler,
                                                ["objects_changed"])
                self.tabs.addTab(self.scheduler, "SCHEDULER")

            if user.has_right("rundown_view", anyval=True) or user.has_right(
                    "rundown_edit", anyval=True):
                self.rundown = RundownModule(self)
                self.main_window.add_subscriber(
                    self.rundown,
                    [
                        "objects_changed",
                        "rundown_changed",
                        "playout_status",
                        "job_progress",
                    ],
                )
                self.tabs.addTab(self.rundown, "RUNDOWN")

        # Layout

        self.main_splitter = QSplitter(Qt.Horizontal)
        self.main_splitter.addWidget(self.browser)
        self.main_splitter.addWidget(self.tabs)
        self.main_splitter.splitterMoved.connect(
            self.main_window.save_window_state)

        create_menu(self.main_window)

        layout = QVBoxLayout()
        layout.addWidget(self.main_splitter)
        self.setLayout(layout)

        if current_tab:
            self.switch_tab(current_tab)
        else:
            self.on_switch_tab()

        self.tabs.currentChanged.connect(self.on_switch_tab)
Esempio n. 4
0
 def show_rundown(self):
     if config["playout_channels"] and (
             user.has_right("rundown_view", self.id_channel)
             or user.has_right("rundown_edit", self.id_channel)):
         self.main_widget.switch_tab(self.rundown)
Esempio n. 5
0
 def show_scheduler(self):
     if config["playout_channels"] and (
             user.has_right("scheduler_view", self.id_channel)
             or user.has_right("scheduler_edit", self.id_channel)):
         self.main_widget.switch_tab(self.scheduler)
Esempio n. 6
0
 def toggle_rundown_edit(self):
     if config["playout_channels"] and user.has_right(
             "rundown_edit", self.id_channel):
         self.rundown.toggle_rundown_edit()
Esempio n. 7
0
 def now(self):
     if config["playout_channels"] and (
             user.has_right("rundown_view", self.id_channel)
             or user.has_right("rundown_edit", self.id_channel)):
         self.show_rundown()
         self.rundown.go_now()