def __init__(self, parent, message_key: str):
        """
        Confirm dialog for dangerous actions

        :param parent: gui's main window
        :param message_key: Key to the dictionary for the message to display
        """
        QDialog.__init__(self, parent)

        self.setFixedSize(QSize(350, 120))

        self.question = QLabel(tr(message_key))
        self.question.setAlignment(Qt.AlignCenter)

        # Quit buttons
        self.ok_btn = QPushButton("Ok")
        self.ok_btn.clicked.connect(self.accept)
        self.ok_btn.setFixedSize(QSize(60, 33))

        self.cancel_btn = QPushButton(tr("btn_cancel"))
        self.cancel_btn.clicked.connect(self.reject)
        self.cancel_btn.setFixedSize(QSize(90, 33))

        # Layout
        layout = QGridLayout()
        layout.addWidget(self.question, 0, 0, 1, 2)
        layout.addWidget(self.ok_btn, 1, 0)
        layout.setAlignment(self.ok_btn, Qt.AlignCenter)
        layout.addWidget(self.cancel_btn, 1, 1)
        layout.setAlignment(self.cancel_btn, Qt.AlignLeft)
        self.setLayout(layout)

        self.setStyleSheet(get_stylesheet("dialog"))
Example #2
0
    def initUI(self):
        mainLayout = QGridLayout(self)
        mainLayout.setAlignment(Qt.AlignLeft | Qt.AlignTop)
        mainLayout.setColumnStretch(0, 0)
        mainLayout.setColumnStretch(1, 1)
        mainLayout.setColumnStretch(2, 1)
        self.setLayout(mainLayout)

        line = 0
        nameText = QLabel('Name:')
        nameText.setAlignment(Qt.AlignRight)
        self.nameIn = QLineEdit()
        mainLayout.addWidget(nameText, line, 0)
        mainLayout.addWidget(self.nameIn, line, 1, 1, 2)

        line += 1
        tempText = QLabel('Template:')
        tempText.setAlignment(Qt.AlignRight)
        self.tempCombo = QComboBox()
        self.tempCombo.addItem('[NO TEMPLATE]', 0)
        self._read_templates()
        mainLayout.addWidget(tempText, line, 0)
        mainLayout.addWidget(self.tempCombo, line, 1, 1, 2)

        line += 1
        okBtn = QPushButton("Create")
        okBtn.clicked.connect(self.accept)
        cancelBtn = QPushButton("Cancel")
        cancelBtn.clicked.connect(self.reject)

        mainLayout.addWidget(okBtn, line, 1, 1, 1)
        mainLayout.addWidget(cancelBtn, line, 2, 1, 1)
        self.setWindowTitle("New Picker Interface Information")
        self.setWindowFlags(Qt.WindowStaysOnTopHint)
Example #3
0
class NadamUI(QWidget):
    def __init__(self):
        super().__init__()
        self.main_layout = QGridLayout()
        self.main_layout.setAlignment(Qt.AlignTop)        
        self.learning_rate = QLineEdit("0.01")
        self.learning_rate.setValidator(QDoubleValidator(0., 1., 5))
        self.epsilon = QLineEdit("1e-07")
        self.epsilon.setValidator(QDoubleValidator(0., 1e-10, 10))               
        self.beta_1 = QLineEdit("0.9")
        self.beta_1.setValidator(QDoubleValidator(0., 1e-10, 10))        
        self.beta_2 = QLineEdit("0.999")
        self.beta_2.setValidator(QDoubleValidator(0., 1e-10, 10))        
        self.main_layout.addWidget(QLabel("Learning rate:"), 0, 0)
        self.main_layout.addWidget(self.learning_rate, 0, 1)
        self.main_layout.addWidget(QLabel("Epsilon:"),1 ,0)
        self.main_layout.addWidget(self.epsilon,1, 1)
        self.main_layout.addWidget(QLabel("Beta 1:"), 2, 0)
        self.main_layout.addWidget(self.beta_1,2, 1)
        self.main_layout.addWidget(QLabel("Beta 2:"), 3, 0)
        self.main_layout.addWidget(self.beta_2,3, 1)
        self.setLayout(self.main_layout)
        
    def get_optimizer(self):
        return None
Example #4
0
class FtrlUI(QWidget):
    def __init__(self):
        super().__init__()
        self.main_layout = QGridLayout()
        self.main_layout.setAlignment(Qt.AlignTop)        
        self.learning_rate = QLineEdit("0.001")
        self.learning_rate.setValidator(QDoubleValidator(0., 1., 5))
        self.learning_rate_power = QLineEdit("0.5")
        self.learning_rate_power.setValidator(QDoubleValidator(0., 1., 5))
        self.initial_accumulator_value = QLineEdit("0.1")
        self.initial_accumulator_value.setValidator(QDoubleValidator(0., 1e-10, 10))  
        self.l1_regularization_strength = QLineEdit("0.0")
        self.l1_regularization_strength.setValidator(QDoubleValidator(0., 1e-10, 10))        
        self.l2_regularization_strength = QLineEdit("0.0")
        self.l2_regularization_strength.setValidator(QDoubleValidator(0., 1e-10, 10))        
        self.l2_shrinkage_regularization_strength = QLineEdit("0.0")
        self.l2_shrinkage_regularization_strength.setValidator(QDoubleValidator(0., 1e-10, 10))                
        self.main_layout.addWidget(QLabel("Learning rate:"), 0, 0)
        self.main_layout.addWidget(self.learning_rate, 0, 1)
        self.main_layout.addWidget(QLabel("Initial_accumulator_value:"),1 ,0)
        self.main_layout.addWidget(self.initial_accumulator_value,1, 1)
        self.main_layout.addWidget(QLabel("l1_regularization_strength"), 2, 0)
        self.main_layout.addWidget(self.l1_regularization_strength,2, 1)
        self.main_layout.addWidget(QLabel("l2_regularization_strength:"), 3, 0)
        self.main_layout.addWidget(self.l2_regularization_strength,3, 1)
        self.main_layout.addWidget(QLabel("l2_shrinkage_regularization_strength"), 4, 0)
        self.main_layout.addWidget(self.l2_shrinkage_regularization_strength, 4 , 1)
        self.setLayout(self.main_layout)

    def get_optimizer(self):
        return None
Example #5
0
    def _create_status_lights(self, layout):
        # Create a frame to hold the register's bits
        status_frame = QFrame(self)
        layout.addWidget(status_frame)
        layout.setAlignment(status_frame, Qt.AlignBottom)
        status_layout = QGridLayout(status_frame)
        status_layout.setSpacing(0)
        status_layout.setMargin(0)
        status_frame.setLayout(status_layout)
        status_frame.setFrameStyle(QFrame.StyledPanel | QFrame.Raised)

        # Add indicators for each status in the register, from MSB to LSB
        for col, stat in enumerate(STATUS_INDS.keys()):
            check = QCheckBox(status_frame)
            check.setFixedSize(30, 20)
            check.setStyleSheet(
                'QCheckBox::indicator{subcontrol-position:center;}')
            check.stateChanged.connect(lambda state: self._update_status())
            status_layout.addWidget(check, 0, col)
            status_layout.setAlignment(check, Qt.AlignCenter)
            self._status_cmp_switches[stat] = check

            check = QCheckBox(status_frame)
            check.setFixedSize(30, 20)
            check.setStyleSheet(
                'QCheckBox::indicator{subcontrol-position:center;}')
            check.stateChanged.connect(lambda state: self._update_status())
            status_layout.addWidget(check, 1, col)
            status_layout.setAlignment(check, Qt.AlignCenter)
            self._status_ign_switches[stat] = check
Example #6
0
class RMSpropUI(QWidget):
    def __init__(self):
        super().__init__()
        self.main_layout = QGridLayout()
        self.main_layout.setAlignment(Qt.AlignTop)        
        self.learning_rate = QLineEdit("0.01")
        self.learning_rate.setValidator(QDoubleValidator(0., 1., 5))
        self.momentum = QLineEdit("0.00")
        self.momentum.setValidator(QDoubleValidator(0., 1e5, 2))        
        self.rho = QLineEdit("0.9")
        self.rho.setValidator(QDoubleValidator(0., 1e5, 10))
        self.epsilon = QLineEdit("1e-07")
        self.epsilon.setValidator(QDoubleValidator(0., 1e-10, 10))        
        self.centered = QComboBox()
        self.centered.addItems(["True", "False"])
        self.main_layout.addWidget(QLabel("Learning rate:"), 0, 0)
        self.main_layout.addWidget(self.learning_rate, 0, 1)
        self.main_layout.addWidget(QLabel("Momentum:"), 1, 0)
        self.main_layout.addWidget(self.momentum,1, 1)
        self.main_layout.addWidget(QLabel("rho:"), 2, 0)
        self.main_layout.addWidget(self.rho,2 , 1)
        self.main_layout.addWidget(QLabel("epsilon:"),3 ,0)
        self.main_layout.addWidget(self.epsilon,3, 1)
        self.main_layout.addWidget(QLabel("centered:"), 4, 0)
        self.main_layout.addWidget(self.centered, 4, 1)
        self.setLayout(self.main_layout)

    def get_optimizer(self):
        return None
Example #7
0
    def add_widgets_to_screen(self, cw):
        grid_layout = QGridLayout(cw)

        controls_layout = QGridLayout()
        controls_layout.setAlignment(Qt.AlignVCenter)
        grid_layout.addLayout(controls_layout, 0, 0, 2, 3)

        controls_layout.addWidget(self._forward_btn, 0, 1)
        controls_layout.addWidget(self._left_btn, 1, 0)
        controls_layout.addWidget(self._brake_btn, 1, 1)
        controls_layout.addWidget(self._right_btn, 1, 2)

        grid_layout.addWidget(self._lbl_ip, 2, 0)
        grid_layout.addWidget(self._le_ip, 2, 1, 1,
                              2)  # Stretch the line edit into two cells
        grid_layout.addWidget(self._lbl_port, 3, 0)
        grid_layout.addWidget(self._sb_port, 3, 1, 1,
                              2)  # Stretch the spinbox into two cells
        grid_layout.addWidget(self._lbl_use_proxy, 4, 0)
        grid_layout.addWidget(self._cb_proxy, 4, 1)
        grid_layout.addWidget(self._lbl_proxy_address, 5, 0)
        grid_layout.addWidget(self._le_proxy_address, 5, 1, 1, 2)
        grid_layout.addWidget(self._lbl_proxy_port, 6, 0)
        grid_layout.addWidget(self._sb_proxy_port, 6, 1, 1, 2)
        grid_layout.addWidget(self._lbl_mode, 7, 0)
        grid_layout.addWidget(self._cbo_mode, 7, 1, 1, 2)
        grid_layout.addWidget(self._image_viewer, 0, 3, 5, 1)
        grid_layout.addWidget(self._btn_restart, 5, 3)

        vehicle_layout = QVBoxLayout()
        grid_layout.addLayout(vehicle_layout, 0, 4)
        vehicle_layout.addWidget(self._lbl_gear)
        vehicle_layout.addWidget(self._btn_change_gear)
        vehicle_layout.addWidget(self._trim_btn)
Example #8
0
def initScores(container: QWidget):
    container.removeWidget(state["scoreWidget"])
    state["scoreWidget"].deleteLater()
    newScoreWidget = QWidget()
    newScoreWidget.hide()
    scoreLayout = QGridLayout()
    scoreLayout.setAlignment(Qt.AlignTop)
    diff1 = QLabel("Easy")
    scoreLayout.addWidget(diff1, 0, 1)
    for i, el in enumerate(state["highScores"]["easy"]):
        text = "{} {}".format(el[0], el[1])
        topPlayer = QLabel(text)
        scoreLayout.addWidget(topPlayer, i + 1, 1)
    diff2 = QLabel("Normal")
    scoreLayout.addWidget(diff2, 0, 2)
    for i, el in enumerate(state["highScores"]["normal"]):
        text = "{} {}".format(el[0], el[1])
        topPlayer = QLabel(text)
        scoreLayout.addWidget(topPlayer, i + 1, 2)
    diff3 = QLabel("Hard")
    scoreLayout.addWidget(diff3, 0, 3)
    for i, el in enumerate(state["highScores"]["hard"]):
        text = "{} {}".format(el[0], el[1])
        topPlayer = QLabel(text)
        scoreLayout.addWidget(topPlayer, i + 1, 3)
    newScoreWidget.setLayout(scoreLayout)
    state["scoreWidget"] = newScoreWidget
    container.addWidget(newScoreWidget)
Example #9
0
    def setup_p_preferences(self) -> None:
        """inits setup_p_preferences stacked widget page widget

            Returns:
                None"""

        self.p_preferences = QWidget()
        self.p_preferences.resize(500, 250)
        self.p_preferences.setWindowTitle("preferences")
        self.list_Widget = QListWidget(self.p_preferences)
        self.list_Widget.addItems(["appearance", "about"])
        self.list_Widget.setMaximumWidth(100)

        self.stacked_widget_preferences = QStackedWidget(self.p_preferences)

        # setup appearance
        self.apperence_widget = QWidget()
        self.stacked_widget_preferences.addWidget(self.apperence_widget)
        self.in_combo_themes = QComboBox(self.apperence_widget)
        self.in_combo_themes.addItems(["dark_theme", "light_theme"])

        self.in_combo_theme_initial = QComboBox(self.apperence_widget)
        self.in_combo_theme_initial.addItems(["dark_theme", "light_theme"])

        self.text_size_slider = QSlider(QtCore.Qt.Orientation.Horizontal,
                                        self.apperence_widget)
        self.text_size_slider.setTickPosition(QSlider.TickPosition.TicksAbove)
        self.text_size_slider.setMaximum(15)
        self.text_size_slider.setMinimum(8)

        stacked_widget_preferences_layout = QGridLayout(self.apperence_widget)
        stacked_widget_preferences_layout.setAlignment(QtCore.Qt.AlignTop)
        stacked_widget_preferences_layout.addWidget(QLabel("theme"), 0, 0)
        stacked_widget_preferences_layout.addWidget(self.in_combo_themes, 0, 1)
        stacked_widget_preferences_layout.addWidget(QLabel("initial theme"), 1,
                                                    0)
        stacked_widget_preferences_layout.addWidget(
            self.in_combo_theme_initial, 1, 1)
        stacked_widget_preferences_layout.addWidget(QLabel("Fontsize"), 2, 0)
        stacked_widget_preferences_layout.addWidget(self.text_size_slider, 2,
                                                    1)

        self.about_widget = QWidget()
        self.stacked_widget_preferences.addWidget(self.about_widget)

        about_text_edit = QTextEdit(self.about_widget)
        about_text_edit.setText(
            "developed by Maurice Jarck\nwith kind support from Shuai Lou\n07.2020-04.2021"
        )
        about_text_edit.setEnabled(False)
        stacked_widget_about_layout = QGridLayout(self.about_widget)
        stacked_widget_about_layout.addWidget(about_text_edit)

        p_apperance_layout = QHBoxLayout(self.p_preferences)
        p_apperance_layout.addWidget(self.list_Widget)
        p_apperance_layout.addWidget(self.stacked_widget_preferences)
Example #10
0
    def _setup_ui(self):
        self.setFrameStyle(QFrame.StyledPanel | QFrame.Raised)

        # Set up our basic layout
        layout = QGridLayout(self)
        self.setLayout(layout)
        layout.setSpacing(1)
        layout.setMargin(1)

        for bank in range(0o10):
            sw = self._create_bank_switch('E%o' % bank, layout, 0, bank, 1)
            sw.stateChanged.connect(self._update_ems_banks)
            self._bank_switches.append(sw)

        for col in range(0o10, 0o22):
            s = QSpacerItem(20, 20)
            layout.addItem(s, 1, col)

        label = QLabel('EMS', self)
        font = label.font()
        font.setPointSize(12)
        font.setBold(True)
        label.setFont(font)
        label.setAlignment(Qt.AlignCenter)
        layout.addWidget(label, 5, 16, 2, 2, Qt.AlignCenter)

        b = self._create_button('ALL', layout, 5, 1, 3)
        b.pressed.connect(lambda: self._set_all(True))
        b = self._create_button('NONE', layout, 5, 3, 2)
        b.pressed.connect(lambda: self._set_all(False))

        self._ems_sel = QRadioButton('EMS', self)
        self._ems_sel.setLayoutDirection(Qt.RightToLeft)
        layout.addWidget(self._ems_sel, 5, 6, 2, 3)
        layout.setAlignment(self._ems_sel, Qt.AlignRight)

        self._agc_sel = QRadioButton('AGC', self)
        self._agc_sel.setChecked(True)
        layout.addWidget(self._agc_sel, 5, 8, 2, 3)
        layout.setAlignment(self._agc_sel, Qt.AlignCenter)

        font.setPointSize(7)
        self._ems_sel.setFont(font)
        self._agc_sel.setFont(font)

        b = self._create_button('PAD', layout, 5, 11, 2)
        b.pressed.connect(self._load_pad)
        b = self._create_button('LOAD', layout, 5, 12, 3)
        b.pressed.connect(self._load_core)
        b = self._create_button('DUMP', layout, 5, 14, 2)
        b.pressed.connect(self._dump_core)
    def _setup_ui(self):
        self.setFrameStyle(QFrame.StyledPanel | QFrame.Raised)

        # Set up our basic layout
        layout = QGridLayout(self)
        self.setLayout(layout)
        layout.setSpacing(1)
        layout.setMargin(1)

        for bank in range(0o44):
            col = bank % 18
            row = int(bank / 18) * 2
            sw = self._create_bank_switch('%o' % bank, layout, row, col, 1)
            sw.stateChanged.connect(
                lambda state, bank=bank: self._update_crs_bank(bank))
            self._bank_switches.append(sw)

        self._aux_switch = self._create_bank_switch('44-77', layout, 5, 0, 2)

        label = QLabel('CRS', self)
        font = label.font()
        font.setPointSize(12)
        font.setBold(True)
        label.setFont(font)
        label.setAlignment(Qt.AlignCenter)
        layout.addWidget(label, 5, 16, 2, 2, Qt.AlignCenter)

        b = self._create_button('ALL', layout, 5, 1, 3)
        b.pressed.connect(lambda: self._set_all(True))
        b = self._create_button('NONE', layout, 5, 3, 2)
        b.pressed.connect(lambda: self._set_all(False))

        self._crs_sel = QRadioButton('CRS', self)
        self._crs_sel.setLayoutDirection(Qt.RightToLeft)
        layout.addWidget(self._crs_sel, 5, 6, 2, 3)
        layout.setAlignment(self._crs_sel, Qt.AlignRight)

        self._agc_sel = QRadioButton('AGC', self)
        self._agc_sel.setChecked(True)
        layout.addWidget(self._agc_sel, 5, 8, 2, 3)
        layout.setAlignment(self._agc_sel, Qt.AlignCenter)

        font.setPointSize(7)
        self._crs_sel.setFont(font)
        self._agc_sel.setFont(font)

        b = self._create_button('LOAD', layout, 5, 12, 3)
        b.pressed.connect(self._load_rope)
        b = self._create_button('DUMP', layout, 5, 14, 2)
        b.pressed.connect(self._dump_rope)
Example #12
0
    def __init__(self, plugin: LuaPlugin) -> None:
        super().__init__(plugin.name)

        layout = QGridLayout()
        layout.setAlignment(Qt.AlignTop)
        self.setLayout(layout)

        for row, option in enumerate(plugin.options):
            layout.addWidget(QLabel(option.name), row, 0)

            checkbox = QCheckBox()
            checkbox.setChecked(option.enabled)
            checkbox.toggled.connect(option.set_enabled)
            layout.addWidget(checkbox, row, 1)
Example #13
0
class RightLayout(QVBoxLayout):
    def __init__(self, feature_count):
        super().__init__()

        # Table widget
        self.data_corpus = QGridLayout()
        self.data_corpus.setAlignment(Qt.AlignCenter)

        for _ in range(feature_count):
            label = QLabel()
            label.setStyleSheet('background-color: white; padding:2;')
            label.setFixedWidth(350)
            self.data_corpus.addWidget(label)

        self.addLayout(self.data_corpus)
Example #14
0
    def initUI(self):
        mainLayout = QGridLayout(self)
        mainLayout.setAlignment(Qt.AlignLeft | Qt.AlignTop)
        mainLayout.setColumnStretch(0, 0)
        mainLayout.setColumnStretch(1, 1)
        mainLayout.setColumnStretch(2, 1)
        mainLayout.setColumnStretch(3, 1)
        self.setLayout(mainLayout)

        nameText = QLabel('Name:')
        nameText.setAlignment(Qt.AlignRight)
        self.nameIn = QLineEdit()
        self.nameIn.setText(self.text)
        mainLayout.addWidget(nameText, 0, 0)
        mainLayout.addWidget(self.nameIn, 0, 1, 1, 3)

        langText = QLabel('Language:')
        langText.setAlignment(Qt.AlignRight)
        self.pyCheck = QRadioButton(CommandType.PYTHON)
        if self.cmdType == self.pyCheck.text():
            self.pyCheck.setChecked(True)
        self.melCheck = QRadioButton(CommandType.MEL)
        if self.cmdType == self.melCheck.text():
            self.melCheck.setChecked(True)
        mainLayout.addWidget(langText, 1, 0)
        mainLayout.addWidget(self.pyCheck, 1, 1)
        mainLayout.addWidget(self.melCheck, 1, 3)

        cmdText = QLabel('Command:')
        cmdText.setAlignment(Qt.AlignRight | Qt.AlignTop)
        self.cmdIn = QTextEdit()
        self.cmdIn.setPlainText(self.cmd)
        mainLayout.addWidget(cmdText, 2, 0)
        mainLayout.addWidget(self.cmdIn, 2, 1, 1, 3)

        okBtn = QPushButton("OK")
        okBtn.clicked.connect(self.accept)
        testBtn = QPushButton("Test")
        testBtn.clicked.connect(self.onTest)
        cancelBtn = QPushButton("Cancel")
        cancelBtn.clicked.connect(self.reject)

        mainLayout.addWidget(okBtn, 3, 1, 1, 1)
        mainLayout.addWidget(testBtn, 3, 2, 1, 1)
        mainLayout.addWidget(cancelBtn, 3, 3, 1, 1)
        self.setWindowTitle("Edit Command")
        self.setWindowFlags(Qt.WindowStaysOnTopHint)
Example #15
0
    def __init__(self):
        super().__init__()

        self.setMinimumWidth(185)
        self.setTitleBarWidget(QWidget())

        layout = QGridLayout()
        layout.setAlignment(Qt.AlignTop)
        container = QWidget()
        container.setLayout(layout)
        self.setWidget(container)

        # Add title
        title = Label("history_header", "Notation")
        # TODO: Get alignment in styles/styles.qss
        title.setAlignment(Qt.AlignHCenter)
        layout.addWidget(title, 0, 0, 1, 3)
Example #16
0
    def __init__(self) -> None:
        super().__init__("Plugins")

        layout = QGridLayout()
        layout.setAlignment(Qt.AlignTop)
        self.setLayout(layout)

        for row, plugin in enumerate(LuaPluginManager.plugins()):
            if not plugin.show_in_ui:
                continue

            layout.addWidget(QLabel(plugin.name), row, 0)

            checkbox = QCheckBox()
            checkbox.setChecked(plugin.enabled)
            checkbox.toggled.connect(plugin.set_enabled)
            layout.addWidget(checkbox, row, 1)
Example #17
0
class AdadeltaUI(QWidget):
    def __init__(self):
        super().__init__()
        self.main_layout = QGridLayout()
        self.main_layout.setAlignment(Qt.AlignTop)        
        self.learning_rate = QLineEdit("0.001")
        self.learning_rate.setValidator(QDoubleValidator(0., 1., 5))
        self.epsilon = QLineEdit("1e-07")
        self.epsilon.setValidator(QDoubleValidator(0., 1e-10, 10))        
        self.rho = QLineEdit("0.95")
        self.rho.setValidator(QDoubleValidator(0., 1e5, 10))            
        self.main_layout.addWidget(QLabel("Learning rate:"), 0, 0)
        self.main_layout.addWidget(self.learning_rate, 0, 1)
        self.main_layout.addWidget(QLabel("rho:"), 1, 0)
        self.main_layout.addWidget(self.rho,1 , 1)
        self.main_layout.addWidget(QLabel("epsilon:"),2 ,0)
        self.main_layout.addWidget(self.epsilon,2, 1)
        self.setLayout(self.main_layout)
        
    def get_optimizer(self):
        return None
Example #18
0
class SGDUI(QWidget):
    def __init__(self):
        super().__init__()
        self.main_layout = QGridLayout()
        self.main_layout.setAlignment(Qt.AlignTop)        
        self.learning_rate = QLineEdit("0.01")
        self.learning_rate.setValidator(QDoubleValidator(0., 1., 5))
        self.momentum = QLineEdit("0.00")
        self.momentum.setValidator(QDoubleValidator(0., 1e5, 2))        
        self.nestrov = QComboBox()
        self.nestrov.addItems(["True", "False"])
        self.main_layout.addWidget(QLabel("Learning rate:"), 0, 0)
        self.main_layout.addWidget(self.learning_rate, 0, 1)
        self.main_layout.addWidget(QLabel("Momentum:"), 1, 0)
        self.main_layout.addWidget(self.momentum,1, 1)
        self.main_layout.addWidget(QLabel("Nestrov:"), 2, 0)
        self.main_layout.addWidget(self.nestrov)
        self.setLayout(self.main_layout)
    
    def get_optimizer(self):
        return None
Example #19
0
class AdagradUI(QWidget):
    def __init__(self):
        super().__init__()
        self.main_layout = QGridLayout()
        self.main_layout.setAlignment(Qt.AlignTop)        
        self.learning_rate = QLineEdit("0.01")
        self.learning_rate.setValidator(QDoubleValidator(0., 1., 5))
        self.epsilon = QLineEdit("1e-07")
        self.epsilon.setValidator(QDoubleValidator(0., 1e-10, 10))              
        self.initial_accumulator_value = QLineEdit("0.1")
        self.initial_accumulator_value.setValidator(QDoubleValidator(0., 1e-10, 10))        
        self.main_layout.addWidget(QLabel("Learning rate:"), 0, 0)
        self.main_layout.addWidget(self.learning_rate, 0, 1)
        self.main_layout.addWidget(QLabel("Epsilon:"),1 ,0)
        self.main_layout.addWidget(self.epsilon,1, 1)
        self.main_layout.addWidget(QLabel("Initial_accumulator_value:"), 2, 0)
        self.main_layout.addWidget(self.initial_accumulator_value,2 , 1)
        self.setLayout(self.main_layout)
        
    def get_optimizer(self):
        return None
Example #20
0
    def __init__(self, parent, select_callback, options):
        super(DataFormatDialog, self).__init__(parent)

        self._main = QtWidgets.QWidget()
        self.select_callback = select_callback
        self.options = options

        #self.setStyle(QStyleFactory.create('Fusion'))

        self.setCentralWidget(self._main)
        layout = QGridLayout(self._main)

        layout.setAlignment(Qt.AlignLeft)

        self.data_select = [QComboBox() for i in parent.axes]

        for i, ax in enumerate(parent.axes):

            label = QLabel("Axes {},{}".format(i // parent.nrows,
                                               i % parent.nrows))

            self.data_select[i].addItems(self.options.keys())
            layout.addWidget(label, i, 0)
            layout.addWidget(self.data_select[i], i, 1, 1, 2)

        okbutton = QPushButton("Apply")
        okbutton.clicked.connect(self.select_apply)
        okbutton.setDefault(True)
        cancelbutton = QPushButton("Cancel")
        cancelbutton.clicked.connect(self.select_cancel)

        layout.addWidget(okbutton, 2, 1)
        layout.addWidget(cancelbutton, 2, 2)

        layout.setSpacing(5)

        self.setLayout(layout)

        self.setWindowTitle('Set Data Format')
    def initUI(self):
        mainLayout = QGridLayout(self)
        mainLayout.setAlignment(Qt.AlignLeft | Qt.AlignTop)
        # mainLayout.setColumnStretch(0,0)
        mainLayout.setColumnStretch(1,1)
        mainLayout.setColumnStretch(2,1)
        # mainLayout.setColumnStretch(3,1)
        self.setLayout(mainLayout)

        line = 0
        title = QLabel('Change Current Namespace to:')
        title.setAlignment(Qt.AlignLeft)
        mainLayout.addWidget(title, line, 0, 1, 3)

        line += 1
        for each in self.namespace:
            dyName = QLabel(each)
            dyCombo = QComboBox()
            dyCombo.setLineEdit(QLineEdit())
            for valName in self.validNamespace:
                dyCombo.addItem(valName,self.validNamespace.index(valName))
            dyCombo.setCurrentIndex(dyCombo.findText(each,Qt.MatchExactly))
            mainLayout.addWidget(dyName, line, 0, 1, 1)
            mainLayout.addWidget(dyCombo, line, 1, 1, 2)
            self.model[each] = dyCombo
            line += 1

        line += 1
        okBtn = QPushButton("OK")
        okBtn.clicked.connect(self.accept)
        cancelBtn = QPushButton("Cancel")
        cancelBtn.clicked.connect(self.reject)

        mainLayout.addWidget(okBtn, line, 1, 1, 1)
        mainLayout.addWidget(cancelBtn, line, 2, 1, 1)
        self.setWindowTitle("Choose Namespace")
        self.setWindowFlags(Qt.WindowStaysOnTopHint)
    def _setup_ui(self):
        self.setFrameStyle(QFrame.StyledPanel | QFrame.Raised)

        layout = QGridLayout(self)
        self.setLayout(layout)
        layout.setMargin(1)
        layout.setSpacing(1)

        # Construct the stop indicators and switches
        col = 0
        for l, n in STOP_CONDS.items():
            self._create_stop_cond(l, n, layout, col)
            col += 1

        label = QLabel('COMP STOP', self)
        font = label.font()
        font.setPointSize(12)
        font.setBold(True)
        label.setFont(font)
        label.setAlignment(Qt.AlignCenter)
        layout.addWidget(label, 3, 0, 1, 4, Qt.AlignRight)

        self._s1 = QRadioButton('S1', self)
        self._s1.setLayoutDirection(Qt.RightToLeft)
        layout.addWidget(self._s1, 3, 5, 1, 2)
        layout.setAlignment(self._s1, Qt.AlignRight)
        self._s1.setChecked(True)
        self._s1.toggled.connect(self._set_stop_conds)

        self._s2 = QRadioButton('S2', self)
        layout.addWidget(self._s2, 3, 6, 1, 2)
        layout.setAlignment(self._s2, Qt.AlignRight)

        font.setPointSize(7)
        self._s1.setFont(font)
        self._s2.setFont(font)
Example #23
0
    def __set_layout(self):
        """
        Initializes the layout of this widget
        """
        layout = QGridLayout()
        layout.setContentsMargins(0, 0, 0, 0)

        # Widgets
        layout.addWidget(self.view_students, 0, 1)
        layout.addWidget(self.v_canvas, 1, 0, 1, 3)
        layout.addWidget(self.view_teacher, 2, 0, 1, 3)

        # Alignments
        layout.setAlignment(self.view_students, Qt.AlignCenter)
        layout.setAlignment(self.v_canvas, Qt.AlignCenter)
        layout.setAlignment(self.view_teacher, Qt.AlignCenter)

        self.setLayout(layout)
Example #24
0
class LinkInfo(QWidget):
    """
    Social Link general information view.

    :param MainFrame mainframe: the application's mainframe
    :param QWidget op: parent widget
    :param SocialLink link: the social link
    :param int linklevel: the level at which to add level-specific information
    :param int linkangle: the angle at which to add angle-specific information
    """
    def __init__(self, mainframe, op, link, linklevel=None, linkangle=None):
        QWidget.__init__(self)
        self.mainframe = mainframe
        self.op = op
        self.link = link
        self.linklevel = linklevel
        self.linkangle = linkangle

        self.reqs = None

        self.initUI()

    def initUI(self):
        """
        Initializes the GUI.
        Does a lot of stuff.
        """
        self.grid = QGridLayout()
        self.setLayout(self.grid)

        self.levang = {}
        elev = []

        for key, _ in self.link.cutscenes.items():
            if key[:key.index("_")] in self.levang:
                self.levang[key[:key.index("_")]].append(key[key.index("_") +
                                                             1:])
            else:
                self.levang[key[:key.index("_")]] = [key[key.index("_") + 1:]]
            if key[:key.index("_")] not in elev:
                elev.append(key[:key.index("_")])
        for _, angle in self.levang.items():
            angle.sort(key=lambda angle: (int)(angle))  #pylint: disable=unnecessary-lambda
        elev.sort(key=lambda level: (int)(level))  #pylint: disable=unnecessary-lambda
        infoL = QLabel(self, text="Social Link Information")
        self.grid.addWidget(infoL, 0, 0, 1, 12)

        self.level = QComboBox(self)
        if len(elev) != 0:
            elev.insert(0, "")
            self.level.addItems(elev)
            self.level.activated.connect(self.recs)
            if self.linklevel:
                self.level.setCurrentIndex((int)(self.linklevel))
                self.recs()
        else:
            self.level.addItems(["No cutscenes have been created"])
        self.grid.addWidget(self.level, 1, 1, 1, 1)

        atlevel = QLabel(self, text="At " + self.link.arcana + " level ")
        self.grid.addWidget(atlevel, 1, 0, 1, 1)

        arcanainfo = QLabel(self, text=self.link.arcana + " Social Link info")
        self.aitext = QTextEdit(self)
        self.aitext.setText(self.link.info)
        self.aitext.setFixedSize(300, 100)

        self.save = QPushButton(self, text="Save")
        self.back = QPushButton(self, text="Back")
        self.save.clicked.connect(self.saveinfo)
        self.back.clicked.connect(self.endedit)

        if self.linklevel and self.linkangle:
            self.grid.addWidget(arcanainfo, 4, 0, 1, 6)
            self.grid.addWidget(self.aitext, 5, 0, 1, 6)

            thisinfo = QLabel(self,
                              text=self.link.arcana + " info for level: " +
                              self.linklevel + ", angle: " + self.linkangle)
            self.grid.addWidget(thisinfo, 4, 6, 1, 6)

            self.titext = QTextEdit(self)
            self.titext.setFixedSize(300, 100)
            try:
                self.titext.setText(
                    self.link.cutinfo[self.level.currentText() + "_" +
                                      str(self.linkangle)])
            except:  #pylint: disable=bare-except
                # TODO why? Backwards compatibility?
                pass
            self.grid.addWidget(self.titext, 5, 6, 1, 6)

            self.grid.setAlignment(thisinfo, Qt.AlignHCenter)
            self.grid.setAlignment(self.titext, Qt.AlignHCenter)
        else:
            self.grid.addWidget(arcanainfo, 4, 0, 1, 12)
            self.grid.addWidget(self.aitext, 5, 0, 1, 12)

        pseudoL = QLabel(self, text="Social Link's Pseudoname")
        youhave = QLabel(self, text="You have established the ")
        ofthe = QLabel(self,
                       text="Social Link of the " + self.link.arcana +
                       " arcana!")

        self.grid.addWidget(pseudoL, 2, 0, 1, 12)
        self.grid.addWidget(youhave, 3, 0, 1, 5)
        self.grid.addWidget(ofthe, 3, 7, 1, 6)

        self.grid.addWidget(self.save, 6, 0, 1, 1)
        self.grid.addWidget(self.back, 6, 1, 1, 1)

        self.pseudoname = QLineEdit(self)
        self.pseudoname.setFixedSize(150, 20)
        self.pseudoname.setText(self.link.pseudoname)
        self.grid.addWidget(self.pseudoname, 3, 5, 1, 2)

        self.grid.setAlignment(infoL, Qt.AlignHCenter)
        self.grid.setAlignment(self.aitext, Qt.AlignHCenter)
        self.grid.setAlignment(arcanainfo, Qt.AlignHCenter)
        self.grid.setAlignment(self.save, Qt.AlignRight)
        self.grid.setAlignment(self.back, Qt.AlignLeft)
        self.grid.setAlignment(youhave, Qt.AlignRight)
        self.grid.setAlignment(ofthe, Qt.AlignLeft)
        self.grid.setAlignment(pseudoL, Qt.AlignHCenter)
        self.grid.setAlignment(self.pseudoname, Qt.AlignHCenter)

    def saveinfo(self):
        """
        Set the info in the social link object and save it.
        """
        try:
            for angle, data in self.reqs.textboxes.items():
                (int)(data.text())
                if data.text() != "":
                    if self.level.currentText(
                    ) not in self.link.requiredPoints:
                        self.link.requiredPoints[self.level.currentText()] = {}
                    if angle not in self.link.requiredPoints[
                            self.level.currentText()]:
                        self.link.requiredPoints[
                            self.level.currentText()][angle] = {}
                    self.link.requiredPoints[
                        self.level.currentText()][angle]['points'] = int(
                            data.text())
            for angle, data in self.reqs.courages.items():
                self.link.requiredPoints[
                    self.level.currentText()][angle]['courage'] = int(
                        data.currentText())
            for angle, data in self.reqs.charms.items():
                self.link.requiredPoints[
                    self.level.currentText()][angle]['charm'] = int(
                        data.currentText())
            for angle, data in self.reqs.acads.items():
                self.link.requiredPoints[
                    self.level.currentText()][angle]['acad'] = int(
                        data.currentText())
            for angle, data in self.reqs.ultis.items():
                self.link.finalpersona[angle] = data.currentText()
            self.link.pseudoname = self.pseudoname.text()
            self.link.info = self.aitext.toPlainText()
            if self.linklevel:
                if str(self.linklevel) + "_" + str(
                        self.linkangle) not in self.link.cutinfo:
                    self.link.cutinfo[str(self.linklevel) + "_" +
                                      str(self.linkangle)] = ""
                self.link.cutinfo[str(self.linklevel) + "_" + str(
                    self.linkangle)] = self.titext.toPlainText()
        except ValueError:
            popup("Points must be integers.\nNot saved.", "Critical")
            return
        self.link.save()
        popup("Saved", "Information")

    def endedit(self):
        """
        We're done. Return to the calling widget.
        """
        self.mainframe.changeState(self.op)

    def recs(self):
        """
        Handle addition and removal of requirements window.
        """
        try:
            self.reqs.close()
        except Exception as e:  #pylint: disable=broad-except
            print(e)
            print("Can't close oudated req widget")
        if self.level.currentText() == "":
            return
        if self.level.itemText(0) == "":
            self.level.removeItem(0)

        self.reqs = Requirements(self)
        self.grid.addWidget(self.reqs, 1, 2, 1, 10)
Example #25
0
class AxesCheckBoxGroup():
    def __init__(self, window, axes, label=''):
        self.layout = QGridLayout()
        self.layout.setAlignment(Qt.AlignLeft)

        self.group = QGroupBox(label)
        self.group.setLayout(self.layout)

        self.window = window
        self.axes = axes
        self.lines_cb = []
        self.lines = []

        self.all_cb = CheckBox('')
        self.all_cb.stateChanged.connect(self.cb_all_state_changed)
        self.layout.addWidget(self.all_cb, 0, 0)

    def add_to_layout(self, layout, row, col):
        self.update_checkboxes()
        layout.addWidget(self.group, row, col)

    def cb_all_state_changed(self):

        state = self.all_cb.checkState()

        if self.window.draw_updates:

            self.window.set_draw_updates(False)

            if state == Qt.CheckState.PartiallyChecked:
                state = Qt.CheckState.Checked
                self.all_cb.setCheckState(state)

            for l_cb in self.lines_cb:
                l_cb.set_cb_state(state)

            self.axes._top_axes.draw_lines_markers()
            leg_loc = self.axes.get_legend(
            )._loc_real if self.axes.get_legend() != None else 0
            self.axes.legend(fontsize='small', loc=leg_loc)
            self.window.set_draw_updates(True)

    def cb_all_update(self):
        checks = np.zeros(len(self.lines_cb))
        for i, cb in enumerate(self.lines_cb):
            checks[i] = int(cb.get_cb_state())

        prev = self.window.set_draw_updates(False)
        if np.all(checks):
            self.all_cb.setCheckState(Qt.CheckState.Checked)
        elif np.any(checks):
            self.all_cb.setCheckState(Qt.CheckState.PartiallyChecked)
        else:
            self.all_cb.setCheckState(Qt.CheckState.Unchecked)

        self.window.set_draw_updates(prev)

    def update_checkboxes(self):

        leg_loc = self.axes.get_legend(
        )._loc_real if self.axes.get_legend() != None else 0
        prev = self.window.set_draw_updates(False)

        i = 1
        for l in self.axes.lines:
            if l in self.lines:
                i += 1
                continue

            ## ignore lines with no labels
            if len(l.get_label()) and l.get_label()[0] != '_':
                self.lines.append(l)
                l_cb = LineCheckBox(self.window, self.axes, l,
                                    self.cb_all_update)
                l_cb.add_to_layout(self.layout, i + 1)
                l_cb.set_cb_state(True)
                self.lines_cb.append(l_cb)
                i += 1

        self.axes.legend(fontsize='small', loc=leg_loc)

        if not len(self.lines):
            self.all_cb.hide()

        self.window.set_draw_updates(prev)

    def scale_visible(self, xscale=True, yscale=True):

        ymin, ymax = np.inf, -np.inf
        xmin, xmax = np.inf, -np.inf
        for l in self.axes.lines:
            if not l.get_visible():
                continue

            x = l.get_xdata()
            y = l.get_ydata()

            y = np.where(np.isinf(y), np.nan, y)
            ymin_t, ymax_t = np.nanmin(y), np.nanmax(y)
            xmin_t, xmax_t = np.nanmin(x), np.nanmax(x)

            ymin = ymin_t if ymin_t < ymin else ymin
            ymax = ymax_t if ymax_t > ymax else ymax

            xmin = xmin_t if xmin_t < xmin else xmin
            xmax = xmax_t if xmax_t > xmax else xmax

        if np.all(np.isfinite([ymin, ymax])) and yscale:
            ypad = (ymax - ymin) / 20
            max_y = ymax + ypad
            min_y = ymin - ypad

            self.axes.set_ylim([min_y, max_y])

        if np.all(np.isfinite([xmin, xmax])) and xscale:
            xpad = (xmax - xmin) / 20
            max_x = xmax + xpad
            min_x = xmin - xpad

            self.axes.set_xlim([min_x, max_x])
Example #26
0
class QSettingsWindow(QDialog):
    def __init__(self, game: Game):
        super(QSettingsWindow, self).__init__()

        self.game = game
        self.pluginsPage = None
        self.pluginsOptionsPage = None
        self.campaign_management_page = QWidget()

        self.setModal(True)
        self.setWindowTitle("Settings")
        self.setWindowIcon(CONST.ICONS["Settings"])
        self.setMinimumSize(600, 250)

        self.initUi()

    def initUi(self):
        self.layout = QGridLayout()

        self.categoryList = QListView()
        self.right_layout = QStackedLayout()

        self.categoryList.setMaximumWidth(175)

        self.categoryModel = QStandardItemModel(self.categoryList)

        self.categoryList.setIconSize(QSize(32, 32))

        self.initDifficultyLayout()
        difficulty = QStandardItem("Difficulty")
        difficulty.setIcon(CONST.ICONS["Missile"])
        difficulty.setEditable(False)
        difficulty.setSelectable(True)
        self.categoryModel.appendRow(difficulty)
        self.right_layout.addWidget(self.difficultyPage)

        self.init_campaign_management_layout()
        campaign_management = QStandardItem("Campaign Management")
        campaign_management.setIcon(CONST.ICONS["Money"])
        campaign_management.setEditable(False)
        campaign_management.setSelectable(True)
        self.categoryModel.appendRow(campaign_management)
        self.right_layout.addWidget(self.campaign_management_page)

        self.initGeneratorLayout()
        generator = QStandardItem("Mission Generator")
        generator.setIcon(CONST.ICONS["Generator"])
        generator.setEditable(False)
        generator.setSelectable(True)
        self.categoryModel.appendRow(generator)
        self.right_layout.addWidget(self.generatorPage)

        self.initCheatLayout()
        cheat = QStandardItem("Cheat Menu")
        cheat.setIcon(CONST.ICONS["Cheat"])
        cheat.setEditable(False)
        cheat.setSelectable(True)
        self.categoryModel.appendRow(cheat)
        self.right_layout.addWidget(self.cheatPage)

        self.pluginsPage = PluginsPage()
        plugins = QStandardItem("LUA Plugins")
        plugins.setIcon(CONST.ICONS["Plugins"])
        plugins.setEditable(False)
        plugins.setSelectable(True)
        self.categoryModel.appendRow(plugins)
        self.right_layout.addWidget(self.pluginsPage)

        self.pluginsOptionsPage = PluginOptionsPage()
        pluginsOptions = QStandardItem("LUA Plugins Options")
        pluginsOptions.setIcon(CONST.ICONS["PluginsOptions"])
        pluginsOptions.setEditable(False)
        pluginsOptions.setSelectable(True)
        self.categoryModel.appendRow(pluginsOptions)
        self.right_layout.addWidget(self.pluginsOptionsPage)

        self.categoryList.setSelectionBehavior(QAbstractItemView.SelectRows)
        self.categoryList.setModel(self.categoryModel)
        self.categoryList.selectionModel().setCurrentIndex(
            self.categoryList.indexAt(QPoint(1, 1)),
            QItemSelectionModel.Select)
        self.categoryList.selectionModel().selectionChanged.connect(
            self.onSelectionChanged)

        self.layout.addWidget(self.categoryList, 0, 0, 1, 1)
        self.layout.addLayout(self.right_layout, 0, 1, 5, 1)

        self.setLayout(self.layout)

    def init(self):
        pass

    def initDifficultyLayout(self):

        self.difficultyPage = QWidget()
        self.difficultyLayout = QVBoxLayout()
        self.difficultyLayout.setAlignment(Qt.AlignTop)
        self.difficultyPage.setLayout(self.difficultyLayout)

        # DCS AI difficulty settings
        self.aiDifficultySettings = QGroupBox("AI Difficulty")
        self.aiDifficultyLayout = QGridLayout()
        self.playerCoalitionSkill = QComboBox()
        self.enemyCoalitionSkill = QComboBox()
        self.enemyAASkill = QComboBox()
        for skill in CONST.SKILL_OPTIONS:
            self.playerCoalitionSkill.addItem(skill)
            self.enemyCoalitionSkill.addItem(skill)
            self.enemyAASkill.addItem(skill)

        self.playerCoalitionSkill.setCurrentIndex(
            CONST.SKILL_OPTIONS.index(self.game.settings.player_skill))
        self.enemyCoalitionSkill.setCurrentIndex(
            CONST.SKILL_OPTIONS.index(self.game.settings.enemy_skill))
        self.enemyAASkill.setCurrentIndex(
            CONST.SKILL_OPTIONS.index(self.game.settings.enemy_vehicle_skill))

        self.player_income = TenthsSpinSlider(
            "Player income multiplier",
            0,
            50,
            int(self.game.settings.player_income_multiplier * 10),
        )
        self.player_income.spinner.valueChanged.connect(self.applySettings)
        self.enemy_income = TenthsSpinSlider(
            "Enemy income multiplier",
            0,
            50,
            int(self.game.settings.enemy_income_multiplier * 10),
        )
        self.enemy_income.spinner.valueChanged.connect(self.applySettings)

        self.playerCoalitionSkill.currentIndexChanged.connect(
            self.applySettings)
        self.enemyCoalitionSkill.currentIndexChanged.connect(
            self.applySettings)
        self.enemyAASkill.currentIndexChanged.connect(self.applySettings)

        # Mission generation settings related to difficulty
        self.missionSettings = QGroupBox("Mission Difficulty")
        self.missionLayout = QGridLayout()

        self.manpads = QCheckBox()
        self.manpads.setChecked(self.game.settings.manpads)
        self.manpads.toggled.connect(self.applySettings)

        self.noNightMission = QCheckBox()
        self.noNightMission.setChecked(self.game.settings.night_disabled)
        self.noNightMission.toggled.connect(self.applySettings)

        # DCS Mission options
        self.missionRestrictionsSettings = QGroupBox("Mission Restrictions")
        self.missionRestrictionsLayout = QGridLayout()

        self.difficultyLabel = QComboBox()
        [self.difficultyLabel.addItem(t) for t in CONST.LABELS_OPTIONS]
        self.difficultyLabel.setCurrentIndex(
            CONST.LABELS_OPTIONS.index(self.game.settings.labels))
        self.difficultyLabel.currentIndexChanged.connect(self.applySettings)

        self.mapVisibiitySelection = QComboBox()
        self.mapVisibiitySelection.addItem("All", ForcedOptions.Views.All)
        if self.game.settings.map_coalition_visibility == ForcedOptions.Views.All:
            self.mapVisibiitySelection.setCurrentIndex(0)
        self.mapVisibiitySelection.addItem("Fog of War",
                                           ForcedOptions.Views.Allies)
        if self.game.settings.map_coalition_visibility == ForcedOptions.Views.Allies:
            self.mapVisibiitySelection.setCurrentIndex(1)
        self.mapVisibiitySelection.addItem("Allies Only",
                                           ForcedOptions.Views.OnlyAllies)
        if (self.game.settings.map_coalition_visibility ==
                ForcedOptions.Views.OnlyAllies):
            self.mapVisibiitySelection.setCurrentIndex(2)
        self.mapVisibiitySelection.addItem("Own Aircraft Only",
                                           ForcedOptions.Views.MyAircraft)
        if (self.game.settings.map_coalition_visibility ==
                ForcedOptions.Views.MyAircraft):
            self.mapVisibiitySelection.setCurrentIndex(3)
        self.mapVisibiitySelection.addItem("Map Only",
                                           ForcedOptions.Views.OnlyMap)
        if self.game.settings.map_coalition_visibility == ForcedOptions.Views.OnlyMap:
            self.mapVisibiitySelection.setCurrentIndex(4)
        self.mapVisibiitySelection.currentIndexChanged.connect(
            self.applySettings)

        self.ext_views = QCheckBox()
        self.ext_views.setChecked(self.game.settings.external_views_allowed)
        self.ext_views.toggled.connect(self.applySettings)

        self.aiDifficultyLayout.addWidget(QLabel("Player coalition skill"), 0,
                                          0)
        self.aiDifficultyLayout.addWidget(self.playerCoalitionSkill, 0, 1,
                                          Qt.AlignRight)
        self.aiDifficultyLayout.addWidget(QLabel("Enemy coalition skill"), 1,
                                          0)
        self.aiDifficultyLayout.addWidget(self.enemyCoalitionSkill, 1, 1,
                                          Qt.AlignRight)
        self.aiDifficultyLayout.addWidget(
            QLabel("Enemy AA and vehicles skill"), 2, 0)
        self.aiDifficultyLayout.addWidget(self.enemyAASkill, 2, 1,
                                          Qt.AlignRight)
        self.aiDifficultyLayout.addLayout(self.player_income, 3, 0)
        self.aiDifficultyLayout.addLayout(self.enemy_income, 4, 0)
        self.aiDifficultySettings.setLayout(self.aiDifficultyLayout)
        self.difficultyLayout.addWidget(self.aiDifficultySettings)

        self.missionLayout.addWidget(QLabel("Manpads on frontlines"), 0, 0)
        self.missionLayout.addWidget(self.manpads, 0, 1, Qt.AlignRight)
        self.missionLayout.addWidget(QLabel("No night missions"), 1, 0)
        self.missionLayout.addWidget(self.noNightMission, 1, 1, Qt.AlignRight)
        self.missionSettings.setLayout(self.missionLayout)
        self.difficultyLayout.addWidget(self.missionSettings)

        self.missionRestrictionsLayout.addWidget(QLabel("In Game Labels"), 0,
                                                 0)
        self.missionRestrictionsLayout.addWidget(self.difficultyLabel, 0, 1,
                                                 Qt.AlignRight)
        self.missionRestrictionsLayout.addWidget(
            QLabel("Map visibility options"), 1, 0)
        self.missionRestrictionsLayout.addWidget(self.mapVisibiitySelection, 1,
                                                 1, Qt.AlignRight)
        self.missionRestrictionsLayout.addWidget(
            QLabel("Allow external views"), 2, 0)
        self.missionRestrictionsLayout.addWidget(self.ext_views, 2, 1,
                                                 Qt.AlignRight)
        self.missionRestrictionsSettings.setLayout(
            self.missionRestrictionsLayout)
        self.difficultyLayout.addWidget(self.missionRestrictionsSettings)

    def init_campaign_management_layout(self) -> None:
        campaign_layout = QVBoxLayout()
        campaign_layout.setAlignment(Qt.AlignTop)
        self.campaign_management_page.setLayout(campaign_layout)

        general = QGroupBox("General")
        campaign_layout.addWidget(general)

        general_layout = QGridLayout()
        general.setLayout(general_layout)

        def set_restict_weapons_by_date(value: bool) -> None:
            self.game.settings.restrict_weapons_by_date = value

        restrict_weapons = QCheckBox()
        restrict_weapons.setChecked(
            self.game.settings.restrict_weapons_by_date)
        restrict_weapons.toggled.connect(set_restict_weapons_by_date)

        tooltip_text = (
            "Restricts weapon availability based on the campaign date. Data is "
            "extremely incomplete so does not affect all weapons.")
        restrict_weapons.setToolTip(tooltip_text)
        restrict_weapons_label = QLabel("Restrict weapons by date (WIP)")
        restrict_weapons_label.setToolTip(tooltip_text)

        general_layout.addWidget(restrict_weapons_label, 0, 0)
        general_layout.addWidget(restrict_weapons, 0, 1, Qt.AlignRight)

        def set_old_awec(value: bool) -> None:
            self.game.settings.disable_legacy_aewc = value

        old_awac = QCheckBox()
        old_awac.setChecked(self.game.settings.disable_legacy_aewc)
        old_awac.toggled.connect(set_old_awec)

        old_awec_info = (
            "If checked, the invulnerable friendly AEW&C aircraft that begins "
            "the mission in the air will not be spawned. AEW&C missions must "
            "be planned in the ATO and will take time to arrive on-station.")

        old_awac.setToolTip(old_awec_info)
        old_awac_label = QLabel(
            "Disable invulnerable, always-available AEW&C (WIP)")
        old_awac_label.setToolTip(old_awec_info)

        general_layout.addWidget(old_awac_label, 1, 0)
        general_layout.addWidget(old_awac, 1, 1, Qt.AlignRight)

        automation = QGroupBox("HQ Automation")
        campaign_layout.addWidget(automation)

        automation_layout = QGridLayout()
        automation.setLayout(automation_layout)

        def set_runway_automation(value: bool) -> None:
            self.game.settings.automate_runway_repair = value

        def set_front_line_automation(value: bool) -> None:
            self.game.settings.automate_front_line_reinforcements = value

        def set_aircraft_automation(value: bool) -> None:
            self.game.settings.automate_aircraft_reinforcements = value

        runway_repair = QCheckBox()
        runway_repair.setChecked(self.game.settings.automate_runway_repair)
        runway_repair.toggled.connect(set_runway_automation)

        automation_layout.addWidget(QLabel("Automate runway repairs"), 0, 0)
        automation_layout.addWidget(runway_repair, 0, 1, Qt.AlignRight)

        front_line = QCheckBox()
        front_line.setChecked(
            self.game.settings.automate_front_line_reinforcements)
        front_line.toggled.connect(set_front_line_automation)

        automation_layout.addWidget(QLabel("Automate front-line purchases"), 1,
                                    0)
        automation_layout.addWidget(front_line, 1, 1, Qt.AlignRight)

        aircraft = QCheckBox()
        aircraft.setChecked(
            self.game.settings.automate_aircraft_reinforcements)
        aircraft.toggled.connect(set_aircraft_automation)

        automation_layout.addWidget(QLabel("Automate aircraft purchases"), 2,
                                    0)
        automation_layout.addWidget(aircraft, 2, 1, Qt.AlignRight)

    def initGeneratorLayout(self):
        self.generatorPage = QWidget()
        self.generatorLayout = QVBoxLayout()
        self.generatorLayout.setAlignment(Qt.AlignTop)
        self.generatorPage.setLayout(self.generatorLayout)

        self.gameplay = QGroupBox("Gameplay")
        self.gameplayLayout = QGridLayout()
        self.gameplayLayout.setAlignment(Qt.AlignTop)
        self.gameplay.setLayout(self.gameplayLayout)

        self.supercarrier = QCheckBox()
        self.supercarrier.setChecked(self.game.settings.supercarrier)
        self.supercarrier.toggled.connect(self.applySettings)

        self.generate_marks = QCheckBox()
        self.generate_marks.setChecked(self.game.settings.generate_marks)
        self.generate_marks.toggled.connect(self.applySettings)

        self.generate_dark_kneeboard = QCheckBox()
        self.generate_dark_kneeboard.setChecked(
            self.game.settings.generate_dark_kneeboard)
        self.generate_dark_kneeboard.toggled.connect(self.applySettings)

        self.never_delay_players = QCheckBox()
        self.never_delay_players.setChecked(
            self.game.settings.never_delay_player_flights)
        self.never_delay_players.toggled.connect(self.applySettings)
        self.never_delay_players.setToolTip(
            "When checked, player flights with a delayed start time will be "
            "spawned immediately. AI wingmen may begin startup immediately.")

        self.gameplayLayout.addWidget(QLabel("Use Supercarrier Module"), 0, 0)
        self.gameplayLayout.addWidget(self.supercarrier, 0, 1, Qt.AlignRight)
        self.gameplayLayout.addWidget(QLabel("Put Objective Markers on Map"),
                                      1, 0)
        self.gameplayLayout.addWidget(self.generate_marks, 1, 1, Qt.AlignRight)

        dark_kneeboard_label = QLabel(
            "Generate Dark Kneeboard <br />"
            "<strong>Dark kneeboard for night missions.<br />"
            "This will likely make the kneeboard on the pilot leg unreadable.</strong>"
        )
        self.gameplayLayout.addWidget(dark_kneeboard_label, 2, 0)
        self.gameplayLayout.addWidget(self.generate_dark_kneeboard, 2, 1,
                                      Qt.AlignRight)

        spawn_players_immediately_tooltip = (
            "Always spawns player aircraft immediately, even if their start time is "
            "more than 10 minutes after the start of the mission. <strong>This does "
            "not alter the timing of your mission. Your TOT will not change. This "
            "option only allows the player to wait on the ground.</strong>")
        spawn_immediately_label = QLabel(
            "Player flights ignore TOT and spawn immediately<br />"
            "<strong>Does not adjust package waypoint times.<br />"
            "Should not be used if players have runway or in-air starts.</strong>"
        )
        spawn_immediately_label.setToolTip(spawn_players_immediately_tooltip)
        self.gameplayLayout.addWidget(spawn_immediately_label, 3, 0)
        self.gameplayLayout.addWidget(self.never_delay_players, 3, 1,
                                      Qt.AlignRight)

        start_type_label = QLabel(
            "Default start type for AI aircraft<br /><strong>Warning: "
            "Any option other than Cold breaks OCA/Aircraft missions.</strong>"
        )
        start_type_label.setToolTip(START_TYPE_TOOLTIP)
        start_type = StartTypeComboBox(self.game.settings)
        start_type.setCurrentText(self.game.settings.default_start_type)

        self.gameplayLayout.addWidget(start_type_label, 4, 0)
        self.gameplayLayout.addWidget(start_type, 4, 1)

        self.performance = QGroupBox("Performance")
        self.performanceLayout = QGridLayout()
        self.performanceLayout.setAlignment(Qt.AlignTop)
        self.performance.setLayout(self.performanceLayout)

        self.smoke = QCheckBox()
        self.smoke.setChecked(self.game.settings.perf_smoke_gen)
        self.smoke.toggled.connect(self.applySettings)

        self.red_alert = QCheckBox()
        self.red_alert.setChecked(self.game.settings.perf_red_alert_state)
        self.red_alert.toggled.connect(self.applySettings)

        self.arti = QCheckBox()
        self.arti.setChecked(self.game.settings.perf_artillery)
        self.arti.toggled.connect(self.applySettings)

        self.moving_units = QCheckBox()
        self.moving_units.setChecked(self.game.settings.perf_moving_units)
        self.moving_units.toggled.connect(self.applySettings)

        self.infantry = QCheckBox()
        self.infantry.setChecked(self.game.settings.perf_infantry)
        self.infantry.toggled.connect(self.applySettings)

        self.destroyed_units = QCheckBox()
        self.destroyed_units.setChecked(
            self.game.settings.perf_destroyed_units)
        self.destroyed_units.toggled.connect(self.applySettings)

        self.culling = QCheckBox()
        self.culling.setChecked(self.game.settings.perf_culling)
        self.culling.toggled.connect(self.applySettings)

        self.culling_distance = QSpinBox()
        self.culling_distance.setMinimum(10)
        self.culling_distance.setMaximum(10000)
        self.culling_distance.setValue(
            self.game.settings.perf_culling_distance)
        self.culling_distance.valueChanged.connect(self.applySettings)

        self.culling_do_not_cull_carrier = QCheckBox()
        self.culling_do_not_cull_carrier.setChecked(
            self.game.settings.perf_do_not_cull_carrier)
        self.culling_do_not_cull_carrier.toggled.connect(self.applySettings)

        self.performanceLayout.addWidget(
            QLabel("Smoke visual effect on frontline"), 0, 0)
        self.performanceLayout.addWidget(self.smoke,
                                         0,
                                         1,
                                         alignment=Qt.AlignRight)
        self.performanceLayout.addWidget(
            QLabel("SAM starts in RED alert mode"), 1, 0)
        self.performanceLayout.addWidget(self.red_alert,
                                         1,
                                         1,
                                         alignment=Qt.AlignRight)
        self.performanceLayout.addWidget(QLabel("Artillery strikes"), 2, 0)
        self.performanceLayout.addWidget(self.arti,
                                         2,
                                         1,
                                         alignment=Qt.AlignRight)
        self.performanceLayout.addWidget(QLabel("Moving ground units"), 3, 0)
        self.performanceLayout.addWidget(self.moving_units,
                                         3,
                                         1,
                                         alignment=Qt.AlignRight)
        self.performanceLayout.addWidget(
            QLabel("Generate infantry squads along vehicles"), 4, 0)
        self.performanceLayout.addWidget(self.infantry,
                                         4,
                                         1,
                                         alignment=Qt.AlignRight)
        self.performanceLayout.addWidget(
            QLabel("Include destroyed units carcass"), 6, 0)
        self.performanceLayout.addWidget(self.destroyed_units,
                                         6,
                                         1,
                                         alignment=Qt.AlignRight)

        self.performanceLayout.addWidget(QHorizontalSeparationLine(), 7, 0, 1,
                                         2)
        self.performanceLayout.addWidget(
            QLabel("Culling of distant units enabled"), 8, 0)
        self.performanceLayout.addWidget(self.culling,
                                         8,
                                         1,
                                         alignment=Qt.AlignRight)
        self.performanceLayout.addWidget(QLabel("Culling distance (km)"), 9, 0)
        self.performanceLayout.addWidget(self.culling_distance,
                                         9,
                                         1,
                                         alignment=Qt.AlignRight)
        self.performanceLayout.addWidget(
            QLabel("Do not cull carrier's surroundings"), 10, 0)
        self.performanceLayout.addWidget(self.culling_do_not_cull_carrier,
                                         10,
                                         1,
                                         alignment=Qt.AlignRight)

        self.generatorLayout.addWidget(self.gameplay)
        self.generatorLayout.addWidget(
            QLabel(
                "Disabling settings below may improve performance, but will impact the overall quality of the experience."
            ))
        self.generatorLayout.addWidget(self.performance)

    def initCheatLayout(self):

        self.cheatPage = QWidget()
        self.cheatLayout = QVBoxLayout()
        self.cheatPage.setLayout(self.cheatLayout)

        self.cheat_options = CheatSettingsBox(self.game, self.applySettings)
        self.cheatLayout.addWidget(self.cheat_options)

        self.moneyCheatBox = QGroupBox("Money Cheat")
        self.moneyCheatBox.setAlignment(Qt.AlignTop)
        self.moneyCheatBoxLayout = QGridLayout()
        self.moneyCheatBox.setLayout(self.moneyCheatBoxLayout)

        cheats_amounts = [25, 50, 100, 200, 500, 1000, -25, -50, -100, -200]
        for i, amount in enumerate(cheats_amounts):
            if amount > 0:
                btn = QPushButton("Cheat +" + str(amount) + "M")
                btn.setProperty("style", "btn-success")
            else:
                btn = QPushButton("Cheat " + str(amount) + "M")
                btn.setProperty("style", "btn-danger")
            btn.clicked.connect(self.cheatLambda(amount))
            self.moneyCheatBoxLayout.addWidget(btn, i / 2, i % 2)
        self.cheatLayout.addWidget(self.moneyCheatBox, stretch=1)

    def cheatLambda(self, amount):
        return lambda: self.cheatMoney(amount)

    def cheatMoney(self, amount):
        logging.info("CHEATING FOR AMOUNT : " + str(amount) + "M")
        self.game.budget += amount
        if amount > 0:
            self.game.informations.append(
                Information(
                    "CHEATER",
                    "You are a cheater and you should feel bad",
                    self.game.turn,
                ))
        else:
            self.game.informations.append(
                Information("CHEATER", "You are still a cheater !",
                            self.game.turn))
        GameUpdateSignal.get_instance().updateGame(self.game)

    def applySettings(self):
        self.game.settings.player_skill = CONST.SKILL_OPTIONS[
            self.playerCoalitionSkill.currentIndex()]
        self.game.settings.enemy_skill = CONST.SKILL_OPTIONS[
            self.enemyCoalitionSkill.currentIndex()]
        self.game.settings.enemy_vehicle_skill = CONST.SKILL_OPTIONS[
            self.enemyAASkill.currentIndex()]
        self.game.settings.player_income_multiplier = self.player_income.value
        self.game.settings.enemy_income_multiplier = self.enemy_income.value
        self.game.settings.manpads = self.manpads.isChecked()
        self.game.settings.labels = CONST.LABELS_OPTIONS[
            self.difficultyLabel.currentIndex()]
        self.game.settings.night_disabled = self.noNightMission.isChecked()
        self.game.settings.map_coalition_visibility = (
            self.mapVisibiitySelection.currentData())
        self.game.settings.external_views_allowed = self.ext_views.isChecked()
        self.game.settings.generate_marks = self.generate_marks.isChecked()
        self.game.settings.never_delay_player_flights = (
            self.never_delay_players.isChecked())

        self.game.settings.supercarrier = self.supercarrier.isChecked()

        self.game.settings.generate_dark_kneeboard = (
            self.generate_dark_kneeboard.isChecked())

        self.game.settings.perf_red_alert_state = self.red_alert.isChecked()
        self.game.settings.perf_smoke_gen = self.smoke.isChecked()
        self.game.settings.perf_artillery = self.arti.isChecked()
        self.game.settings.perf_moving_units = self.moving_units.isChecked()
        self.game.settings.perf_infantry = self.infantry.isChecked()
        self.game.settings.perf_destroyed_units = self.destroyed_units.isChecked(
        )

        self.game.settings.perf_culling = self.culling.isChecked()
        self.game.settings.perf_culling_distance = int(
            self.culling_distance.value())
        self.game.settings.perf_do_not_cull_carrier = (
            self.culling_do_not_cull_carrier.isChecked())

        self.game.settings.show_red_ato = self.cheat_options.show_red_ato
        self.game.settings.enable_frontline_cheats = (
            self.cheat_options.show_frontline_cheat)
        self.game.settings.enable_base_capture_cheat = (
            self.cheat_options.show_base_capture_cheat)

        self.game.compute_conflicts_position()
        GameUpdateSignal.get_instance().updateGame(self.game)

    def onSelectionChanged(self):
        index = self.categoryList.selectionModel().currentIndex().row()
        self.right_layout.setCurrentIndex(index)
Example #27
0
    def __init__(self):
        super(NumberConversion, self).__init__()

        # App attributes
        self.bin_format_base = None
        self.bin_format_base_byte = None

        # Use language settings
        self.ml = ManageLng()

        main_layout = QGridLayout()
        self.setLayout(main_layout)

        # Input
        self.inputbox = QGroupBox(
            self.ml.get_tr_text("tab_num_conv_inputbox_gbox_name"))
        self.inputbox.setMaximumWidth(400)

        main_layout.addWidget(self.inputbox, 0, 0)

        inputbox_layout = QGridLayout()
        inputbox_layout.setHorizontalSpacing(25)
        inputbox_layout.setVerticalSpacing(35)
        inputbox_layout.setAlignment(Qt.AlignCenter)

        self.inputbox.setLayout(inputbox_layout)

        self.input_number_label = QLabel(
            self.ml.get_tr_text("tab_num_conv_inputbox_in_number_lab"))
        self.input_number_textfield = QLineEdit()
        self.input_number_textfield.setPlaceholderText("192")
        self.input_number_textfield.setAlignment(Qt.AlignCenter)
        self.input_number_textfield.returnPressed.connect(self.convert_action)

        inputbox_layout.addWidget(self.input_number_label,
                                  0,
                                  0,
                                  alignment=Qt.AlignCenter)
        inputbox_layout.addWidget(self.input_number_textfield, 0, 1)

        button_layout = QVBoxLayout()
        self.bin_button = QRadioButton(
            self.ml.get_tr_text("tab_num_conv_inputbox_bin_chkbox"))
        self.bin_button.clicked.connect(
            lambda: self.input_number_textfield.setPlaceholderText("11100010"))
        self.dec_button = QRadioButton(
            self.ml.get_tr_text("tab_num_conv_inputbox_dec_chkbox"))
        self.dec_button.clicked.connect(
            lambda: self.input_number_textfield.setPlaceholderText("192"))
        self.hex_button = QRadioButton(
            self.ml.get_tr_text("tab_num_conv_inputbox_hex_chkbox"))
        self.hex_button.clicked.connect(
            lambda: self.input_number_textfield.setPlaceholderText("FF"))
        self.dec_button.setChecked(True)
        button_layout.addWidget(self.bin_button)
        button_layout.addWidget(self.dec_button)
        button_layout.addWidget(self.hex_button)
        inputbox_layout.addLayout(button_layout, 0, 3, 1, 2)

        self.convert_button = QPushButton(
            self.ml.get_tr_text("tab_num_conv_inputbox_conv_btn"))
        self.convert_button.clicked.connect(self.convert_action)
        self.convert_button.setIcon(QIcon("static/images/exchange.png"))
        inputbox_layout.addWidget(self.convert_button,
                                  1,
                                  1,
                                  alignment=Qt.AlignCenter)

        # Output
        self.outputbox = QGroupBox(
            self.ml.get_tr_text("tab_num_conv_outputbox_gbox_name"))
        main_layout.addWidget(self.outputbox, 0, 1)
        outputbox_layout = QGridLayout()
        outputbox_layout.setHorizontalSpacing(25)
        self.outputbox.setLayout(outputbox_layout)

        self.bin_label = QLabel(
            self.ml.get_tr_text("tab_num_conv_outputbox_bin_lab"))
        self.bin_label.setAlignment(Qt.AlignCenter)

        self.dec_label = QLabel(
            self.ml.get_tr_text("tab_num_conv_outputbox_dec_lab"))
        self.dec_label.setAlignment(Qt.AlignCenter)

        self.hex_label = QLabel(
            self.ml.get_tr_text("tab_num_conv_outputbox_hex_lab"))
        self.hex_label.setAlignment(Qt.AlignCenter)

        self.bin_output = QLineEdit()
        self.bin_output.setReadOnly(True)
        self.bin_output.setAlignment(Qt.AlignCenter)

        self.dec_output = QLineEdit()
        self.dec_output.setReadOnly(True)
        self.dec_output.setAlignment(Qt.AlignCenter)

        self.hex_output = QLineEdit()
        self.hex_output.setReadOnly(True)
        self.hex_output.setAlignment(Qt.AlignCenter)

        self.bin_output_copy_button = QPushButton(
            self.ml.get_tr_text("tab_num_conv_outputbox_copy_btn"))
        self.bin_output_copy_button.setIcon(
            QIcon("static/images/copy_clipboard.png"))
        self.bin_output_copy_button.clicked.connect(
            lambda: copy_action(self.bin_output.text()))

        self.dec_output_copy_button = QPushButton(
            self.ml.get_tr_text("tab_num_conv_outputbox_copy_btn"))
        self.dec_output_copy_button.setIcon(
            QIcon("static/images/copy_clipboard.png"))
        self.dec_output_copy_button.clicked.connect(
            lambda: copy_action(self.dec_output.text()))

        self.hex_output_copy_button = QPushButton(
            self.ml.get_tr_text("tab_num_conv_outputbox_copy_btn"))
        self.hex_output_copy_button.setIcon(
            QIcon("static/images/copy_clipboard.png"))
        self.hex_output_copy_button.clicked.connect(
            lambda: copy_action(self.hex_output.text()))

        outputbox_layout.addWidget(self.bin_label, 0, 0)
        outputbox_layout.addWidget(self.bin_output, 0, 1)
        outputbox_layout.addWidget(self.bin_output_copy_button, 0, 2)

        outputbox_layout.addWidget(self.dec_label, 1, 0)
        outputbox_layout.addWidget(self.dec_output, 1, 1)
        outputbox_layout.addWidget(self.dec_output_copy_button, 1, 2)

        outputbox_layout.addWidget(self.hex_label, 2, 0)
        outputbox_layout.addWidget(self.hex_output, 2, 1)
        outputbox_layout.addWidget(self.hex_output_copy_button, 2, 2)

        # IP address/mask number conversion
        self.ip_address_number_conversion_box = QGroupBox(
            self.ml.get_tr_text("tab_num_conv_ip_mask_conv_gbox_name"))
        main_layout.addWidget(self.ip_address_number_conversion_box, 1, 0, 1,
                              2)

        ip_address_number_conversion_layout = QGridLayout()
        ip_address_number_conversion_layout.setAlignment(Qt.AlignCenter)
        ip_address_number_conversion_layout.setHorizontalSpacing(25)
        ip_address_number_conversion_layout.setVerticalSpacing(24)
        self.ip_address_number_conversion_box.setLayout(
            ip_address_number_conversion_layout)

        self.input_label = QLabel(
            self.ml.get_tr_text("tab_num_conv_ip_mask_conv_in_lab"))
        self.input_label.setAlignment(Qt.AlignCenter)
        self.input_label.setMaximumWidth(150)
        self.input_textfield = QLineEdit()
        self.input_textfield.setPlaceholderText("192.168.1.1")
        self.input_textfield.setAlignment(Qt.AlignLeft)
        self.input_textfield.setMaximumWidth(300)
        self.input_textfield.setAlignment(Qt.AlignCenter)
        self.input_textfield.returnPressed.connect(self.convert_action_2)
        ip_address_number_conversion_layout.addWidget(self.input_label, 0, 0)
        ip_address_number_conversion_layout.addWidget(self.input_textfield, 0,
                                                      1)

        button_layout_2 = QVBoxLayout()
        self.dec_to_bin_button = QRadioButton(
            self.ml.get_tr_text("tab_num_conv_ip_mask_conv_dectobin"))
        self.dec_to_bin_button.clicked.connect(
            lambda: self.input_textfield.setPlaceholderText("192.168.1.1"))
        self.dec_to_bin_button.setMaximumWidth(150)

        self.bin_to_dec_button = QRadioButton(
            self.ml.get_tr_text("tab_num_conv_ip_mask_conv_bintodec"))
        self.bin_to_dec_button.clicked.connect(
            lambda: self.input_textfield.setPlaceholderText(
                "11000000.10101000.00000001.00000001"))
        self.bin_to_dec_button.setMaximumWidth(150)
        self.dec_to_bin_button.setChecked(True)
        button_layout_2.addWidget(self.dec_to_bin_button)
        button_layout_2.addWidget(self.bin_to_dec_button)
        ip_address_number_conversion_layout.addLayout(button_layout_2, 0, 2)

        self.output_label = QLabel(
            self.ml.get_tr_text("tab_num_conv_ip_mask_conv_out_lab"))
        self.output_label.setAlignment(Qt.AlignCenter)
        self.output_textfield = QLineEdit()
        self.output_textfield.setMaximumWidth(300)
        self.output_textfield.setReadOnly(True)
        self.output_textfield.setAlignment(Qt.AlignCenter)
        ip_address_number_conversion_layout.addWidget(self.output_label, 1, 0)
        ip_address_number_conversion_layout.addWidget(self.output_textfield, 1,
                                                      1)

        self.output_textfield_copy_button = QPushButton(
            self.ml.get_tr_text("tab_num_conv_ip_mask_conv_copy_btn"))
        self.output_textfield_copy_button.setIcon(
            QIcon("static/images/copy_clipboard.png"))
        self.output_textfield_copy_button.clicked.connect(
            lambda: copy_action(self.output_textfield.text()))
        ip_address_number_conversion_layout.addWidget(
            self.output_textfield_copy_button, 1, 2, alignment=Qt.AlignLeft)

        self.convert_button_2 = QPushButton(
            self.ml.get_tr_text("tab_num_conv_ip_mask_conv_convert_btn"))
        self.convert_button_2.clicked.connect(self.convert_action_2)
        self.convert_button_2.setIcon(QIcon("static/images/exchange.png"))
        ip_address_number_conversion_layout.addWidget(
            self.convert_button_2, 2, 0, 1, 3, alignment=Qt.AlignHCenter)
Example #28
0
class _ExecuteTab(QTabWidget):
    """Tab used to execute modules or shell commands on the selected bot."""

    def __init__(self, responses_tab, model):
        """
        :type responses_tab: _ResponsesTab
        """
        super(_ExecuteTab, self).__init__()

        self._model = model
        self._current_layout = None
        self._current_bot = None

        self._layout = QGridLayout()
        self._sub_layout = QVBoxLayout()
        self._module_view = ModuleView(responses_tab)

        self._layout.setAlignment(Qt.AlignTop)
        self.setLayout(self._layout)
        self.set_empty_layout()

    def set_current_bot(self, bot):
        """Sets the connected bot this tab will interact with.

        :type bot: Bot
        """
        self._current_bot = bot

    def _clear_layout(self):
        while self._layout.count():
            child = self._layout.takeAt(0)

            if child.widget():
                child.widget().deleteLater()
        while self._sub_layout.count():
            child = self._sub_layout.takeAt(0)

            if child.widget():
                child.widget().deleteLater()

    def set_empty_layout(self):
        """Default layout shown when the user has not yet selected a row."""
        self._current_layout = "Empty"
        self._clear_layout()

        self._layout.addWidget(QLabel("Please select a bot in the table above."), 0, 0)

    def set_module_layout(self, module_name="screenshot"):
        """Sets the layout which can execute modules.

        :type module_name: str
        """
        self._current_layout = "Module"
        self._clear_layout()

        command_type_label = QLabel("Command type: ")
        command_type_combobox = QComboBox()

        command_type_combobox.addItem("Module")
        command_type_combobox.addItem("Shell")

        module_label = QLabel("Module name: ")
        module_combobox = QComboBox()

        for module_name in modules.get_names():
            module_combobox.addItem(module_name)

        module_combobox.currentTextChanged.connect(self._on_module_change)
        command_type_combobox.currentTextChanged.connect(self._on_command_type_change)

        self._layout.setColumnStretch(1, 1)
        self._layout.addWidget(command_type_label, 0, 0)
        self._layout.addWidget(command_type_combobox, 0, 1)
        self._layout.addWidget(module_label, 1, 0)
        self._layout.addWidget(module_combobox, 1, 1)

        # Module layout
        cached_module = modules.get_module(module_name)

        if not cached_module:
            cached_module = modules.load_module(module_name, self._module_view, self._model)

        input_fields = []

        for option_name in cached_module.get_setup_messages():
            input_field = QLineEdit()

            self._sub_layout.addWidget(QLabel(option_name))
            self._sub_layout.addWidget(input_field)
            input_fields.append(input_field)

        run_button = QPushButton("Run")
        run_button.setMaximumWidth(250)
        run_button.setMinimumHeight(25)

        run_button.pressed.connect(lambda: self._on_module_run(module_combobox.currentText(), input_fields))

        self._sub_layout.addWidget(QLabel(""))
        self._sub_layout.addWidget(run_button)
        self._sub_layout.setContentsMargins(0, 15, 0, 0)
        self._layout.addLayout(self._sub_layout, self._layout.rowCount() + 2, 0, 1, 2)

        self._on_module_change(module_combobox.currentText())

    def set_shell_layout(self):
        """Sets the layout which can execute shell commands."""
        self._current_layout = "Shell"
        self._clear_layout()

        command_type_label = QLabel("Command type: ")
        command_type_combobox = QComboBox()

        command_type_combobox.addItem("Shell")
        command_type_combobox.addItem("Module")

        command_label = QLabel("Command:")
        command_input = QLineEdit()

        run_button = QPushButton("Run")
        run_button.setMaximumWidth(250)
        run_button.setMinimumHeight(25)

        command_type_combobox.currentTextChanged.connect(self._on_command_type_change)
        run_button.pressed.connect(lambda: self._on_command_run(command_input))

        self._layout.addWidget(command_type_label, 0, 0)
        self._layout.addWidget(command_type_combobox, 0, 1)
        self._layout.addWidget(command_label, 1, 0)
        self._layout.addWidget(command_input, 1, 1)

        self._sub_layout.addWidget(QLabel(""))
        self._sub_layout.addWidget(run_button)
        self._sub_layout.setContentsMargins(0, 15, 0, 0)
        self._layout.addLayout(self._sub_layout, self._layout.rowCount() + 2, 0, 1, 2)

    def _on_command_type_change(self, text):
        """Handles the command type combobox change event.

        :type text: str
        """
        if text == "Module":
            self.set_module_layout()
        else:
            self.set_shell_layout()

    def _on_module_change(self, module_name):
        """Handles module combobox changes.

        :type module_name: str
        """
        while self._sub_layout.count():
            child = self._sub_layout.takeAt(0)

            if child.widget():
                child.widget().deleteLater()

        cached_module = modules.get_module(module_name)

        if not cached_module:
            cached_module = modules.load_module(module_name, self._module_view, self._model)

        input_fields = []

        for option_name in cached_module.get_setup_messages():
            input_field = QLineEdit()
            input_fields.append(input_field)

            self._sub_layout.addWidget(QLabel(option_name))
            self._sub_layout.addWidget(input_field)

        run_button = QPushButton("Run")
        run_button.setMaximumWidth(250)
        run_button.setMinimumHeight(25)

        run_button.pressed.connect(lambda: self._on_module_run(module_name, input_fields))

        self._sub_layout.addWidget(QLabel(""))
        self._sub_layout.addWidget(run_button)
        self._sub_layout.setContentsMargins(0, 15, 0, 0)

    def display_info(self, text):
        """
        :type text: str
        """
        message_box = QMessageBox()

        message_box.setIcon(QMessageBox.Information)
        message_box.setWindowTitle("Information")
        message_box.setText(text)
        message_box.setStandardButtons(QMessageBox.Ok)
        message_box.exec_()

    def _on_module_run(self, module_name, input_fields):
        """Handles running modules.

        :type module_name: str
        :type input_fields: list
        """
        set_options = []

        for input_field in input_fields:
            set_options.append(input_field.text())

        module = modules.get_module(module_name)

        if not module:
            module = modules.load_module(module_name, self._module_view, self._model)

        successful, options = module.setup(set_options)

        if successful:
            if module_name == "remove_bot":
                code = loaders.get_remove_code(self._current_bot.loader_name)
            elif module_name == "update_bot":
                code = loaders.get_update_code(self._current_bot.loader_name)
            else:
                code = modules.get_code(module_name)

            if not options:
                options = {}

            options["module_name"] = module_name

            self._model.add_command(self._current_bot.uid, Command(
                CommandType.MODULE, code, options
            ))

            self.display_info("Module added to the queue of:\n {}@{}".format(
                self._current_bot.username, self._current_bot.hostname)
            )

    def _on_command_run(self, command_input):
        """Handles running commands.

        :type command_input: QLineEdit
        """
        if command_input.text().strip() == "":
            return

        self._model.add_command(self._current_bot.uid, Command(CommandType.SHELL, command_input.text().encode()))

        command_input.clear()
        self.display_info("Command added to the queue of:\n {}@{}".format(
            self._current_bot.username, self._current_bot.hostname
        ))
Example #29
0
class QSettingsWindow(QDialog):

    def __init__(self, game: Game):
        super(QSettingsWindow, self).__init__()

        self.game = game

        self.setModal(True)
        self.setWindowTitle("Settings")
        self.setWindowIcon(CONST.ICONS["Settings"])
        self.setMinimumSize(600, 250)

        self.initUi()

    def initUi(self):
        self.layout = QGridLayout()

        self.categoryList = QListView()
        self.right_layout = QStackedLayout()

        self.categoryList.setMaximumWidth(175)

        self.categoryModel = QStandardItemModel(self.categoryList)

        difficulty = QStandardItem("Difficulty")
        difficulty.setIcon(CONST.ICONS["Missile"])
        difficulty.setEditable(False)
        difficulty.setSelectable(True)

        generator = QStandardItem("Mission Generator")
        generator.setIcon(CONST.ICONS["Generator"])
        generator.setEditable(False)
        generator.setSelectable(True)

        cheat = QStandardItem("Cheat Menu")
        cheat.setIcon(CONST.ICONS["Cheat"])
        cheat.setEditable(False)
        cheat.setSelectable(True)

        self.categoryList.setIconSize(QSize(32, 32))
        self.categoryModel.appendRow(difficulty)
        self.categoryModel.appendRow(generator)
        self.categoryModel.appendRow(cheat)

        self.categoryList.setSelectionBehavior(QAbstractItemView.SelectRows)
        self.categoryList.setModel(self.categoryModel)
        self.categoryList.selectionModel().setCurrentIndex(self.categoryList.indexAt(QPoint(1,1)), QItemSelectionModel.Select)
        self.categoryList.selectionModel().selectionChanged.connect(self.onSelectionChanged)

        self.initDifficultyLayout()
        self.initGeneratorLayout()
        self.initCheatLayout()

        self.right_layout.addWidget(self.difficultyPage)
        self.right_layout.addWidget(self.generatorPage)
        self.right_layout.addWidget(self.cheatPage)

        self.layout.addWidget(self.categoryList, 0, 0, 1, 1)
        self.layout.addLayout(self.right_layout, 0, 1, 5, 1)

        self.setLayout(self.layout)

    def init(self):
        pass

    def initDifficultyLayout(self):

        self.difficultyPage = QWidget()
        self.difficultyLayout = QGridLayout()
        self.difficultyLayout.setAlignment(Qt.AlignTop)
        self.difficultyPage.setLayout(self.difficultyLayout)

        self.playerCoalitionSkill = QComboBox()
        self.enemyCoalitionSkill = QComboBox()
        self.enemyAASkill = QComboBox()
        for skill in CONST.SKILL_OPTIONS:
            self.playerCoalitionSkill.addItem(skill)
            self.enemyCoalitionSkill.addItem(skill)
            self.enemyAASkill.addItem(skill)

        self.playerCoalitionSkill.setCurrentIndex(CONST.SKILL_OPTIONS.index(self.game.settings.player_skill))
        self.enemyCoalitionSkill.setCurrentIndex(CONST.SKILL_OPTIONS.index(self.game.settings.enemy_skill))
        self.enemyAASkill.setCurrentIndex(CONST.SKILL_OPTIONS.index(self.game.settings.enemy_vehicle_skill))

        self.playerCoalitionSkill.currentIndexChanged.connect(self.applySettings)
        self.enemyCoalitionSkill.currentIndexChanged.connect(self.applySettings)
        self.enemyAASkill.currentIndexChanged.connect(self.applySettings)

        self.difficultyLayout.addWidget(QLabel("Player coalition skill"), 0, 0)
        self.difficultyLayout.addWidget(self.playerCoalitionSkill, 0, 1, Qt.AlignRight)
        self.difficultyLayout.addWidget(QLabel("Enemy skill"), 1, 0)
        self.difficultyLayout.addWidget(self.enemyCoalitionSkill, 1, 1, Qt.AlignRight)
        self.difficultyLayout.addWidget(QLabel("Enemy AA and vehicles skill"), 2, 0)
        self.difficultyLayout.addWidget(self.enemyAASkill, 2, 1, Qt.AlignRight)

        self.difficultyLabel = QComboBox()
        [self.difficultyLabel.addItem(t) for t in CONST.LABELS_OPTIONS]
        self.difficultyLabel.setCurrentIndex(CONST.LABELS_OPTIONS.index(self.game.settings.labels))
        self.difficultyLabel.currentIndexChanged.connect(self.applySettings)

        self.difficultyLayout.addWidget(QLabel("In Game Labels"), 3, 0)
        self.difficultyLayout.addWidget(self.difficultyLabel, 3, 1, Qt.AlignRight)

        self.noNightMission = QCheckBox()
        self.noNightMission.setChecked(self.game.settings.night_disabled)
        self.noNightMission.toggled.connect(self.applySettings)
        self.difficultyLayout.addWidget(QLabel("No night missions"), 4, 0)
        self.difficultyLayout.addWidget(self.noNightMission, 4, 1, Qt.AlignRight)

        self.mapVisibiitySelection = QComboBox()
        self.mapVisibiitySelection.addItem("All", ForcedOptions.Views.All)
        if self.game.settings.map_coalition_visibility == ForcedOptions.Views.All:
            self.mapVisibiitySelection.setCurrentIndex(0)
        self.mapVisibiitySelection.addItem("Fog of War", ForcedOptions.Views.Allies)
        if self.game.settings.map_coalition_visibility == ForcedOptions.Views.Allies:
            self.mapVisibiitySelection.setCurrentIndex(1)
        self.mapVisibiitySelection.addItem("Allies Only", ForcedOptions.Views.OnlyAllies)
        if self.game.settings.map_coalition_visibility == ForcedOptions.Views.OnlyAllies:
            self.mapVisibiitySelection.setCurrentIndex(2)
        self.mapVisibiitySelection.addItem("Own Aircraft Only", ForcedOptions.Views.MyAircraft)
        if self.game.settings.map_coalition_visibility == ForcedOptions.Views.MyAircraft:
            self.mapVisibiitySelection.setCurrentIndex(3)
        self.mapVisibiitySelection.addItem("Map Only", ForcedOptions.Views.OnlyMap)
        if self.game.settings.map_coalition_visibility == ForcedOptions.Views.OnlyMap:
            self.mapVisibiitySelection.setCurrentIndex(4)
        self.mapVisibiitySelection.currentIndexChanged.connect(self.applySettings)
        self.difficultyLayout.addWidget(QLabel("Map visibility options"), 5, 0)
        self.difficultyLayout.addWidget(self.mapVisibiitySelection, 5, 1, Qt.AlignRight)

        self.ext_views = QCheckBox()
        self.ext_views.setChecked(self.game.settings.external_views_allowed)
        self.ext_views.toggled.connect(self.applySettings)
        self.difficultyLayout.addWidget(QLabel("Allow external views"), 6, 0)
        self.difficultyLayout.addWidget(self.ext_views, 6, 1, Qt.AlignRight)


    def initGeneratorLayout(self):
        self.generatorPage = QWidget()
        self.generatorLayout = QVBoxLayout()
        self.generatorLayout.setAlignment(Qt.AlignTop)
        self.generatorPage.setLayout(self.generatorLayout)

        self.gameplay = QGroupBox("Gameplay")
        self.gameplayLayout = QGridLayout();
        self.gameplayLayout.setAlignment(Qt.AlignTop)
        self.gameplay.setLayout(self.gameplayLayout)

        self.supercarrier = QCheckBox()
        self.supercarrier.setChecked(self.game.settings.supercarrier)
        self.supercarrier.toggled.connect(self.applySettings)

        self.generate_marks = QCheckBox()
        self.generate_marks.setChecked(self.game.settings.generate_marks)
        self.generate_marks.toggled.connect(self.applySettings)


        if not hasattr(self.game.settings, "include_jtac_if_available"):
            self.game.settings.include_jtac_if_available = True

        self.include_jtac_if_available = QCheckBox()
        self.include_jtac_if_available.setChecked(self.game.settings.include_jtac_if_available)
        self.include_jtac_if_available.toggled.connect(self.applySettings)

        self.gameplayLayout.addWidget(QLabel("Use Supercarrier Module"), 0, 0)
        self.gameplayLayout.addWidget(self.supercarrier, 0, 1, Qt.AlignRight)
        self.gameplayLayout.addWidget(QLabel("Put Objective Markers on Map"), 1, 0)
        self.gameplayLayout.addWidget(self.generate_marks, 1, 1, Qt.AlignRight)
        self.gameplayLayout.addWidget(QLabel("Include JTAC (If available)"), 2, 0)
        self.gameplayLayout.addWidget(self.include_jtac_if_available, 2, 1, Qt.AlignRight)

        self.performance = QGroupBox("Performance")
        self.performanceLayout = QGridLayout()
        self.performanceLayout.setAlignment(Qt.AlignTop)
        self.performance.setLayout(self.performanceLayout)

        self.smoke = QCheckBox()
        self.smoke.setChecked(self.game.settings.perf_smoke_gen)
        self.smoke.toggled.connect(self.applySettings)

        self.red_alert = QCheckBox()
        self.red_alert.setChecked(self.game.settings.perf_red_alert_state)
        self.red_alert.toggled.connect(self.applySettings)

        self.arti = QCheckBox()
        self.arti.setChecked(self.game.settings.perf_artillery)
        self.arti.toggled.connect(self.applySettings)

        self.moving_units = QCheckBox()
        self.moving_units.setChecked(self.game.settings.perf_moving_units)
        self.moving_units.toggled.connect(self.applySettings)

        self.infantry = QCheckBox()
        self.infantry.setChecked(self.game.settings.perf_infantry)
        self.infantry.toggled.connect(self.applySettings)

        self.ai_parking_start = QCheckBox()
        self.ai_parking_start.setChecked(self.game.settings.perf_ai_parking_start)
        self.ai_parking_start.toggled.connect(self.applySettings)

        self.destroyed_units = QCheckBox()
        self.destroyed_units.setChecked(self.game.settings.perf_destroyed_units)
        self.destroyed_units.toggled.connect(self.applySettings)

        self.culling = QCheckBox()
        self.culling.setChecked(self.game.settings.perf_culling)
        self.culling.toggled.connect(self.applySettings)

        self.culling_distance = QSpinBox()
        self.culling_distance.setMinimum(50)
        self.culling_distance.setMaximum(10000)
        self.culling_distance.setValue(self.game.settings.perf_culling_distance)
        self.culling_distance.valueChanged.connect(self.applySettings)

        self.performanceLayout.addWidget(QLabel("Smoke visual effect on frontline"), 0, 0)
        self.performanceLayout.addWidget(self.smoke, 0, 1, alignment=Qt.AlignRight)
        self.performanceLayout.addWidget(QLabel("SAM starts in RED alert mode"), 1, 0)
        self.performanceLayout.addWidget(self.red_alert, 1, 1, alignment=Qt.AlignRight)
        self.performanceLayout.addWidget(QLabel("Artillery strikes"), 2, 0)
        self.performanceLayout.addWidget(self.arti, 2, 1, alignment=Qt.AlignRight)
        self.performanceLayout.addWidget(QLabel("Moving ground units"), 3, 0)
        self.performanceLayout.addWidget(self.moving_units, 3, 1, alignment=Qt.AlignRight)
        self.performanceLayout.addWidget(QLabel("Generate infantry squads along vehicles"), 4, 0)
        self.performanceLayout.addWidget(self.infantry, 4, 1, alignment=Qt.AlignRight)
        self.performanceLayout.addWidget(QLabel("AI planes parking start (AI starts in flight if disabled)"), 5, 0)
        self.performanceLayout.addWidget(self.ai_parking_start, 5, 1, alignment=Qt.AlignRight)
        self.performanceLayout.addWidget(QLabel("Include destroyed units carcass"), 6, 0)
        self.performanceLayout.addWidget(self.destroyed_units, 6, 1, alignment=Qt.AlignRight)

        self.performanceLayout.addWidget(QHorizontalSeparationLine(), 7, 0, 1, 2)
        self.performanceLayout.addWidget(QLabel("Culling of distant units enabled"), 8, 0)
        self.performanceLayout.addWidget(self.culling, 8, 1, alignment=Qt.AlignRight)
        self.performanceLayout.addWidget(QLabel("Culling distance (km)"), 9, 0)
        self.performanceLayout.addWidget(self.culling_distance, 9, 1, alignment=Qt.AlignRight)

        self.generatorLayout.addWidget(self.gameplay)
        self.generatorLayout.addWidget(QLabel("Disabling settings below may improve performance, but will impact the overall quality of the experience."))
        self.generatorLayout.addWidget(self.performance)


    def initCheatLayout(self):

        self.cheatPage = QWidget()
        self.cheatLayout = QGridLayout()
        self.cheatPage.setLayout(self.cheatLayout)

        self.moneyCheatBox = QGroupBox("Money Cheat")
        self.moneyCheatBox.setAlignment(Qt.AlignTop)
        self.moneyCheatBoxLayout = QGridLayout()
        self.moneyCheatBox.setLayout(self.moneyCheatBoxLayout)

        self.cheat25M = QPushButton("Cheat +25M")
        self.cheat50M = QPushButton("Cheat +50M")
        self.cheat100M = QPushButton("Cheat +100M")
        self.cheat200M = QPushButton("Cheat +200M")
        self.cheat500M = QPushButton("Cheat +500M")
        self.cheat1000M = QPushButton("Cheat +1000M")

        self.cheat25M.clicked.connect(lambda: self.cheatMoney(25))
        self.cheat50M.clicked.connect(lambda: self.cheatMoney(50))
        self.cheat100M.clicked.connect(lambda: self.cheatMoney(100))
        self.cheat200M.clicked.connect(lambda: self.cheatMoney(200))
        self.cheat500M.clicked.connect(lambda: self.cheatMoney(500))
        self.cheat1000M.clicked.connect(lambda: self.cheatMoney(1000))

        self.moneyCheatBoxLayout.addWidget(self.cheat25M, 0, 0)
        self.moneyCheatBoxLayout.addWidget(self.cheat50M, 0, 1)
        self.moneyCheatBoxLayout.addWidget(self.cheat100M, 1, 0)
        self.moneyCheatBoxLayout.addWidget(self.cheat200M, 1, 1)
        self.moneyCheatBoxLayout.addWidget(self.cheat500M, 2, 0)
        self.moneyCheatBoxLayout.addWidget(self.cheat1000M, 2, 1)

        self.cheatLayout.addWidget(self.moneyCheatBox, 0, 0)

    def cheatMoney(self, amount):
        self.game.budget += amount
        self.game.informations.append(Information("CHEATER", "You are a cheater and you should feel bad", self.game.turn))
        GameUpdateSignal.get_instance().updateGame(self.game)

    def applySettings(self):
        self.game.settings.player_skill = CONST.SKILL_OPTIONS[self.playerCoalitionSkill.currentIndex()]
        self.game.settings.enemy_skill = CONST.SKILL_OPTIONS[self.enemyCoalitionSkill.currentIndex()]
        self.game.settings.enemy_vehicle_skill = CONST.SKILL_OPTIONS[self.enemyAASkill.currentIndex()]
        self.game.settings.labels = CONST.LABELS_OPTIONS[self.difficultyLabel.currentIndex()]
        self.game.settings.night_disabled = self.noNightMission.isChecked()
        self.game.settings.map_coalition_visibility = self.mapVisibiitySelection.currentData()
        self.game.settings.external_views_allowed = self.ext_views.isChecked()
        self.game.settings.generate_marks = self.generate_marks.isChecked()
        self.game.settings.include_jtac_if_available = self.include_jtac_if_available.isChecked()

        print(self.game.settings.map_coalition_visibility)

        self.game.settings.supercarrier = self.supercarrier.isChecked()

        self.game.settings.perf_red_alert_state = self.red_alert.isChecked()
        self.game.settings.perf_smoke_gen = self.smoke.isChecked()
        self.game.settings.perf_artillery = self.arti.isChecked()
        self.game.settings.perf_moving_units = self.moving_units.isChecked()
        self.game.settings.perf_infantry = self.infantry.isChecked()
        self.game.settings.perf_ai_parking_start = self.ai_parking_start.isChecked()
        self.game.settings.perf_destroyed_units = self.destroyed_units.isChecked()

        self.game.settings.perf_culling = self.culling.isChecked()
        self.game.settings.perf_culling_distance = int(self.culling_distance.value())

        GameUpdateSignal.get_instance().updateGame(self.game)

    def onSelectionChanged(self):
        index = self.categoryList.selectionModel().currentIndex().row()
        self.right_layout.setCurrentIndex(index)
Example #30
0
class NetworkControllerWidget(QWidget):   
    def __init__(self):
        super().__init__() 
        self.main_layout = QGridLayout()
        self.main_layout.setAlignment(Qt.AlignTop)        
        self.main_layout.setSpacing(0)
        self.main_layout.setContentsMargins(0, 0, 0, 0)
        self.main_layout.addWidget(QLabel("Optimizer :"), 0, 0)
        self.optimizer_selector = QComboBox()
        self.optimizer_selector.addItems(["SGD", "RMSprop", "Adam", "Adadelta", "Adagrad", "Adamax", "Nadam", "Ftrl", "Custom"])
        self.optimizer_stack = QStackedLayout()
        self.optimizer_stack.addWidget(SGDUI())
        self.optimizer_stack.addWidget(RMSpropUI())
        self.optimizer_stack.addWidget(AdamUI())
        self.optimizer_stack.addWidget(AdadeltaUI())
        self.optimizer_stack.addWidget(AdagradUI())
        self.optimizer_stack.addWidget(AdamaxUI())
        self.optimizer_stack.addWidget(NadamUI())
        self.optimizer_stack.addWidget(FtrlUI())
        self.loss_selector = QComboBox()
        self.loss_selector.addItems([
            "BinaryCrossentropy", 
            "CategoricalCrossentropy", 
            "SparseCategoricalCrossentropy", 
            "Poisson",
            "binary_crossentropy function",
            "categorical_crossentropy function",
            "sparse_categorical_crossentropy function",
            "poisson function",
            "KLDivergence",
            "kl_divergence function",
            "MeanSquaredError", 
            "MeanAbsoluteError", 
            "MeanAbsolutePercentageError", 
            "MeanSquaredLogarithmicError", 
            "CosineSimilarity", 
            "mean_squared_error function",
            "mean_absolute_error function",
            "mean_absolute_percentage_error function",
            "mean_squared_logarithmic_error function",
            "cosine_similarity function",
            "Huber", 
            "huber function",
            "LogCosh",
            "log_cosh function",
            "Hinge",
            "SquaredHinge", 
            "CategoricalHinge", 
            "hinge function",
            "squared_hinge function",
            "categorical_hinge function",
            "CUSTOM_my1"])
        self.metrics_selector = CheckableComboBox()
        self.metrics_selector.addItems([
            "Accuracy",
            "BinaryAccuracy", 
            "CategoricalAccuracy", 
            "TopKCategoricalAccuracy", 
            "SparseTopKCategoricalAccuracy", 
            "BinaryCrossentropy", 
            "CategoricalCrossentropy", 
            "SparseCategoricalCrossentropy", 
            "KLDivergence", 
            "Poisson", 
            "MeanSquaredError", 
            "RootMeanSquaredError", 
            "MeanAbsoluteError", 
            "MeanAbsolutePercentageError", 
            "MeanSquaredLogarithmicError", 
            "CosineSimilarity", 
            "LogCoshError", 
            "MeanIoU", 
            "AUC", 
            "Precision", 
            "Hinge", 
            "SquaredHinge", 
            "CategoricalHinge", 
            "Recall", 
            "TruePositives", 
            "TrueNegatives", 
            "FalsePositives", 
            "FalseNegatives", 
            "PrecisionAtRecall", 
            "SensitivityAtSpecificity", 
            "SpecificityAtSensitivity",
            "CUSTOM_my1"
        ])
        self.optimizer_selector.currentIndexChanged[int].connect(lambda index: self.optimizer_stack.setCurrentIndex(index))
        tmp = QWidget()
        tmp.setLayout(self.optimizer_stack)
        self.run_eagerly = QComboBox()
        self.run_eagerly.addItems(["True", "False"])
        self.main_layout.addWidget(QLabel("Loss Function:"), 0, 0)
        self.main_layout.addWidget(self.loss_selector, 0, 1)   
        self.main_layout.addWidget(QLabel("Metrics:"),1, 0)
        self.main_layout.addWidget(self.metrics_selector, 1, 1)
        self.main_layout.addWidget(QLabel("run_eagerly:"), 2, 0)
        self.main_layout.addWidget(self.run_eagerly, 2, 1)
        self.main_layout.addWidget(QLabel("Optimizer:"), 3, 0)
        self.main_layout.addWidget(self.optimizer_selector, 3 , 1)
        self.main_layout.addWidget(tmp, 4, 1)
        self.setLayout(self.main_layout)
        self.set_styling()
        self.setMinimumWidth(50)
        
    def set_styling(self):
        self.setStyleSheet("background-color:aliceblue;")