def solve(path: str) -> List[List[Magnet]]: print("--- start import ---") js = Config.open(path) times = setupconfiguration(js) result_magnets = [None for _ in times] # 誘導起電力を算出するのに必要 solver = Solver(js["config"]["solver"]) print("----- start solving magnetic field ---") progress = ProgressBar(len(times)) # マルチスレッドで実行 with futures.ThreadPoolExecutor() as executor: fs = [] for i, _ in enumerate(times): fs.append( executor.submit(computemagneticfield, js, solver, i, result_magnets)) for f in futures.as_completed(fs): progress.incrementasprint() # TODO: CLEAR # 残り時間を表示する部分を作る print("") # 改行して再開する必要がある solver.computeinductance(result_magnets, times) return result_magnets
def __init__(self): self.log = Log().setup_logging() self.progressbar = ProgressBar() self.database = DatabaseClass(self.log) self.program_path = os.path.join(utils.get_current_path(), constants.EXE_PROGRAM_NAME) self.new_version = None self.new_version_msg = None self.client_version = None
class SetDatabaseTestCase(unittest.TestCase): def setUp(self): self.logger = logging.getLogger() self.logger.level = logging.DEBUG self.logger.addHandler(logging.StreamHandler(sys.stdout)) self.pb = ProgressBar() def tearDown(self): self.logger = None self.pb = None def test__add__(self): self.assertEqual(self.pb.__str__(), '[>............] 0%') self.pb = self.pb + 5 self.assertEqual(self.pb.__str__(), '[======>......] 50%') self.pb = self.pb + 5 self.assertEqual(self.pb.__str__(), '[============>] 100%') def test__str__(self): self.assertEqual(self.pb.__str__(), '[>............] 0%') self.pb.progress = 30 self.pb.width = 12 self.pb.step = 100 / float(self.pb.width) self.pb.fill = "-" self.pb.blank = "." self.assertEqual(self.pb.__str__(), '[--->.........] 30%') def test_get_progress(self): self.pb.end = 10 self.assertEqual(self.pb._get_progress(1), 10.0) self.pb.end = 50 self.assertEqual(self.pb._get_progress(10), 20.0) def test_get_progress(self): self.pb.end = 10 self.assertEqual(self.pb._get_progress(1), 10.0) self.pb.end = 50 self.assertEqual(self.pb._get_progress(10), 20.0)
def __init__(self, qtobj, form): self.qtobj = qtobj self.form = form self.client_version = constants.VERSION self.log = Log().setup_logging() self.database = DatabaseClass(self.log) self.progressbar = ProgressBar() self.check_program_updates = True self.check_reshade_updates = True self.create_screenshots_folder = True self.show_info_messages = True self.use_dark_theme = True self.update_shaders = True self.need_apply = False self.selected_game = None self.game_config_form = None self.reshade_version = None self.program_version = None self.local_reshade_path = None self.new_version = None self.remote_reshade_version = None self.remote_reshade_download_url = None
def setup(self): self.config = yaml.load(open('config/application.yaml', 'r')) logging.handlers.HistoryHandler = HistoryHandler logging.config.dictConfig(yaml.load(open(self.config['logging']['config'], 'r'))) self.logger = logging.getLogger('root') self.logger.info('setup()') self.database = DbSqlite3(self.config['db']['database']) self.database.initSqlCursor() self.app = QtGui.QApplication([]) self.window = TestWindow() custom_options = {'end': 10, 'width': 10, 'fill': '#', 'format': '%(progress)s%% [%(fill)s%(blank)s]'} self.progressBar = ProgressBar(** custom_options)
class Example(object): def __init__(self): self.exceptionCount = 0 self.config = None self.logger = None self.database = None self.app = None self.window = None self.progressBar = None def setup(self): self.config = yaml.load(open('config/application.yaml', 'r')) logging.handlers.HistoryHandler = HistoryHandler logging.config.dictConfig(yaml.load(open(self.config['logging']['config'], 'r'))) self.logger = logging.getLogger('root') self.logger.info('setup()') self.database = DbSqlite3(self.config['db']['database']) self.database.initSqlCursor() self.app = QtGui.QApplication([]) self.window = TestWindow() custom_options = {'end': 10, 'width': 10, 'fill': '#', 'format': '%(progress)s%% [%(fill)s%(blank)s]'} self.progressBar = ProgressBar(** custom_options) def run(self): answer = '' try: while not answer == '9': time.sleep(1) if answer == '1': self.window.show() self.app.exec_() elif answer == '2': self.database.insertSql('insert into database') elif answer == '3': self.database.commitSql() elif answer == '4': self.database.closeHandle() elif answer == '5': (x, y) = (5, 0) a = x / y elif answer == '6': self.logger.error('run() ... Error') elif answer == '7': self.logger.warning('run() ... Warning') elif answer == '8': if self.progressBar == 100: self.progressBar.reset() print self.progressBar + 1 answer = raw_input("\r\n\r\nEnter one of the following\r\n\r\n1 -- Window\r\n2 -- database insert\r\n3 -- database commit\r\n4 -- database close handle\r\n5 -- Critical\r\n6 -- Error\r\n7 -- Warning\r\n8 -- progressbar\r\n9 -- quit\r\n\r\n.....? ") self.logger.debug('run() ... selection >>%s<<' % (answer)) self.teardown() except Exception: self.logger.critical('run() ... Exception \r\n\r\n %s', traceback.format_exc(with_vars = True)) def teardown(self): self.logger.info('teardown() ... Quit') print "\r\n Exiting Gracefully"
class MainSrc: def __init__(self, qtobj, form): self.qtobj = qtobj self.form = form self.client_version = constants.VERSION self.log = Log().setup_logging() self.database = DatabaseClass(self.log) self.progressbar = ProgressBar() self.check_program_updates = True self.check_reshade_updates = True self.create_screenshots_folder = True self.show_info_messages = True self.use_dark_theme = True self.update_shaders = True self.need_apply = False self.selected_game = None self.game_config_form = None self.reshade_version = None self.program_version = None self.local_reshade_path = None self.new_version = None self.remote_reshade_version = None self.remote_reshade_download_url = None def start(self): self.log.info(f"STARTING {constants.FULL_PROGRAM_NAME}") self.progressbar.set_values(messages.checking_database, 15) utils.check_database_connection(self) utils.check_default_database_tables(self) utils.check_default_database_configs(self) self.progressbar.set_values(messages.checking_files, 30) utils.check_local_files(self) self.progressbar.set_values(messages.checking_configs, 45) self.set_variables() self.register_form_events() self.progressbar.set_values(messages.downloading_shaders, 60) if not os.path.isdir(constants.SHADERS_SRC_PATH)\ or (self.update_shaders is not None and self.update_shaders is True): utils.download_shaders(self) self.progressbar.set_values(messages.checking_reshade_updates, 80) utils.check_reshade_updates(self) utils.check_reshade_dll_files(self) self.progressbar.set_values(messages.checking_program_updates, 90) utils.check_program_updates(self) self.progressbar.close() self.qtobj.main_tabWidget.setCurrentIndex(0) self.qtobj.programs_tableWidget.setColumnWidth(2, 130) self.qtobj.programs_tableWidget.horizontalHeader().setDefaultAlignment( Qt.AlignLeft) self.populate_table_widget() self.enable_widgets(False) def set_variables(self): config_sql = ConfigSql(self) rs_config = config_sql.get_configs() if rs_config is not None and len(rs_config) > 0: if not rs_config[0].get("use_dark_theme"): self.use_dark_theme = False self.qtobj.yes_dark_theme_radioButton.setChecked(False) self.qtobj.no_dark_theme_radioButton.setChecked(True) else: self.use_dark_theme = True self.qtobj.yes_dark_theme_radioButton.setChecked(True) self.qtobj.no_dark_theme_radioButton.setChecked(False) self.set_style_sheet() if not rs_config[0].get("check_program_updates"): self.check_program_updates = False self.qtobj.yes_check_program_updates_radioButton.setChecked( False) self.qtobj.no_check_program_updates_radioButton.setChecked( True) else: self.check_program_updates = True self.qtobj.yes_check_program_updates_radioButton.setChecked( True) self.qtobj.no_check_program_updates_radioButton.setChecked( False) if not rs_config[0].get("show_info_messages"): self.show_info_messages = False self.qtobj.yes_show_info_messages_radioButton.setChecked(False) self.qtobj.no_show_info_messages_radioButton.setChecked(True) else: self.show_info_messages = True self.qtobj.yes_show_info_messages_radioButton.setChecked(True) self.qtobj.no_show_info_messages_radioButton.setChecked(False) if not rs_config[0].get("check_reshade_updates"): self.check_reshade_updates = False self.qtobj.yes_check_reshade_updates_radioButton.setChecked( False) self.qtobj.no_check_reshade_updates_radioButton.setChecked( True) else: self.check_reshade_updates = True self.qtobj.yes_check_reshade_updates_radioButton.setChecked( True) self.qtobj.no_check_reshade_updates_radioButton.setChecked( False) if not rs_config[0].get("update_shaders"): self.update_shaders = False self.qtobj.yes_update_shaders_radioButton.setChecked(False) self.qtobj.no_update_shaders_radioButton.setChecked(True) else: self.update_shaders = True self.qtobj.yes_update_shaders_radioButton.setChecked(True) self.qtobj.no_update_shaders_radioButton.setChecked(False) if not rs_config[0].get("create_screenshots_folder"): self.create_screenshots_folder = False self.qtobj.yes_screenshots_folder_radioButton.setChecked(False) self.qtobj.no_screenshots_folder_radioButton.setChecked(True) else: self.create_screenshots_folder = True self.qtobj.yes_screenshots_folder_radioButton.setChecked(True) self.qtobj.no_screenshots_folder_radioButton.setChecked(False) if rs_config[0].get("program_version"): self.program_version = rs_config[0].get("program_version") if rs_config[0].get("reshade_version"): self.reshade_version = rs_config[0].get("reshade_version") def register_form_events(self): # TAB 1 - games self.qtobj.add_button.clicked.connect(lambda: events.add_game(self)) self.qtobj.delete_button.clicked.connect( lambda: events.delete_game(self)) self.qtobj.edit_path_button.clicked.connect( lambda: events.edit_game_path(self)) self.qtobj.edit_preset_button.clicked.connect( lambda: events.open_preset_config_file(self)) self.qtobj.apply_button.clicked.connect(lambda: events.apply_all(self)) self.qtobj.update_button.clicked.connect( lambda: events.update_clicked()) self.qtobj.programs_tableWidget.clicked.connect( self._table_widget_clicked) self.qtobj.programs_tableWidget.itemDoubleClicked.connect( self._table_widget_double_clicked) # TAB 2 - configs self.qtobj.yes_dark_theme_radioButton.clicked.connect( lambda: events.dark_theme_clicked(self, "YES")) self.qtobj.no_dark_theme_radioButton.clicked.connect( lambda: events.dark_theme_clicked(self, "NO")) self.qtobj.yes_check_program_updates_radioButton.clicked.connect( lambda: events.check_program_updates_clicked(self, "YES")) self.qtobj.no_check_program_updates_radioButton.clicked.connect( lambda: events.check_program_updates_clicked(self, "NO")) self.qtobj.yes_show_info_messages_radioButton.clicked.connect( lambda: events.show_info_messages_clicked(self, "YES")) self.qtobj.no_show_info_messages_radioButton.clicked.connect( lambda: events.show_info_messages_clicked(self, "NO")) self.qtobj.yes_check_reshade_updates_radioButton.clicked.connect( lambda: events.check_reshade_updates_clicked(self, "YES")) self.qtobj.no_check_reshade_updates_radioButton.clicked.connect( lambda: events.check_reshade_updates_clicked(self, "NO")) self.qtobj.yes_update_shaders_radioButton.clicked.connect( lambda: events.update_shaders_clicked(self, "YES")) self.qtobj.no_update_shaders_radioButton.clicked.connect( lambda: events.update_shaders_clicked(self, "NO")) self.qtobj.yes_screenshots_folder_radioButton.clicked.connect( lambda: events.create_screenshots_folder_clicked(self, "YES")) self.qtobj.no_screenshots_folder_radioButton.clicked.connect( lambda: events.create_screenshots_folder_clicked(self, "NO")) self.qtobj.edit_default_preset_plugin_button.clicked.connect( lambda: events.edit_default_preset_plugin_button_clicked(self)) self.qtobj.reset_all_button.clicked.connect( lambda: events.reset_all_button_clicked(self)) # TAB 3 - about self.qtobj.donate_button.clicked.connect( lambda: events.donate_clicked()) def set_style_sheet(self): if self.use_dark_theme: self.form.setStyleSheet(open(constants.QSS_PATH, "r").read()) else: self.form.setStyleSheet("") def populate_table_widget(self): self.qtobj.programs_tableWidget.horizontalHeader( ).setStretchLastSection(False) self.qtobj.programs_tableWidget.setRowCount(0) # cleanning datagrid games_sql = GamesSql(self) rs_all_games = games_sql.get_games() if rs_all_games is not None and len(rs_all_games) > 0: for i in range(len(rs_all_games)): self.qtobj.programs_tableWidget.insertRow(i) self.qtobj.programs_tableWidget.setItem( i, 0, QtWidgets.QTableWidgetItem(rs_all_games[i].get("name"))) self.qtobj.programs_tableWidget.setItem( i, 1, QtWidgets.QTableWidgetItem( rs_all_games[i].get("architecture"))) self.qtobj.programs_tableWidget.setItem( i, 2, QtWidgets.QTableWidgetItem(rs_all_games[i].get("api"))) self.qtobj.programs_tableWidget.setItem( i, 3, QtWidgets.QTableWidgetItem(rs_all_games[i].get("path"))) self.qtobj.programs_tableWidget.resizeColumnsToContents() highest_column_width = self.qtobj.programs_tableWidget.columnWidth(3) if highest_column_width < 600: self.qtobj.programs_tableWidget.horizontalHeader( ).setStretchLastSection(True) else: self.qtobj.programs_tableWidget.horizontalHeader( ).setSectionResizeMode(3, QtWidgets.QHeaderView.ResizeToContents) def enable_form(self, status: bool): if not status: self.selected_game = None self.qtobj.add_button.setEnabled(status) for i in range(0, self.qtobj.main_tabWidget.count()): self.qtobj.main_tabWidget.setTabEnabled(i, status) self.qtobj.main_tabWidget.setCurrentIndex(0) def enable_widgets(self, status: bool): if not status: self.selected_game = None self._set_state_apply_button() self.qtobj.delete_button.setEnabled(status) self.qtobj.edit_path_button.setEnabled(status) self.qtobj.edit_preset_button.setEnabled(status) self.qtobj.main_tabWidget.setCurrentIndex(0) def _set_state_apply_button(self): len_games = self.qtobj.programs_tableWidget.rowCount() if len_games == 0: self.qtobj.apply_button.setEnabled(False) else: self.qtobj.apply_button.setEnabled(True) def _table_widget_clicked(self, item): events.programs_tableWidget_clicked(self, item) def _table_widget_double_clicked(self): if self.selected_game is not None: qtutils.show_game_config_form(self, self.selected_game.name, self.selected_game.architecture)
def setUp(self): self.logger = logging.getLogger() self.logger.level = logging.DEBUG self.logger.addHandler(logging.StreamHandler(sys.stdout)) self.pb = ProgressBar()
class Launcher: def __init__(self): self.log = Log().setup_logging() self.progressbar = ProgressBar() self.database = DatabaseClass(self.log) self.program_path = os.path.join(utils.get_current_path(), constants.EXE_PROGRAM_NAME) self.new_version = None self.new_version_msg = None self.client_version = None def start(self): self.progressbar.set_values(messages.checking_files, 25) utils.check_local_files(self) if not os.path.isfile(self.program_path): self.program_path = os.path.join(constants.PROGRAM_PATH, constants.EXE_PROGRAM_NAME) self.progressbar.set_values(messages.checking_database, 50) utils.check_database_connection(self) utils.check_default_database_tables(self) utils.check_default_database_configs(self) self.progressbar.set_values(messages.checking_program_updates, 75) self.check_program_updates() self.progressbar.close() self.call_program() def check_program_updates(self): config_sql = ConfigSql(self) rs_config = config_sql.get_configs() if rs_config[0].get("program_version") is None: self.client_version = constants.VERSION else: self.client_version = rs_config[0].get("program_version") if rs_config[0].get("check_program_updates"): new_version_obj = utils.get_new_program_version(self) if new_version_obj.new_version_available: self.new_version = new_version_obj.new_version self.new_version_msg = new_version_obj.new_version_msg self.download_new_program_version() def download_new_program_version(self): program_url = f"{constants.GITHUB_EXE_PROGRAM_URL}{self.new_version}/{constants.EXE_PROGRAM_NAME}" r = requests.get(program_url) if r.status_code == 200: with open(self.program_path, "wb") as outfile: outfile.write(r.content) qtutils.show_message_window( self.log, "info", f"{messages.program_updated}v{self.new_version}") else: qtutils.show_message_window(self.log, "error", messages.error_dl_new_version) self.log.error( f"{messages.error_dl_new_version} {r.status_code} {r}") def call_program(self): code = None try: process = subprocess.run(self.program_path, shell=True, check=True, universal_newlines=True) code = process.returncode except Exception as e: if code is None and hasattr(e, "returncode"): self.log.error( f"cmd:{self.program_path} - code:{e.returncode} - {e}") msg = f"{messages.error_executing_program}{constants.EXE_PROGRAM_NAME}\n"\ f"{messages.error_check_installation}" qtutils.show_message_window(self.log, "error", msg)