Source code for gsdview.gdalbackend

# -*- coding: utf-8 -*-

### Copyright (C) 2008-2012 Antonio Valentino <a_valentino@users.sf.net>

### This file is part of GSDView.

### GSDView is free software; you can redistribute it and/or modify
### it under the terms of the GNU General Public License as published by
### the Free Software Foundation; either version 2 of the License, or
### (at your option) any later version.

### GSDView is distributed in the hope that it will be useful,
### but WITHOUT ANY WARRANTY; without even the implied warranty of
### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
### GNU General Public License for more details.

### You should have received a copy of the GNU General Public License
### along with GSDView; if not, write to the Free Software
### Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA.


'''GDAL backend for GSDView.'''


from .info import *
from .info import __version__, __requires__
from .core import GDALBackend


__author__ = 'Antonio Valentino <a_valentino@users.sf.net>'
__date__ = '$Date$'
__revision__ = '$Revision$'

__all__ = ['init', 'close', 'loadSettings', 'saveSettings',
           'name', 'version', 'short_description', 'description',
           'author', 'author_email', 'copyright', 'license_type',
           'website', 'website_label', 'getUseExceptions',
           'UseExceptions', 'DontUseExceptions',
           'openFile', 'openImageView', 'newImageView', 'openItemMatadataView',
           'openRGBImageView', 'openSubDataset', 'closeCurrentItem',
           'findItemFromFilename', 'itemActions', 'itemContextMenu',
]

UseExceptions = GDALBackend.UseExceptions
DontUseExceptions = GDALBackend.DontUseExceptions
getUseExceptions = GDALBackend.getUseExceptions

_backendobj = None


[docs]def init(app): import os import sys from osgeo import gdal from .. import utils from .. import qt4support from . import widgets from . import gdalsupport # @TODO: check #UseExceptions() # set file dialog filters app.filedialog.setNameFilters(gdalsupport.gdalFilters()) # update versions info in about dialog app.aboutdialog.addSoftwareVersion('GDAL', gdal.VersionInfo('RELEASE_NAME'), 'http://www.gdal.org') # GDAL icon icon = qt4support.geticon('GDALLogoColor.svg', __name__) # update the settings dialog #page = widgets.GDALPreferencesPage(app.preferencesdialog) page = widgets.BackendPreferencesPage(app.preferencesdialog) app.preferencesdialog.addPage(page, icon, 'GDAL') # add a new page in the about dialog page = widgets.GDALInfoWidget(app.aboutdialog) tabindex = app.aboutdialog.tabWidget.addTab(page, icon, 'GDAL') widget = app.aboutdialog.tabWidget.widget(tabindex) widget.setObjectName('gdalTab') # @TODO: check # register the backend app.backends.append(name) global _backendobj _backendobj = GDALBackend(app) # @TODO: fix #~ gdal.SetConfigOption('GDAL_PAM_ENABLED', 'YES') #~ gdal.SetConfigOption('GDAL_PAM_PROXY_DIR', #~ os.path.expanduser(os.path.join('~', '.gsdview', #~ 'cache'))) # @TODO: fix # @NOTE: explicitly disable GDAL exceptions due to bug #3077 # (http://trac.osgeo.org/gdal/ticket/3077) #UseExceptions() DontUseExceptions() # Fix path for GDAL tools if getattr(sys, 'frozen', False): from .. import appsite os.environ['PATH'] = os.pathsep.join((appsite.GSDVIEWROOT, os.getenv('PATH', ''))) gdal.SetConfigOption('GDAL_DATA', os.path.join(appsite.GSDVIEWROOT, 'data')) # @TODO: check #if app.settings.value('GDAL_DATA').isValid(): # msg = app.tr('"GDAL_DATA" from the user configuration file ' # 'overrides the default value') # QtGui.QMessageBox.warning(app, app.tr('WARNING'), msg) elif sys.platform == 'darwin': gdaladdobin = utils.which('gdaladdo') if not gdaladdobin: frameworkroot = os.path.join(os.path.dirname(gdal.__file__), os.pardir, os.pardir, os.pardir) frameworkroot = os.path.abspath(frameworkroot) binpath = os.path.join(frameworkroot, 'unix', 'bin') PATH = os.getenv('PATH', '') if binpath not in PATH: PATH = os.pathsep.join((binpath, PATH)) os.environ['PATH'] = PATH import logging logging.info('GDAL binary path added to system path: ' '%s' % binpath) #elif sys.platform[:3] == 'win': # gdaladdobin = utils.which('gdaladdo') # if not gdaladdobin: # pass return _backendobj
def _definefunc(methodname): def func(*args, **kwargs): if _backendobj is None: raise RuntimeError('GDAL backend is still not initialized') return getattr(_backendobj, methodname)(*args, **kwargs) func.__name__ = methodname return func # @TODO: check (maybe it is better to make it explicitly) globals_ = globals() for methodname in __all__: if not methodname in globals_ and methodname in GDALBackend.__dict__: globals_[methodname] = _definefunc(methodname) del methodname, globals_, _definefunc
[docs]def close(app): saveSettings(app.settings)
[docs]def loadSettings(settings): if _backendobj: return _backendobj.loadSettings(settings)
[docs]def saveSettings(settings): if _backendobj: return _backendobj.saveSettings(settings)

Get GSDView at SourceForge.net. Fast, secure and Free Open Source software downloads