Beispiel #1
0
 def _exportImageToPNG(self, filename=None):
     if not filename:
         if not self._export_png_dialog:
             dialog = self._export_png_dialog = QFileDialog(self, "Export image to PNG", ".", "*.png")
             dialog.setDefaultSuffix("png")
             dialog.setFileMode(QFileDialog.AnyFile)
             dialog.setAcceptMode(QFileDialog.AcceptSave)
             dialog.setModal(True)
             QObject.connect(dialog, SIGNAL("filesSelected(const QStringList &)"), self._exportImageToPNG)
         return self._export_png_dialog.exec_() == QDialog.Accepted
     busy = BusyIndicator()
     if isinstance(filename, QStringList):
         filename = filename[0]
     filename = str(filename)
     # make QPixmap
     nx, ny = self.image.imageDims()
     (l0, l1), (m0, m1) = self.image.getExtents()
     pixmap = QPixmap(nx, ny)
     painter = QPainter(pixmap)
     # use QwtPlot implementation of draw canvas, since we want to avoid caching
     xmap = QwtScaleMap()
     xmap.setPaintInterval(0, nx)
     xmap.setScaleInterval(l1, l0)
     ymap = QwtScaleMap()
     ymap.setPaintInterval(ny, 0)
     ymap.setScaleInterval(m0, m1)
     self.image.draw(painter, xmap, ymap, pixmap.rect())
     painter.end()
     # save to file
     try:
         pixmap.save(filename, "PNG")
     except Exception as exc:
         self.emit(SIGNAL("showErrorMessage"), "Error writing %s: %s" % (filename, str(exc)))
         return
     self.emit(SIGNAL("showMessage"), "Exported image to file %s" % filename)
Beispiel #2
0
 def select_images_on_disk(uim, start_path=None):
     dlg = QFileDialog()
     logmsg('Select one or more images to add.')
     image_list = dlg.getOpenFileNames(caption='Select one or more images to add.',\
                                       directory=uim.hs.db_dpath)
     image_list = [str(fpath) for fpath in image_list]
     return image_list
 def selectDirectory(self):
     directory = QFileDialog.getExistingDirectory(QFileDialog())
     if len(directory) > 0:
         directory = pathlib.Path(directory).resolve()
         if directory.exists():
             self._rddtDataExtractor.defaultPath = directory
             self.directoryBox.setText(str(directory))
             self.setUnsavedChanges(True)
Beispiel #4
0
 def _openFileCallback(self):
     if not self._open_file_dialog:
         filters = ";;".join(
             ["%s (%s)" % (name, " ".join(patterns)) for name, patterns, func in self._load_file_types])
         dialog = self._open_file_dialog = QFileDialog(self, "Open sky model", ".", filters)
         dialog.setFileMode(QFileDialog.ExistingFile)
         dialog.setModal(True)
         QObject.connect(dialog, SIGNAL("filesSelected(const QStringList &)"), self.openFile)
     self._open_file_dialog.exec_()
     return
Beispiel #5
0
 def select_database(uim):
     dlg = QFileDialog()
     opt = QFileDialog.ShowDirsOnly
     if uim.hs.db_dpath is None:
         db_dpath = str(
             dlg.getExistingDirectory(caption='Open/New Database',
                                      options=opt))
     else:
         db_dpath = str(dlg.getExistingDirectory(\
                    caption='Open/New Database', options=opt, directory=uim.hs.db_dpath))
     return db_dpath
Beispiel #6
0
 def _chooseFile(self):
     if self._file_dialog is None:
         dialog = self._file_dialog = QFileDialog(self, self._dialog_label, ".", self._file_types)
         if self._default_suffix:
             dialog.setDefaultSuffix(self._default_suffix)
         dialog.setFileMode(self._file_mode)
         dialog.setModal(True)
         if self._dir is not None:
             dialog.setDirectory(self._dir)
         QObject.connect(dialog, SIGNAL("filesSelected(const QStringList &)"), self.setFilename)
     return self._file_dialog.exec_()
Beispiel #7
0
    def on_browseDestButton_clicked(self, checked=None):
        """
        Called when browse button for destination is clicked.
        Opens a dialog for selecting a path.
        """
        if checked is None: return
        fileDialog = QFileDialog()

        path = str(fileDialog.getExistingDirectory(self, 'Set directory',
                                                   '/home/'))
        if path != '':
            path = path.replace(" ", "\ ")
            self.ui.lineEditDestPath.setText(path)
Beispiel #8
0
 def saveFileAs(self, filename=None):
     """Saves file using the specified 'filename'. If filename is None, opens dialog to get a filename.
     Returns True if saving succeeded, False on error (or if cancelled by user).
     """
     if filename is None:
         if not self._save_as_dialog:
             filters = ";;".join(
                 ["%s (%s)" % (name, " ".join(patterns)) for name, patterns, func in self._save_file_types])
             dialog = self._save_as_dialog = QFileDialog(self, "Save sky model", ".", filters)
             dialog.setDefaultSuffix(ModelHTML.DefaultExtension)
             dialog.setFileMode(QFileDialog.AnyFile)
             dialog.setAcceptMode(QFileDialog.AcceptSave)
             dialog.setConfirmOverwrite(False)
             dialog.setModal(True)
             QObject.connect(dialog, SIGNAL("filesSelected(const QStringList &)"), self.saveFileAs)
         return self._save_as_dialog.exec_() == QDialog.Accepted
     # filename supplied, so save
     return self.saveFile(filename, confirm=False)
Beispiel #9
0
    def on_browseButton_clicked(self, checked=None):
        """
        Called when browse button for selecting the edf file is clicked.
        Opens a dialog for selecting a file.
        """
        if checked is None: return
        fileDialog = QFileDialog()

        self.fName = str(fileDialog.getOpenFileName(self, 
                                            'Select a file to convert',
                                            '/home/'))
        if self.fName != '':
            self.fName = self.fName.replace(" ", "\ ")
            self.ui.lineEditEdfName.setText(self.fName)
            splitted = str.split(self.fName, '/')
            destPath = '/'.join(splitted[:-1])
            #destPath = destPath.replace(" ", "\ ")
            self.ui.lineEditDestPath.setText(destPath)
            fifName = splitted[-1][:-4] + '.fif'
            #fifName = fifName.replace(" ", "\ ")
            self.ui.lineEditFifName.setText(fifName)
Beispiel #10
0
 def saveSelectionAs(self, filename=None, force=False):
     if not self.model:
         return
     if filename is None:
         if not self._save_sel_as_dialog:
             filters = ";;".join(
                 ["%s (%s)" % (name, " ".join(patterns)) for name, patterns, func in self._save_file_types])
             dialog = self._save_sel_as_dialog = QFileDialog(self, "Save sky model", ".", filters)
             dialog.setDefaultSuffix(ModelHTML.DefaultExtension)
             dialog.setFileMode(QFileDialog.AnyFile)
             dialog.setAcceptMode(QFileDialog.AcceptSave)
             dialog.setConfirmOverwrite(True)
             dialog.setModal(True)
             QObject.connect(dialog, SIGNAL("filesSelected(const QStringList &)"), self.saveSelectionAs)
         return self._save_sel_as_dialog.exec_() == QDialog.Accepted
     # save selection
     if isinstance(filename, QStringList):
         filename = filename[0]
     filename = str(filename)
     selmodel = self.model.copy()
     sources = [src for src in self.model.sources if src.selected]
     if not sources:
         self.showErrorMessage("""You have not selected any sources to save.""")
         return
     # try to determine the file type
     filetype, import_func, export_func, doc = Tigger.Models.Formats.resolveFormat(filename, None)
     if export_func is None:
         self.showErrorMessage("""Error saving model file %s: unsupported output format""" % filename)
         return
     busy = BusyIndicator()
     try:
         export_func(self.model, filename, sources=sources)
     except:
         busy = None
         self.showErrorMessage(
             """Error saving selection to model file %s: %s""" % (filename, str(sys.exc_info()[1])))
         return False
     self.showMessage("""Wrote %d selected source%s to file %s""" % (
     len(selmodel.sources), "" if len(selmodel.sources) == 1 else "s", filename), 3000)
     pass
Beispiel #11
0
 def loadImage(self,
               filename=None,
               duplicate=True,
               to_top=True,
               model=None):
     """Loads image. Returns ImageControlBar object.
     If image is already loaded: returns old ICB if duplicate=False (raises to top if to_top=True),
     or else makes a new control bar.
     If model is set to a source name, marks the image as associated with a model source. These can be unloaded en masse by calling
     unloadModelImages().
     """
     if filename is None:
         if not self._load_image_dialog:
             dialog = self._load_image_dialog = QFileDialog(
                 self, "Load FITS image", ".",
                 "FITS images (%s);;All files (*)" %
                 (" ".join(["*" + ext for ext in FITS_ExtensionList])))
             dialog.setFileMode(QFileDialog.ExistingFile)
             dialog.setModal(True)
             QObject.connect(dialog,
                             SIGNAL("filesSelected(const QStringList &)"),
                             self.loadImage)
         self._load_image_dialog.exec_()
         return None
     if isinstance(filename, QStringList):
         filename = filename[0]
     filename = str(filename)
     # report error if image does not exist
     if not os.path.exists(filename):
         self.showErrorMessage("""FITS image %s does not exist.""" %
                               filename)
         return None
     # see if image is already loaded
     if not duplicate:
         for ic in self._imagecons:
             if ic.getFilename() and os.path.samefile(
                     filename, ic.getFilename()):
                 if to_top:
                     self.raiseImage(ic)
                 if model:
                     self._model_imagecons.add(id(ic))
                 return ic
     # load the FITS image
     busy = BusyIndicator()
     dprint(2, "reading FITS image", filename)
     self.showMessage("""Reading FITS image %s""" % filename, 3000)
     QApplication.flush()
     try:
         image = SkyImage.FITSImagePlotItem(str(filename))
     except KeyboardInterrupt:
         raise
     except:
         busy = None
         traceback.print_exc()
         self.showErrorMessage(
             """<P>Error loading FITS image %s: %s. This may be due to a bug in Tigger; if the FITS file loads fine in another viewer,
       please send the FITS file, along with a copy of any error messages from the text console, to [email protected].</P>"""
             % (filename, str(sys.exc_info()[1])))
         return None
     # create control bar, add to widget stack
     ic = self._createImageController(image,
                                      "model source '%s'" %
                                      model if model else filename,
                                      model or image.name,
                                      model=model)
     self.showMessage("""Loaded FITS image %s""" % filename, 3000)
     dprint(2, "image loaded")
     return ic