def _layout_widget_preferences_music(self):
        """
            Create music options widget.
        """
        tab = QtWidgets.QWidget()
        tab_layout = QtWidgets.QVBoxLayout(tab)

        # soundtrack section
        layout = QtWidgets.QVBoxLayout()

        # mute checkbox
        checkbox = QtWidgets.QCheckBox('Mute soundtrack')
        self._register_check_box(checkbox, constants.Opt.SOUNDTRACK_MUTE)
        layout.addWidget(checkbox)

        # volume slide
        layout.addWidget(QtWidgets.QLabel('Volume'))
        slider = QtWidgets.QSlider(QtCore.Qt.Horizontal)
        slider.setTickInterval(25)
        slider.setTickPosition(QtWidgets.QSlider.TicksBelow)
        slider.setMaximumWidth(100)
        self._register_slider(slider, constants.Opt.SOUNDTRACK_VOLUME)
        layout.addWidget(slider)

        # wrap in group box and add to tab
        tab_layout.addWidget(qt_graphics.wrap_in_groupbox(layout, 'Soundtrack'))

        # vertical stretch
        tab_layout.addStretch()

        # add tab
        self.tab_music = tab
        self.stacked_layout.addWidget(tab)
    def _layout_widget_preferences_general(self):
        """
            Create general options widget.
        """
        tab = QtWidgets.QWidget()
        tab_layout = QtWidgets.QVBoxLayout(tab)

        # reset button
        button = QtWidgets.QPushButton('Restore defaults')
        tab_layout.addLayout(qt_graphics.wrap_in_boxlayout(button))

        # language
        layout = QtWidgets.QVBoxLayout()
        tab_layout.addWidget(qt_graphics.wrap_in_groupbox(layout, 'Language'))

        # vertical stretch
        tab_layout.addStretch()

        # add tab
        self.tab_general = tab
        self.stacked_layout.addWidget(tab)
    def _layout_widget_preferences_network(self):
        """
            Create network options widget.
        """
        tab = QtWidgets.QWidget()
        tab_layout = QtWidgets.QVBoxLayout(tab)

        # status label
        self.network_status_label = QtWidgets.QLabel('')
        tab_layout.addWidget(self.network_status_label)

        # remote server groupbox
        l = QtWidgets.QVBoxLayout()
        # remote server address
        l2 = QtWidgets.QHBoxLayout()
        l2.addWidget(QtWidgets.QLabel('Remote IP address'))
        edit = QtWidgets.QLineEdit()
        edit.setFixedWidth(300)
        l2.addWidget(edit)
        l2.addStretch()
        l.addLayout(l2)
        # actions toolbar
        l2 = QtWidgets.QHBoxLayout()
        toolbar = QtWidgets.QToolBar()
        toolbar.setIconSize(QtCore.QSize(24, 24))
        # connect to remote server
        toolbar.addAction(qt_graphics.create_action(tools.load_ui_icon('icon.preferences.network.png'),
            'Connect/Disconnect to remote server', toolbar, checkable=True))
        l2.addWidget(toolbar)
        l2.addStretch()
        l.addLayout(l2)
        tab_layout.addWidget(qt_graphics.wrap_in_groupbox(l, 'Remote Server'))

        # local server group box
        l = QtWidgets.QVBoxLayout()
        # accepts incoming connections checkbox
        checkbox = QtWidgets.QCheckBox('Accepts incoming connections')
        self._register_check_box(checkbox, constants.Opt.LS_OPEN)
        l.addWidget(checkbox)
        # alias name edit box
        l2 = QtWidgets.QHBoxLayout()
        l2.addWidget(QtWidgets.QLabel('Alias'))
        edit = QtWidgets.QLineEdit()
        edit.setFixedWidth(300)
        l2.addWidget(edit)
        l2.addStretch()
        self._register_line_edit(edit, constants.Opt.LS_NAME)
        l.addLayout(l2)
        # actions toolbar
        l2 = QtWidgets.QHBoxLayout()
        toolbar = QtWidgets.QToolBar()
        toolbar.setIconSize(QtCore.QSize(24, 24))
        # show local server monitor
        toolbar.addAction(
            qt_graphics.create_action(tools.load_ui_icon('icon.preferences.network.png'), 'Show local server monitor',
                toolbar))
        # local server is on/off
        toolbar.addAction(
            qt_graphics.create_action(tools.load_ui_icon('icon.preferences.network.png'), 'Turn local server on/off',
                toolbar, checkable=True))
        l2.addWidget(toolbar)
        l2.addStretch()
        l.addLayout(l2)
        tab_layout.addWidget(qt_graphics.wrap_in_groupbox(l, 'Local Server'))

        # vertical stretch
        tab_layout.addStretch()

        # add tab
        self.tab_network = tab
        self.stacked_layout.addWidget(tab)