Exemple #1
0
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
        # Set window title to start with
        self.setWindowTitle(programinfo.NAME + " " + programinfo.VERSION)
        # First set the menu actions
        self.mnu_action_load_images.triggered.connect(self.loadimages)
        self.action_Quit.triggered.connect(self.quit_application)
        app.aboutToQuit.connect(self.quit_application)
        #--- Extra menu
        self.mnu_action_modifydatetime.triggered.connect(self.modify_datetime)
        self.mnu_action_create_args.triggered.connect(self.create_args)
        self.mnu_action_export_metadata.triggered.connect(self.export_metadata)
        self.mnu_action_remove_metadata.triggered.connect(self.remove_metadata)
        self.mnu_action_date_to_DateTimeOriginal.triggered.connect(
            self.date_to_datetimeoriginal)
        self.mnu_action_repair_jpg.triggered.connect(self.repair_jpg_metadata)
        self.mnu_action_copytoxmp.triggered.connect(self.copymetadatatoxmp)
        self.mnu_action_renaming.triggered.connect(self.rename_photos)
        #self.mnu_action_define_lens.triggered.connect(self.lensdialog)
        #self.menuExtra.removeAction(self.mnu_action_renaming)
        #--- help menu
        self.mnu_action_pyexiftoolgui_home.triggered.connect(
            self.open_pyexiftoolgui_homepage)
        self.mnu_action_exiftool.triggered.connect(self.open_exiftool_homepage)
        self.mnu_action_manual.triggered.connect(self.open_manual)
        #self.mnu_action_mapcoordinates_tab.triggered.connect(self.mapcoordinates_help)
        self.mnu_action_license.triggered.connect(self.show_license)
        self.mnu_action_Donate.triggered.connect(self.open_donate_page)
        self.mnu_action_Info.triggered.connect(self.show_about_window)
        # Set extra actions for context menu (others taken from normal menu)
        self.imagereference = QAction(
            "Select photo as reference for \"Extra\" menu",
            self,
            triggered=self.reference_image)
        self.displayphoto = QAction("Display selected photo",
                                    self,
                                    triggered=self.showimage)
        # Load several views, buttons, comboboxes, spinboxes and labels from main screen
        self.btn_loadimages.clicked.connect(self.loadimages)
        self.showimagebutton.clicked.connect(self.showimage)
        self.showimagebutton.setEnabled(False)
        self.statusbar.showMessage("")
        self.progressbar.hide()
        self.comboBox_languages.currentIndexChanged.connect(
            self.comboBox_languageschanged)
        # Load several buttons from the Edit -> GPS tab
        self.dec2dmsbutton.clicked.connect(self.convertd2dms)
        self.dms2decbutton.clicked.connect(self.convertdms2d)
        self.btn_resetgps.clicked.connect(self.clear_gps_fields)
        self.btn_copy_calc_to_gps.clicked.connect(self.copy_calc_to_gpsinput)
        self.btn_gpshelp.clicked.connect(self.gps_help)
        self.btn_gps_copyfrom.clicked.connect(self.copygpsfromselected)
        self.btn_gps_copyfrom.setEnabled(False)
        self.btn_savegps.clicked.connect(self.savegpsdata)
        self.btn_savegps.setEnabled(False)
        self.btn_mapcoordinates.clicked.connect(self.open_mapcoordinates)
        # Load several buttons from the Edit -> EXIF tab
        self.btn_exifhelp.clicked.connect(self.exif_help)
        self.btn_exif_copyfrom.clicked.connect(self.copyexiffromselected)
        self.btn_exif_copyfrom.setEnabled(False)
        self.btn_saveexif.clicked.connect(self.saveexifdata)
        self.btn_saveexif.setEnabled(False)
        self.btn_resetexif.clicked.connect(self.clear_exif_fields)
        self.btn_copy_exif_defaults.clicked.connect(self.exif_defaults)
        # Load several buttons from the Edit -> xmp tab
        self.btn_xmphelp.clicked.connect(self.xmp_help)
        self.btn_xmp_copyfrom.clicked.connect(self.copyxmpfromselected)
        self.btn_xmp_copyfrom.setEnabled(False)
        self.btn_savexmp.clicked.connect(self.savexmpdata)
        self.btn_savexmp.setEnabled(False)
        self.btn_resetxmp.clicked.connect(self.clear_xmp_fields)
        self.btn_copy_xmp_defaults.clicked.connect(self.xmp_defaults)
        # Load several buttons from the Edit -> GPano tab
        self.btn_gpanohelp.clicked.connect(self.gpano_help)
        self.btn_gpano_copyfrom.clicked.connect(self.copygpanofromselected)
        self.btn_gpano_copyfrom.setEnabled(False)
        self.btn_savegpano.clicked.connect(self.savegpanodata)
        self.btn_savegpano.setEnabled(False)
        self.btn_resetgpano.clicked.connect(self.clear_gpano_fields)
        # Load several buttons from the Edit -> Geotagging tab
        self.btn_geotagging_help.clicked.connect(self.geotagging_help)
        self.btn_geotag_img_browse.clicked.connect(self.geotag_source_folder)
        self.btn_geotag_gps_track_browse.clicked.connect(self.geotag_gps_file)
        self.btn_write_geotaginfo.clicked.connect(self.write_geotag_info)
        self.btn_write_geotaginfo.setEnabled(False)
        # Load several buttons from the Edit -> lens tab
        self.chk_predefined_lenses.clicked.connect(
            self.check_self_defined_lenses)
        self.btn_lenshelp.clicked.connect(self.lens_help)
        self.btn_lens_copyfrom.clicked.connect(self.copylensfromselected)
        self.btn_lens_copyfrom.setEnabled(False)
        self.btn_savelens.clicked.connect(self.savelensdata)
        self.btn_savelens.setEnabled(False)
        self.btn_resetlens.clicked.connect(self.clear_lens_fields)
        self.btn_save_lens.clicked.connect(self.savelens)
        self.btn_update_lens.clicked.connect(self.updatelens)
        self.btn_delete_lens.clicked.connect(self.deletelens)
        self.predefined_lenses.currentIndexChanged.connect(
            self.definedlenschanged)
        # For the time being hide the button
        #self.btn_copy_lens_defaults.setVisible(False)
        # Load several buttons from the Edit -> Your commands tab
        self.btn_yourcommands_clearinput.clicked.connect(
            self.clear_yourcommands_input)
        self.btn_yourcommands_clearoutput.clicked.connect(
            self.clear_yourcommands_output)
        self.btn_yourcommands_go.clicked.connect(self.yourcommands_go)
        self.btn_yourcommands_help.clicked.connect(self.yourcommands_help)
        # Load several buttons from the Preferences tab
        self.btn_preferences_save.clicked.connect(self.preferences_save)
        self.btn_preferenceshelp.clicked.connect(self.preferences_help)
        self.btn_choose_exiftool.clicked.connect(self.select_exiftool)
        self.btn_choose_defstartupfolder.clicked.connect(
            self.select_defstartupfolder)

        #------------------------------------------------------------------------
        # Define a few globals and variables
        self.DebugMsg = False
        self.allDebugMsg = False
        self.logging = ""
        self.logtofile = 0
        #         self.tmpworkdir = tempfile.gettempdir() +"/pyGPSTtmp"

        self.OSplatform = platform.system()
        #petgfunctions.read_config(self)
        petgfilehandling.read_xml_config(self)
        # First clean up and recreate our temporary workspace
        #        petgfunctions.remove_workspace( self )
        #        try:
        #        fldr = os.mkdir(self.tmpworkdir)
        #        except:
        #        if self.logtofile:
        #            logging.info(self.tmpworkdir + " already exists.")

        #------------------------------------------------------------------------
        # Initialize file paths
        self.realfile_dir = os.path.dirname(os.path.abspath(__file__))
        self.parent_dir = os.path.dirname(self.realfile_dir)
        self.ui_dir = os.path.join(self.realfile_dir, "ui")

        #------------------------------------------------------------------------
        # Start up functions
        #        OSplatform, img_converter, enfuseprg, aisprg = petgfunctions.startup_checks(self)
        #            self.OSplatform = OSplatform
        #         if self.allDebugMsg:
        #             ret = QMessageBox.about(self, "returned check values",
        #                                      "platform: %s\nconverter: %s\nenfuse: %s\nais: %s"
        #                                       % (OSplatform, img_converter, enfuseprg, aisprg))

        # Startup check for available tools
        self.exiftoolversion = "0.00"
        petgfunctions.tool_check(self)
        # Now that we know that we have exiftool version and languages available split the languages
        petgfunctions.exitool_languages(self)

        # Initialize Combobox on lens tab with loaded lenses (if any)
        self.lens_current_index = ''  # We need this later when updating or deleting lenses
        petgfilehandling.read_defined_lenses(self, qApp)

        # Initialize Combobox mass change tab
        '''self.grouplist = [ 
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
# Set window title to start with
        self.setWindowTitle(programinfo.NAME + " " + programinfo.VERSION )
# First set the menu actions
        self.mnu_action_load_images.triggered.connect(self.loadimages)
        self.action_Quit.triggered.connect(self.quit_application)
        app.aboutToQuit.connect(self.quit_application)
        #--- Extra menu
        self.mnu_action_modifydatetime.triggered.connect(self.modify_datetime)
        self.mnu_action_create_args.triggered.connect(self.create_args)
        self.mnu_action_export_metadata.triggered.connect(self.export_metadata)
        self.mnu_action_remove_metadata.triggered.connect(self.remove_metadata)
        self.mnu_action_date_to_DateTimeOriginal.triggered.connect(self.date_to_datetimeoriginal)
        self.mnu_action_repair_jpg.triggered.connect(self.repair_jpg_metadata)
        self.mnu_action_copytoxmp.triggered.connect(self.copymetadatatoxmp)
        self.mnu_action_renaming.triggered.connect(self.rename_photos)
        #self.mnu_action_define_lens.triggered.connect(self.lensdialog)
        #self.menuExtra.removeAction(self.mnu_action_renaming)
        #--- help menu
        self.mnu_action_pyexiftoolgui_home.triggered.connect(self.open_pyexiftoolgui_homepage)
        self.mnu_action_exiftool.triggered.connect(self.open_exiftool_homepage)
        self.mnu_action_manual.triggered.connect(self.open_manual)
        #self.mnu_action_mapcoordinates_tab.triggered.connect(self.mapcoordinates_help)
        self.mnu_action_license.triggered.connect(self.show_license)
        self.mnu_action_Donate.triggered.connect(self.open_donate_page)
        self.mnu_action_Info.triggered.connect(self.show_about_window)
        # Set extra actions for context menu (others taken from normal menu)
        self.imagereference = QAction("Select photo as reference for \"Extra\" menu", self, triggered = self.reference_image)
        self.displayphoto = QAction("Display selected photo", self, triggered = self.showimage)
# Load several views, buttons, comboboxes, spinboxes and labels from main screen
        self.btn_loadimages.clicked.connect(self.loadimages)
        self.showimagebutton.clicked.connect(self.showimage)
        self.showimagebutton.setEnabled(False)
        self.statusbar.showMessage("")
        self.progressbar.hide()
        self.comboBox_languages.currentIndexChanged.connect(self.comboBox_languageschanged)
# Load several buttons from the Edit -> GPS tab
        self.dec2dmsbutton.clicked.connect(self.convertd2dms)
        self.dms2decbutton.clicked.connect(self.convertdms2d)
        self.btn_resetgps.clicked.connect(self.clear_gps_fields)
        self.btn_copy_calc_to_gps.clicked.connect(self.copy_calc_to_gpsinput)
        self.btn_gpshelp.clicked.connect(self.gps_help)
        self.btn_gps_copyfrom.clicked.connect(self.copygpsfromselected)
        self.btn_gps_copyfrom.setEnabled(False)
        self.btn_savegps.clicked.connect(self.savegpsdata)
        self.btn_savegps.setEnabled(False)
        self.btn_mapcoordinates.clicked.connect(self.open_mapcoordinates)
# Load several buttons from the Edit -> EXIF tab
        self.btn_exifhelp.clicked.connect(self.exif_help)
        self.btn_exif_copyfrom.clicked.connect(self.copyexiffromselected)
        self.btn_exif_copyfrom.setEnabled(False)
        self.btn_saveexif.clicked.connect(self.saveexifdata)
        self.btn_saveexif.setEnabled(False)
        self.btn_resetexif.clicked.connect(self.clear_exif_fields)
        self.btn_copy_exif_defaults.clicked.connect(self.exif_defaults)
# Load several buttons from the Edit -> xmp tab
        self.btn_xmphelp.clicked.connect(self.xmp_help)
        self.btn_xmp_copyfrom.clicked.connect(self.copyxmpfromselected)
        self.btn_xmp_copyfrom.setEnabled(False)
        self.btn_savexmp.clicked.connect(self.savexmpdata)
        self.btn_savexmp.setEnabled(False)
        self.btn_resetxmp.clicked.connect(self.clear_xmp_fields)
        self.btn_copy_xmp_defaults.clicked.connect(self.xmp_defaults)
# Load several buttons from the Edit -> GPano tab
        self.btn_gpanohelp.clicked.connect(self.gpano_help)
        self.btn_gpano_copyfrom.clicked.connect(self.copygpanofromselected)
        self.btn_gpano_copyfrom.setEnabled(False)
        self.btn_savegpano.clicked.connect(self.savegpanodata)
        self.btn_savegpano.setEnabled(False)
        self.btn_resetgpano.clicked.connect(self.clear_gpano_fields)
# Load several buttons from the Edit -> Geotagging tab
        self.btn_geotagging_help.clicked.connect(self.geotagging_help)
        self.btn_geotag_img_browse.clicked.connect(self.geotag_source_folder)
        self.btn_geotag_gps_track_browse.clicked.connect(self.geotag_gps_file)
        self.btn_write_geotaginfo.clicked.connect(self.write_geotag_info)
        self.btn_write_geotaginfo.setEnabled(False)
# Load several buttons from the Edit -> lens tab
        self.chk_predefined_lenses.clicked.connect(self.check_self_defined_lenses)
        self.btn_lenshelp.clicked.connect(self.lens_help)
        self.btn_lens_copyfrom.clicked.connect(self.copylensfromselected)
        self.btn_lens_copyfrom.setEnabled(False)
        self.btn_savelens.clicked.connect(self.savelensdata)
        self.btn_savelens.setEnabled(False)
        self.btn_resetlens.clicked.connect(self.clear_lens_fields)
        self.btn_save_lens.clicked.connect(self.savelens)
        self.btn_update_lens.clicked.connect(self.updatelens)
        self.btn_delete_lens.clicked.connect(self.deletelens)
        self.predefined_lenses.currentIndexChanged.connect(self.definedlenschanged)
        # For the time being hide the button
        #self.btn_copy_lens_defaults.setVisible(False)
# Load several buttons from the Edit -> Your commands tab
        self.btn_yourcommands_clearinput.clicked.connect(self.clear_yourcommands_input)
        self.btn_yourcommands_clearoutput.clicked.connect(self.clear_yourcommands_output)
        self.btn_yourcommands_go.clicked.connect(self.yourcommands_go)
        self.btn_yourcommands_help.clicked.connect(self.yourcommands_help)
# Load several buttons from the Preferences tab
        self.btn_preferences_save.clicked.connect(self.preferences_save)
        self.btn_preferenceshelp.clicked.connect(self.preferences_help)
        self.btn_choose_exiftool.clicked.connect(self.select_exiftool)
        self.btn_choose_defstartupfolder.clicked.connect(self.select_defstartupfolder)


#------------------------------------------------------------------------
# Define a few globals and variables
        self.DebugMsg = False
        self.allDebugMsg = False
        self.logging = ""
        self.logtofile = 0
#         self.tmpworkdir = tempfile.gettempdir() +"/pyGPSTtmp"

        self.OSplatform = platform.system()
        #petgfunctions.read_config(self)
        petgfilehandling.read_xml_config(self)
        # First clean up and recreate our temporary workspace
#        petgfunctions.remove_workspace( self )
#        try:
#        fldr = os.mkdir(self.tmpworkdir)
#        except: 
#        if self.logtofile:
#            logging.info(self.tmpworkdir + " already exists.")

#------------------------------------------------------------------------
# Initialize file paths
        self.realfile_dir  = os.path.dirname(os.path.abspath(__file__))
        self.parent_dir    = os.path.dirname(self.realfile_dir)
        self.ui_dir    = os.path.join(self.realfile_dir, "ui")

#------------------------------------------------------------------------
# Start up functions
#        OSplatform, img_converter, enfuseprg, aisprg = petgfunctions.startup_checks(self)
#            self.OSplatform = OSplatform
#         if self.allDebugMsg:
#             ret = QMessageBox.about(self, "returned check values",
#                                      "platform: %s\nconverter: %s\nenfuse: %s\nais: %s"
#                                       % (OSplatform, img_converter, enfuseprg, aisprg))

        # Startup check for available tools
        self.exiftoolversion = "0.00"
        petgfunctions.tool_check(self)
        # Now that we know that we have exiftool version and languages available split the languages
        petgfunctions.exitool_languages(self)

        # Initialize Combobox on lens tab with loaded lenses (if any)
        self.lens_current_index = ''  # We need this later when updating or deleting lenses
        petgfilehandling.read_defined_lenses(self, qApp)

        # Initialize Combobox mass change tab
        '''self.grouplist = [