Exemple #1
0
    def __init__(self):
        super().__init__()

        # load the ui file
        self.ui = QUiLoader().load('listview_manip.ui')

        # connect signals/slots
        self.ui.load_btn.clicked.connect(self.on_load_btn_click)

        # you can access form objects directly ...
        # self.ui.<name_of_object>.<some_method>()

        # or search for them ...
        # self.found_object = self.ui.findChild(QPlainTextEdit, 'plainTextEdit')

        # or setup shorter references
        #self.my_text = self.ui.plainTextEdit

        # Test data in a model
        self.users = ['User 1', 'User 2', 'User 3']
        self.lv_model = QStringListModel()
        self.lv_model.setStringList(self.users)

        #

        # Attach the model and selection events
        self.ui.file_view.setModel(self.lv_model)
        self.ui.file_view.selectionModel().selectionChanged.connect(
            self.item_selected)
Exemple #2
0
    def __init__(self):
        WizardPage.__init__(self)
        self.fetch_config = None
        self.app_model = QStringListModel(
            REGISTRY.names(
                lambda klass: not getattr(klass, "disable_in_gui", None)))
        self.ui.app_combo.setModel(self.app_model)
        if mozinfo.bits == 64:
            if mozinfo.os == "mac":
                self.bits_model = QStringListModel(["64"])
                bits_index = 0
            else:
                self.bits_model = QStringListModel(["32", "64"])
                bits_index = 1
        elif mozinfo.bits == 32:
            self.bits_model = QStringListModel(["32"])
            bits_index = 0
        self.ui.bits_combo.setModel(self.bits_model)
        self.ui.bits_combo.setCurrentIndex(bits_index)
        self.build_type_model = QStringListModel()

        self.ui.app_combo.currentIndexChanged.connect(self._set_fetch_config)
        self.ui.bits_combo.currentIndexChanged.connect(self._set_fetch_config)
        self.ui.app_combo.setCurrentIndex(
            self.ui.app_combo.findText("firefox"))

        self.ui.repository.textChanged.connect(self._on_repo_changed)

        completer = QCompleter(sorted(get_branches()), self)
        completer.setCaseSensitivity(Qt.CaseInsensitive)
        self.ui.repository.setCompleter(completer)
        QApplication.instance().focusChanged.connect(self._on_focus_changed)
Exemple #3
0
 def getListNews(self):
     self.headlinesurl = "https://news.google.com/?hl=fr&gl=FR&ceid=FR:fr&output=rss"
     self.feed = feedparser.parse(self.headlinesurl)
     self.newslist = [post.title for post in self.feed.entries[1:6]]
     self.newsmodel = QStringListModel()
     self.newsmodel.setStringList(self.newslist)
     self.ctx.setContextProperty("newsmodel", self.newsmodel)
Exemple #4
0
 def __init__(self, record_id):
     super().__init__()
     self.record_id = record_id
     self.session = dbSession()
     # 获取答题总时间和当前题号
     self.totaltime, self.current_v_question_id, self.max_num = self.load_data(
     )
     # 使用答题已用时间初始化UI
     self.ui = Ui_Query(self.totaltime)
     self.option_model = QStringListModel()
     self.ui.question_panel.ui.listViewOptions.setModel(self.option_model)
     self.update_question()
     # 信号连接
     self.ui.about_close.connect(self.quit_action)
     self.ui.question_panel.ui.pushButtonPrevious.clicked.connect(
         self.previous_question)
     self.ui.question_panel.ui.pushButtonPause.clicked.connect(
         self.toggle_pause_question)
     self.ui.question_panel.ui.pushButtonNext.clicked.connect(
         self.next_question)
     self.ui.question_panel.ui.pushButtonCommit.clicked.connect(
         self.commit_query)
     self.ui.question_panel.ui.listViewOptions.clicked.connect(
         self.choose_option)
     # TODO 能不能改进,当前index改变时
     self.ui.note.textChanged.connect(self.update_note)
     self.ui.question_panel.ui.pushButtonChooseQuestion.clicked.connect(
         self.open_option_panel)
Exemple #5
0
class CustomLineEdit(QLineEdit):

    mousePressed = QtCore.Property(QMouseEvent)
    tagSelected = QtCore.Signal(str)

    def __init__(self, parent):
        super(self.__class__, self).__init__()
        self.model = QStringListModel()
        self.setCompleter(QCompleter())
        self.completer().setModel(self.model)
        self.completer().setCompletionMode(QCompleter.PopupCompletion)
        self.completer().activated.connect(self.selected)
        self.textEdited.connect(self.slot_text_edited)
        self.parent = parent
        self.setPlaceholderText("Type tags here")

    def slot_text_edited(self, text):
        self.completer().setCompletionMode(
            QCompleter.UnfilteredPopupCompletion if text ==
            '' else QCompleter.PopupCompletion)

    def selected(self, txt):
        self.tagSelected.emit(txt)

    def set_list(self, qsl):
        self.model.setStringList(qsl)

    def mousePressEvent(self, e):
        self.completer().complete()

    def focusInEvent(self, e):
        self.completer().complete()

    def focusOutEvent(self, e):
        pass
    def __init__(self):
        super(MainWindow, self).__init__()
        #ui
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.comboBox_dict.addItems(dicts)
        #signal
        self.ui.pushButton_create.clicked.connect(self.createBoard)
        self.ui.pushButton_save.clicked.connect(self.saveBoard)
        self.ui.pushButton_open.clicked.connect(self.OpenImages)
        self.ui.tableView.clicked.connect(self.showImg)  #列表图片显示
        self.ui.pushButton_calib.clicked.connect(self.calib)
        self.ui.pushButton_saveParameter.clicked.connect(self.saveParameter)
        self.ui.pushButton_output.clicked.connect(self.saveCameraGroup)
        self.ui.pushButton_clear.clicked.connect(self.clearGroup)
        self.ui.listView_Camera.clicked.connect(self.showCamera)
        #property
        self.model = QStandardItemModel()  #tab 1
        self.cameraListModel = QStringListModel()  #tab 2
        self.cameraLists = []
        self.ui.listView_Camera.setModel(self.cameraListModel)

        self.caliber = None
        self.cameraGroup = CameraGroup.CameraGroup()

        #other
        self.calibBoard = CharucoBoard.ChessBoard()
        self.board = None
        self.boardType = 0
Exemple #7
0
 def testSignals(self):
     self._called = False
     m = QStringListModel()
     m.rowsAboutToBeInserted[QModelIndex, int,
                             int].connect(self.sigCallback)
     m.insertRows(0, 3)
     self.assertTrue(self._called)
Exemple #8
0
class VisualController(Controller):
    def __init__(self):
        super().__init__()
        self.results = QStringListModel(["Worker Results:"])
        self.listview = QListView()
        self.listview.setModel(self.results)

    def start(self):
        super().start()
        self.listview.show()

    @Slot(int)
    def on_worker_result(self, result: int):
        super().on_worker_result(result)
        row_count = self.results.rowCount()
        assert self.results.insertRows(row_count, 1)
        new_row_idx = self.results.index(row_count, 0)
        self.results.setData(new_row_idx, str(result))
        self._resize_to_fit_contents()

    def _resize_to_fit_contents(self):
        QApplication.processEvents()
        view_geo = self.listview.geometry()
        view_geo.setHeight(
            max(view_geo.height(),
                self.listview.contentsSize().height()))
        self.listview.setGeometry(view_geo)
Exemple #9
0
class StringFilterWidget(AbstractFilterWidget):
    def __init__(self, field: str, parent=None):
        super().__init__(parent)

        self.field = field
        vlayout = QVBoxLayout()
        vlayout.setContentsMargins(0, 0, 0, 0)
        self.edit = QLineEdit()
        vlayout.addWidget(self.edit)
        self.setLayout(vlayout)

        self.completer = QCompleter()
        self.completer_model = QStringListModel()
        self.completer.setModel(self.completer_model)

        self.edit.setCompleter(self.completer)

        self.edit.textChanged.connect(self.changed)

    def setup(self, conn: sqlite3.Connection):
        self.completer_model.setStringList(
            sql.get_field_unique_values(conn, self.field))

    def get_filters(self):
        name = self.field
        value = self.edit.text()
        if not value:
            return ""
        else:
            return {"field": name, "operator": "~", "value": value}
Exemple #10
0
 def __init__(self, items: list):
     super().__init__()
     self.stringListModel = QStringListModel()
     self.stringListModel.setStringList(items)
     self.setModel(self.stringListModel)
     self.setStyleSheet("font-size: 23px;")
     self.setSpacing(0)
     self.setEditTriggers(QAbstractItemView.NoEditTriggers)
Exemple #11
0
 def __init__(self, parent=None):
     QObject.__init__(self, parent)
     self.m_text = ""
     self.pictureModel = PictureModel()
     self.keywordModel = QStringListModel()
     self.selectedKeywordsModel = QStringListModel()
     self.pictures = None
     self.keywords = None
     self.folders = []
Exemple #12
0
def open_config():
    from .designer_wrapper import ConfigInvoker, QmlWrapper
    from PySide2.QtCore import QStringListModel
    paths = shared.config["default_input"]
    model = QStringListModel()
    model.setStringList(paths)
    configinvoker = ConfigInvoker(model)
    QmlWrapper.from_resource("Config",
                             properties={"HP": configinvoker, "Paths": model})
Exemple #13
0
 def __init__(self, parent):
     super(self.__class__, self).__init__()
     self.model = QStringListModel()
     self.setCompleter(QCompleter())
     self.completer().setModel(self.model)
     self.completer().setCompletionMode(QCompleter.PopupCompletion)
     self.completer().activated.connect(self.selected)
     self.textEdited.connect(self.slot_text_edited)
     self.parent = parent
     self.setPlaceholderText("Type tags here")
Exemple #14
0
    def __init__(self, field: str, parent=None):
        super().__init__(parent)

        self.field = field
        vlayout = QVBoxLayout()
        vlayout.setContentsMargins(0, 0, 0, 0)
        self.view = QListView()
        self.model = QStringListModel()
        self.view.setModel(self.model)
        vlayout.addWidget(self.view)
        self.setLayout(vlayout)
Exemple #15
0
    def __init__(self, parent=None):
        super().__init__(parent)

        self.setWindowTitle(self.tr("Edit Word set"))
        self.setWindowIcon(QIcon(cm.DIR_ICONS + "app.png"))

        box = QVBoxLayout()
        self.add_button = QPushButton(self.tr("Add"))
        self.add_file_button = QPushButton(self.tr("Add from file..."))
        self.del_button = QPushButton(self.tr("Remove"))
        self.del_button.setDisabled(True)

        self.save_button = QPushButton(self.tr("Save"))
        self.save_button.setDisabled(True)
        self.cancel_button = QPushButton(self.tr("Cancel"))

        box.addWidget(self.add_button)
        box.addWidget(self.del_button)
        box.addWidget(self.add_file_button)
        box.addStretch()
        box.addWidget(self.save_button)
        box.addWidget(self.cancel_button)

        self.view = QListView()
        self.model = QStringListModel()
        self.view.setModel(self.model)
        self.view.setSelectionMode(QAbstractItemView.ExtendedSelection)

        vlayout = QVBoxLayout()
        #  Create title label
        self.title_label = QLabel()
        self.title_label.setText(self.tr("Create a set by adding words"))
        vlayout.addWidget(self.title_label)
        vlayout.addWidget(self.view)

        hlayout = QHBoxLayout()
        hlayout.addLayout(vlayout)
        hlayout.addLayout(box)

        self.setLayout(hlayout)

        self.add_button.pressed.connect(self.on_add)
        self.del_button.pressed.connect(self.on_remove)
        self.add_file_button.pressed.connect(self.on_load_file)

        self.cancel_button.pressed.connect(self.reject)
        self.save_button.pressed.connect(self.accept)
        # Item selected in view
        self.view.selectionModel().selectionChanged.connect(
            self.on_item_selected)
        # Data changed in model
        self.model.dataChanged.connect(self.on_data_changed)
        self.model.rowsInserted.connect(self.on_data_changed)
        self.model.rowsRemoved.connect(self.on_data_changed)
Exemple #16
0
 def initialization(self):
     li = ["eat", "drink"]
     for l in li:
         item = self.get_item(l)
         listModel = QStringListModel()
         listModel.setStringList(item)
         model_1 = getattr(self, "list_{}".format(l))
         model_2 = getattr(self, "list_{}_arr".format(l))
         model_2.clear()
         model_2 += item
         model_1.setModel(listModel)
Exemple #17
0
def open_user_config(datacontainer):
    from .designer_wrapper import UserConfigInvoker, QmlWrapper
    from PySide2.QtCore import QStringListModel

    userlist = sorted(shared.userconfig["users"].keys())
    model = QStringListModel()
    model.setStringList(userlist)
    userconfiginvoker = UserConfigInvoker(model, userlist, datacontainer["doctors"])

    QmlWrapper.from_resource("UserConfig",
                             properties={"Users": model, "HP": userconfiginvoker,
                                         "Doctors": userconfiginvoker.doctorlist})
    def __init__(self):
        super(Teacher_OP, self).__init__()
        self.setupUi(self)
        self.time = 0
        self.num = 0  # 记录上张表的标签数量

        self.get_time_timer = QTimer(self)

        self.get_table_list_thread = Table_List_Get(self)

        self.count_timer = QTimer(self)

        self.clear_msg_timer = QTimer(self)

        self.list_model = QStringListModel()
        self.table_list.setModel(self.list_model)

        self.get_table_data_thread = Table_Data_Get(self)

        self.start_sign_thread = Start_Sign_IN(self)

        self.stop_sign_thread = Stop_Sign_IN(self)

        self.get_time_thread = Get_Time(self)

        self.delete_table_thread = Delete_Option(self)

        self.train_model_thread = Train_Model(self)

        self.creat_excel_thread = Creat_Excel(self)

        # chart
        self.series = QtCharts.QBarSeries(self)
        self.target_bar = QtCharts.QBarSet('学生数量')
        self.series.append(self.target_bar)

        self.axis_x = QtCharts.QBarCategoryAxis()
        self.axis_x.setLabelsColor(QColor(255, 0, 0))

        self.axis_y = QtCharts.QValueAxis()
        # self.axis_y.setTitleText('人数')

        self.chart = QtCharts.QChart()
        self.chart.addSeries(self.series)
        self.chart.setAxisX(self.axis_x, self.series)
        self.chart.setAxisY(self.axis_y, self.series)

        self.qcv = QtCharts.QChartView(self.chart)

        self.init_connect()
        self.set_start_dis_and_set_stop_en(False)
    def available_db_combo(self):

        db_files = []
        db_list_model = QStringListModel()

        for subdir, dirs, files in os.walk(os.path.dirname(os.path.realpath(__file__))):
            for file in files:
                filepath = subdir + os.path.sep + file

                if filepath.endswith(".db"):
                    if filepath not in db_files:
                        db_files.append(file[:-3])

        db_list_model.setStringList(db_files)

        return db_list_model.stringList()
Exemple #20
0
 def __init__(self):
     self._tag_completer = QCompleter()
     # Sort by descending file count
     tagnames = [
         tag[0] for tag in sorted(get_all_tags(), key=lambda t: -t[1])
     ]
     self._tag_completer.setModel(QStringListModel(tagnames))
Exemple #21
0
 def columns_to_view(self, columns, view, chosen_row=None):
     """把一个路径下的文件在view中显示出来
     
     Arguments:
         path {str} -- 科目、地区、试卷的路径
         view {object} -- 用来显示的UI组件
     """
     # 读取数据库所有row的某column
     # 1. column -> 模型
     # 2. 模型 -> view
     # 如果需要选中row,则选中它
     model = QStringListModel()
     model.setStringList(columns)
     view.setModel(model)
     if chosen_row is not None:
         view.setCurrentIndex(chosen_row)
Exemple #22
0
    def _set_fetch_config(self, index):
        app_name = str(self.ui.app_combo.currentText())
        bits = int(self.ui.bits_combo.currentText())

        self.fetch_config = create_config(app_name, mozinfo.os, bits,
                                          mozinfo.processor)

        self.build_type_model = QStringListModel(
            self.fetch_config.available_build_types())
        self.ui.build_type.setModel(self.build_type_model)

        if not self.fetch_config.available_bits():
            self.ui.bits_combo.hide()
            self.ui.label_4.hide()
        else:
            self.ui.bits_combo.show()
            self.ui.label_4.show()

        # URL doesn't make sense for Thunderbird
        if app_name == "thunderbird":
            self.ui.url.hide()
            self.ui.url_label.hide()
        else:
            self.ui.url.show()
            self.ui.url_label.show()
Exemple #23
0
    def __init__(self):  # constructor
        super().__init__()  # call the parent's constructor

        # Test data in a model
        self.users = ['User 1', 'User 2', 'User 3']
        self.lv_model = QStringListModel()
        self.lv_model.setStringList(self.users)

        # Create the main window content widget
        w = QWidget()

        # Setup the rest of the main window appearance
        self.setGeometry(300, 300, 1600, 800)
        self.setWindowTitle('PySide2 Listview Experiments')
        self.setWindowIcon(QIcon('assets/icons/moon_64x64.png'))

        # Create and set the main layout
        layout = QHBoxLayout()
        w.setLayout(layout)  # Set the layout of the main window content widget
        self.setCentralWidget(w)

        # Left Panel

        # Right Panel

        # Create and add components to the layout
        self.lv_label = QLabel('QListView with QStringListModel')
        layout.addWidget(self.lv_label)

        self.file_view = QListView()
        self.file_view.setSelectionMode(
            QListView.MultiSelection)  # single selection is the default
        self.file_view.setModel(self.lv_model)
        self.file_view.selectionModel().selectionChanged.connect(
            self.item_selected)
        layout.addWidget(self.file_view)

        self.button = QPushButton('Update model')
        self.button.clicked.connect(self.change_model)
        layout.addWidget(self.button)

        self.selected_label = QLabel('Selected item: none')
        layout.addWidget(self.selected_label)
        layout.addStretch(1)

        self.center()
        self.show()  # display the UI
Exemple #24
0
 def search(self):
     self.search_r = self.podcast.search(self.dialog.edit.text())
     names = []
     if self.search_r:
         for i in self.search_r:
             names.append(i['collectionName'])
         model = QStringListModel(names)
         self.dialog.result_list.setModel(model)
Exemple #25
0
 def __init__(self):
     WizardPage.__init__(self)
     profile_persistence_options = ["clone", "clone-first", "reuse"]
     self.profile_persistence_model = QStringListModel(
         profile_persistence_options)
     self.ui.profile_persistence_combo.setModel(
         self.profile_persistence_model)
     self.ui.profile_persistence_combo.setCurrentIndex(0)
Exemple #26
0
    def initUI(self):
        self.setWindowTitle("list view")
        self.setGeometry(500,500,300,300)

        listview = QListView()
        slm = QStringListModel()
        self.qList = ['item1','item2','item3','item4']
        slm.setStringList(self.qList)
        listview.setModel(slm)
        listview.clicked.connect(self.clicked)
         

        layout = QVBoxLayout()
        layout.addWidget(listview)
        self.setLayout(layout)

        self.show()
Exemple #27
0
    def __init__(self, field: str, parent=None):
        super().__init__(parent)

        self.field = field
        vlayout = QVBoxLayout()
        vlayout.setContentsMargins(0, 0, 0, 0)
        self.edit = QLineEdit()
        vlayout.addWidget(self.edit)
        self.setLayout(vlayout)

        self.completer = QCompleter()
        self.completer_model = QStringListModel()
        self.completer.setModel(self.completer_model)

        self.edit.setCompleter(self.completer)

        self.edit.textChanged.connect(self.changed)
Exemple #28
0
class Window(QMainWindow):
    def __init__(self):
        super().__init__()

        # load the ui file
        self.ui = QUiLoader().load('listview_manip.ui')

        # connect signals/slots
        self.ui.load_btn.clicked.connect(self.on_load_btn_click)

        # you can access form objects directly ...
        # self.ui.<name_of_object>.<some_method>()

        # or search for them ...
        # self.found_object = self.ui.findChild(QPlainTextEdit, 'plainTextEdit')

        # or setup shorter references
        #self.my_text = self.ui.plainTextEdit

        # Test data in a model
        self.users = ['User 1', 'User 2', 'User 3']
        self.lv_model = QStringListModel()
        self.lv_model.setStringList(self.users)

        #

        # Attach the model and selection events
        self.ui.file_view.setModel(self.lv_model)
        self.ui.file_view.selectionModel().selectionChanged.connect(
            self.item_selected)

    def item_selected(self):
        index = self.ui.file_view.currentIndex(
        )  # returns the primary QModelIndex
        self.ui.test_lbl.setText(index.data())

    def on_load_btn_click(self):
        print('click!')
        file_name = self.load_file()
        self.ui.test_lbl.setText(file_name)

    def load_file(self):
        file_name = QFileDialog.getOpenFileName(self)
        #tr('Open AHLTA template'), '', tr('AHLTA template (*.txt)'))
        return file_name
Exemple #29
0
 def __init__(self, window):
     self.text_edit = QtGui.QTextEdit(window)
     self.text_edit.setReadOnly(True)
     # FIXME: write an optimized model
     self.traceback = None
     self.traceback_model = QStringListModel()
     self.traceback_view = QListView(window)
     self.traceback_view.setModel(self.traceback_model)
     self.traceback_view.setEditTriggers(
         QtGui.QAbstractItemView.NoEditTriggers)
     window.connect(
         self.traceback_view.selectionModel(),
         QtCore.SIGNAL(
             "selectionChanged(const QItemSelection&, const QItemSelection&)"
         ), self.frame_selection_changed)
     # filename => (lines, mtime)
     self._file_cache = {}
     self.clear()
Exemple #30
0
        def __init__(self,parent=None):
            super().__init__(parent)


            self.mydelegate = MyDelegate()

            self.listview = QListView()
            self.mymodel = QStringListModel()
            self.listview.setModel(self.mymodel)
            # 设置我们自己的delegate
            self.listview.setItemDelegate(self.mydelegate)
            self.battle_allies=r'battle_allies'
            self.battle_allies_list=[]
            for i in range (1,11):
                self.battle_allies_list.append(self.battle_allies+'%s.xml'%str(i))
            self.mymodel.setStringList(self.battle_allies_list)
            print(self.battle_allies_list)
            print(self.mymodel.index(2,0).data())
Exemple #31
0
    def __init__(self, crypter):
        super(ControlMainWindow, self).__init__(None)
        self.icon = QSystemTrayIcon()
        self.icon.setIcon(QtGui.QIcon('./eve_tray.png'))
        self.icon.show()
        self.setWindowIcon(QtGui.QIcon('./eve_tray.png'))
        self.setWindowTitle('Pve Launcher')
        self.ui = Ui_main_window()
        self.ui.setupUi(self)
        self.icon.activated.connect(self.activate)
        self.account_list_model = QStringListModel()
        self.ui.listView.setModel(self.account_list_model)

        self.login_manager = EveLoginManager(crypter)

        self.init_none_ui(crypter)

        self.settings = None
        self.load_settings()
        self.ui.txt_client_path.setText(self.settings['eve_path'])
Exemple #32
0
class ControlMainWindow(QMainWindow):
    def __init__(self, crypter):
        super(ControlMainWindow, self).__init__(None)
        self.icon = QSystemTrayIcon()
        self.icon.setIcon(QtGui.QIcon('./eve_tray.png'))
        self.icon.show()
        self.setWindowIcon(QtGui.QIcon('./eve_tray.png'))
        self.setWindowTitle('Pve Launcher')
        self.ui = Ui_main_window()
        self.ui.setupUi(self)
        self.icon.activated.connect(self.activate)
        self.account_list_model = QStringListModel()
        self.ui.listView.setModel(self.account_list_model)

        self.login_manager = EveLoginManager(crypter)

        self.init_none_ui(crypter)

        self.settings = None
        self.load_settings()
        self.ui.txt_client_path.setText(self.settings['eve_path'])


    def init_none_ui(self, crypter):

        self.login_manager.load()
        acc_list = []
        for account_name in self.login_manager.accounts:
            acc_list.append(account_name)

        self.account_list_model.setStringList(acc_list)
        version_thread = Thread(target=self.check_eve_version)
        version_thread.start()

    def load_settings(self):
        try:
            with open('pvesettings.json', 'r') as settings_file:
                self.settings = json.load(settings_file)
        except FileNotFoundError:
            self.settings = dict()
            self.settings['eve_path'] = ""

    def save_settings(self):
        with open('pvesettings.json', 'w') as settings_file:
            json.dump(self.settings, settings_file)

    def closeEvent(self, event):
        self.login_manager.save()
        self.save_settings()

    def changeEvent(self, event):
        if event.type() == QEvent.WindowStateChange:
            if self.windowState() & Qt.WindowMinimized:
                self.icon.show()
                QTimer.singleShot(0, self, SLOT('hide()'))
                event.ignore()

    def func_launch(self):
        indexes = self.ui.listView.selectedIndexes()
        # i get QModelIndex here
        for idx in indexes:
            try:
                self.login_manager.login(idx.data(), self.get_auth_code,
                                         self.get_charname,
                                         self.ui.txt_client_path.text(),
                                         self.ui.cbox_server.currentText())
            except Exception as e:
                logger.exception('Failed to launch')
                invoke_in_main_thread(QMessageBox.critical, self, "Launch Error",
                                      e.__str__(), QMessageBox.Ok)

    def func_edit(self):
        indexes = self.ui.listView.selectedIndexes()
        # i get QModelIndex here
        for idx in indexes:
            account = self.login_manager.accounts[idx.data()]
            dialog = AccountDialog("Edit Account", account.login_name,
                                   account.plain_password(self.login_manager.coder),
                                   account.direct_x, account.profile_name)
            if dialog.show():
                # result = [name, password, path, dx]:
                path = dialog.result[2]
                if not path.endswith(os.sep):
                    path = path + os.sep
                account = EveAccount(dialog.result[0], dialog.result[1], self.login_manager.coder,
                                     None, None, dialog.result[3], dialog.result[2])
                self.login_manager.add_account(account)

    def func_add(self):
        dialog = AccountDialog("Create Account")
        if dialog.show():
            # [name, password, profile_name, dx]
            account = EveAccount(dialog.result[0], dialog.result[1], self.login_manager.coder,
                                 None, None, dialog.result[3], dialog.result[2])
            self.login_manager.add_account(account)
            acc_list = self.account_list_model.stringList()
            acc_list.append(account.login_name)
            self.account_list_model.setStringList(acc_list)

    def func_delete(self):
        indexes = self.ui.listView.selectedIndexes()
        # i get QModelIndex here
        model = self.ui.listView.model()
        for idx in indexes:
            self.login_manager.del_account(idx.data())
            model.removeRow(idx.row())

    def func_clear_cache(self):
        self.login_manager.clear_cache()

    def activate(self, reason):
        if reason == QSystemTrayIcon.Trigger or reason == QSystemTrayIcon.DoubleClick:
            self.showNormal()
            self.raise_()
            self.activateWindow()
            # self.setWindowState(Qt.WindowNoState)
            # self.activateWindow()

    def func_browse_eve(self):
        folder = QDir.toNativeSeparators(
            QFileDialog.getExistingDirectory(None, "Eve Directory", "", QFileDialog.ShowDirsOnly))
        if not folder.endswith(os.sep):
            folder += os.sep
        self.ui.txt_client_path.setText(folder)
        self.settings['eve_path'] = folder

    def check_eve_version(self):
        headers = {'User-Agent': EveLoginManager.useragent}
        #version_url = "http://client.eveonline.com/patches/premium_patchinfoTQ_inc.txt"
        #req = request.Request(version_url, headers=headers)
        #response = request.urlopen(req)
        #version_data = response.read().decode('utf-8')
        #match = re.match("BUILD:(\\d+)", version_data)
        server_status = EveApi.get_server_status()
        if server_status.version is None:
            return None

        version_string = str(server_status.version)
        eve_version_okay: bool = check_eve_version(
            version_string,
            self.ui.txt_client_path.text())
        if not eve_version_okay:
            invoke_in_main_thread(QtWidgets.QMessageBox.information, self, "Eve Clients out of date",
                                  "Your eve client is out of date.", QtWidgets.QMessageBox.Ok)

    def set_server_status(self, text, number):
        self.ui.label_server_status.setText(
            QApplication.translate("main_window", text, None)
            + "({0:d})".format(number))

    def get_auth_code(self, opener, request):
        """
        :param opener: urllib.request.build_opener for sending an authcode per mail
        :param request: request to send using the given opener
        :return: the authcode
        """
        inputDialog = QInputDialog(self)
        inputDialog.setInputMode(QInputDialog.TextInput)
        inputDialog.setCancelButtonText("Cancel")
        inputDialog.setLabelText("Please enter your Authcode")
        inputDialog.setWindowTitle("TwoFactorAuth")
        inputDialog.setModal(True)

        response = None

        if inputDialog.exec_() == QInputDialog.Rejected:  # send mail
            return None, None
        else:
            return response, inputDialog.textValue().strip()

        inputDialog.setCancelButtonText("Cancel")
        if inputDialog.exec_() == QInputDialog.Rejected:
            return response, None
        return response, inputDialog.textValue().strip()

    def get_charname(self):
        """
        :param mailurl: url to call for sending an authcode per mail
        :return: the authcode
        """
        inputDialog = QInputDialog(self)
        inputDialog.setInputMode(QInputDialog.TextInput)
        inputDialog.setLabelText("Please enter a Charname")
        inputDialog.setWindowTitle("Charname Challange")
        inputDialog.setModal(True)

        if inputDialog.exec_() == QInputDialog.Rejected:
            return None

        return inputDialog.textValue().strip()