Ejemplo n.º 1
0
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.formation_library = OffenseLibrary()
        self.selected_personnel_key = "default"
        self.modifying_formation = Formation()
        self.composite_formation = Formation()
        self.formation_frame = FormationFrame(
            self.modifying_formation,
            self.formation_library.label_mappers['default'])
        self.scrollArea_2.setWidget(self.formation_frame)
        self.show()

        self.rb_editing.setChecked(True)
        self.rb_editing.clicked.connect(self.handle_editing_view_change)
        self.rb_composite.clicked.connect(self.handle_composite_view_change)
        self.edit_composite.returnPressed.connect(self.handle_get_composite)
        self.btn_load_composite.clicked.connect(self.handle_get_composite)

        self.list_formations.itemClicked.connect(self.handle_formation_clicked)
        self.edit_formation_name.returnPressed.connect(
            self.handle_save_formation)
        self.btn_save_formation.clicked.connect(self.handle_save_formation)
        self.btn_delete_selected_formation.clicked.connect(
            self.handle_delete_formation)

        self.actionSave_Library.triggered.connect(self.handle_save_library)

        self.init_label_mappers()
        self.combo_personnel_grouping.currentIndexChanged[str].connect(
            self.handle_personnel_change)
        self.set_personnel_cb_text(
            self.formation_library.label_mappers['default'].mappings)
Ejemplo n.º 2
0
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.formation_library = OffenseLibrary()
        self.defense_library = DefenseLibrary()

        self.current_hash = 'MOF'
        starting_formation = Formation()
        self.lh_subformation = starting_formation.subformations['LT_RT']
        self.rh_subformation = starting_formation.subformations['RT_RT']
        self.mof_subformation = starting_formation.subformations['MOF_RT']
        self.current_subformation = self.mof_subformation

        self.current_defense = Defense()
        self.defense_visual_frame = DefenseVisualFrame(
            self.current_subformation, self.current_defense,
            self.defense_library.label_mappers['default'])
        self.scroll_field.setWidget(self.defense_visual_frame)

        self.edit_formation_name.returnPressed.connect(
            self.handle_get_composite)
        self.btn_load_composite.clicked.connect(self.handle_get_composite)

        self.edit_defense_name.returnPressed.connect(self.handle_get_defense)
        self.btn_load_defense.clicked.connect(self.handle_get_composite)

        self.rb_lh.clicked.connect(lambda: self.handle_hash_change('LT'))
        self.rb_mof.clicked.connect(lambda: self.handle_hash_change('MOF'))
        self.rb_rh.clicked.connect(lambda: self.handle_hash_change('RT'))

        self.show()
Ejemplo n.º 3
0
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.formation_library = OffenseLibrary()
        self.defense_library = DefenseLibrary()

        self.current_hash = 'MOF'
        starting_formation = Formation()
        self.lh_subformation = starting_formation.subformations['LT_RT']
        self.rh_subformation = starting_formation.subformations['RT_RT']
        self.mof_subformation = starting_formation.subformations['MOF_RT']
        self.current_subformation = self.mof_subformation

        self.modifying_defense = Defense()
        self.defense_visual_frame = DefenseVisualFrame(self.current_subformation, self.modifying_defense,
                                                       self.defense_library.label_mappers['default'])
        self.scroll_field.setWidget(self.defense_visual_frame)
        self.defender_editor = DefenderEditor(self.statusBar(), self.defense_visual_frame)
        self.scroll_defender_edit.setWidget(self.defender_editor)
        self.defender_editor.create_and_layout_condition_set_editors(self.modifying_defense.players['D1'])

        self.init_label_mappers()
        self.init_defender_combo(self.defense_library.label_mappers['default'].mappings)
        self.combo_personnel_grouping.currentIndexChanged[str].connect(self.handle_personnel_change)
        self.combo_defender_to_edit.currentIndexChanged[str].connect(self.handle_defender_change)
        self.set_personnel_cb_text(self.defense_library.label_mappers['default'].mappings)
        self.btn_save_defense.clicked.connect(self.handle_save_defense)
        self.btn_delete_selected_defense.clicked.connect(self.handle_delete_defense)
        self.edit_defense_name.returnPressed.connect(self.handle_save_defense)
        self.list_defenses.itemClicked.connect(self.handle_defense_clicked)

        self.rb_mof.setChecked(True)
        self.rb_mof.clicked.connect(lambda: self.handle_hash_change('MOF'))
        self.rb_lh.clicked.connect(lambda: self.handle_hash_change('LT'))
        self.rb_rh.clicked.connect(lambda: self.handle_hash_change('RT'))
        self.edit_formation_name.returnPressed.connect(self.handle_get_composite)
        self.btn_load_composite.clicked.connect(self.handle_get_composite)

        self.cb_d1.clicked.connect(self.handle_cb_affected_tag_clicked)
        self.cb_d2.clicked.connect(self.handle_cb_affected_tag_clicked)
        self.cb_d3.clicked.connect(self.handle_cb_affected_tag_clicked)
        self.cb_d4.clicked.connect(self.handle_cb_affected_tag_clicked)
        self.cb_d5.clicked.connect(self.handle_cb_affected_tag_clicked)
        self.cb_d6.clicked.connect(self.handle_cb_affected_tag_clicked)
        self.cb_d7.clicked.connect(self.handle_cb_affected_tag_clicked)
        self.cb_d8.clicked.connect(self.handle_cb_affected_tag_clicked)
        self.cb_d9.clicked.connect(self.handle_cb_affected_tag_clicked)
        self.cb_d10.clicked.connect(self.handle_cb_affected_tag_clicked)
        self.cb_d11.clicked.connect(self.handle_cb_affected_tag_clicked)

        self.actionSave_Library.triggered.connect(self.handle_save_library)
        self.show()
Ejemplo n.º 4
0
 def __init__(self, last_load_location, last_save_location,
              update_directory_location_callback):
     super().__init__()
     self.setupUi(self)
     self.last_load_location = last_load_location
     self.last_save_location = last_save_location
     self.formation_library = OffenseLibrary()
     self.defense_libary = DefenseLibrary()
     self.update_directory_location_callback = update_directory_location_callback
     self.actionCreate_Scout_Cards.triggered.connect(
         lambda: self.handle_create_scout_cards(False, False))
     self.actionCreate_Scout_Cards_Alternating.triggered.connect(
         lambda: self.handle_create_scout_cards(True, False))
     self.action_Off_Create_Scout_Cards.triggered.connect(
         lambda: self.handle_create_scout_cards(False, True))
     self.action_Off_Create_Scout_Cards_Alternating.triggered.connect(
         lambda: self.handle_create_scout_cards(True, True))
     self.actionCreate_Football_Trainer_Script.triggered.connect(
         self.handle_create_football_trainer_script)
     self.cb_college_hash_marks.stateChanged.connect(
         self.handle_cb_college_hash_marks_changed)
     self.show()
Ejemplo n.º 5
0
 def load_offense_library_from_dict(self, library_dict):
     self.formation_library = OffenseLibrary.from_dict(library_dict)
     self.defense_visual_frame.offense_personnel_mapper = self.formation_library.label_mappers['default']
Ejemplo n.º 6
0
class DefensiveLibraryEditor(QMainWindow, Ui_DefensiveEditor):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.formation_library = OffenseLibrary()
        self.defense_library = DefenseLibrary()

        self.current_hash = 'MOF'
        starting_formation = Formation()
        self.lh_subformation = starting_formation.subformations['LT_RT']
        self.rh_subformation = starting_formation.subformations['RT_RT']
        self.mof_subformation = starting_formation.subformations['MOF_RT']
        self.current_subformation = self.mof_subformation

        self.modifying_defense = Defense()
        self.defense_visual_frame = DefenseVisualFrame(self.current_subformation, self.modifying_defense,
                                                       self.defense_library.label_mappers['default'])
        self.scroll_field.setWidget(self.defense_visual_frame)
        self.defender_editor = DefenderEditor(self.statusBar(), self.defense_visual_frame)
        self.scroll_defender_edit.setWidget(self.defender_editor)
        self.defender_editor.create_and_layout_condition_set_editors(self.modifying_defense.players['D1'])

        self.init_label_mappers()
        self.init_defender_combo(self.defense_library.label_mappers['default'].mappings)
        self.combo_personnel_grouping.currentIndexChanged[str].connect(self.handle_personnel_change)
        self.combo_defender_to_edit.currentIndexChanged[str].connect(self.handle_defender_change)
        self.set_personnel_cb_text(self.defense_library.label_mappers['default'].mappings)
        self.btn_save_defense.clicked.connect(self.handle_save_defense)
        self.btn_delete_selected_defense.clicked.connect(self.handle_delete_defense)
        self.edit_defense_name.returnPressed.connect(self.handle_save_defense)
        self.list_defenses.itemClicked.connect(self.handle_defense_clicked)

        self.rb_mof.setChecked(True)
        self.rb_mof.clicked.connect(lambda: self.handle_hash_change('MOF'))
        self.rb_lh.clicked.connect(lambda: self.handle_hash_change('LT'))
        self.rb_rh.clicked.connect(lambda: self.handle_hash_change('RT'))
        self.edit_formation_name.returnPressed.connect(self.handle_get_composite)
        self.btn_load_composite.clicked.connect(self.handle_get_composite)

        self.cb_d1.clicked.connect(self.handle_cb_affected_tag_clicked)
        self.cb_d2.clicked.connect(self.handle_cb_affected_tag_clicked)
        self.cb_d3.clicked.connect(self.handle_cb_affected_tag_clicked)
        self.cb_d4.clicked.connect(self.handle_cb_affected_tag_clicked)
        self.cb_d5.clicked.connect(self.handle_cb_affected_tag_clicked)
        self.cb_d6.clicked.connect(self.handle_cb_affected_tag_clicked)
        self.cb_d7.clicked.connect(self.handle_cb_affected_tag_clicked)
        self.cb_d8.clicked.connect(self.handle_cb_affected_tag_clicked)
        self.cb_d9.clicked.connect(self.handle_cb_affected_tag_clicked)
        self.cb_d10.clicked.connect(self.handle_cb_affected_tag_clicked)
        self.cb_d11.clicked.connect(self.handle_cb_affected_tag_clicked)

        self.actionSave_Library.triggered.connect(self.handle_save_library)
        self.show()

    def load_offense_library_from_dict(self, library_dict):
        self.formation_library = OffenseLibrary.from_dict(library_dict)
        self.defense_visual_frame.offense_personnel_mapper = self.formation_library.label_mappers['default']

    def load_defense_library_from_dict(self, library_dict):
        self.defense_library = DefenseLibrary.from_dict(library_dict)
        self.init_label_mappers()
        self.load_defense_names_into_list()
        self.defense_visual_frame.defense_personnel_mapper = self.defense_library.label_mappers['default']
        self.init_defender_combo(self.defense_library.label_mappers['default'].mappings)

    def handle_save_library(self):
        with open('defense_library.json', 'w') as file:
            json.dump(self.defense_library.to_dict(), file, indent=3)

    def handle_hash_change(self, hash_mark):
        try:
            self.current_hash = hash_mark
            if hash_mark == 'MOF':
                self.current_subformation = self.mof_subformation
            else:
                self.current_subformation = self.lh_subformation if hash_mark == 'LT' else self.rh_subformation
            self.defense_visual_frame.offensive_subformation = self.current_subformation
            self.defense_visual_frame.update()
        except Exception as e:
            from traceback import format_exc
            print(format_exc())

    def handle_get_composite(self):
        formation_name = self.edit_formation_name.text()
        try:
            if len(formation_name) > 0:
                mof_composite = self.formation_library.get_composite_subformation('MOF', formation_name)[0]
                lh_composite = self.formation_library.get_composite_subformation('LT', formation_name)[0]
                rh_composite = self.formation_library.get_composite_subformation('RT', formation_name)[0]
                if mof_composite is not None:
                    self.mof_subformation = mof_composite
                    self.lh_subformation = lh_composite
                    self.rh_subformation = rh_composite

                    if self.current_hash == 'MOF':
                        self.current_subformation = self.mof_subformation
                    else:
                        self.current_subformation = self.lh_subformation if self.current_hash == 'LT' else self.rh_subformation

                    self.defense_visual_frame.offensive_subformation = self.current_subformation
                    self.defense_visual_frame.update()
        except Exception as e:
            from traceback import format_exc
            print(format_exc())

    def init_label_mappers(self):
        # Must block signals because clear sends index changed signal which then references the now empty(null) combo box
        self.combo_personnel_grouping.blockSignals(True)
        self.combo_personnel_grouping.clear()
        self.combo_personnel_grouping.blockSignals(False)

        for personnel_grouping_key in self.defense_library.label_mappers.keys():
            self.combo_personnel_grouping.addItem(personnel_grouping_key)

    def handle_personnel_change(self, new_personnel):
        self.defense_visual_frame.defense_personnel_mapper = self.defense_library.label_mappers[new_personnel]
        self.set_personnel_cb_text(self.defense_library.label_mappers[new_personnel].mappings)
        self.init_defender_combo(self.defense_library.label_mappers[new_personnel].mappings)
        self.defense_visual_frame.update()

    def set_personnel_cb_text(self, personnel_mapping):
        self.cb_d1.setText(f'D1 ( {personnel_mapping["D1"]} )')
        self.cb_d2.setText(f'D2 ( {personnel_mapping["D2"]} )')
        self.cb_d3.setText(f'D3 ( {personnel_mapping["D3"]} )')
        self.cb_d4.setText(f'D4 ( {personnel_mapping["D4"]} )')
        self.cb_d5.setText(f'D5 ( {personnel_mapping["D5"]} )')
        self.cb_d6.setText(f'D6 ( {personnel_mapping["D6"]} )')
        self.cb_d7.setText(f'D7 ( {personnel_mapping["D7"]} )')
        self.cb_d8.setText(f'D8 ( {personnel_mapping["D8"]} )')
        self.cb_d9.setText(f'D9 ( {personnel_mapping["D9"]} )')
        self.cb_d10.setText(f'D10 ( {personnel_mapping["D10"]} )')
        self.cb_d11.setText(f'D11 ( {personnel_mapping["D11"]} )')

    def init_defender_combo(self, personnel_mapping):
        # Must block signals because clear sends index changed signal which then references the now empty(null) combo box
        self.combo_defender_to_edit.blockSignals(True)
        self.combo_defender_to_edit.clear()
        self.combo_defender_to_edit.blockSignals(False)

        for defender_tag in ['D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'D10', 'D11']:
            self.combo_defender_to_edit.addItem(f'{defender_tag} ( {personnel_mapping[defender_tag]} )')

    def handle_defender_change(self, new_defender):
        new_defender_tag = new_defender.split()[0]
        current_defender = self.modifying_defense.players[new_defender_tag]
        self.defender_editor.create_and_layout_condition_set_editors(current_defender)

    def handle_cb_affected_tag_clicked(self, ):
        affected_tags = []
        if self.cb_d1.isChecked():
            affected_tags.append('D1')
        if self.cb_d2.isChecked():
            affected_tags.append('D2')
        if self.cb_d3.isChecked():
            affected_tags.append('D3')
        if self.cb_d4.isChecked():
            affected_tags.append('D4')
        if self.cb_d5.isChecked():
            affected_tags.append('D5')
        if self.cb_d6.isChecked():
            affected_tags.append('D6')
        if self.cb_d7.isChecked():
            affected_tags.append('D7')
        if self.cb_d8.isChecked():
            affected_tags.append('D8')
        if self.cb_d9.isChecked():
            affected_tags.append('D9')
        if self.cb_d10.isChecked():
            affected_tags.append('D10')
        if self.cb_d11.isChecked():
            affected_tags.append('D11')

        self.modifying_defense.affected_tags = affected_tags
        self.defense_visual_frame.update()

    def handle_save_defense(self):
        defense_name = self.edit_defense_name.text()
        if len(defense_name) == 0:
            msg_box = QMessageBox()
            msg_box.setText('Defense needs name')
            msg_box.setWindowTitle('Error')
            msg_box.setStandardButtons(QMessageBox.Ok)
            msg_box.exec_()
            return

        self.defense_library.save_defense(self.modifying_defense, defense_name)
        self.load_defense_names_into_list()

    def handle_delete_defense(self):
        if self.list_defenses.currentItem():
            defense_name = self.list_defenses.currentItem().text()

            del self.defense_library.defenses[defense_name]
            self.load_defense_names_into_list()

    def load_defense_names_into_list(self):
        defense_names = [name for name in self.defense_library.defenses.keys()]
        defense_names.sort()
        self.list_defenses.clear()

        for defense_name in defense_names:
            self.list_defenses.addItem(defense_name)

    def handle_defense_clicked(self, defense_clicked):
        defense_name = defense_clicked.data(0)
        self.edit_defense_name.setText(defense_name)
        self.modifying_defense.copy_from(self.defense_library.defenses[defense_name])

        self.cb_d1.setChecked(True if 'D1' in self.modifying_defense.affected_tags else False)
        self.cb_d2.setChecked(True if 'D2' in self.modifying_defense.affected_tags else False)
        self.cb_d3.setChecked(True if 'D3' in self.modifying_defense.affected_tags else False)
        self.cb_d4.setChecked(True if 'D4' in self.modifying_defense.affected_tags else False)
        self.cb_d5.setChecked(True if 'D5' in self.modifying_defense.affected_tags else False)
        self.cb_d6.setChecked(True if 'D6' in self.modifying_defense.affected_tags else False)
        self.cb_d7.setChecked(True if 'D7' in self.modifying_defense.affected_tags else False)
        self.cb_d8.setChecked(True if 'D8' in self.modifying_defense.affected_tags else False)
        self.cb_d9.setChecked(True if 'D9' in self.modifying_defense.affected_tags else False)
        self.cb_d10.setChecked(True if 'D10' in self.modifying_defense.affected_tags else False)
        self.cb_d11.setChecked(True if 'D11' in self.modifying_defense.affected_tags else False)

        self.combo_defender_to_edit.setCurrentIndex(0)
        self.handle_defender_change('D1')
        self.defense_visual_frame.update()

    def handle_save_defense_library(self):
        with open('defense_library.json', 'w') as file:
            json.dump(self.defense_library.to_dict(), file, indent=3)
Ejemplo n.º 7
0
 def load_library_from_dict(self, library_dict):
     self.formation_library = OffenseLibrary.from_dict(library_dict)
     self.load_formation_names_into_list()
     self.init_label_mappers()
Ejemplo n.º 8
0
class OffensiveLibraryEditor(QMainWindow, Ui_OffensiveEditor):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.formation_library = OffenseLibrary()
        self.selected_personnel_key = "default"
        self.modifying_formation = Formation()
        self.composite_formation = Formation()
        self.formation_frame = FormationFrame(
            self.modifying_formation,
            self.formation_library.label_mappers['default'])
        self.scrollArea_2.setWidget(self.formation_frame)
        self.show()

        self.rb_editing.setChecked(True)
        self.rb_editing.clicked.connect(self.handle_editing_view_change)
        self.rb_composite.clicked.connect(self.handle_composite_view_change)
        self.edit_composite.returnPressed.connect(self.handle_get_composite)
        self.btn_load_composite.clicked.connect(self.handle_get_composite)

        self.list_formations.itemClicked.connect(self.handle_formation_clicked)
        self.edit_formation_name.returnPressed.connect(
            self.handle_save_formation)
        self.btn_save_formation.clicked.connect(self.handle_save_formation)
        self.btn_delete_selected_formation.clicked.connect(
            self.handle_delete_formation)

        self.actionSave_Library.triggered.connect(self.handle_save_library)

        self.init_label_mappers()
        self.combo_personnel_grouping.currentIndexChanged[str].connect(
            self.handle_personnel_change)
        self.set_personnel_cb_text(
            self.formation_library.label_mappers['default'].mappings)

    def handle_editing_view_change(self):
        self.formation_frame.can_edit = True
        self.formation_frame.formation = self.modifying_formation
        self.formation_frame.update()

    def handle_composite_view_change(self):
        self.formation_frame.can_edit = False
        self.formation_frame.formation = self.composite_formation
        self.formation_frame.update()

    def handle_get_composite(self):
        formation_name = self.edit_composite.text()
        #self.composite_formation = Formation()
        try:
            if len(formation_name) > 0:
                mof_composite = self.formation_library.get_composite_subformation(
                    'MOF', formation_name)[0]
                lh_composite = self.formation_library.get_composite_subformation(
                    'LH', formation_name)[0]
                rh_composite = self.formation_library.get_composite_subformation(
                    'RH', formation_name)[0]
                if not mof_composite is None:
                    self.composite_formation.subformations['MOF_RT'].copy_from(
                        mof_composite)
                    self.composite_formation.subformations['LT_RT'].copy_from(
                        lh_composite)
                    self.composite_formation.subformations['RT_RT'].copy_from(
                        rh_composite)
                    self.formation_frame.update()
        except Exception as e:
            from traceback import format_exc
            print(format_exc())

    def handle_personnel_change(self, new_personnel):
        self.formation_frame.personnel_mapper = self.formation_library.label_mappers[
            new_personnel]
        self.set_personnel_cb_text(
            self.formation_library.label_mappers[new_personnel].mappings)
        self.formation_frame.update()

    def handle_save_formation(self):
        formation_name = self.edit_formation_name.text()
        if len(formation_name) == 0:
            msg_box = QMessageBox()
            msg_box.setText('Formation needs name')
            msg_box.setWindowTitle('Error')
            msg_box.setStandardButtons(QMessageBox.Ok)
            msg_box.exec_()
            return

        affected_tags = []
        if self.cb_l1.isChecked():
            affected_tags.append('L1')
        if self.cb_l2.isChecked():
            affected_tags.append('L2')
        if self.cb_l3.isChecked():
            affected_tags.append('L3')
        if self.cb_l4.isChecked():
            affected_tags.append('L4')
        if self.cb_s1.isChecked():
            affected_tags.append('S1')
        if self.cb_s2.isChecked():
            affected_tags.append('S2')
        if self.cb_s3.isChecked():
            affected_tags.append('S3')
        if self.cb_s4.isChecked():
            affected_tags.append('S4')
        if self.cb_s5.isChecked():
            affected_tags.append('S5')
        if self.cb_s6.isChecked():
            affected_tags.append('S6')

        self.modifying_formation.affected_tags = affected_tags
        self.formation_library.save_formation_from_going_rt(
            self.modifying_formation, formation_name)
        self.load_formation_names_into_list()

    def handle_delete_formation(self):
        if self.list_formations.currentItem():
            formation_name = self.list_formations.currentItem().text()

            del self.formation_library.formations[formation_name]
            self.load_formation_names_into_list()

    def load_formation_names_into_list(self):
        formation_names = [
            name for name in self.formation_library.formations.keys()
        ]
        formation_names.sort()
        self.list_formations.clear()

        for formation_name in formation_names:
            self.list_formations.addItem(formation_name)

    def handle_formation_clicked(self, formation_clicked):
        formation_name = formation_clicked.data(0)
        self.rb_editing.setChecked(True)
        self.edit_formation_name.setText(formation_name)
        self.modifying_formation.copy_from(
            self.formation_library.formations[formation_name])
        self.formation_frame.formation = self.modifying_formation
        self.formation_frame.can_edit = True
        self.formation_frame.update()

        self.cb_l1.setChecked(
            True if 'L1' in self.modifying_formation.affected_tags else False)
        self.cb_l2.setChecked(
            True if 'L2' in self.modifying_formation.affected_tags else False)
        self.cb_l3.setChecked(
            True if 'L3' in self.modifying_formation.affected_tags else False)
        self.cb_l4.setChecked(
            True if 'L4' in self.modifying_formation.affected_tags else False)
        self.cb_s1.setChecked(
            True if 'S1' in self.modifying_formation.affected_tags else False)
        self.cb_s2.setChecked(
            True if 'S2' in self.modifying_formation.affected_tags else False)
        self.cb_s3.setChecked(
            True if 'S3' in self.modifying_formation.affected_tags else False)
        self.cb_s4.setChecked(
            True if 'S4' in self.modifying_formation.affected_tags else False)
        self.cb_s5.setChecked(
            True if 'S5' in self.modifying_formation.affected_tags else False)
        self.cb_s6.setChecked(
            True if 'S6' in self.modifying_formation.affected_tags else False)

    def handle_save_library(self):
        with open('offense_library.json', 'w') as file:
            json.dump(self.formation_library.to_dict(), file, indent=3)

    def load_library_from_dict(self, library_dict):
        self.formation_library = OffenseLibrary.from_dict(library_dict)
        self.load_formation_names_into_list()
        self.init_label_mappers()

    def init_label_mappers(self):
        # Must block signals because clear sends index changed signal which then references the now empty(null) combo box
        self.combo_personnel_grouping.blockSignals(True)
        self.combo_personnel_grouping.clear()
        self.combo_personnel_grouping.blockSignals(False)

        for personnel_grouping_key in self.formation_library.label_mappers.keys(
        ):
            self.combo_personnel_grouping.addItem(personnel_grouping_key)

    def set_personnel_cb_text(self, personnel_mapping):
        self.cb_l1.setText(f'L1 ( {personnel_mapping["L1"]} )')
        self.cb_l2.setText(f'L2 ( {personnel_mapping["L2"]} )')
        self.cb_l3.setText(f'L3 ( {personnel_mapping["L3"]} )')
        self.cb_l4.setText(f'L4 ( {personnel_mapping["L4"]} )')
        self.cb_s1.setText(f'S1 ( {personnel_mapping["S1"]} )')
        self.cb_s2.setText(f'S2 ( {personnel_mapping["S2"]} )')
        self.cb_s3.setText(f'S3 ( {personnel_mapping["S3"]} )')
        self.cb_s4.setText(f'S4 ( {personnel_mapping["S4"]} )')
        self.cb_s5.setText(f'S5 ( {personnel_mapping["S5"]} )')
        self.cb_s6.setText(f'S6 ( {personnel_mapping["S6"]} )')
Ejemplo n.º 9
0
 def load_offense_library_from_dict(self, library_dict):
     self.formation_library = OffenseLibrary.from_dict(library_dict)
Ejemplo n.º 10
0
class CompositeViewer(QMainWindow, Ui_CompositeViewer):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.formation_library = OffenseLibrary()
        self.defense_library = DefenseLibrary()

        self.current_hash = 'MOF'
        starting_formation = Formation()
        self.lh_subformation = starting_formation.subformations['LT_RT']
        self.rh_subformation = starting_formation.subformations['RT_RT']
        self.mof_subformation = starting_formation.subformations['MOF_RT']
        self.current_subformation = self.mof_subformation

        self.current_defense = Defense()
        self.defense_visual_frame = DefenseVisualFrame(
            self.current_subformation, self.current_defense,
            self.defense_library.label_mappers['default'])
        self.scroll_field.setWidget(self.defense_visual_frame)

        self.edit_formation_name.returnPressed.connect(
            self.handle_get_composite)
        self.btn_load_composite.clicked.connect(self.handle_get_composite)

        self.edit_defense_name.returnPressed.connect(self.handle_get_defense)
        self.btn_load_defense.clicked.connect(self.handle_get_composite)

        self.rb_lh.clicked.connect(lambda: self.handle_hash_change('LT'))
        self.rb_mof.clicked.connect(lambda: self.handle_hash_change('MOF'))
        self.rb_rh.clicked.connect(lambda: self.handle_hash_change('RT'))

        self.show()

    def load_offense_library_from_dict(self, library_dict):
        self.formation_library = OffenseLibrary.from_dict(library_dict)
        self.defense_visual_frame.offense_personnel_mapper = self.formation_library.label_mappers[
            'default']

    def load_defense_library_from_dict(self, library_dict):
        self.defense_library = DefenseLibrary.from_dict(library_dict)
        self.defense_visual_frame.defense_personnel_mapper = self.defense_library.label_mappers[
            'default']

    def handle_hash_change(self, hash_mark):
        try:
            self.current_hash = hash_mark
            if hash_mark == 'MOF':
                self.current_subformation = self.mof_subformation
            else:
                self.current_subformation = self.lh_subformation if hash_mark == 'LT' else self.rh_subformation
            self.defense_visual_frame.offensive_subformation = self.current_subformation
            self.defense_visual_frame.update()
        except Exception as e:
            from traceback import format_exc
            print(format_exc())

    def handle_get_composite(self):
        formation_name = self.edit_formation_name.text()
        try:
            if len(formation_name) > 0:
                mof_composite = self.formation_library.get_composite_subformation(
                    'MOF', formation_name)[0]
                lh_composite = self.formation_library.get_composite_subformation(
                    'LT', formation_name)[0]
                rh_composite = self.formation_library.get_composite_subformation(
                    'RT', formation_name)[0]
                if mof_composite is not None:
                    self.mof_subformation = mof_composite
                    self.lh_subformation = lh_composite
                    self.rh_subformation = rh_composite

                    if self.current_hash == 'MOF':
                        self.current_subformation = self.mof_subformation
                    else:
                        self.current_subformation = self.lh_subformation if self.current_hash == 'LT' else self.rh_subformation

                    self.defense_visual_frame.offensive_subformation = self.current_subformation
                    self.defense_visual_frame.update()
        except Exception as e:
            from traceback import format_exc
            print(format_exc())

    def handle_get_defense(self):
        defense_name = self.edit_defense_name.text()
        try:
            if len(defense_name) > 0:
                self.current_defense = self.defense_library.get_composite_defense(
                    defense_name)
                self.defense_visual_frame.defense = self.current_defense
                self.defense_visual_frame.update()
        except Exception as e:
            from traceback import format_exc
            print(format_exc())