Esempio n. 1
0
    def __init__(self):
        for cue_name, cue_class in ClassesLoader(path.dirname(__file__)):
            # Register the action-cue in the cue-factory
            CueFactory.register_factory(cue_class.__name__, cue_class)
            # Register the menu action for adding the action-cue
            add_function = ActionCues.create_add_action_cue_method(cue_class)
            MainWindow().register_cue_menu_action(cue_class.Name, add_function, 'Action cues')

            logging.debug('ACTION-CUES: Loaded "' + cue_name + '"')
Esempio n. 2
0
    def __init__(self):
        for name, cue in load_classes(__package__, path.dirname(__file__)):
            # Register the action-cue in the cue-factory
            CueFactory.register_factory(cue.__name__, cue)
            # Register the menu action for adding the action-cue
            add_function = ActionCues.create_add_action_cue_method(cue)
            MainWindow().register_cue_menu_action(
                translate('CueName', cue.Name),
                add_function, 'Action cues')

            logging.debug('ACTION-CUES: Loaded "' + name + '"')
Esempio n. 3
0
    def _load_from_file(self, filepath):
        ''' Loads a saved program from "filepath" '''
        try:
            # Read the file
            with open(filepath, mode='r', encoding='utf-8') as file:
                program = json.load(file)

            # Get the application settings
            self.app_conf = program['application']

            # Create the layout
            self._create_layout(layouts.get_layout(self.app_conf['layout']))

            # Load cues
            for cue_conf in program['cues']:
                cue = CueFactory.create_cue(cue_conf)
                if cue is not None:
                    self.layout.add_cue(cue, cue['index'])

            ActionsHandler().set_saved()
            self.mainWindow.update_window_title()

            # Load plugins settings
            self._load_plugins_settings(program['plugins'])

            # Update the main-window
            self.mainWindow.file = filepath
            self.mainWindow.update()
        except Exception:
            QMessageBox.critical(None, 'Error', 'Error during file reading')
            print(traceback.format_exc(), file=sys.stderr)

            self._startup()
Esempio n. 4
0
    def _load_from_file(self, session_file):
        """ Load a saved session from file """
        try:
            with open(session_file, mode='r', encoding='utf-8') as file:
                session = json.load(file)

            # New session
            self._new_session(
                layouts.get_layout(session['application']['layout']))
            # Get the application settings
            self._app_conf = session['application']

            # Load cues
            for cue_conf in session['cues']:
                cue_type = cue_conf.pop('_type_', 'Undefined')
                cue_id = cue_conf.pop('id')
                try:
                    cue = CueFactory.create_cue(cue_type, cue_id=cue_id)
                    cue.update_properties(cue_conf)
                    self._cue_model.add(cue)
                except Exception as e:
                    elogging.exception('Unable to create the cue', e)

            MainActionsHandler.set_saved()
            self._mainWindow.update_window_title()

            # Load plugins settings
            plugins.set_plugins_settings(session['plugins'])

            # Update the main-window
            self._mainWindow.filename = session_file
            self._mainWindow.update()
        except Exception as e:
            elogging.exception('Error during file reading', e)
            self.new_session_dialog()
Esempio n. 5
0
    def _load_from_file(self, session_file):
        """ Load a saved session from file """
        try:
            with open(session_file, mode='r', encoding='utf-8') as file:
                session = json.load(file)

            # New session
            self._new_session(
                layouts.get_layout(session['application']['layout']))
            # Get the application settings
            self._app_conf = session['application']

            # Load cues
            for cue_conf in session['cues']:
                cue_type = cue_conf.pop('_type_', 'Undefined')
                try:
                    cue = CueFactory.create_cue(cue_type)
                    cue.update_properties(cue_conf)
                    self._cue_model.add(cue)
                except Exception as e:
                    logging.exception('Unable to create the cue', e)

            MainActionsHandler().set_saved()
            self._mainWindow.update_window_title()

            # Load plugins settings
            plugins.set_plugins_settings(session['plugins'])

            # Update the main-window
            self._mainWindow.filename = session_file
            self._mainWindow.update()
        except Exception as e:
            logging.exception('Error during file reading', e)
            self.new_session_dialog()
Esempio n. 6
0
    def add_uri_audio_media_cue():
        """Add audio MediaCue(s) form user-selected files"""

        if get_backend() is None:
            QMessageBox.critical(MainWindow(), 'Error', 'Backend not loaded')
            return

        # Default path to system "music" folder
        path = QStandardPaths.writableLocation(QStandardPaths.MusicLocation)

        # Get the backend extensions and create a filter for the Qt file-dialog
        extensions = get_backend().supported_extensions()
        filters = qfile_filters(extensions, anyfile=False)
        # Display a file-dialog for the user to choose the media-files
        files, _ = QFileDialog.getOpenFileNames(
            MainWindow(), translate('MediaCueMenus', 'Select media files'),
            path, filters)

        QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))

        # Create media cues, and add them to the Application cue_model
        for file in files:
            cue = CueFactory.create_cue('URIAudioCue', uri='file://' + file)
            # Use the filename without extension as cue name
            cue.name = os.path.splitext(os.path.basename(file))[0]
            Application().cue_model.add(cue)

        QApplication.restoreOverrideCursor()
Esempio n. 7
0
    def __cue_from_preset(self, preset_name):
        try:
            preset = load_preset(preset_name)
            if preset is not None:
                if CueFactory.has_factory(preset.get('_type_')):
                    cue = CueFactory.create_cue(preset['_type_'])

                    cue.update_properties(preset)
                    Application().cue_model.add(cue)
                else:
                    QMessageBox.warning(
                        self, translate('Presets', 'Warning'),
                        translate(
                            'Presets', 'Cannot create a cue from this '
                            'preset: {}').format(preset_name))
        except OSError as e:
            load_preset_error(e, preset_name, parent=self)
Esempio n. 8
0
 def _add_cues(self, options_list):
     for options in options_list:
         try:
             cue = CueFactory.create_cue(options)
             self.layout.add_cue(cue)
         except Exception as e:
             message = ' '.join([str(i) for i in e.args])
             QMessageBox.critical(None, 'Error', message)
Esempio n. 9
0
    def dropEvent(self, event):
        # Decode mimedata information about the drag&drop event, since only
        # internal movement are allowed we assume the data format is correct
        data = event.mimeData().data('application/x-qabstractitemmodeldatalist')
        stream = QDataStream(data, QIODevice.ReadOnly)

        # Get the starting-item row
        start_index = stream.readInt()
        new_index = self.indexAt(event.pos()).row()
        if not 0 <= new_index <= len(self._model):
            new_index = len(self._model)

        if qApp.keyboardModifiers() == Qt.ControlModifier:
            cue = self._model.item(start_index)
            new_cue = CueFactory.clone_cue(cue)

            self._model.insert(new_cue, new_index)
        else:
            self._model.move(start_index, new_index)
Esempio n. 10
0
    def __edit_preset(self):
        item = self.presetsList.currentItem()
        if item is not None:
            try:
                preset = load_preset(item.text())
                if preset is not None:
                    try:
                        cue_class = CueFactory.create_cue(preset.get('_type_'))
                        cue_class = cue_class.__class__
                    except Exception:
                        cue_class = Cue

                    edit_dialog = CueSettings(cue_class=cue_class)
                    edit_dialog.load_settings(preset)
                    if edit_dialog.exec_() == edit_dialog.Accepted:
                        preset.update(edit_dialog.get_settings())
                        try:
                            write_preset(item.text(), preset)
                        except OSError as e:
                            write_preset_error(e, item.text(), parent=self)
            except OSError as e:
                load_preset_error(e, item.text(), parent=self)
Esempio n. 11
0
        self.pauseMode = QCheckBox(self.group)
        self.pauseMode.setText('Pause mode')
        self.group.layout().addWidget(self.pauseMode)

        self.layout().addWidget(self.group)
        self.layout().addSpacing(self.height() - 100)

    def enable_check(self, enable):
        self.group.setCheckable(enable)
        self.group.setChecked(False)

    def get_configuration(self):
        conf = {}

        if not (self.group.isCheckable() and not self.group.isChecked()):
            conf['pause_mode'] = self.pauseMode.isChecked()

        return conf

    def set_configuration(self, conf):
        if 'pause_mode' in conf:
            self.pauseMode.setChecked(conf['pause_mode'])

CueFactory.register_factory('StopAll', ActionCueFactory)
MainWindow().register_cue_options_ui(StopAll.Name,
                                     lambda: [{'name': StopAll.Name,
                                               'type': 'StopAll'}],
                                     category='Action cues')
CueLayout.add_settings_section(StopAllSettings, StopAll)
Esempio n. 12
0
 def _copy_cue_at(self, old_index, index):
     newcue = CueFactory.clone_cue(self._cue_items[old_index].cue)
     self.add_cue(newcue, index)
def register_factories():
    CueFactory.register_factory('MediaCue', gst_media)
    CueFactory.register_factory('URIAudioCue', uri_audio)
    CueFactory.register_factory('CaptureAudioCue', capture_audio)
Esempio n. 14
0
            if groups_str[-1] != '':
                conf['groups'] = [int(groups_str[-1])]
            else:
                conf['groups'] = []
            conf['groups'] += [int(g) for g in groups_str[:-1]]
        if not (checkable and not self.groupAction.isChecked()):
            conf['action'] = self.actionsBox.currentText()

        return conf

    def enable_check(self, enable):
        self.groupGroups.setCheckable(enable)
        self.groupGroups.setChecked(False)

        self.groupAction.setCheckable(enable)
        self.groupAction.setChecked(False)

    def set_configuration(self, conf):
        if 'groups' in conf:
            self.editGroups.setText(str(conf['groups'])[1:-1])
        if 'action' in conf and conf['action'] in self.ACTIONS:
            self.actionsBox.setCurrentIndex(self.ACTIONS.index(conf['action']))


CueFactory.register_factory('GroupsAction', ActionCueFactory)
MainWindow().register_cue_options_ui(GroupsAction.Name,
                                     lambda: [{'name': GroupsAction.Name,
                                               'type': 'GroupsAction'}],
                                     category='Action cues')
CueLayout.add_settings_section(GroupsActionSettings, GroupsAction)
Esempio n. 15
0
 def method():
     cue = CueFactory.create_cue(cue_class.__name__)
     Application().cue_model.add(cue)
def register_factories():
    CueFactory.register_factory('MediaCue', gst_media)
    CueFactory.register_factory('URIAudioCue', uri_audio)
    CueFactory.register_factory('CaptureAudioCue', capture_audio)
Esempio n. 17
0
 def method():
     cue = CueFactory.create_cue(cue_class.__name__)
     Application().cue_model.add(cue)
Esempio n. 18
0
    def copy_widget(self, widget, index):
        index = self.to_1d_index((self.currentIndex(), index[1], index[2]))
        new_cue = CueFactory.clone_cue(widget.cue)

        self.add_cue(new_cue, index)
Esempio n. 19
0
    def _copy_widget(self, widget, to_row, to_column):
        new_index = self.to_1d_index((self.currentIndex(), to_row, to_column))
        new_cue = CueFactory.clone_cue(widget.cue)

        self._model_adapter.insert(new_cue, new_index)
    def undo(self):
        if self._cue.is_finalized():
            self._cue = CueFactory.clone_cue(self._cue, same_id=True)

        self._layout.__add_cue__(self._cue, self._index)
Esempio n. 21
0
    def _copy_widget(self, widget, to_row, to_column):
        new_index = self.to_1d_index((self.currentIndex(), to_row, to_column))
        new_cue = CueFactory.clone_cue(widget.cue)

        self._model_adapter.insert(new_cue, new_index)