Esempio n. 1
0
    def __init__(self, parent=None):
        """
        Constructor
        
        @param parent reference to the parent widget (QWidget)
        """
        super(SnapWidget, self).__init__(parent)
        self.setupUi(self)

        self.saveButton.setIcon(UI.PixmapCache.getIcon("fileSaveAs.png"))
        self.takeButton.setIcon(UI.PixmapCache.getIcon("cameraPhoto.png"))
        self.copyButton.setIcon(UI.PixmapCache.getIcon("editCopy.png"))
        self.copyPreviewButton.setIcon(UI.PixmapCache.getIcon("editCopy.png"))
        self.setWindowIcon(UI.PixmapCache.getIcon("ericSnap.png"))

        self.modeCombo.addItem(self.tr("Fullscreen"),
                               SnapWidget.ModeFullscreen)
        self.modeCombo.addItem(self.tr("Rectangular Selection"),
                               SnapWidget.ModeRectangle)
        self.modeCombo.addItem(self.tr("Ellipical Selection"),
                               SnapWidget.ModeEllipse)
        self.modeCombo.addItem(self.tr("Freehand Selection"),
                               SnapWidget.ModeFreehand)
        if QApplication.desktop().screenCount() > 1:
            self.modeCombo.addItem(self.tr("Current Screen"),
                                   SnapWidget.ModeScreen)
        self.__mode = int(Preferences.Prefs.settings.value("Snapshot/Mode", 0))
        index = self.modeCombo.findData(self.__mode)
        if index == -1:
            index = 0
        self.modeCombo.setCurrentIndex(index)

        self.__delay = int(
            Preferences.Prefs.settings.value("Snapshot/Delay", 0))
        self.delaySpin.setValue(self.__delay)

        if PYQT_VERSION_STR >= "5.0.0":
            from PyQt5.QtCore import QStandardPaths
            picturesLocation = QStandardPaths.writableLocation(
                QStandardPaths.PicturesLocation)
        else:
            from PyQt5.QtGui import QDesktopServices
            picturesLocation = QDesktopServices.storageLocation(
                QDesktopServices.PicturesLocation)
        self.__filename = Preferences.Prefs.settings.value(
            "Snapshot/Filename",
            os.path.join(picturesLocation,
                         self.tr("snapshot") + "1.png"))

        self.__grabber = None
        self.__snapshot = QPixmap()
        self.__savedPosition = QPoint()
        self.__modified = False
        self.__locale = QLocale()

        self.__grabberWidget = QWidget(None, Qt.X11BypassWindowManagerHint)
        self.__grabberWidget.move(-10000, -10000)
        self.__grabberWidget.installEventFilter(self)

        self.__initFileFilters()

        self.__initShortcuts()

        self.preview.startDrag.connect(self.__dragSnapshot)

        from .SnapshotTimer import SnapshotTimer
        self.__grabTimer = SnapshotTimer()
        self.__grabTimer.timeout.connect(self.__grabTimerTimeout)
        self.__updateTimer = QTimer()
        self.__updateTimer.setSingleShot(True)
        self.__updateTimer.timeout.connect(self.__updatePreview)

        self.__updateCaption()
        self.takeButton.setFocus()
Esempio n. 2
0
 def __init__(self, parent=None):
     """
     Constructor
     
     @param parent reference to the parent widget (QWidget)
     """
     super(SnapWidget, self).__init__(parent)
     self.setupUi(self)
     
     self.saveButton.setIcon(UI.PixmapCache.getIcon("fileSaveAs.png"))
     self.takeButton.setIcon(UI.PixmapCache.getIcon("cameraPhoto.png"))
     self.copyButton.setIcon(UI.PixmapCache.getIcon("editCopy.png"))
     self.copyPreviewButton.setIcon(UI.PixmapCache.getIcon("editCopy.png"))
     self.setWindowIcon(UI.PixmapCache.getIcon("ericSnap.png"))
     
     self.modeCombo.addItem(self.tr("Fullscreen"),
                            SnapWidget.ModeFullscreen)
     self.modeCombo.addItem(self.tr("Rectangular Selection"),
                            SnapWidget.ModeRectangle)
     self.modeCombo.addItem(self.tr("Ellipical Selection"),
                            SnapWidget.ModeEllipse)
     self.modeCombo.addItem(self.tr("Freehand Selection"),
                            SnapWidget.ModeFreehand)
     if QApplication.desktop().screenCount() > 1:
         self.modeCombo.addItem(self.tr("Current Screen"),
                                SnapWidget.ModeScreen)
     self.__mode = int(Preferences.Prefs.settings.value("Snapshot/Mode", 0))
     index = self.modeCombo.findData(self.__mode)
     if index == -1:
         index = 0
     self.modeCombo.setCurrentIndex(index)
     
     self.__delay = int(
         Preferences.Prefs.settings.value("Snapshot/Delay", 0))
     self.delaySpin.setValue(self.__delay)
     
     if PYQT_VERSION_STR >= "5.0.0":
         from PyQt5.QtCore import QStandardPaths
         picturesLocation = QStandardPaths.writableLocation(
             QStandardPaths.PicturesLocation)
     else:
         from PyQt5.QtGui import QDesktopServices
         picturesLocation = QDesktopServices.storageLocation(
             QDesktopServices.PicturesLocation)
     self.__filename = Preferences.Prefs.settings.value(
         "Snapshot/Filename",
         os.path.join(picturesLocation,
                      self.tr("snapshot") + "1.png"))
     
     self.__grabber = None
     self.__snapshot = QPixmap()
     self.__savedPosition = QPoint()
     self.__modified = False
     self.__locale = QLocale()
     
     self.__grabberWidget = QWidget(None, Qt.X11BypassWindowManagerHint)
     self.__grabberWidget.move(-10000, -10000)
     self.__grabberWidget.installEventFilter(self)
     
     self.__initFileFilters()
     
     self.__initShortcuts()
     
     self.preview.startDrag.connect(self.__dragSnapshot)
     
     from .SnapshotTimer import SnapshotTimer
     self.__grabTimer = SnapshotTimer()
     self.__grabTimer.timeout.connect(self.__grabTimerTimeout)
     self.__updateTimer = QTimer()
     self.__updateTimer.setSingleShot(True)
     self.__updateTimer.timeout.connect(self.__updatePreview)
     
     self.__updateCaption()
     self.takeButton.setFocus()
Esempio n. 3
0
 def __getFileName(self):
     """
     Private method to get the file name to save to from the user.
     """
     if self.__gettingFileName:
         return
     
     import Helpviewer.HelpWindow
     downloadDirectory = Helpviewer.HelpWindow.HelpWindow\
         .downloadManager().downloadDirectory()
     
     if self.__fileName:
         fileName = self.__fileName
         originalFileName = self.__originalFileName
         self.__toDownload = True
         ask = False
     else:
         defaultFileName, originalFileName = \
             self.__saveFileName(downloadDirectory)
         fileName = defaultFileName
         self.__originalFileName = originalFileName
         ask = True
     self.__autoOpen = False
     if not self.__toDownload:
         from .DownloadAskActionDialog import DownloadAskActionDialog
         url = self.__reply.url()
         dlg = DownloadAskActionDialog(
             QFileInfo(originalFileName).fileName(),
             self.__reply.header(QNetworkRequest.ContentTypeHeader),
             "{0}://{1}".format(url.scheme(), url.authority()),
             self)
         if dlg.exec_() == QDialog.Rejected or dlg.getAction() == "cancel":
             self.progressBar.setVisible(False)
             self.__reply.close()
             self.on_stopButton_clicked()
             self.filenameLabel.setText(
                 self.tr("Download canceled: {0}").format(
                     QFileInfo(defaultFileName).fileName()))
             self.__canceledFileSelect = True
             return
         
         if dlg.getAction() == "scan":
             self.__mainWindow.requestVirusTotalScan(url)
             
             self.progressBar.setVisible(False)
             self.__reply.close()
             self.on_stopButton_clicked()
             self.filenameLabel.setText(
                 self.tr("VirusTotal scan scheduled: {0}").format(
                     QFileInfo(defaultFileName).fileName()))
             self.__canceledFileSelect = True
             return
         
         self.__autoOpen = dlg.getAction() == "open"
         if PYQT_VERSION_STR >= "5.0.0":
             from PyQt5.QtCore import QStandardPaths
             tempLocation = QStandardPaths.standardLocations(
                 QStandardPaths.TempLocation)[0]
         else:
             from PyQt5.QtGui import QDesktopServices
             tempLocation = QDesktopServices.storageLocation(
                 QDesktopServices.TempLocation)
         fileName = tempLocation + '/' + \
             QFileInfo(fileName).completeBaseName()
     
     if ask and not self.__autoOpen and self.__requestFilename:
         self.__gettingFileName = True
         fileName = E5FileDialog.getSaveFileName(
             None,
             self.tr("Save File"),
             defaultFileName,
             "")
         self.__gettingFileName = False
         if not fileName:
             self.progressBar.setVisible(False)
             self.__reply.close()
             self.on_stopButton_clicked()
             self.filenameLabel.setText(
                 self.tr("Download canceled: {0}")
                     .format(QFileInfo(defaultFileName).fileName()))
             self.__canceledFileSelect = True
             return
     
     fileInfo = QFileInfo(fileName)
     Helpviewer.HelpWindow.HelpWindow.downloadManager()\
         .setDownloadDirectory(fileInfo.absoluteDir().absolutePath())
     self.filenameLabel.setText(fileInfo.fileName())
     
     self.__output.setFileName(fileName + ".part")
     self.__fileName = fileName
     
     # check file path for saving
     saveDirPath = QFileInfo(self.__fileName).dir()
     if not saveDirPath.exists():
         if not saveDirPath.mkpath(saveDirPath.absolutePath()):
             self.progressBar.setVisible(False)
             self.on_stopButton_clicked()
             self.infoLabel.setText(self.tr(
                 "Download directory ({0}) couldn't be created.")
                 .format(saveDirPath.absolutePath()))
             return
     
     self.filenameLabel.setText(QFileInfo(self.__fileName).fileName())
     if self.__requestFilename:
         self.__readyRead()
Esempio n. 4
0
    def __getFileName(self):
        """
        Private method to get the file name to save to from the user.
        """
        if self.__gettingFileName:
            return

        import Helpviewer.HelpWindow
        downloadDirectory = Helpviewer.HelpWindow.HelpWindow\
            .downloadManager().downloadDirectory()

        if self.__fileName:
            fileName = self.__fileName
            originalFileName = self.__originalFileName
            self.__toDownload = True
            ask = False
        else:
            defaultFileName, originalFileName = \
                self.__saveFileName(downloadDirectory)
            fileName = defaultFileName
            self.__originalFileName = originalFileName
            ask = True
        self.__autoOpen = False
        if not self.__toDownload:
            from .DownloadAskActionDialog import DownloadAskActionDialog
            url = self.__reply.url()
            dlg = DownloadAskActionDialog(
                QFileInfo(originalFileName).fileName(),
                self.__reply.header(QNetworkRequest.ContentTypeHeader),
                "{0}://{1}".format(url.scheme(), url.authority()), self)
            if dlg.exec_() == QDialog.Rejected or dlg.getAction() == "cancel":
                self.progressBar.setVisible(False)
                self.__reply.close()
                self.on_stopButton_clicked()
                self.filenameLabel.setText(
                    self.tr("Download canceled: {0}").format(
                        QFileInfo(defaultFileName).fileName()))
                self.__canceledFileSelect = True
                return

##            if dlg.getAction() == "scan":
##                self.__mainWindow.requestVirusTotalScan(url)
##
##                self.progressBar.setVisible(False)
##                self.__reply.close()
##                self.on_stopButton_clicked()
##                self.filenameLabel.setText(
##                    self.tr("VirusTotal scan scheduled: {0}").format(
##                        QFileInfo(defaultFileName).fileName()))
##                self.__canceledFileSelect = True
##                return
##
            self.__autoOpen = dlg.getAction() == "open"
            if PYQT_VERSION_STR >= "5.0.0":
                from PyQt5.QtCore import QStandardPaths
                tempLocation = QStandardPaths.storageLocation(
                    QStandardPaths.TempLocation)
            else:
                from PyQt5.QtGui import QDesktopServices
                tempLocation = QDesktopServices.storageLocation(
                    QDesktopServices.TempLocation)
            fileName = tempLocation + '/' + \
                QFileInfo(fileName).completeBaseName()

        if ask and not self.__autoOpen and self.__requestFilename:
            self.__gettingFileName = True
            fileName = E5FileDialog.getSaveFileName(None, self.tr("Save File"),
                                                    defaultFileName, "")
            self.__gettingFileName = False
            if not fileName:
                self.progressBar.setVisible(False)
                self.__reply.close()
                self.on_stopButton_clicked()
                self.filenameLabel.setText(
                    self.tr("Download canceled: {0}").format(
                        QFileInfo(defaultFileName).fileName()))
                self.__canceledFileSelect = True
                return

        fileInfo = QFileInfo(fileName)
        Helpviewer.HelpWindow.HelpWindow.downloadManager()\
            .setDownloadDirectory(fileInfo.absoluteDir().absolutePath())
        self.filenameLabel.setText(fileInfo.fileName())

        self.__output.setFileName(fileName + ".part")
        self.__fileName = fileName

        # check file path for saving
        saveDirPath = QFileInfo(self.__fileName).dir()
        if not saveDirPath.exists():
            if not saveDirPath.mkpath(saveDirPath.absolutePath()):
                self.progressBar.setVisible(False)
                self.on_stopButton_clicked()
                self.infoLabel.setText(
                    self.tr("Download directory ({0}) couldn't be created.").
                    format(saveDirPath.absolutePath()))
                return

        self.filenameLabel.setText(QFileInfo(self.__fileName).fileName())
        if self.__requestFilename:
            self.__readyRead()