def run(self): """Overrided QThread method .. warning:: This method is the only one to be executed in the thread. SQLite objects created in a thread can only be used in that same thread; so no use of self.conn is allowed elsewhere. """ self._stop = False if os.path.exists(self.db_filename): os.remove(self.db_filename) self.conn = get_sql_connection(self.db_filename) try: # Import the file for value, message in async_import_file( self.conn, self.filename, pedfile=self.pedfile, project=self.project_settings): if self._stop: self.conn.close() break # Send progression self.progress_changed.emit(value, message) except BaseException as e: self.progress_changed.emit(0, str(e)) self._stop = True LOGGER.exception(e) raise e finally: # Send status (Send True when there is no error) self.finished_status.emit(not self._stop)
def open(self, filepath): """Open the given db/project file .. note:: Called at the end of a project creation by the Wizard, and by Open/Open recent projects slots. :param filepath: Path of project file. :type filepath: <str> """ if not os.path.isfile(filepath): return # Save directory self.app_settings.setValue("last_directory", os.path.dirname(filepath)) # Create connection self.conn = get_sql_connection(filepath) try: # DB version filter db_version = get_metadatas(self.conn).get("cutevariant_version") if db_version and parse_version(db_version) < parse_version( MIN_AUTHORIZED_DB_VERSION): # Refuse to open blacklisted DB versions # Unversioned files are still accepted QMessageBox.critical( self, self.tr("Error while opening project"), self.tr("File: {} is too old; please create a new project." ).format(filepath), ) return self.open_database(self.conn) self.save_recent_project(filepath) except sqlite3.OperationalError as e: LOGGER.exception(e) QMessageBox.critical( self, self.tr("Error while opening project"), self.tr( "File: {}\nThe following exception occurred:\n{}").format( filepath, e), ) return # Show the project name in title and in status bar self.setWindowTitle("Cutevariant - %s" % os.path.basename(filepath)) self.status_bar.showMessage(self.tr("{} opened").format(filepath))
# if "variant_view" in self.mainwindow.plugins: # main_view = self.mainwindow.plugins["variant_view"] # print(main_view) # sql.update_variant(self.conn, updated) # def show_menu(self, pos: QPoint): # """Show context menu associated to the current variant""" # if not self.current_variant: # return # self.context_menu.popup(self.current_variant, self.view.mapToGlobal(pos)) if __name__ == "__main__": import sys app = QApplication(sys.argv) conn = get_sql_connection("/home/schutz/Dev/cutevariant/examples/test.db") w = VariantInfoWidget() w.conn = conn variant = sql.get_one_variant(conn, 1) w.current_variant = variant w.show() app.exec_()