示例#1
0
def update_directory_info():
    global dict_photos
    # Get list of all entries in directory and count files with supported file name extension
    dir = QDir(window.edit_src_dir.text())
    list_files = dir.entryInfoList()

    # Clear data from previous runs
    dict_photos = dict()
    window.list_files.clear()
    QApplication.processEvents()

    QApplication.setOverrideCursor(Qt.WaitCursor)

    # Actual scanning of selected directory
    start = time.time()
    for entry in list_files:
        # lbl_current_file.setText("Current file: {0}".format(entry.absoluteFilePath()))
        if entry.isFile():
            # Processing and capture time extraction
            print("Processing: {0}".format(entry.absoluteFilePath()))
            md = pyexiv2.ImageMetadata(entry.absoluteFilePath())

            try:
                md.read()
                capture_time = md['Exif.Photo.DateTimeOriginal'].value
                print("Photo taken: {0}".format(capture_time))

                dict_photos[entry.absoluteFilePath()] = capture_time
            except:
                print("Skipping file")

    QApplication.setOverrideCursor(Qt.ArrowCursor)

    print("\n\n")
    end = time.time()
    duration = end - start
    print("Processing took {:2.4f}s".format(duration))

    window.lbl_dir_info.setText("Directory contains {0} images".format(
        len(dict_photos)))
    print("Valid image files: {0}/{1}".format(len(dict_photos),
                                              len(list_files)))

    if len(dict_photos) > 0:
        update_file_list()
示例#2
0
 def selectSystemTranslation(self, language, typemodule):
     dirsystem = "systemnet" if typemodule == True else "system"
     dirsyslan = QDir(self.mDir + QDir.separator() + dirsystem)
     if dirsyslan.exists():
         if QFileInfo(dirsyslan.path() + QDir.separator() + language +
                      ".qm").exists():
             translator = QTranslator(self)
             translator.load(dirsyslan.path() + QDir.separator() + language)
             self.mApp.installTranslator(translator)
         else:
             language = language.split('_')[0]
             if len(language) == 2:
                 if QFileInfo(dirsyslan.path() + QDir.separator() +
                              language + ".qm").exists():
                     translator = QTranslator(self)
                     translator.load(dirsyslan.path() + QDir.separator() +
                                     language)
                     self.mApp.installTranslator(translator)
示例#3
0
def connectToDatabase(logger):
    database = QSqlDatabase.database()
    if not database.isValid():
        database = QSqlDatabase.addDatabase('QSQLITE')
        if not database.isValid():
            logger.error('Cannot add database')

    write_dir = QDir()
    if not write_dir.mkpath('.'):
        logger.error('Failed to create writable directory')

    # Ensure that we have a writable location on all devices.
    filename = '{}/chat-database.sqlite3'.format(write_dir.absolutePath())

    # When using the SQLite driver, open() will create the SQLite database if it doesn't exist.
    database.setDatabaseName(filename)
    if not database.open():
        logger.error('Cannot open database')
        QFile.remove(filename)
示例#4
0
    def select_images(self):
        # This takes one or more images for a single detector.
        if self.ui.aps_imageseries.isChecked():
            files = QDir(self.parent_dir).entryInfoList(QDir.Files)
            selected_files = []
            for file in files:
                selected_files.append(file.absoluteFilePath())
        else:
            caption = HexrdConfig().images_dirtion = 'Select image file(s)'
            selected_files, selected_filter = QFileDialog.getOpenFileNames(
                self.ui, caption, dir=self.parent_dir)

        if selected_files:
            self.update_allowed = False
            self.reset_data()
            self.load_image_data(selected_files)
            self.create_table()
            self.setup_gui()
            self.enable_read()
示例#5
0
def connectToDatabase():
    database = QSqlDatabase.database()
    if not database.isValid():
        database = QSqlDatabase.addDatabase("QSQLITE")
        if not database.isValid():
            logger.error("Cannot add database")

    writeDir = QDir()
    # writeDir = QStandardPaths.writableLocation(QStandardPaths.AppDataLocation)
    if not writeDir.mkpath("."):
        logger.error("Failed to create writable directory")

    # Ensure that we have a writable location on all devices
    fileName = writeDir.absolutePath() + "/chat-database.sqlite3"
    database.setDatabaseName(fileName)
    # open() will create the SQLite database if it doesn't exist
    if not database.open():
        logger.error("Cannot open database")
        QFile.remove(fileName)
示例#6
0
 def actionCacheOnCompleted(self):  #version 1.1 up thesamodule
     boolAction = False
     if self.actionCache_ == "deleteOnCompleted":
         sysdir = QDir(self.mDir + QDir.separator() + _dirSystem)
         DIR_QML_SYS = sysdir.path()
         for the_file in os.listdir(DIR_QML_SYS):
             file_path = os.path.join(DIR_QML_SYS, the_file)
             try:
                 if os.path.isfile(file_path):
                     if ".qml" in file_path:
                         os.unlink(file_path)
                 elif os.path.isdir(file_path):
                     shutil.rmtree(file_path)
                 boolAction = True
             except Exception as e:
                 boolAction = False
                 print(e)
     else:
         boolAction = True
     return boolAction
示例#7
0
    def findFile(self, _filePath):
        # 通过递归的方式,遍历所有动画文件
        animationFilePath = QDir(_filePath)
        animationFilePath.setFilter(QDir.Dirs | QDir.Files
                                    | QDir.NoDotAndDotDot)
        animationFilePath.setSorting(QDir.DirsFirst)

        list = animationFilePath.entryInfoList()
        if (len(list) < 1):
            return

        i = 0
        # 采用递归算法
        while (i < len(list)):
            fileInfo = list[i]
            bisDir = fileInfo.isDir()
            if (bisDir):
                self.findFile(fileInfo.filePath())
            else:
                self.AnimationFileList.append(fileInfo.filePath())
            i += 1
示例#8
0
    def analysisList() -> list:
        files = QDir(HistoryManager.appDirectory()).entryList(
            ["*.json"], QDir.Files | QDir.Readable)

        analysis = {}
        for f in files:
            f = f.rstrip(".json")
            name, date_str = "@".join(f.split("@")[:-1]), f.split("@")[-1]

            date = QDateTime.fromString(date_str, HistoryManager.DATE_FORMAT)
            analysis[date] = {
                "name": name,
                "file": f,
                "date": date.toString("dd/MM/yyyy")
            }

        names = []
        for k in sorted(analysis.keys(), reverse=True):
            names.append(analysis[k])

        return names
示例#9
0
 def selectCoreTranslation(self, language, settings):
     settings.setValue("translate", "en")
     dircorelan = QDir(self.mDir + QDir.separator() + "corelocale")
     if dircorelan.exists():
         if QFileInfo(dircorelan.path() + QDir.separator() + language +
                      ".qm").exists():
             settings.setValue("translate", language)
             translator = QTranslator(self)
             translator.load(dircorelan.path() + QDir.separator() +
                             language)
             self.mApp.installTranslator(translator)
         else:
             language = language.split('_')[0]
             if len(language) == 2:
                 if QFileInfo(dircorelan.path() + QDir.separator() +
                              language + ".qm").exists():
                     settings.setValue("translate", language)
                     translator = QTranslator(self)
                     translator.load(dircorelan.path() + QDir.separator() +
                                     language)
                     self.mApp.installTranslator(translator)
示例#10
0
    def openFile(self):
        dir = QDir()
        docsPath = '{}/Documents'.format(dir.homePath())
        if not dir.exists(docsPath):
            docsPath = '{}/Documentos'.format(dir.homePath())

        #Regresa una tupla (filename, filter)
        filename = QFileDialog.getOpenFileName(self, 'Abrir', docsPath,
                                               self.fileFilter)
        if not filename: return

        self.filename = filename[0]

        file = QFile(self.filename)
        if not file.open(QIODevice.ReadOnly): return

        data = file.readAll()
        file.close()

        self.textContent.clear()
        self.textContent.setText(str(data, encoding='utf-8'))
        self.setWindowTitle('{} - {}'.format(self.windowTitle(),
                                             self.filename))
示例#11
0
    def __init__(self, parent=None):
        super(Loader, self).__init__(parent=parent)
        self.ui = Ui_Loader()
        self.ui.setupUi(self)
        self.dir = QDir(QDir.currentPath() + '/programs/')
        self.dir.setFilter(QDir.Files or QDir.NoDotAndDotDot)
        self.fs_watcher = QFileSystemWatcher(self.dir.path())
        self.fs_watcher.addPath(self.dir.path())
        self.fs_watcher.directoryChanged.connect(self.update_program_list)
        self.send_status = QProgressDialog
        self.sender = Sender
        self.serialpropertiesvalues = \
            {
                'baudrate': Serial.BAUDRATES,
                'parity': Serial.PARITIES,
                'databits': Serial.BYTESIZES,
                'stopbits': Serial.STOPBITS,
                'flowcontrol': ['NoControl', 'SoftwareControl', 'HardwareControl']
            }

        self.update_program_list()
        self.update_serial_port_list()
        # self.set_serial_port_options()

        self.ui.updateProgramListButton.clicked.connect(self.refresh)
        self.ui.programListWidget.itemSelectionChanged.connect(
            self.selection_changed)
        self.ui.sendButton.clicked.connect(self.send_program)
        self.ui.serialPortChooser.currentTextChanged.connect(
            self.selection_changed)
        self.ui.serialPortChooser.currentTextChanged.connect(save_port)
        # self.ui.baudRateInput.textChanged.connect(save_baud)
        # self.ui.parityChooser.currentTextChanged.connect(save_parity)
        # self.ui.dataBitsChooser.currentTextChanged.connect(save_databits)
        # self.ui.stopBitsChooser.currentTextChanged.connect(save_stopbits)
        # self.ui.flowControlChooser.currentTextChanged.connect(save_flowcontrol)
        self.thread_pool = QThreadPool()
示例#12
0
    def __init__(self) -> None:
        """
        Create elements of View and Controller
        :return None:
        """

        # initialize logging for app
        self.log_output = OutputWindow()
        self.settings = QSettings("Red Scientific", "Companion")

        self.settings.beginGroup("logging")
        if not self.settings.contains("loglevel"):
            self.settings.setValue("loglevel", "DEBUG")
        logginglevel = eval('logging.' + self.settings.value('loglevel'))
        self.settings.endGroup()

        logging.basicConfig(
            filename=self.__setup_log_output_file("companion_app_log.txt"),
            filemode='w',
            level=logginglevel,
            format='%(levelname)s - %(name)s - %(funcName)s: %(message)s')
        self.logger = logging.getLogger(__name__)

        self.formatter = logging.Formatter(
            '%(levelname)s - %(name)s - %(funcName)s: %(message)s')
        self.ch = logging.StreamHandler(self.log_output)
        self.ch.setLevel(logginglevel)
        self.ch.setFormatter(self.formatter)
        self.logger.addHandler(self.ch)

        self.logger.info("RS Companion app version: " + current_version_str)
        self.logger.debug("Initializing")

        # set up ui
        ui_min_size = QSize(950, 740)
        dock_size = QSize(850, 160)
        button_box_size = QSize(205, 120)
        info_box_size = QSize(230, 120)
        flag_box_size = QSize(80, 120)
        note_box_size = QSize(250, 120)
        tab_box_width_range = (350, 320)
        self.ui = CompanionWindow(ui_min_size, self.ch)
        self.menu_bar = MenuBar(self.ui, self.ch)
        self.control_dock = ControlDock(self.ui, dock_size, self.ch)
        self.button_box = ButtonBox(self.control_dock, button_box_size,
                                    self.ch)
        self.info_box = InfoBox(self.control_dock, info_box_size, self.ch)
        self.flag_box = FlagBox(self.control_dock, flag_box_size, self.ch)
        self.note_box = NoteBox(self.control_dock, note_box_size, self.ch)
        self.graph_box = DisplayContainer(self.ui, self.__refresh_all_graphs,
                                          self.ch)
        self.tab_box = TabContainer(self.ui, tab_box_width_range, self.ch)
        self.file_dialog = QFileDialog(self.ui)

        self.dev_con_manager = RSDeviceConnectionManager(self.ch)
        self.__setup_managers()
        self.settings.endGroup()
        # Initialize storage and state
        self.__controller_classes = dict()
        self.__controller_inits = dict()
        self.__graph_inits = dict()
        self.__populate_func_dicts()
        self.__graphs = dict()
        self.__exp_created = False
        self.__exp_running = False
        self.__num_drts = 0
        self.__num_vogs = 0
        self.__current_cond_name = ""
        self.__device_controllers = dict()
        self.__save_file_name = ""
        self.__save_dir = QDir().homePath()
        self.__device_spacers = dict()
        self.__devices_to_add = dict()

        # Assemble View objects
        self.__initialize_view()
        self.__init_controller_classes()

        self.logger.debug("Initialized")
示例#13
0
class MainWidget(QWidget):
    # Home do usuário.
    home = QDir().home().path()

    def __init__(self):
        super().__init__()
        # Título da janela.
        self.setWindowTitle('PySide2 QFileDialog().')

        # Ícone da janela principal
        icon = QIcon()
        icon.addPixmap(QPixmap('../../../images/icons/icon.png'))
        self.setWindowIcon(icon)

        # Tamanho inicial da janela.
        screen_size = app.desktop().geometry()
        # screen_size = app.primaryScreen().geometry()
        width = screen_size.width()
        height = screen_size.height()
        self.resize(width / 2, height / 2)

        # Tamanho mínimo da janela.
        self.setMinimumSize(width / 2, height / 2)

        # Tamanho maximo da janela.
        self.setMaximumSize(width - 200, height - 200)

        # Widgets.
        vbox = QVBoxLayout()
        self.setLayout(vbox)

        self.label = QLabel('Clique em um dos botões')
        self.label.setAutoFillBackground(True)
        self.label.setAlignment(Qt.AlignCenter)
        vbox.addWidget(self.label)

        btn_open_file = QPushButton('Selecionar arquivo')
        btn_open_file.clicked.connect(self.open_file_dialog)
        vbox.addWidget(btn_open_file)

        btn_open_files = QPushButton('Selecionar arquivos')
        btn_open_files.clicked.connect(self.open_files_dialog)
        vbox.addWidget(btn_open_files)

        btn_open_dir = QPushButton('Selecionar um diretório')
        btn_open_dir.clicked.connect(self.open_dir_dialog)
        vbox.addWidget(btn_open_dir)

        btn_save_file = QPushButton('Salvar um arquivo')
        btn_save_file.clicked.connect(self.open_save_dialog)
        vbox.addWidget(btn_save_file)

    def open_file_dialog(self):
        file = QFileDialog().getOpenFileName(
            parent=self,
            caption='Selecione um arquivo',
            dir=str(self.home),
            filter=('PNG (*.png);;JPG (*.jpg, *.jpeg);;'
                    'TXT (*.txt);;Todos (*.*)'),
        )
        if file[0]:
            self.label.setText(
                f'<b>Arquivo selecionado</b>: {file[0]}<br>'
                f'<b>Filtro utilizado</b>: {file[1]}', )

    def open_files_dialog(self):
        files = QFileDialog().getOpenFileNames(
            parent=self,
            caption='Selecione os arquivos',
            dir=str(self.home),
            filter=('PNG (*.png);;JPG (*.jpg, *.jpeg);;'
                    'TXT (*.txt);;Todos (*.*)'),
        )
        if files[0]:
            text = '<b>Arquivos selecionados</b>:<br>'
            for file in files[0]:
                text += f'- {file}<br>'
            text += f'<b>Filtro utilizado</b>: {files[1]}'
            self.label.setText(text)

    def open_dir_dialog(self):
        path = QFileDialog().getExistingDirectory(
            parent=self,
            caption='Selecione um diretório',
            dir=str(self.home),
        )
        if path:
            self.label.setText(f'<b>Diretório selecionado</b>: {path}')

    def open_save_dialog(self):
        file = QFileDialog().getSaveFileName(
            parent=self,
            caption='Salvar arquivo',
            dir=str(self.home),
            filter='.png;;.txt;;.jpg;;',
        )
        if file[0]:
            if file[0].endswith(file[1]):
                text = f'<b>Arquivo salvo em</b>: {file[0]}<br>'
            else:
                text = f'<b>Arquivo salvo em</b>: {file[0]}{file[1]}<br>'
            text += f'<b>Filtro utilizado</b>: {file[1]}'
            self.label.setText(text)
示例#14
0
 def InstallApk(self, Name = "", ListoptionADB = ""):#Locate APK in ressources dir
     DossierProject = QDir(self.PathProject)
     DossierProject.cd('Ressource')
     PathAPK = DossierProject.absoluteFilePath(Name)
     print(self.CallADB("install "+ListoptionADB+" "+PathAPK))
示例#15
0
class OperatorFile(QWidget):
    _tr = QCoreApplication.translate
    dir = QDir()

    def __init__(self, parent=None):
        super().__init__(parent)

    def saveGraphData(self, graphData=None, filename=None):
        curPath = self.dir.currentPath()
        title = self._tr("OperatorFile", "保存文件")
        filt = self._tr("OperatorFile", "*.xlsx;;*.graph")
        file_full = QFileInfo(filename + '.xlsx')
        if not file_full.exists():
            fileName, flt = QFileDialog.getSaveFileName(
                self, title, curPath, filt)
        else:
            fileName = file_full.fileName()
            flt = file_full.suffix()
        if fileName == "":
            return
        if flt.find('xlsx') >= 0:
            fileName = self.saveExcel(fileName, graphData)
        elif flt.find('graph') >= 0:
            self.saveGraph()
        return fileName

    def openGraphData(self):
        curPath = self.dir.currentPath()
        title = self._tr("OperatorFile", "打开文件")
        filt = self._tr("OperatorFile", "*.xlsx;;*.graph")
        fileName, flt = QFileDialog.getOpenFileName(self, title, curPath, filt)
        if fileName == "":
            return
        if flt.find('xlsx') >= 0:
            return self.openExcel(fileName)
        elif flt.find('graph') >= 0:
            self.saveGraph()
        return False

    def outputData(self, graph):
        curPath = self.dir.currentPath()
        nodeColumns = ['顶点ID', '权重']
        edgeColumns = ['边ID', '始点', '终点', '权重']
        title = self._tr("OperatorFile", "导出图数据")
        filt = self._tr("OperatorFile", "*.xlsx")
        fileName, flt = QFileDialog.getSaveFileName(self, title, curPath, filt)
        if fileName == "":
            return
        file_full = QFileInfo(fileName)
        if file_full.exists():
            title = self._tr("OperatorFile", '警告')
            info = self._tr("OperatorFile", '文件即将被覆盖')
            result = QMessageBox.question(self, title, info,
                                          QMessageBox.Yes | QMessageBox.Cancel)
        else:
            result = QMessageBox.Yes

        if result == QMessageBox.Yes:
            graphName = file_full.baseName()
            nodeName = "V" + f'({graphName})'
            edgeName = "E" + f'({graphName})'
            dataDict = ["图名称", "顶点集", "边集", "图类型"]
            graphList = [graphName, nodeName, edgeName, graph[0]]
            graphFrame = DataFrame(graphList, index=dataDict)
            graphFrame = graphFrame.T
            nodeFrame = DataFrame(graph[1], columns=nodeColumns)
            edgeFrame = DataFrame(graph[2], columns=edgeColumns)

            try:
                with ExcelWriter(fileName) as writer:
                    graphFrame.to_excel(writer,
                                        sheet_name=graphName,
                                        index=None)
                    nodeFrame.to_excel(writer, sheet_name=nodeName, index=None)
                    edgeFrame.to_excel(writer, sheet_name=edgeName, index=None)
                writer.save()
                writer.close()
            except Exception as e:
                text = self._tr("OperatorFile", '权限不足')
                QMessageBox.warning(self, text, str(e))
                return False

        elif result == QMessageBox.Cancel:
            return
        return True

    def inputData(self):
        curPath = self.dir.currentPath()
        title = self._tr("OperatorFile", "打开文件")
        filt = self._tr("OperatorFile", "*.xlsx")
        fileName, flt = QFileDialog.getOpenFileName(self, title, curPath, filt)
        if fileName == "":
            return
        graphData = ExcelFile(fileName)
        sheetNames = graphData.sheet_names
        graphFrame = read_excel(fileName, sheetNames[0])
        nodeFrame = read_excel(fileName, sheetNames[1])
        edgeFrame = read_excel(fileName, sheetNames[2])

        mode = int(graphFrame.iloc[0, 3])
        graphName = str(graphFrame.iloc[0, 0])
        nodeDataList = []
        edgeDataList = []

        for i in range(nodeFrame.shape[0]):
            data = []
            for j in range(nodeFrame.shape[1]):
                if not isnan(nodeFrame.iloc[i, j]):
                    data.append(int(nodeFrame.iloc[i, j]))
                else:
                    QMessageBox.warning(
                        self,
                        QCoreApplication.translate("OperatorFile", "警告!"),
                        QCoreApplication.translate("OperatorFile",
                                                   "对不起,您的数据有误,系统无法识别!"))
                    return None

            if len(data) >= 2:
                nodeDataList.append(data)
            else:
                QMessageBox.warning(
                    self, QCoreApplication.translate("OperatorFile", "警告!"),
                    QCoreApplication.translate(
                        "OperatorFile", "顶点ID和权重为必须信息,您的信息不完整,请补充信息后,再次尝试。"))
                return None

        for i in range(edgeFrame.shape[0]):
            data = []
            for j in range(edgeFrame.shape[1]):
                if not isnan(edgeFrame.iloc[i, j]):
                    data.append(int(edgeFrame.iloc[i, j]))
            if len(data) >= 2:
                edgeDataList.append(data)

        return [graphName, mode, nodeDataList, edgeDataList]

    def saveExcel(self, fileName, graph: list):
        nodeColumns = ['顶点ID', '权重', 'x坐标', 'y坐标']

        edgeColumns = [
            '边ID', '始点', '终点', '权重', '1点x坐标', '1点y坐标', '2点x坐标', '2点y坐标',
            '3点x坐标', '3点y坐标', '4点x坐标', '4点y坐标', '中心点x坐标', '中心点y坐标'
        ]
        textColumns = ['文本ID', '文本内容', 'x坐标', 'y坐标']

        file_full = QFileInfo(fileName)

        graphName = file_full.baseName()
        nodeName = "V" + f'({graphName})'
        edgeName = "E" + f'({graphName})'
        textName = "T" + f'({graphName})'
        dataDict = ["图名称", "顶点集", "边集", "文本集", "图类型"]
        graphList = [graphName, nodeName, edgeName, textName, graph[0]]
        graphFrame = DataFrame(graphList, index=dataDict)
        graphFrame = graphFrame.T
        nodeFrame = DataFrame(graph[1], columns=nodeColumns)
        edgeFrame = DataFrame(graph[2], columns=edgeColumns)
        textFrame = DataFrame(graph[3], columns=textColumns)

        try:
            with ExcelWriter(fileName) as writer:
                graphFrame.to_excel(writer, sheet_name=graphName, index=None)
                nodeFrame.to_excel(writer, sheet_name=nodeName, index=None)
                edgeFrame.to_excel(writer, sheet_name=edgeName, index=None)
                textFrame.to_excel(writer, sheet_name=textName, index=None)
            writer.save()
            writer.close()
        except Exception as e:
            text = self._tr("OperatorFile", '权限不足')
            QMessageBox.warning(self, text, str(e))
            return

        return file_full

    def saveExcelAs(self, graph: list):
        curPath = self.dir.currentPath()
        title = self._tr("OperatorFile", "保存文件")
        filt = self._tr("OperatorFile", "*.xlsx;;*.graph")
        fileName, flt = QFileDialog.getSaveFileName(
            self,
            title,
            curPath,
            filt,
            options=QFileDialog.DontConfirmOverwrite)
        if fileName == "":
            return

        file_full = QFileInfo(fileName)

        while file_full.exists():
            fileName = f'{file_full.baseName()}_副本.xlsx'
            file_full = QFileInfo(fileName)

        nodeColumns = ['顶点ID', '权重', 'x坐标', 'y坐标']

        edgeColumns = [
            '边ID', '始点', '终点', '权重', '1点x坐标', '1点y坐标', '2点x坐标', '2点y坐标',
            '3点x坐标', '3点y坐标', '4点x坐标', '4点y坐标', '中心点x坐标', '中心点y坐标'
        ]
        textColumns = ['文本ID', '文本内容', 'x坐标', 'y坐标']

        graphName = file_full.baseName()
        nodeName = "V" + f'({graphName})'
        edgeName = "E" + f'({graphName})'
        textName = "T" + f'({graphName})'
        dataDict = ["图名称", "顶点集", "边集", "文本集", "图类型"]
        graphList = [graphName, nodeName, edgeName, textName, graph[0]]
        graphFrame = DataFrame(graphList, index=dataDict)
        graphFrame = graphFrame.T
        nodeFrame = DataFrame(graph[1], columns=nodeColumns)
        edgeFrame = DataFrame(graph[2], columns=edgeColumns)
        textFrame = DataFrame(graph[3], columns=textColumns)

        try:
            with ExcelWriter(fileName) as writer:
                graphFrame.to_excel(writer, sheet_name=graphName, index=None)
                nodeFrame.to_excel(writer, sheet_name=nodeName, index=None)
                edgeFrame.to_excel(writer, sheet_name=edgeName, index=None)
                textFrame.to_excel(writer, sheet_name=textName, index=None)
            writer.save()
            writer.close()
        except Exception as e:
            text = self._tr("OperatorFile", '权限不足')
            QMessageBox.warning(self, text, str(e))
            return

        return file_full

    # def saveGraph(self):
    #
    #     return True
    def openExcel(self, fileName):
        graphData = ExcelFile(fileName)
        sheetNames = graphData.sheet_names
        graphFrame = read_excel(fileName, sheetNames[0])
        nodeFrame = read_excel(fileName, sheetNames[1])
        edgeFrame = read_excel(fileName, sheetNames[2])
        textFrame = read_excel(fileName, sheetNames[3])

        mode = int(graphFrame.iloc[0, 4])
        graphName = str(graphFrame.iloc[0, 0])
        nodeDataList = []
        edgeDataList = []
        textDataList = []

        for i in range(nodeFrame.shape[0]):
            data = []
            for j in range(nodeFrame.shape[1]):
                if not isnan(nodeFrame.iloc[i, j]):
                    data.append(int(nodeFrame.iloc[i, j]))
                else:
                    QMessageBox.warning(
                        self,
                        QCoreApplication.translate("OperatorFile", "警告!"),
                        QCoreApplication.translate("OperatorFile",
                                                   "对不起,您的数据有误,系统无法识别!"))
                    return None

            if len(data) >= 2:
                nodeDataList.append(data)

        for i in range(edgeFrame.shape[0]):
            data = []
            for j in range(edgeFrame.shape[1]):
                if not isnan(edgeFrame.iloc[i, j]):
                    data.append(int(edgeFrame.iloc[i, j]))
            if len(data) >= 2:
                edgeDataList.append(data)
        for i in range(textFrame.shape[0]):
            data = []
            for j in range(textFrame.shape[1]):
                if type(textFrame.iloc[i, j]) is not str:
                    data.append(int(textFrame.iloc[i, j]))
                else:
                    data.append(textFrame.iloc[i, j])
            if len(data) >= 2:
                textDataList.append(data)

        return [graphName, mode, nodeDataList, edgeDataList, textDataList]
示例#16
0
 def setUp(self):
     self.original = QDir("./")
示例#17
0
if __name__ == "__main__":
    logger.info("Application started")

    import sys
    from src.controllers.maincontroller import MainController

    app = QApplication(sys.argv)
    qss = "qt_design/stylesheet.qss"
    with open(qss, "r") as fh:
        app.setStyleSheet(fh.read())

    app.setApplicationName("CSCreator")

    data_location = QStandardPaths.writableLocation(
        QStandardPaths.AppDataLocation)
    data_dir = QDir(data_location)
    if not data_dir.exists():
        data_dir.mkpath(data_location)
    if not data_dir.exists("importers"):
        data_dir.mkdir("importers")

    if os.environ.get("DEBUG") is not None:
        copytree("src/data/importers", os.path.join(data_location,
                                                    "importers"))

    main_controller = MainController()
    main_view = main_controller.get_window()
    main_view.show()
    sys.exit(app.exec_())
示例#18
0
class MainWidget(QWidget):
    # Home do usuário.
    home = QDir().home().path()

    def __init__(self):
        super(MainWidget, self).__init__()
        # Caminho até o arquivo de interface.
        # path = QDir(__file__).currentPath()
        # ui_file = QDir(path).filePath('MainWindow.ui')
        ui_file = QDir(QDir(__file__).currentPath()).filePath('MainWindow.ui')

        self.ui = QUiLoader().load(ui_file, None)

        # Widgets.
        self.label = self.ui.findChild(QObject, 'label')

        btn_open_file = self.ui.findChild(QObject, 'btn_open_file')
        btn_open_file.clicked.connect(self.open_file_dialog)

        btn_open_files = self.ui.findChild(QObject, 'btn_open_files')
        btn_open_files.clicked.connect(self.open_files_dialog)

        btn_open_dir = self.ui.findChild(QObject, 'btn_open_dir')
        btn_open_dir.clicked.connect(self.open_dir_dialog)

        btn_save_file = self.ui.findChild(QObject, 'btn_save_file')
        btn_save_file.clicked.connect(self.open_save_dialog)

        self.ui.show()

    def open_file_dialog(self):
        file = QFileDialog().getOpenFileName(
            parent=self,
            caption='Selecione um arquivo',
            dir=str(self.home),
            filter=('PNG (*.png);;JPG (*.jpg, *.jpeg);;'
                    'TXT (*.txt);;Todos (*.*)'),
        )
        if file[0]:
            self.label.setText(
                f'<b>Arquivo selecionado</b>: {file[0]}<br>'
                f'<b>Filtro utilizado</b>: {file[1]}', )

    def open_files_dialog(self):
        files = QFileDialog().getOpenFileNames(
            parent=self,
            caption='Selecione os arquivos',
            dir=str(self.home),
            filter=('PNG (*.png);;JPG (*.jpg, *.jpeg);;'
                    'TXT (*.txt);;Todos (*.*)'),
        )
        if files[0]:
            text = '<b>Arquivos selecionados</b>:<br>'
            for file in files[0]:
                text += f'- {file}<br>'
            text += f'<b>Filtro utilizado</b>: {files[1]}'
            self.label.setText(text)

    def open_dir_dialog(self):
        path = QFileDialog().getExistingDirectory(
            parent=self,
            caption='Selecione um diretório',
            dir=str(self.home),
        )
        if path:
            self.label.setText(f'<b>Diretório selecionado</b>: {path}')

    def open_save_dialog(self):
        file = QFileDialog().getSaveFileName(
            parent=self,
            caption='Salvar arquivo',
            dir=str(self.home),
            filter='.png;;.txt;;.jpg;;',
        )
        if file[0]:
            if file[0].endswith(file[1]):
                text = f'<b>Arquivo salvo em</b>: {file[0]}<br>'
            else:
                text = f'<b>Arquivo salvo em</b>: {file[0]}{file[1]}<br>'
            text += f'<b>Filtro utilizado</b>: {file[1]}'
            self.label.setText(text)
示例#19
0
 def isComplete(self):
     """Conditions to unlock next button"""
     return (True if (QDir(self.project_path_edit.text()).exists()
                      and self.project_path_edit.text()
                      and self.project_name_edit.text()) else False)
示例#20
0
    def hasAnalysis() -> bool:
        files = QDir(HistoryManager.appDirectory()).entryList(
            ["*.json"], QDir.Files | QDir.Readable)

        return len(files) > 0
示例#21
0
    def on_error(self, err: QNetworkReply.NetworkError):
        """This method is called by self.reply.error signal
        
        Args:
            err (QNetworkReply.NetworkError)
        """
        self.reply.deleteLater()

    def human_readable_bytes(self, num, suffix="B"):
        for unit in ["", "Ki", "Mi", "Gi", "Ti", "Pi", "Ei", "Zi"]:
            if abs(num) < 1024.0:
                return "%3.1f%s%s" % (num, unit, suffix)
            num /= 1024.0
        return "%.1f%s%s" % (num, "Yi", suffix)


if __name__ == "__main__":

    app = QApplication(sys.argv)

    dialog = DownloadDialog()
    dialog.set_source(
        QUrl(
            "http://hgdownload.cse.ucsc.edu/goldenPath/hg19/bigZips/mrna.fa.gz"
        ))
    dialog.set_destination(QDir("/tmp/"))
    dialog.start()
    dialog.show()

    app.exec_()
示例#22
0
 def find_csv_file(self):
     fname = QFileDialog.getOpenFileName(
         self, 'Open file',
         QDir().home().path() + '/Downloads', "CSV (*.csv)")
     self.pathText.setText(fname[0])
示例#23
0
    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
示例#24
0
    def action_record_stop_button(self):
        # check if the session name & video path file fields are filled
        if not self.session_name.text() or not self.video_file_path.text():
            self.error_dialog(
                'Please inform both the Session Name and the Video/Audio Path!'
            )
            return

        # check if the directory exists
        if not QDir(self.video_file_path.text()).exists():
            self.error_dialog('The directory {} does not exist!'.format(
                self.video_file_path.text()))
            return

        # check if the directory is writable
        if not os.access(self.video_file_path.text(), os.W_OK):
            self.error_dialog('The directory {} is not writable!'.format(
                self.video_file_path.text()))
            return

        if self.recording:
            # it is already recording
            # we will stop the session
            self.recording_label.setPixmap(cfg.ASSETS_IMAGES_FOLDER +
                                           'gray_rec.png')
            self.record_stop_button.setText('Record session')
            # enable fields
            self.session_name.setEnabled(True)
            self.video_file_path.setEnabled(True)
            self.list_cameras.setEnabled(True)
            self.list_audio_devices.setEnabled(True)
            self.list_backing_tracks.setEnabled(True)
            self.volume_slider.setEnabled(True)
            # stop session
            self.record_session.stop()
            # restart camera
            self.wait_for_video_process()
        else:
            # it is not yet recording
            # we will start the session

            # on MacOs it is possible to keep showing the camera
            # on GUI while it is recording the SAME camera.
            # Unfortunately, it is not possible neither on Linux
            # nor on Windows. This is the reason why we are
            # stopping the camera here and restarting it
            # after the recording is finished
            self.camera.stop()

            self.recording_label.setPixmap(cfg.ASSETS_IMAGES_FOLDER +
                                           'red_rec.png')
            self.record_stop_button.setText('Recording… Press here to stop')
            # disable fields
            self.session_name.setEnabled(False)
            self.video_file_path.setEnabled(False)
            self.list_cameras.setEnabled(False)
            self.list_audio_devices.setEnabled(False)
            self.list_backing_tracks.setEnabled(False)
            self.volume_slider.setEnabled(False)
            # start session
            if self.backing_track_player.state(
            ) == QMediaPlayer.State.PlayingState:
                self.backing_track_player.stop()
            self.record_session.start_recording(
                self.session_name.text(), self.video_file_path.text(),
                self.list_cameras.currentData().description(),
                self.list_audio_devices.currentData(),
                self.list_backing_tracks.currentText(),
                int(self.volume_slider.value()))
        self.recording = not self.recording
示例#25
0
def organize_files():
    separator = window.cmb_separator.currentText()

    target_dir = QDir(window.edit_target_dir.text())
    list_target_dirs = target_dir.entryList()

    progress = progress_window()
    progress.set_max(window.list_files.count())

    for index in range(window.list_files.count()):
        progress.set_value(index)

        #
        # STEP 1: Create target directory if necessary
        #

        # Get folder name for file
        fn_src = window.list_files.item(index).text()
        progress.set_text("Processing \"{0}\"".format(fn_src))

        md = pyexiv2.ImageMetadata(fn_src)

        image_ts = datetime.date
        try:
            md.read()
            image_ts = md['Exif.Photo.DateTimeOriginal'].value

        except:
            print("Cannot open file \"{0}\"".format(fn_src))
            continue

        # Makes sure the day and month are always two digits
        def correct_format(number):
            if number < 10:
                return "0" + str(number)
            else:
                return str(number)

        folder_name_trg = str(image_ts.year) + separator + correct_format(
            image_ts.month) + separator + correct_format(image_ts.day)
        dir_name_trg = target_dir.absolutePath() + QDir.separator(
        ) + folder_name_trg

        # Create folder for day if necessary
        target_folder = QDir(dir_name_trg)
        if not target_folder.exists():
            QDir.mkdir(target_dir, dir_name_trg)
            print("Created directory \"{0}\"".format(dir_name_trg))

        #
        # STEP 2: Move file
        #

        # absolute file name of the new file
        fn_trg_abs = dir_name_trg + QDir.separator() + fn_src.split(
            QDir.separator())[-1]
        file_trg = QFile(fn_trg_abs)

        # Don't overwrite existing files
        if file_trg.exists():
            print("Skipping file \"{0}\"".format(file_trg.fileName()))
            continue

        QFile.copy(fn_src, fn_trg_abs)
        print("Copied file from \"{0}\" to \"{1}\"".format(fn_src, fn_trg_abs))

    print("Finished!")