def __init__(self, tab_thermopylae, api: API_SIX, user_ships: dict, map_data: dict): self.api = api self.tab_thermopylae = tab_thermopylae self.logger = get_logger(QLOGS.TAB_THER) self.user_ships = user_ships self.map_data = map_data self.qsettings = QSettings(get_qsettings_file(), QSettings.IniFormat) if self.qsettings.contains(QKEYS.CONN_THER_RTY): self.reconnection_limit = self.qsettings.value(QKEYS.CONN_THER_RTY, type=int) else: self.reconnection_limit = 3 if self.qsettings.contains(QKEYS.THER_BOSS_RTY): self.boss_retry_limit = list( map(int, self.qsettings.value(QKEYS.THER_BOSS_RTY))) else: self.boss_retry_limit = [3, 5, 10] if self.qsettings.contains(QKEYS.THER_BOSS_STD): self.boss_retry_standard = list( map(int, self.qsettings.value(QKEYS.THER_BOSS_STD))) else: self.boss_retry_standard = [1, 2, 2] if self.qsettings.contains(QKEYS.THER_SHIP_STARS): self.ship_star: dict = self.qsettings.value(QKEYS.THER_SHIP_STARS) else: self.ship_star: dict = {} self.boss_retry_count: list = [0, 0, 0] self.points: int = 10 self.adjutant_info: dict = {} # level, curr_exp, exp_cap
def __init__(self, parent, threadpool: QThreadPool, is_realrun: bool): super().__init__() logger.info("Creating Main Interface Tabs...") self.parent = parent self.threadpool = threadpool self.is_realrun = is_realrun self.qsettings = QSettings(get_qsettings_file(), QSettings.IniFormat) self.has_tab = False # do NOT change the order of creation self.layout = QGridLayout() self.tab_ships = None self.tab_exp = None self.tab_adv = None self.tab_thermopylae = None self.tabs = QTabWidget() self._msg_label = None self.init_ui() self.layout.addWidget(self.tabs, 0, 0) if self.has_tab is True: pass else: self.add_warning_message() self.setLayout(self.layout)
def __init__(self, parent, api: API_SIX, dd: list, cv: list, main_fleet: list, is_realrun: bool): super().__init__() self.parent = parent self.api = api self.escort_DD = dd self.escort_CV = cv self.main_fleet = main_fleet # main fleet (6SS) self.battle_fleet = set() # ships that on battle self.logger = get_logger(QLOGS.TAB_THER) self.is_running: bool = True self.qsettings = QSettings(wgv_data.get_qsettings_file(), QSettings.IniFormat) if self.qsettings.contains(QKEYS.THER_REPAIRS): self.repair_levels: list = list( map(int, self.qsettings.value(QKEYS.THER_REPAIRS))) else: self.repair_levels: list = [2] # Used for pre-battle self.map_data: dict = {} self.user_data: dict = {} self.helper = None self.boat_pool: set = set() # host existing boats self.curr_node: str = '0' self.curr_sub_map: str = '0' self.final_fleet: list = [] # fill up required number of boats self.tickets: int = 0 self.user_ships: dict = wgv_data.get_processed_userShipVo() self.pre_sortie = PreSortieCheck(self.api, is_realrun) self.logger.info("Init E6...")
def __init__(self, cookies: dict, login_form: pyqtSignal, realrun: bool = True): super().__init__() self.hide() self.cookies = cookies self.sig_close_login = login_form self.is_realrun = realrun self.qsettings = QSettings(wgv_data.get_qsettings_file(), QSettings.IniFormat) self.threadpool = QThreadPool() self.api = WGR_API(self.cookies) self.side_dock_on = False self.side_dock = None self.tray = None self.main_tabs = None self.menu_bar = None # This widget is deleted upon completion self.progress_bar = QtProgressBar( self, title="Downloading Essential Resource Zips") self.sig_progress_bar.connect(self.progress_bar.update_value) # This bee is deleted upon completion self.bee_download_zip = CallbackWorker(self.init_zip_files, ([self.sig_progress_bar]), self.zip_download_finished) self.bee_download_zip.terminate()
def __init__(self): super().__init__() self.qsettings = QSettings(get_qsettings_file(), QSettings.IniFormat) self.setTabBar(TabBar()) self.setTabPosition(QTabWidget.West) # can also add QIcon as 2nd argument self.ui_settings = UISettings(self.qsettings) self.addTab(self.ui_settings, "UI") self.game_settings = GameSettings(self.qsettings) self.addTab(self.game_settings, "GAME") self.tabs_settings = TabsSettings(self.qsettings) self.addTab(self.tabs_settings, "TABS")
def __init__(self, parent, realrun: bool): super(SideDock, self).__init__(parent) self.is_realrun = realrun _, self.user_screen_h = wgv_utils.get_user_resolution() self.qsettings = QSettings(wgv_data.get_qsettings_file(), QSettings.IniFormat) if self.qsettings.contains(QKEYS.EXP_AUTO) and self.qsettings.value(QKEYS.EXP_AUTO, type=bool): logger.debug("Auto expedition is on") self.is_exp_auto = True else: logger.debug("Auto expedition is off") self.is_exp_auto = False self.equipment_names = wgv_data.get_shipEquipmnt() self.ship_names = wgv_data.get_processed_userShipVo() # index 0 for daily, 1 for weekly, 2+ for tasks/events self.task_counter_desc_labels = [] self.task_counter_labels = [] self.task_counter_timers = [] self.task_counters = [] self.name_layout_widget = QWidget(self) self.name_layout = QHBoxLayout(self.name_layout_widget) self.name_label = QLabel(self.name_layout_widget) self.lvl_label = QLabel(self.name_layout_widget) self.ship_count_label = QLabel(self.name_layout_widget) self.equip_count_label = QLabel(self.name_layout_widget) self.collect_count_label = QLabel(self.name_layout_widget) self.sign_widget = QLineEdit(self) self.table_model = ResourceTableModel() self.table_view = QTableView(self) self.bath_list_view = BathListView() self.bath_list_view_widget = QWidget(self) self.bath_list_view_layout = QVBoxLayout(self.bath_list_view_widget) self.triple_list_view_widget = QWidget(self) self.triple_list_view = QHBoxLayout(self.triple_list_view_widget) self.build_list_view = BuildListView() self.dev_list_view = DevListView() self.exp_list_view = ExpListView(parent.main_tabs) self.task_list_view = TaskListView() self.task_panel_widget = QWidget(self) self.task_panel_view = QHBoxLayout(self.task_panel_widget) self.countdowns_layout_widget = QWidget(self) self.countdowns_layout = QVBoxLayout(self.countdowns_layout_widget) self.sig_resized.connect(self.update_geometry) self.sig_closed.connect(parent.on_dock_closed) self._init_ui() self.set_data()
def __init__(self, parent): super().__init__() self.parent = parent self.qsettings = QSettings(wgv_data.get_qsettings_file(), QSettings.IniFormat) self.version_log = None self.data_graph = UserDataGraph() self.init_file_menu() self.init_view_menu() self.init_links_menu() self.init_preferences_menu() # self.init_developers_menu() self.init_help_menu()
def __init__(self, cookies: dict): self.server = cookies['server'] self.channel = cookies['channel'] self.cookies = cookies['cookies'] self.hlp = LoginHelper() qsettings = QSettings(get_qsettings_file(), QSettings.IniFormat) if qsettings.contains(QKEYS.CONN_API_RTY) is True: self.max_retry = qsettings.value(QKEYS.CONN_API_RTY, type=int) else: self.max_retry = 5 if qsettings.contains(QKEYS.CONN_API_SLP) is True: self.sleep_time = qsettings.value(QKEYS.CONN_API_SLP, type=int) else: self.sleep_time = 3
def __init__(self): self.session = requests.sessions.Session() self.qsettings = QSettings(get_qsettings_file(), QSettings.IniFormat) if self.qsettings.contains(QKEYS.CONN_SESS_RTY) is True: self.max_retry = self.qsettings.value(QKEYS.CONN_SESS_RTY, type=int) else: self.max_retry = 5 if self.qsettings.contains(QKEYS.CONN_SESS_SLP) is True: self.sleep_time = self.qsettings.value(QKEYS.CONN_SESS_SLP, type=int) else: self.sleep_time = 3 self.accept_errors = (requests.exceptions.ConnectTimeout, requests.exceptions.ConnectionError)
def __init__(self): super().__init__() self._version_check = WGViewerVersionCheck() self.sig_login.connect(self.start_login) self.sig_close.connect(self.on_main_interface_setup) self.qsettings = QSettings(wgv_data.get_qsettings_file(), QSettings.IniFormat) self.encryptor = Encryptor() self.channel = "" self.server = "" self.mi = None self.res1: bool = False self.res2: bool = False self.lineEdit_username = QLineEdit() self.lineEdit_password = QLineEdit() self.combo_platform = QComboBox() self.combo_server = QComboBox() # TODO? it's hard to get this checkbox to render the same way across platforms (even with get_user_resolution()) self.check_disclaimer = QCheckBox('I have read') # TODO? trailing space # To limit the trailing space of the checkbox text with max width; still, there is ~2 whitespaces width space presents # set text all in label would cause user unable to click text to toggle checkbox; differs from other checkbox, (bad design IMO) user_w, _ = wgv_utils.get_user_resolution() self.check_disclaimer.setMaximumWidth(int(0.08 * user_w)) self.check_save = QCheckBox("Store login info locally with encryption") self.check_auto = QCheckBox("Auto login on the application start") self.button_login = QPushButton("Login") self.button_bypass = QPushButton("Bypass Login with Existing Cookie") self.button_bypass.setToolTip( "If you previously logged in with WGViewer AND haven't logged in through other means,\n" "you may use this option to bypass login.") self.container = QWidget() main_layout = QVBoxLayout() main_layout.addWidget(self.container) self.layout = QGridLayout(self.container) self.init_ui() self.setLayout(main_layout) self.auto_start()
def __init__(self, tab_name: str, side_dock: SideDock, is_realrun: bool): super().__init__() self.setObjectName(tab_name) self.side_dock = side_dock self.resource_info: ResourceTableModel = self.side_dock.table_model self.is_realrun = is_realrun # Signals self.sig_fuel.connect(self.resource_info.update_fuel) self.sig_ammo.connect(self.resource_info.update_ammo) self.sig_steel.connect(self.resource_info.update_steel) self.sig_baux.connect(self.resource_info.update_bauxite) self.sig_repair.connect(self.resource_info.update_repair) self.sig_exp.connect(self.side_dock.update_lvl_label) # Members self.api = API_SIX(wgv_data.load_cookies()) self.qsettings = QSettings(wgv_data.get_qsettings_file(), QSettings.IniFormat) self.user_ships = wgv_data.get_processed_userShipVo() self.battle_fleet: list = [None] * 6 self.escort_DD: list = [None] * 2 self.escort_CV: list = [None] self.user_chosen_cid: list = [None] * 9 self.ship_select_window = None self.sortie = None # Threads self.bee_pre_battle = None self.bee_fresh_sortie = None self.bee_resume_sortie = None # UI members self.main_layout = QHBoxLayout(self) self.left_layout = QGridLayout() self.right_layout = QVBoxLayout() self.ticket_label = QLabel("?") self.button_purchase = QPushButton("?") self.adjutant_label = QLabel("?") self.adjutant_exp_label = QLabel("?/?") self.points_label = QLabel("?") self._label = None self._is_first_timer: bool = True self._is_speed_mode: bool = False self._clicks: int = 0 self._is_timer_start: bool = False self._timer = QTimer(self) self._timer.timeout.connect(self._check_label) self.set_ticket_display() self.set_adjutant_display() self.ship_button_group = QButtonGroup() self.boat_pool_label = QLabel() self.fleet_label = QLabel() self.ui_buttons = QButtonGroup() self.button_set_ships = QPushButton('&Set fleet') self.button_pre_battle = QPushButton('&Pre-Battle Check') self.button_fresh_sortie = QPushButton('Fresh &Combat') self.button_resume_sortie = QPushButton('&Resume Combat') self.button_stop_sortie = QPushButton('Stop Task') self.multi_runs = QSpinBox() self.init_left_layout() self.right_text_box = QTextEdit() # after right_text_box creation self.logger = get_new_logger(name=QLOGS.TAB_THER, level=QLOGS.LVL_INFO, signal=self.right_text_box.append) self.init_right_layout() self.init_ui()
import logging import os import qdarkstyle import re import time from random import randint from threading import Event from typing import List from PyQt5.QtCore import QSettings, pyqtSlot from src.data import get_qsettings_file from src.func import qsettings_keys as QKEYS from src.func.worker import Worker _qsettings = QSettings(get_qsettings_file(), QSettings.IniFormat) _sleep_event = Event() def clear_desc(text: str) -> str: # This garbage code (like ^C454545FF00000000) is probably due to cocoa? return re.sub(r'\^.+?00000000', '', text) def get_app_version() -> str: return '0.2.3.1dev' def get_color_scheme() -> str: if get_color_option() == "native": return ""