def loadFile(self, fileName): file = QFile(fileName) if not file.open(QFile.ReadOnly | QFile.Text): QMessageBox.warning( self, "Pablo", "Cannot read file %s:\n%s." % (fileName, file.errorString())) return inFile = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) if (QFileInfo(fileName).suffix() in ("pbl")): self.paged_text_edit.setHtml(inFile.readAll()) elif (QFileInfo(fileName).suffix() in ("html")): # FIXME: Prevent double setting of the paged_text_edit where necessary # FIXME: Double setting may cause bad UX with large files self.paged_text_edit.setHtml(inFile.readAll()) cleanHtml = HTMLCleaner.clean( self.paged_text_edit.toHtml()).decode("utf-8") self.paged_text_edit.setHtml(cleanHtml) else: self.paged_text_edit.setPlainText(inFile.readAll()) QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) self.statusBar.writeMessageOnStatus("File loaded", 2000)
def __init__(self, app): super(Ui, self).__init__() self.categories = [] self.current_view = StepViews.CATEGORY_VIEW self.app = app ui_file_name = "view.ui" ui_file = QFile(ui_file_name) if not ui_file.open(QIODevice.ReadOnly): print("Cannot open {}: {}".format(ui_file_name, ui_file.errorString())) sys.exit(-1) loader = QUiLoader() self.window = loader.load(ui_file) ui_file.close() if not self.window: print(loader.errorString()) sys.exit(-1) self.auth_manager = AuthManager(self.app) self.auth_manager.access_token_signal.connect(self.get_access_token) self.button = self.window.findChild(QPushButton, "loginToSpotify") self.button.clicked.connect(self.authenticate) self.back_button = self.window.findChild(QPushButton, "back") self.back_button.clicked.connect(self.setup_back_view)
def load_ui_file(path: str): """ Loads the main ".ui"-file from the "ui"-folder and returns the QMainWindow from it. Also initializes an instance of the "ui"-class. Arguments: path : the path to the ui file which should be loaded Returns: QWindow: The loaded Window """ ui_file = QFile(path) if not ui_file.open(QIODevice.ReadOnly): print("Cannot open {}: {}".format(path, ui_file.errorString())) sys.exit(-1) loader = QUiLoader() window = loader.load(ui_file) ui_file.close() if not window: print(loader.errorString()) sys.exit(-1) return window
class View(QMainWindow): def __init__(self, parent=None): QMainWindow.__init__(self) self.load_view() self.central_widget.file_chooser.clicked.connect(self.choose_file) self.setWindowTitle("Glucose Level Converter") self.setCentralWidget(self.central_widget) self.show() def load_view(self): self.ui_file = QFile(UI_FILE_NAME) if not self.ui_file.open(QIODevice.ReadOnly): print("Cannot open {}: {}".format(UI_FILE_NAME, self.ui_file.errorString())) sys.exit(-1) self.loader = QUiLoader() self.central_widget = self.loader.load(self.ui_file) self.ui_file.close() if not self.central_widget: print(self.loader.errorString()) sys.exit(-1) # Returns user inputs if available def get_settings(self): settings = {} settings['chosen_filename'] = self.chosen_filename settings['sample_rate'] = (int)( self.central_widget.sample_rate.currentText()) settings['buffer_size'] = (int)( self.central_widget.buffer_size.currentText()) settings['window_size'] = self.central_widget.window_size.value() settings['is_wavetable'] = self.central_widget.is_wavetable.isChecked() settings['window_type'] = self.central_widget.window_type.currentText() settings['amt_output'] = self.central_widget.amt_files.value() chosen_path, filter_type = QFileDialog.getSaveFileName( self.central_widget, 'Save project', filter="DIA project") if chosen_path: chosen_path += "/samples" Path(chosen_path).mkdir(parents=True, exist_ok=True) settings['output_filename'] = "{}/sample_{}".format( chosen_path, '{}.wav') return settings else: return None def choose_file(self): self.chosen_filename, filter_type = QFileDialog.getOpenFileName( self.central_widget, 'Open file', filter="XLS files (*.xls)") if self.chosen_filename != "": self.central_widget.filename.setText( Path(self.chosen_filename).name) change_enabled_settings(self.central_widget)
def testPhrase(self): #Test loading of quote.txt resource f = open(adjust_filename('quoteEnUS.txt', __file__), "r") orig = f.read() f.close() f = QFile(':/quote.txt') f.open(QIODevice.ReadOnly) #|QIODevice.Text) print("Error:", f.errorString()) copy = f.readAll() f.close() self.assertEqual(orig, copy)
def testPhrase(self): #Test loading of quote.txt resource f = open(adjust_filename('quoteEnUS.txt', __file__), "r") orig = f.read() f.close() f = QFile(':/quote.txt') f.open(QIODevice.ReadOnly) #|QIODevice.Text) print("Error:", f.errorString()) copy = f.readAll() f.close() self.assertEqual(orig, copy)
def load(self): filename, _ = QFileDialog.getOpenFileName(self) if not filename: return file = QFile(filename) if not file.open(QFile.ReadOnly | QFile.Text): QMessageBox.warning( self, "Panel Słoneczny", "nie mógł wczytać pliku %s:\n%s." % (filename, file.errorString())) return inf = QTextStream(file) #QApplication.setOverrideCursor(QtCore.Qt.WaitCursor) self.textEdit.setPlainText(inf.readAll()) #with open(file, 'r') as input: with open('Breslau.txt', 'r') as f: # f = self.nameEdit.text() # f = self.latitudeEdit.text() # f = self.longitudeEdit.text() # f = self.dateandtimeEdit.text() # print(self.nameEdit.text()) # print(self.latitudeEdit.text()) # print(self.longitudeEdit.text()) # print(self.dateandtimeEdit.text()) # for line in f: # print (line, end='') f_name = f.readline() #f_name = self.nameEdit.text() self.text1.setText(f_name) f_lat = f.readline() f_lat = self.latitudeEdit.text() f_lon = f.readline() f_lon = self.longitudeEdit.text() f_dnt = f.readline() f_dnt = self.dateandtimeEdit.text() # for line in f: # if 'name' in line: # self.text1.setText(line) #if 'lat' in line: #self.text1.setText(self.textEdit.setPlainText(inf.readAll())) #self.text1.setText(self.nameEdit.text()) #QApplication.restoreOverrideCursor() #self.setCurrentFile(filename) self.statusBar().showMessage("Wczytano plik", 2000)
def runReport(self, pid, method, par): self.boolDirect = True self.mtypeCall = "report" self.mpid = pid self.mmethod = method self.mparams = par # bparams = self.prepareParams() request = self.prepareRequest() # reply = self.data_request(request, bparams) data = reply.readAll() parseError = QJsonParseError() resultObject = {} resultObject["data"] = "error" document = QJsonDocument.fromJson(data, parseError) if parseError.error == True: resultObject["data"] = "error" else: if document.isObject(): jv = document.object() if jv.__contains__( "result") == True and jv["result"].__class__() == []: #tryton 4.0 #'result': ['pdf', {'base64':wwwwww, '__class__':'bytes'}, False,'Printis'] jre = jv["result"] namesecs = "tryton_" + self.mpid + str( QDateTime.currentMSecsSinceEpoch()) + "." + jre[0] mdir = QDir(self.mDir + QDir.separator() + "tempReports") if mdir.exists() == False: s = QDir(self.mDir) s.mkdir("tempReports") filename = self.mDir + QDir.separator( ) + "tempReports" + QDir.separator() + namesecs file = QFile(filename) if file.open(QIODevice.WriteOnly) == False: #error self.signalResponse.emit(self.mpid, 7, {}) print("error", filename, file.errorString()) else: bafile = QByteArray.fromBase64( jre[1]["base64"].encode()) file.write(bafile) file.close() QDesktopServices.openUrl(QUrl(filename)) else: if document.isArray() == True: self.signalResponse.emit(self.mpid, 7, {}) self.processingData(data, reply)
def __init__(self): ui_file_name = "dialog.ui" ui_file = QFile(ui_file_name) if not ui_file.open(QIODevice.ReadOnly): print("Cannot open {}: {}".format(ui_file_name, ui_file.errorString())) sys.exit(-1) loader = QUiLoader() self.window = loader.load(ui_file) ui_file.close() if not self.window: print(loader.errorString()) sys.exit(-1) self.window.show()
def saveFile(self, fileName): file = QFile(fileName) if not file.open(QFile.WriteOnly | QFile.Text): QMessageBox.warning(self, "MDI", "Cannot write file %s:\n%s." % (fileName, file.errorString())) return False outstr = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) outstr << self.toPlainText() QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) return True
def loadFile(self, fileName): file = QFile(fileName) if not file.open(QFile.ReadOnly | QFile.Text): QMessageBox.warning(self, self.tr("Application"), self.tr("Cannot read file " "{}:\n{}.".format(fileName, file.errorString()))) return inStream = QTextStream(file) QApplication.setOverrideCursor(QtGui.Qt.WaitCursor) self.textEdit.setPlainText(inStream.readAll()) print(inStream.readAll()) QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) self.statusBar().showMessage(self.tr("File loaded"), 2000)
def Build_Widget_From_Ui_File(ui_file_name, loader): """""" ui_file = QFile(ui_file_name) if not ui_file.open(QIODevice.ReadOnly): print("Cannot open {}: {}".format(ui_file_name, ui_file.errorString())) else: widget = loader.load(ui_file, None) ui_file.close() if not widget: print(loader.errorString()) return None else: return widget return None
def saveFile(self, fileName): file = QFile(fileName) if not file.open(QFile.WriteOnly | QFile.Text): QMessageBox.warning( self, "MDI", "Cannot write file %s:\n%s." % (fileName, file.errorString())) return False outstr = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) outstr << self.toPlainText() QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) return True
def loadFile(self, fileName): file = QFile(fileName) if not file.open(QFile.ReadOnly | QFile.Text): QMessageBox.warning(self, "MDI", "Cannot read file %s:\n%s." % (fileName, file.errorString())) return False instr = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) self.setPlainText(instr.readAll()) QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) self.document().contentsChanged.connect(self.documentWasModified) return True
def loadFile(self, fileName): file = QFile(fileName) if not file.open(QFile.ReadOnly | QFile.Text): QMessageBox.warning(self, "MDI", "Cannot read file %s:\n%s." % (fileName, file.errorString())) return False instr = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) self.setPlainText(instr.readAll()) QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) self.document().contentsChanged.connect(self.documentWasModified) return True
def saveFile(self, fileName): file = QFile(fileName) if not file.open(QFile.WriteOnly | QFile.Text): QMessageBox.warning(self, self.tr("Application"), self.tr("Cannot write file %1:\n%2.") .arg(fileName) .arg(file.errorString())) return False out = QTextStream(file) QApplication.setOverrideCursor(QtGui.Qt.WaitCursor) print (self.textEdit.toPlainText()) out << self.textEdit.toPlainText() QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) self.statusBar().showMessage(self.tr("File saved"), 2000) return True
def save(self): filename, _ = QFileDialog.getSaveFileName(self, "Choose a file name", '.', "HTML (*.html *.htm)") if not filename: return file = QFile(filename) if not file.open(QFile.WriteOnly | QFile.Text): QMessageBox.warning(self, "Dock Widgets", "Cannot write file %s:\n%s." % (filename, file.errorString())) return out = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) out << self.textEdit.toHtml() QApplication.restoreOverrideCursor() self.statusBar().showMessage("Saved '%s'" % filename, 2000)
def __init__(self): ui_file_name = "gui.ui" ui_file = QFile(ui_file_name) if not ui_file.open(QIODevice.ReadOnly): print("Cannot open {}: {}".format(ui_file_name, ui_file.errorString())) sys.exit(-1) loader = QUiLoader() self.window = loader.load(ui_file) ui_file.close() if not self.window: print(loader.errorString()) sys.exit(-1) self.window.show() self.turn = 0 self.board = np.array([[0, 0, 0], [0, 0, 0], [0, 0, 0]]) #buttons self.window.ox_1.clicked.connect( lambda: self.turns('1')) #tu musi byc lambda self.window.ox_2.clicked.connect(lambda: self.turns('2')) self.window.ox_3.clicked.connect(lambda: self.turns('3')) self.window.ox_4.clicked.connect(lambda: self.turns('4')) self.window.ox_5.clicked.connect(lambda: self.turns('5')) self.window.ox_6.clicked.connect(lambda: self.turns('6')) self.window.ox_7.clicked.connect(lambda: self.turns('7')) self.window.ox_8.clicked.connect(lambda: self.turns('8')) self.window.ox_9.clicked.connect(lambda: self.turns('9')) #reset self.window.pbReset.clicked.connect(lambda: self.reset()) #set winner labels self.window.player1_points.setText("0") self.window.player2_points.setText("0") self.player_1_points = 0 self.player_2_points = 0
def saveFile(self, fileName): file = QFile(fileName) if not file.open(QFile.WriteOnly | QFile.Text): QMessageBox.warning( self, "Pablo", "Cannot write file %s:\n%s." % (fileName, file.errorString())) return False outFile = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) if (QFileInfo(fileName).suffix() in ("pbl", "html")): # outFile << self.paged_text_edit.toHtml() outFile << HTMLCleaner.clean(self.paged_text_edit.toHtml()) else: outFile << self.paged_text_edit.toPlainText() QApplication.restoreOverrideCursor() self.setCurrentFile(fileName) self.statusBar.showMessage("File saved", 2000) return True
def load_file(self, file_name): """ Load file into current instance. :param file_name: whatever QFileDialog.getOpenFileName returns (abs or canonical path?), or canonical :return: """ file = QFile(file_name) if not file.open(QFile.ReadOnly | QFile.Text): QMessageBox.warning( self, "OneHandTextEdit", "Cannot read file {}:\n{}.".format(file_name, file.errorString())) return instr = QTextStream(file) QApplication.setOverrideCursor(Qt.WaitCursor) self.text_edit.setPlainText(instr.readAll()) QApplication.restoreOverrideCursor() self.set_current_file(file_name) self.statusBar().showMessage("File loaded", 2000)
def importDips(self, fileURLsStr): self.dipModel.reset() for filePath in fileURLsStr: file = QFile(QUrl(filePath).toLocalFile()) if (not file.open(QIODevice.ReadOnly)): print("impossible to open file \" " + filePath + " \", error is:" + file.errorString()) continue while not file.atEnd(): line = str(file.readLine(), encoding='utf-8') lineCells = line.split(',') try: float(lineCells[0]) except ValueError: continue dip = Dipole.initByComposent(xPos=float(lineCells[0]), yPos=float(lineCells[1]), zPos=float(lineCells[2]), quaternion=anglesSphToQuaternion( float(lineCells[3]), float(lineCells[4])), parent=self.dipModel) self.dipModel.append(dip)
def ui_file_tutorial_2(): from PySide2.QtCore import QFile, QIODevice from PySide2.QtUiTools import QUiLoader app = QApplication(sys.argv) ui_file_name = './mainwindow.ui' ui_file = QFile(ui_file_name) if not ui_file.open(QIODevice.ReadOnly): print('Cannot open {}: {}'.format(ui_file_name, ui_file.errorString())) sys.exit(-1) loader = QUiLoader() window = loader.load(ui_file) ui_file.close() if window: window.show() sys.exit(app.exec_()) else: print(loader.errorString()) sys.exit(-1)
def save(self): filename, _ = QFileDialog.getSaveFileName(self, "Zapisywanie jako", '.', "Dokumenty textowe(*.txt)") if not filename: return file = QFile(filename) if not file.open(QFile.WriteOnly | QFile.Text): QMessageBox.warning( self, "Panel Słoneczny", "nie mógł zapisać pliku %s:\n%s." % (filename, file.errorString())) return out = QTextStream(file) #QApplication.setOverrideCursor(Qt.WaitCursor) #out << self.textEdit.toPlainText() out << self.nameEdit.text() + "\n" + self.latitudeEdit.text( ) + "\n" + self.longitudeEdit.text( ) + "\n" + self.dateandtimeEdit.text() #out << "self.text1.setText("+self.nameEdit.text()+")" #QApplication.restoreOverrideCursor() self.statusBar().showMessage("Zapisano w '%s'" % filename, 2000)
window.label_2.setText("Folder where to store cards") window.label_3.setText("Zip or unzip required !!!") window.pushButton.setText("Русский") window.pushButton_2.setText("Start") language = "RU" if __name__ == "__main__": global window app = QApplication(sys.argv) ui_file_name = put + "222.ui" ui_file = QFile(ui_file_name) if not ui_file.open(QIODevice.ReadOnly): print("Cannot open {}: {}".format(ui_file_name, ui_file.errorString())) sys.exit(-1) loader = QUiLoader() window = loader.load(ui_file) ui_file.close() if not window: print(loader.errorString()) sys.exit(-1) sas2() window.show() window.pushButton_2.clicked.connect(sas) window.pushButton.clicked.connect(sas2) window.progressBar.setValue(0) window.pushButton_3.clicked.connect(ButtonWay) window.pushButton_4.clicked.connect(ButtonWay_2)
def __init__(self): # 加载 ui ui_file_name = "./UI/labelKPs.ui" ui_file = QFile(ui_file_name) if not ui_file.open(QIODevice.ReadOnly): print("Cannot open {}: {}".format(ui_file_name, ui_file.errorString())) sys.exit(-1) loader = QUiLoader() self.ui = loader.load(ui_file) ui_file.close() if not self.ui: print(loader.errorString()) sys.exit(-1) # self.ui = QUiLoader().load("./UI/labelKPs.ui") self.ui.setWindowIcon(QIcon('hand_icon.ico')) # 定义控件,方便补全代码 self.statusBar = self.ui.statusbar # 状态条,用于显示提示信息,可设置信息时效ms self.statusLabel = QLabel("源码:") self.statusURL = QLabel("<a href=\"https://github.com/Runki2018/LabelKPs\">访问GitHub") self.statusURL.setOpenExternalLinks(True) self.statusBar.addPermanentWidget(self.statusLabel) self.statusBar.addPermanentWidget(self.statusURL) # button: self.loadButton = self.ui.loadButton # 图片加载目录 self.jsonButton = self.ui.jsonButton # 选择json标注文件 self.jsonButton.setEnabled(False) # 只有选择了图像加载路径后,才能选择标注保持路径 self.saveButton = self.ui.saveButton # 保存标注——当图片数量大的时候,保存时间较慢,有几秒。 self.preButton = self.ui.preButton # 上一张 self.nextButton = self.ui.nextButton # 下一张 self.goButton = self.ui.goButton # 跳转 self.buttonEnable = True # 在点击加载目录前,其他切换图片状态的button处于禁用状态。 # self.reverseButtonEnable() # 控件状态取反 self.setButtonDisable() # radiobutton: # self.bbox_radioButton = self.ui.bbox_radioButton # 画边界框单选框 # self.kps_radioButton = self.ui.kps_radioButton # 画关键点单选框 self.show_radioButton = self.ui.radioButton_show # 显示骨架 self.hide_radioButton = self.ui.radioButton_hide # 隐藏骨架 # checkBox self.is_occlusion = self.ui.is_occlusion # 存在部分关键点被遮挡,默认为真 self.blur = self.ui.blur # 手部是否模糊,默认为假 # listWidget: self.listWidget_points = self.ui.listWidget_points # 显示当前关键点坐标的列表框 self.listWidget_files = self.ui.listWidget_files # 显示图片文件的列表框 # graphicsView: self.graphicsView = self.ui.graphicsView # 图片框 self.scene = MyScene(self.listWidget_points) # 场景,把列表控件传入,便于更新列表项,也可以用信号进制实现 self.graphicsView.setScene(self.scene) # 滚动条 self.scrollBar = self.ui.horizontalScrollBar # 用于调整骨架线条的粗细或透明度 self.scrollBar.setMaximum(20) # length = Max - Min + PageStep self.scrollBar.setMinimum(1) self.scrollBar.setPageStep(1) self.scrollBar.setValue(self.scene.bonePen_width) # 设滚动条初始位置 与 场景骨架笔宽初始值一致 # label: self.process_number = self.ui.number_label # 显示当前已处理的图片数/总图片数 self.example_caption = self.ui.label_caption self.example_picture = self.ui.label_picture self.example_caption.setText("手腕1个点,其余手指各4个点,共21个点。\n" "改点的两种鼠标操作方式:\n 1、左键点击后拖拽,释放左键\n" " 2、按左键点击选中,鼠标移动至合适位置后,按右键释放") self.example_picture.setPixmap(QPixmap("./Example.png")) self.label_classes = self.ui.label_classes # lineEdit self.lineEdit = self.ui.lineEdit # 输入框,用于输入将跳转的图片数 # 定义事件 self.loadButton.clicked.connect(self.load_dir) # 加载图片文件夹 self.jsonButton.clicked.connect(self.chooseLabelFile) # 选择标注文件 self.saveButton.clicked.connect(self.save_label) # 保存标注文件 self.preButton.clicked.connect(self.pre_img) # 上一张图片 self.nextButton.clicked.connect(self.next_img) # 下一张图片 self.goButton.clicked.connect(self.go_img) # 下一张图片 self.show_radioButton.clicked.connect(self.showBoneLine) # 显示骨架 self.hide_radioButton.clicked.connect(self.hideBoneLine) # 隐藏骨架 self.scrollBar.valueChanged.connect(self.scrollEvent) # 调整骨架粗细 # 加载和保持标注信息 self.label = None # 定义实例变量 self.load_dirpath = "" self.save_file = "" self.img_number = 0 # 图片总数 self.index = 0 # 已处理的图片数 self.points_list = [] # 当前手的关键点列表(未经修改)
def rechargeNet(self, preferences, username): #version 1.1 up thesamodule data = self.m_qjsonnetwork.callDirect( "version internal", "model.thesamodule.config.search_read", [[], 0, 1, [], ["internal_version"], preferences]) if not data["data"] == "error": self.internal_version = data["data"]["result"][0][ "internal_version"] if float(self.internal_version) > 1.0: data = self.m_qjsonnetwork.callDirect( "cachedel", "model.thesamodule.config.search_read", [[], 0, 1, [], ["deletecache"], preferences]) if not data["data"] == "error": if data["data"]["result"][0]["deletecache"] == True: self.actionCache_ = "deleteOnCompleted" else: self.actionCache_ = "notDelete" sysdir = QDir(self.mDir + QDir.separator() + _dirSystem) DIR_QML_SYS = sysdir.path() DIR_QML_SYS_LOST = DIR_QML_SYS + QDir.separator() + "lost" sysdirlost = QDir(DIR_QML_SYS_LOST) #revisar folder systemnet if sysdir.exists() == False: s = QDir(self.mDir) s.mkdir(_dirSystem) #revisar folder systemnet lost if sysdirlost.exists() == False: sl = QDir(DIR_QML_SYS) sl.mkdir("lost") #find all files en folder net listSysFiles = os.listdir(DIR_QML_SYS) if "lost" in listSysFiles: listSysFiles.remove("lost") # data = {} data["data"] = "error" if float(self.internal_version) > 1.1: data = self.m_qjsonnetwork.callDirect( "findforuser", "model.thesamodule.usersfolder.search_read", [[ "AND", ["users.user.name", "=", username], ["activefolder", "=", True] ], 0, 1, [], ["qmlfiles"], preferences]) if not data["data"] == "error": result = data["data"]["result"] if len(result) > 0: idfiles = result[0]["qmlfiles"] data = self.m_qjsonnetwork.callDirect( "rechargeNetStep1", "model.thesamodule.thesamodule.read", [idfiles, [ "checksum", "filename", ], preferences]) if len(idfiles) == 0: self.m_qjsonnetwork.signalResponse.emit( "systemnet", 15, {"noqmlfiles": ""}) else: #buscar default data = self.m_qjsonnetwork.callDirect( "findforuser", "model.thesamodule.usersfolder.search_read", [[ "AND", ["type", "=", "default"], ["activefolder", "=", True] ], 0, 1, [], ["qmlfiles"], preferences]) if not data["data"] == "error": result = data["data"]["result"] if len(result) > 0: idfiles = result[0]["qmlfiles"] data = self.m_qjsonnetwork.callDirect( "rechargeNetStep1", "model.thesamodule.thesamodule.read", [ idfiles, [ "checksum", "filename", ], preferences ]) if len(idfiles) == 0: self.m_qjsonnetwork.signalResponse.emit( "systemnet", 15, {"noqmlfiles": ""}) else: self.m_qjsonnetwork.signalResponse.emit( "systemnet", 12, {"noqmlfiles": ""}) else: self.m_qjsonnetwork.signalResponse.emit( "systemnet", 13, {"error": ""}) else: self.m_qjsonnetwork.signalResponse.emit( "systemnet", 13, {"error": ""}) else: data = self.m_qjsonnetwork.callDirect( "rechargeNetStep1", "model.thesamodule.thesamodule.search_read", [[], 0, 1000, [], ["checksum", "filename"], preferences]) if not data["data"] == "error": resultnet = data["data"]["result"] mapnet = {} mapids = {} listNetFiles = [] for file in resultnet: mapnet[file["filename"]] = file["checksum"] mapids[file["filename"]] = file["id"] listNetFiles.append(file["filename"]) #buscar faltantes en system y los updates #buscar los que ya no deben estar mapsysnet = {} listToUpdate = set() #new or update listToErase = [] for file in listSysFiles: try: with open(DIR_QML_SYS + QDir.separator() + file, "rb") as binary_file: data = binary_file.read() chek = hashlib.md5(data).hexdigest() mapsysnet[file] = chek except: listToUpdate.add(file) for file in listNetFiles: if file in listSysFiles: if mapnet[file] != mapsysnet[file]: listToUpdate.add(file) # update else: listToUpdate.add(file) # new for file in listSysFiles: if not file in listNetFiles: listToErase.append(file) # erase listToUpdate = list(listToUpdate) ids = [] for file in listToUpdate: ids.append(mapids[file]) data = self.m_qjsonnetwork.callDirect( "rechargeNetStep2", "model.thesamodule.thesamodule.read", [ids, [ "filebinary", "filename", ], preferences]) errors = [] if not data["data"] == "error": resultnet = data["data"]["result"] for file in resultnet: filename = DIR_QML_SYS + QDir.separator( ) + file["filename"] qfile = QFile(filename) if qfile.open(QIODevice.WriteOnly) == False: errors.append(filename) print("error", filename, qfile.errorString()) else: print("update", file["filename"]) bafile = QByteArray.fromBase64( file["filebinary"]["base64"].encode()) qfile.write(bafile) qfile.close() if len(errors) > 0: self.m_qjsonnetwork.signalResponse.emit( "systemnet", 33, {"error": errors}) return False #erase for file in listToErase: print("moviendo", file) shutil.move(DIR_QML_SYS + QDir.separator() + file, DIR_QML_SYS_LOST + QDir.separator() + file) return True else: #erase all files, no conexion con thesa module for file in listSysFiles: print("moviendo", file) shutil.move(DIR_QML_SYS + QDir.separator() + file, DIR_QML_SYS_LOST + QDir.separator() + file) self.m_qjsonnetwork.signalResponse.emit("systemnet", 34, {"error": ""}) return False