def __init__(self, gem=Gem(), session=Session()):
        QDialog.__init__(self)
        self.gem = gem
        self.session = session

        # Set up ui
        self.ui = Ui_gem_edit()
        self.ui.setupUi(self)

        self.ui.reset_btn = self.ui.buttonBox.button(QDialogButtonBox.Reset)
        self.ui.apply_btn = self.ui.buttonBox.button(QDialogButtonBox.Apply)
        self.ui.ok_btn = self.ui.buttonBox.button(QDialogButtonBox.Ok)

        # Signal/Slot
        self.ui.active_radio.toggled.connect(self.toggle_active)
        self.ui.support_radio.toggled.connect(self.toggle_support)
        self.ui.reset_btn.clicked.connect(self.refresh)
        self.ui.apply_btn.clicked.connect(self.apply)
        self.ui.ok_btn.clicked.connect(self.accept)
        self.ui.fetch_btn.clicked.connect(self.fetch)

        self.refresh()
class GemEdit(QDialog):
    """docstring for GemEdit"""
    def __init__(self, gem=Gem(), session=Session()):
        QDialog.__init__(self)
        self.gem = gem
        self.session = session

        # Set up ui
        self.ui = Ui_gem_edit()
        self.ui.setupUi(self)

        self.ui.reset_btn = self.ui.buttonBox.button(QDialogButtonBox.Reset)
        self.ui.apply_btn = self.ui.buttonBox.button(QDialogButtonBox.Apply)
        self.ui.ok_btn = self.ui.buttonBox.button(QDialogButtonBox.Ok)

        # Signal/Slot
        self.ui.active_radio.toggled.connect(self.toggle_active)
        self.ui.support_radio.toggled.connect(self.toggle_support)
        self.ui.reset_btn.clicked.connect(self.refresh)
        self.ui.apply_btn.clicked.connect(self.apply)
        self.ui.ok_btn.clicked.connect(self.accept)
        self.ui.fetch_btn.clicked.connect(self.fetch)

        self.refresh()

    def refresh(self):
        """Reloads data from self.gem"""
        # Basic Gem
        self.ui.name_edit.setText(self.gem.name)
        self.ui.abbrev_edit.setText(self.gem.abbrev)
        self.ui.description_edit.setText(self.gem.description)
        self.ui.gem_icon_lbl.setPixmap(QPixmap(self.gem.gem_icon))

        if self.gem.strength == 1:
            self.ui.str_chk.setChecked(True)
        if self.gem.dexterity == 1:
            self.ui.dex_chk.setChecked(True)
        if self.gem.intelligence == 1:
            self.ui.int_chk.setChecked(True)

        # Active Gem values TODO
        if self.gem.type == 'active':
            self.ui.active_radio.setChecked(True)
            self.ui.skill_icon_btn.show()
            self.ui.skill_icon_lbl.setPixmap(QPixmap(self.gem.skill_icon))

        # Support Gem values
        if self.gem.type == 'support':
            self.ui.support_radio.setChecked(True)
            self.ui.skill_icon_btn.hide()
            self.ui.mcm_edit.setText(self.gem.MCM)

    def toggle_active(self, active):
        """SLOT: when showing an active gem switch to tab_active"""
        if active is True:
            self.ui.tab_box.setCurrentWidget(self.ui.tab_active)

    def toggle_support(self, support):
        """SLOT: when showing an support gem switch to tab_support"""
        if support is True:
            self.ui.tab_box.setCurrentWidget(self.ui.tab_support)

    def apply(self):
        """SLOT: write changes to gem object"""
        pass

    def accept(self):
        """SLOT: first apply, then commit using session"""
        self.apply()
        self.session.commit()
        self.session.flush()
        self.done(1)

    def fetch(self):
        if self.ui.active_radio.isChecked():
            self.gem = ActiveGem()
        elif self.ui.support_radio.isChecked():
            self.gem = SupportGem()
        else:
            self.gem = Gem()

        self.gem.name = str(self.ui.name_edit.text())
        self.gem.update(new_html=True)
        self.refresh()
        print((self.gem))