예제 #1
0
 def isRunnableFile(self, fileName):
     result = False
     if (fileName is not None) and (fileName != ""):
         fInfo = QFileInfo(fileName)
         if (fInfo.exists()) and (fInfo.isExecutable()):
             result = True
     return result
예제 #2
0
    def selectFile(self, new, old):
        if (self.resetting):
            self.resetting = False
            return
        if len(new.indexes()) == 0:
            self.clearSelection()
            self.currentFile = ""
            self.readOnly(True)
            return
        newSelection = self.files.filePath(new.indexes()[0])
        self.settings.setValue("ui/snippeteditor/selected", newSelection)
        if QFileInfo(newSelection).isDir():
            self.readOnly(True)
            self.clearSelection()
            self.currentFile = ""
            return

        if old and old.length() > 0:
            oldSelection = self.files.filePath(old.indexes()[0])
            if not QFileInfo(oldSelection).isDir() and self.snippetChanged():
                question = QMessageBox.question(self, self.tr("Discard"), self.tr("Snippet changed. Discard changes?"))
                if question != QMessageBox.StandardButton.Yes:
                    self.resetting = True
                    self.tree.selectionModel().select(old, QItemSelectionModel.ClearAndSelect | QItemSelectionModel.Rows)
                    return False

        self.currentFile = newSelection
        self.loadSnippet()
예제 #3
0
    def __init__(self):
        super(ManualWindow, self).__init__()

        self.setWindowTitle('QAX Manual')

        icon_info = QFileInfo(app_info.app_icon_path)
        self.setWindowIcon(QIcon(icon_info.absoluteFilePath()))

        self.toolbar = QToolBar()
        self.addToolBar(self.toolbar)
        self.back_button = QPushButton()
        self.back_button.setIcon(qta.icon('fa.arrow-left'))
        self.back_button.clicked.connect(self.back)
        self.toolbar.addWidget(self.back_button)
        self.forward_button = QPushButton()
        self.forward_button.setIcon(qta.icon('fa.arrow-right'))
        self.forward_button.clicked.connect(self.forward)
        self.toolbar.addWidget(self.forward_button)

        self.address_line_edit = QLineEdit()
        self.address_line_edit.returnPressed.connect(self.load)
        self.address_line_edit.setVisible(False)
        self.toolbar.addWidget(self.address_line_edit)

        self.web_engine_view = QWebEngineView()
        self.web_engine_view.setZoomFactor(2.0)
        self.setCentralWidget(self.web_engine_view)
        initialUrl = self.docs_url()

        self.address_line_edit.setText(str(initialUrl))
        self.web_engine_view.load(QUrl(initialUrl))
        self.web_engine_view.page().urlChanged.connect(self.urlChanged)
예제 #4
0
파일: main.py 프로젝트: nwagu/pablo
    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)
예제 #5
0
 def select_file(self):
     self.file_name = QFileDialog.getOpenFileName(self, "Select file",
                                                  self.directory,
                                                  "Images (*.png *.jpg)")[0]
     self.ui.lineEdit.setText(self.file_name)
     f = QFileInfo(self.file_name)
     self.directory = f.absolutePath()
예제 #6
0
    def collectSelectedFolderFiles(self):
        folders, files, suffixes = [], [], []
        for index in self.resultView.selectedIndexes():
            if index.column() != 0:
                # 忽略第二列的selection
                continue
            item = self.sortFilterModel.data(index, Qt.UserRole)
            if 'folder' == item.type:
                folders.append(item.name)
            elif 'file' == item.type:
                files.append(item.name)
            elif 'suffix' == item.type:
                suffixes.append(item.name[2:])

        # 将后缀符合选中条件的文件添加到files中
        path = self.pathInputBox.text()
        iterator = QDirIterator(path,
                                filter=QDir.Files | QDir.Dirs | QDir.Hidden
                                | QDir.NoDotAndDotDot,
                                flags=QDirIterator.Subdirectories)
        folderPaths, filePaths = set(), set()
        while iterator.hasNext():
            file = iterator.next()
            if '.' == file[-1] or '..' == file[-2]:
                continue
            fileInfo = QFileInfo(file)
            if fileInfo.isDir():
                if fileInfo.fileName() in folders:
                    folderPaths.add(fileInfo.absoluteFilePath())
            if fileInfo.isFile():
                if fileInfo.fileName() in files:
                    filePaths.add(fileInfo.absoluteFilePath())
                if fileInfo.suffix() in suffixes:
                    filePaths.add(fileInfo.absoluteFilePath())
        return sorted(folderPaths), filePaths
예제 #7
0
    def performUpload(self, metadataList, authControl, ht_id_path, metadata):
        self.interrupt = False

        # Check that all files initially exist. This is a quick sanity check. The user could
        # *still* delete a file out from under the codes.
        for i in tqdm(range(len(metadataList)), desc="Checking Files"):
            if not QFileInfo.exists(metadataList[i]):
                self.currentlyUploading.emit("File Missing: " +
                                             metadataList[i].split("/")[-1])
                self.interrupt = True

        for i in tqdm(range(len(metadataList)), desc="Uploading Files"):
            if self.interrupt:
                break

            if not QFileInfo.exists(metadataList[i]):
                self.currentlyUploading.emit("File Missing: " +
                                             metadataList[i].split("/")[-1])
                break
            else:
                self.currentlyUploading.emit("Currently uploading: " +
                                             metadataList[i].split("/")[-1])
                ht_requests.upload_file(authControl, metadataList[i], 'user',
                                        None, ht_id_path, metadata)
                self.currentUploadDone.emit(i + 1)
        self.allUploadsDone.emit()
예제 #8
0
    def savePushed(self):
        """
        Let the user select a TCX file to save to. Store the data.
        """
        self.saveButton.setEnabled(False)
        tcx_dir_key = "file/tcx_dir"
        tcx_dir = self.settings.value(tcx_dir_key, ".")
        use_file_date = self.useFileDate.isChecked()

        if use_file_date:
            local_time = self.in_file_info.created().toPython()
        else:
            local_time = self.workoutTime.dateTime().toPython()

        utc_zone = tz.tzutc()
        local_zone = tz.tzlocal()
        local_time = local_time.replace(tzinfo=local_zone)
        start_time = local_time.astimezone(utc_zone)

        dialog = QFileDialog(self)
        dialog.selectFile(self.in_file_info.baseName() + ".tcx")
        dialog.setDirectory(tcx_dir)
        dialog.setFileMode(QFileDialog.AnyFile)
        dialog.setAcceptMode(QFileDialog.AcceptSave)

        filename = None

        if dialog.exec_():
            filenames = dialog.selectedFiles()

            if len(filenames):
                filename = filenames[0]

        if not filename:
            # User cancel
            return

        power_adjust = self.powerAdjustment.value()
        self.mpower.set_power_adjust(power_adjust)
        self.mpower.set_interpolation(self.checkBoxInterpolate.isChecked())

        mass = self.doubleSpinBoxRiderWeight.value(
        ) + self.doubleSpinBoxBikeWeight.value()

        if self.comboBoxUnits.currentText() == "lbs":
            mass *= self.lbs_to_kg

        self.mpower.set_physics(self.checkBoxPhysics.isChecked(), mass)

        thread_result = {'message': None, 'status': False}
        t = threading.Thread(target=self.saveThread,
                             args=(filename, start_time, thread_result))
        t.start()
        t.join()
        self.alert(thread_result['message'])

        info = QFileInfo(filename)
        tcx_dir = info.absoluteDir().path()
        self.settings.setValue(tcx_dir_key, tcx_dir)
예제 #9
0
파일: main.py 프로젝트: nick-andri/stage
 def ajout_cv_sortie(self, fileNames):
     self.ui.listW_cv_sortie.clear()
     for file in fileNames:
         fInfo = QFileInfo(file)
         fShortName = fInfo.baseName()
         item = QListWidgetItem(fShortName)
         self.ui.listW_cv_sortie.addItem(item)
         item.setToolTip(file)
예제 #10
0
파일: main.py 프로젝트: Ausloos/lect_video
 def ajouterMedia(self):
     nomMedia = QFileDialog.getOpenFileName(
         self, "ChoixFilm", "c:/Users/AELION/PycharmProjects/lect_video",
         "(*.avi *.mp4)")
     fInfo = QFileInfo(nomMedia[0])
     fShortName = fInfo.baseName()
     item = QListWidgetItem(fShortName)
     item.setToolTip(nomMedia[0])
     self.ui.listWidget.addItem(item)
예제 #11
0
 def ajoutListe(self):
     print("Ajout dans playlist")
     newFile = QFileDialog.getOpenFileName(self, "Choix Film", "/home",
                                           "Movie Files (*.avi, *.mp4)")
     fInfo = QFileInfo(newFile[0])
     fShortName = fInfo.baseName()
     newMovie = QListWidgetItem(fShortName)
     newMovie.setToolTip(newFile[0])
     self.ui.listWidget.addItem(newMovie)
예제 #12
0
    def pbPlusCtrl(self):

        fileName = QFileDialog.getOpenFileName(self,"choix film","/home","Film(*.avi *.mp4)")
        fInfo = QFileInfo(fileName[0])
        fShortName = fInfo.baseName()
        item = QListWidgetItem(fShortName)
        item.setToolTip(fileName[0])
        self.ui.listWidget.addItem(item)
        print(item.toolTip().title())
예제 #13
0
 def save_image(self):
     if not self.pixmap:
         return
     file_name = QFileDialog.getSaveFileName(self, "Save file",
                                             self.directory,
                                             "Images (*.png *.jpg)")[0]
     info = QFileInfo(file_name)
     if not info.suffix():
         file_name += ".png"
     self.pixmap.save(file_name)
예제 #14
0
 def ajouter2(self):
     nomMedia = QFileDialog.getOpenFileName(
         self, "Choix Film", "C:/Users/AELION/PycharmProjects/videoLHector",
         "Movie Files (*.avi *.mp4)")
     fInfo = QFileInfo(nomMedia[0])
     fShortName = fInfo.baseName()
     print(fShortName)
     item = QListWidgetItem(fShortName)
     item.setToolTip(nomMedia[0])
     self.ui.listWidget.addItem(item)
예제 #15
0
    def populate_template_model(self, populate):
        """Add all tool template specs to a single QTreeView.
        If items is None or an empty list, model is cleared.

        Args:
            populate (bool): False to clear model, True to populate.
        """
        self.template_model.clear()
        self.template_model.setHorizontalHeaderItem(
            0, QStandardItem("Template specification"))  # Add header
        # Add category items
        source_file_category_item = QStandardItem("Source files")
        input_category_item = QStandardItem("Input files")
        opt_input_category_item = QStandardItem("Optional input files")
        output_category_item = QStandardItem("Output files")
        self.template_model.appendRow(source_file_category_item)
        self.template_model.appendRow(input_category_item)
        self.template_model.appendRow(opt_input_category_item)
        self.template_model.appendRow(output_category_item)
        if populate:
            if self.source_file_model.rowCount() > 0:
                for row in range(self.source_file_model.rowCount()):
                    text = self.source_file_model.item(row).data(
                        Qt.DisplayRole)
                    qitem = QStandardItem(text)
                    qitem.setFlags(~Qt.ItemIsEditable)
                    qitem.setData(QFileIconProvider().icon(QFileInfo(text)),
                                  Qt.DecorationRole)
                    source_file_category_item.appendRow(qitem)
            if self.input_file_model.rowCount() > 0:
                for row in range(self.input_file_model.rowCount()):
                    text = self.input_file_model.item(row).data(Qt.DisplayRole)
                    qitem = QStandardItem(text)
                    qitem.setFlags(~Qt.ItemIsEditable)
                    qitem.setData(QFileIconProvider().icon(QFileInfo(text)),
                                  Qt.DecorationRole)
                    input_category_item.appendRow(qitem)
            if self.opt_input_file_model.rowCount() > 0:
                for row in range(self.opt_input_file_model.rowCount()):
                    text = self.opt_input_file_model.item(row).data(
                        Qt.DisplayRole)
                    qitem = QStandardItem(text)
                    qitem.setFlags(~Qt.ItemIsEditable)
                    qitem.setData(QFileIconProvider().icon(QFileInfo(text)),
                                  Qt.DecorationRole)
                    opt_input_category_item.appendRow(qitem)
            if self.output_file_model.rowCount() > 0:
                for row in range(self.output_file_model.rowCount()):
                    text = self.output_file_model.item(row).data(
                        Qt.DisplayRole)
                    qitem = QStandardItem(text)
                    qitem.setFlags(~Qt.ItemIsEditable)
                    qitem.setData(QFileIconProvider().icon(QFileInfo(text)),
                                  Qt.DecorationRole)
                    output_category_item.appendRow(qitem)
예제 #16
0
    def send_email(self):
        file_name, email_address = self.dialog.get_data()
        info = QFileInfo(file_name)
        if not info.suffix():
            file_name += ".png"
        file_name = os.path.join(os.getcwd(), "tmp", file_name)
        self.pixmap.save(file_name)

        utils.send_mail("", [email_address], "Image",
                        "Image sent from Raspberry Pi", file_name)
        os.remove(file_name)
예제 #17
0
    def _createDocumentIndex(self, canonicalName):

        fileName = QFileInfo(canonicalName).fileName()
        canonicalIndex = 0

        for subWindow in self._documentArea.subWindowList():
            if QFileInfo(subWindow.widget().canonicalName()).fileName() == fileName:
                if subWindow.widget().canonicalIndex() > canonicalIndex:
                    canonicalIndex = subWindow.widget().canonicalIndex()

        return canonicalIndex + 1
예제 #18
0
    def ajouterMedia2(self):
        nomMedia = QFileDialog.getOpenFileName(self, "Choix Film", "c:/",
                                               "Movie Files (*.avi *.mp4)")
        if nomMedia[
                0] == "":  #si aucun fichier selectionné (si "Annuler" est sélectionné)
            return  # return + vide => sortie de la fonction

        fInfo = QFileInfo(nomMedia[0])
        fShortName = fInfo.baseName()
        item = QListWidgetItem(fShortName)
        item.setToolTip(nomMedia[0])
        self.ui.listeLecture.addItem(item)
예제 #19
0
    def ajouterMedia2(self):
        nomMedia = QFileDialog.getOpenFileName(self, "Choix Film", "c:/",
                                               "Movie Files (*.avi *.mp4)")

        if nomMedia[0] == "":  #si aucun fichier selectionné
            return

        fInfo = QFileInfo(nomMedia[0])
        fShortName = fInfo.baseName()
        item = QListWidgetItem(fShortName)
        item.setToolTip(nomMedia[0])
        self.ui.lPlaylist.addItem(item)
예제 #20
0
 def addClicked(self):
     print("+")
     nomMedia = QFileDialog.getOpenFileName(
         self, "Choix Film",
         "C:/Users/AELION/Desktop/Aelion/PyCharm/VideoProject",
         "Movie files (*.avi *.mp4)")
     # item = QListWidgetItem(nomMedia[0])
     # self.ui.wList.addItem(item)
     fInfo = QFileInfo(nomMedia[0])
     fShortName = fInfo.baseName()
     item = QListWidgetItem(fShortName)
     item.setToolTip(nomMedia[0])
     self.ui.wList.addItem(item)
예제 #21
0
 def on_downloadRequested(self, download):
     old_path = download.url().path()  # download.path()
     suffix = QFileInfo(old_path).suffix()
     if (suffix.lower() in ["zip", "svd", "pack", "patched"]):
         log_debug(f"SVD Browser: Downloading {str(download.url())}")
         if suffix.lower() == "svd" or suffix.lower() == "patched":
             download.setDownloadDirectory(svdPath)
             download.accept()
         else:
             with TemporaryDirectory() as tempfolder:
                 log_debug(
                     f"SVD Browser: Downloading pack/zip to {tempfolder}")
                 fname = download.url().fileName()
                 r = requests.get(download.url().toString(),
                                  allow_redirects=True)
                 dlfile = os.path.join(tempfolder, fname)
                 open(dlfile, "wb").write(r.content)
                 '''
                 # TODO: See if the original QT Downloader can be fixed since it would
                 # help with situations where the user entered credentials in the browser.
                 download.setDownloadDirectory(tempfolder)
                 download.accept()
                 while not download.finished:
                     import time
                     time.sleep(100)
                 '''
                 if fname.endswith(".zip") or fname.endswith(".pack"):
                     destFolder = os.path.join(svdPath,
                                               os.path.splitext(fname)[0])
                     log_debug(f"SVD Browser: Creating {destFolder}")
                     if not os.path.exists(destFolder):
                         os.mkdir(destFolder)
                     with ZipFile(dlfile, 'r') as zipp:
                         for ifname in zipp.namelist():
                             if ifname.endswith(".svd"):
                                 info = zipp.getinfo(ifname)
                                 info.filename = os.path.basename(
                                     info.filename)
                                 log_debug(
                                     f"SVD Browser: Extracting {info.filename} from {ifname}"
                                 )
                                 zipp.extract(info, path=destFolder)
                 else:
                     #Move file into place
                     shutil.move(dlfile, svdPath)
     else:
         show_message_box(
             "Invalid file",
             "That download does not appear to be a valid SVD/ZIP/PACK file."
         )
     download.cancel()
예제 #22
0
    def generateDirectorys(self, _dir):
        sourceDir = QFileInfo(_dir).dir()
        if (sourceDir.exists()):
            return

        tempDir = ''
        directorys = sourceDir.path().split("/")

        for i in range(0, len(directorys), 1):
            tempDir += directorys[i] + "/"

            dir = QDir(tempDir)
            if (dir.exists() == False):
                dir.mkdir(tempDir)
예제 #23
0
파일: main.py 프로젝트: nick-andri/stage
    def ajoutCv_liste(self):

        fileNames = QFileDialog.getOpenFileNames(self, "choix cv",
                                                 "C:/Users/AELION/Desktop")
        for file in fileNames[0]:
            fInfo = QFileInfo(file)

            fShortName = fInfo.baseName()
            item = QListWidgetItem(fShortName)
            item.setToolTip(file)
            if item.toolTip() not in self.listeCv:

                self.ui.listW_cv_entree.addItem(item)
                self.listeCv.append(file)
예제 #24
0
    def loadPushed(self):
        """
        Let the user select a CSV file. Load if possible.
        """
        csv_dir_key = "file/csv_dir"
        csv_dir = self.settings.value(csv_dir_key, ".")
        (filename, filter) = QFileDialog.getOpenFileName(
            self, "Open CSV", csv_dir, "CSV Files (*.csv);;All Files (*)")

        self.saveButton.setEnabled(False)
        self.labelDuration.setText("---")
        self.labelAveragePower.setText("---")
        self.labelMaxPower.setText("---")
        self.labelEquipment.setText("---")

        if filename:
            try:
                self.mpower = MPower(filename)
                self.mpower.load_csv()
            except Exception:
                oops = traceback.format_exc().splitlines()
                self.alert("\nThere was an error."
                           "\nPlease report this to [email protected]."
                           "\nInclude your file in the email."
                           "\n\nVersion %s"
                           "\n\n%s\n%s\n%s\n" %
                           (version.version, oops[-3].strip(),
                            oops[-2].strip(), oops[-1].strip()))
            else:
                header = self.mpower.header()

                if self.mpower.count():
                    # Time to h:m:s
                    m, s = divmod(int(header.time), 60)
                    h, m = divmod(m, 60)

                    self.saveButton.setEnabled(True)
                    self.labelDuration.setText("%d:%02d:%02d" % (h, m, s))
                    self.labelAveragePower.setText(str(header.average_power))
                    self.labelMaxPower.setText(str(header.max_power))
                    self.labelEquipment.setText(header.equipment)
                    self.alert("The CSV file was loaded successfully.")
                else:
                    self.alert(
                        "This file does not appear to contain ride data.")
                    return

            self.in_file_info = QFileInfo(filename)
            csv_dir = self.in_file_info.absoluteDir().path()
            self.settings.setValue(csv_dir_key, csv_dir)
 def _setup_entry_from_saved_file(
     self,
     file_info: QFileInfo,
     file_format: str,
 ) -> None:
     self._entry.file = RootConfigurationEntryFile(
         info=file_info,
         file_format=file_format,
         checksum=file_checksum(file_info.filePath()),
     )
     self._entry.name = file_info.fileName()
     self._entry.original_raw = self._entry.raw
     as_signal_instance(self.root_configuration_modified).emit(
         self._entry, )
     as_signal_instance(self.root_configuration_saved).emit(self._entry, )
예제 #26
0
    def sizeString(self, fInfo):
        if (not fInfo.isDir()):
            return ""
        dir = QDir(fInfo.filePath())
        fileFilters = QDir.Filters(QDir.Files | QDir.System | QDir.Hidden)
        size = 0
        for filePath in dir.entryList(fileFilters):
            fi = QFileInfo(dir, filePath)
            size += fi.size()

        if (size > 1024 * 1024 * 10):
            return str("%4.1f" % (size / (1024 * 1024))) + 'MB'
        if (size > 1024 * 10):
            return str("%4.1f" % (size / 1024)) + 'KB'
        return str(size)
예제 #27
0
 def loadSnippet(self):
     self.currentFileLabel.setText(QFileInfo(self.currentFile).baseName())
     log_debug("Loading %s as a snippet." % self.currentFile)
     (snippetDescription, snippetKey, snippetCode) = loadSnippetFromFile(self.currentFile)
     self.snippetDescription.setText(snippetDescription) if snippetDescription else self.snippetDescription.setText("")
     self.keySequenceEdit.setKeySequence(snippetKey[0]) if len(snippetKey) != 0 else self.keySequenceEdit.setKeySequence(QKeySequence(""))
     self.edit.setPlainText(snippetCode) if snippetCode else self.edit.setPlainText("")
예제 #28
0
 def loadSnippet(self):
     self.currentFileLabel.setText(QFileInfo(self.currentFile).baseName())
     (snippetDescription, snippetKeys, snippetCode) = loadSnippetFromFile(self.currentFile)
     self.snippetDescription.setText(snippetDescription) if snippetDescription else self.snippetDescription.setText("")
     self.keySequenceEdit.setKeySequence(snippetKeys) if snippetKeys else self.keySequenceEdit.setKeySequence(QKeySequence(""))
     self.edit.setPlainText(snippetCode) if snippetCode else self.edit.setPlainText("")
     self.readOnly(False)
예제 #29
0
    def contextMenuEvent(self, event):
        state = self.state()
        contextMenu = QMenu()
        launchAction = contextMenu.addAction("Launch")
        launchAction.setEnabled(
            state == QWebEngineDownloadItem.DownloadCompleted)
        showInFolderAction = contextMenu.addAction("Show in Folder")
        showInFolderAction.setEnabled(
            state == QWebEngineDownloadItem.DownloadCompleted)
        cancelAction = contextMenu.addAction("Cancel")
        cancelAction.setEnabled(
            state == QWebEngineDownloadItem.DownloadInProgress)
        removeAction = contextMenu.addAction("Remove")
        removeAction.setEnabled(
            state != QWebEngineDownloadItem.DownloadInProgress)

        chosenAction = contextMenu.exec_(event.globalPos())
        if chosenAction == launchAction:
            self._launch()
        elif chosenAction == showInFolderAction:
            DownloadWidget.openFile(
                QFileInfo(self._downloadItem.path()).absolutePath())
        elif chosenAction == cancelAction:
            self._downloadItem.cancel()
        elif chosenAction == removeAction:
            self.removeRequested.emit()
예제 #30
0
    def findMdiChild(self, fileName):
        canonicalFilePath = QFileInfo(fileName).canonicalFilePath()

        for window in self.mdiArea.subWindowList():
            if window.widget().currentFile() == canonicalFilePath:
                return window
        return None