[QGIS Commit] r10566 - in trunk/qgis/src/plugins: . oracle_raster
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Wed Apr 15 10:18:30 EDT 2009
Author: mhugent
Date: 2009-04-15 10:18:30 -0400 (Wed, 15 Apr 2009)
New Revision: 10566
Added:
trunk/qgis/src/plugins/oracle_raster/
trunk/qgis/src/plugins/oracle_raster/CMakeLists.txt
trunk/qgis/src/plugins/oracle_raster/oracleplugin.png
trunk/qgis/src/plugins/oracle_raster/oracleplugin.qrc
trunk/qgis/src/plugins/oracle_raster/qgsoracle_plugin.cpp
trunk/qgis/src/plugins/oracle_raster/qgsoracle_plugin.h
trunk/qgis/src/plugins/oracle_raster/qgsoracleconnect_ui.cpp
trunk/qgis/src/plugins/oracle_raster/qgsoracleconnect_ui.h
trunk/qgis/src/plugins/oracle_raster/qgsoracleconnectbase.ui
trunk/qgis/src/plugins/oracle_raster/qgsselectgeoraster_ui.cpp
trunk/qgis/src/plugins/oracle_raster/qgsselectgeoraster_ui.h
trunk/qgis/src/plugins/oracle_raster/qgsselectgeorasterbase.ui
Modified:
trunk/qgis/src/plugins/CMakeLists.txt
Log:
Added oracle spatial raster plugin provided by Ivan Lucena
Modified: trunk/qgis/src/plugins/CMakeLists.txt
===================================================================
--- trunk/qgis/src/plugins/CMakeLists.txt 2009-04-14 17:23:14 UTC (rev 10565)
+++ trunk/qgis/src/plugins/CMakeLists.txt 2009-04-15 14:18:30 UTC (rev 10566)
@@ -3,6 +3,7 @@
interpolation
north_arrow
scale_bar
+ oracle_raster
)
IF (POSTGRES_FOUND)
Added: trunk/qgis/src/plugins/oracle_raster/CMakeLists.txt
===================================================================
--- trunk/qgis/src/plugins/oracle_raster/CMakeLists.txt (rev 0)
+++ trunk/qgis/src/plugins/oracle_raster/CMakeLists.txt 2009-04-15 14:18:30 UTC (rev 10566)
@@ -0,0 +1,55 @@
+
+########################################################
+# Files
+
+SET (ORACLE_SRCS
+ qgsoracle_plugin.cpp
+ qgsselectgeoraster_ui.cpp
+ qgsoracleconnect_ui.cpp
+)
+
+SET (ORACLE_UIS
+ qgsselectgeorasterbase.ui
+ qgsoracleconnectbase.ui
+)
+
+SET (ORACLE_MOC_HDRS
+ qgsoracle_plugin.h
+ qgsselectgeoraster_ui.h
+ qgsoracleconnect_ui.h
+)
+
+SET (ORACLE_RCCS oracleplugin.qrc)
+
+########################################################
+# Build
+
+QT4_WRAP_UI (ORACLE_UIS_H ${ORACLE_UIS})
+
+QT4_WRAP_CPP (ORACLE_MOC_SRCS ${ORACLE_MOC_HDRS})
+
+QT4_ADD_RESOURCES(ORACLE_RCC_SRCS ${ORACLE_RCCS})
+
+ADD_LIBRARY (oracleplugin MODULE ${ORACLE_SRCS} ${ORACLE_MOC_SRCS} ${ORACLE_RCC_SRCS} ${ORACLE_UIS_H})
+
+INCLUDE_DIRECTORIES(
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${GDAL_INCLUDE_DIR}
+ ../../core ../../core/raster ../../core/renderer ../../core/symbology
+ ../../gui
+ ..
+)
+
+TARGET_LINK_LIBRARIES(oracleplugin
+ qgis_core
+ qgis_gui
+)
+
+
+########################################################
+# Install
+
+INSTALL(TARGETS oracleplugin
+ RUNTIME DESTINATION ${QGIS_PLUGIN_DIR}
+ LIBRARY DESTINATION ${QGIS_PLUGIN_DIR})
+
Added: trunk/qgis/src/plugins/oracle_raster/oracleplugin.png
===================================================================
(Binary files differ)
Property changes on: trunk/qgis/src/plugins/oracle_raster/oracleplugin.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/qgis/src/plugins/oracle_raster/oracleplugin.qrc
===================================================================
--- trunk/qgis/src/plugins/oracle_raster/oracleplugin.qrc (rev 0)
+++ trunk/qgis/src/plugins/oracle_raster/oracleplugin.qrc 2009-04-15 14:18:30 UTC (rev 10566)
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/oracleplugin/" >
+ <file>oracleplugin.png</file>
+ </qresource>
+</RCC>
Added: trunk/qgis/src/plugins/oracle_raster/qgsoracle_plugin.cpp
===================================================================
--- trunk/qgis/src/plugins/oracle_raster/qgsoracle_plugin.cpp (rev 0)
+++ trunk/qgis/src/plugins/oracle_raster/qgsoracle_plugin.cpp 2009-04-15 14:18:30 UTC (rev 10566)
@@ -0,0 +1,153 @@
+/***************************************************************************
+ oracleplugin.cpp Access Oracle Spatial Plugin
+ -------------------
+ begin : Oracle Spatial Plugin
+ copyright : (C) Ivan Lucena
+ email : ivan.lucena at pmldnet.com
+/***************************************************************************
+ * *
+ * This program 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. *
+ * *
+ ***************************************************************************/
+/* $Id$ */
+
+#include "qgsoracle_plugin.h"
+#include "qgsselectgeoraster_ui.h"
+
+static const char * const sIdent = "$Id: oracleplugin.cpp $";
+static const QString sName = QObject::tr("Oracle Spatial GeoRaster");
+static const QString sDescription = QObject::tr("Access Oracle Spatial GeoRaster");
+static const QString sPluginVersion = QObject::tr("Version 0.1");
+static const QgisPlugin::PLUGINTYPE sPluginType = QgisPlugin::UI;
+
+//////////////////////////////////////////////////////////////////////
+//
+// THE FOLLOWING METHODS ARE MANDATORY FOR ALL PLUGINS
+//
+//////////////////////////////////////////////////////////////////////
+
+/**
+ * Constructor for the plugin. The plugin is passed a pointer
+ * an interface object that provides access to exposed functions in QGIS.
+ * @param theQGisInterface - Pointer to the QGIS interface object
+ */
+QgsOraclePlugin::QgsOraclePlugin(QgisInterface * theQgisInterface) :
+QgisPlugin(sName, sDescription, sPluginVersion, sPluginType),
+mQGisIface(theQgisInterface)
+{
+}
+
+QgsOraclePlugin::~QgsOraclePlugin()
+{
+
+}
+
+/*
+ * Initialize the GUI interface for the plugin - this is only called once when the plugin is
+ * added to the plugin registry in the QGIS application.
+ */
+void QgsOraclePlugin::initGui()
+{
+
+ // Create the action for tool
+ mQActionPointer = new QAction(QIcon(":/oracleplugin/oracleplugin.png"), tr("Select GeoRaster"), this);
+ // Set the what's this text
+ mQActionPointer->setWhatsThis(tr("Open a Oracle Spatial GeoRaster"));
+ // Connect the action to the run
+ connect(mQActionPointer, SIGNAL(triggered()), this, SLOT(run()));
+ // Add the icon to the toolbar
+ mQGisIface->addToolBarIcon(mQActionPointer);
+ mQGisIface->addPluginToMenu(tr("&Oracle Spatial"), mQActionPointer);
+
+}
+//method defined in interface
+
+void QgsOraclePlugin::help()
+{
+ //implement me!
+}
+
+// Slot called when the menu item is triggered
+// If you created more menu items / toolbar buttons in initiGui, you should
+// create a separate handler for each action - this single run() method will
+// not be enough
+
+void QgsOraclePlugin::run()
+{
+ QgsOracleSelectGeoraster *myPluginGui = new QgsOracleSelectGeoraster(mQGisIface->mainWindow(), mQGisIface, QgisGui::ModalDialogFlags);
+ myPluginGui->setAttribute(Qt::WA_DeleteOnClose);
+
+ myPluginGui->show();
+}
+
+// Unload the plugin by cleaning up the GUI
+
+void QgsOraclePlugin::unload()
+{
+ // remove the GUI
+ mQGisIface->removePluginMenu("&Oracle Spatial", mQActionPointer);
+ mQGisIface->removeToolBarIcon(mQActionPointer);
+ delete mQActionPointer;
+}
+
+
+//////////////////////////////////////////////////////////////////////////
+//
+//
+// THE FOLLOWING CODE IS AUTOGENERATED BY THE PLUGIN BUILDER SCRIPT
+// YOU WOULD NORMALLY NOT NEED TO MODIFY THIS, AND YOUR PLUGIN
+// MAY NOT WORK PROPERLY IF YOU MODIFY THIS INCORRECTLY
+//
+//
+//////////////////////////////////////////////////////////////////////////
+
+
+/**
+ * Required extern functions needed for every plugin
+ * These functions can be called prior to creating an instance
+ * of the plugin class
+ */
+// Class factory to return a new instance of the plugin class
+
+QGISEXTERN QgisPlugin * classFactory(QgisInterface * theQgisInterfacePointer)
+{
+ return new QgsOraclePlugin(theQgisInterfacePointer);
+}
+// Return the name of the plugin - note that we do not user class members as
+// the class may not yet be insantiated when this method is called.
+
+QGISEXTERN QString name()
+{
+ return sName;
+}
+
+// Return the description
+
+QGISEXTERN QString description()
+{
+ return sDescription;
+}
+
+// Return the type (either UI or MapLayer plugin)
+
+QGISEXTERN int type()
+{
+ return sPluginType;
+}
+
+// Return the version number for the plugin
+
+QGISEXTERN QString version()
+{
+ return sPluginVersion;
+}
+
+// Delete ourself
+
+QGISEXTERN void unload(QgisPlugin * thePluginPointer)
+{
+ delete thePluginPointer;
+}
Added: trunk/qgis/src/plugins/oracle_raster/qgsoracle_plugin.h
===================================================================
--- trunk/qgis/src/plugins/oracle_raster/qgsoracle_plugin.h (rev 0)
+++ trunk/qgis/src/plugins/oracle_raster/qgsoracle_plugin.h 2009-04-15 14:18:30 UTC (rev 10566)
@@ -0,0 +1,65 @@
+/***************************************************************************
+ oracleplugin.h
+ -------------------
+ begin : Oracle Spatial Plugin
+ copyright : (C) Ivan Lucena
+ email : ivan.lucena at pmldnet.com
+/***************************************************************************
+ * *
+ * This program 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. *
+ * *
+ ***************************************************************************/
+/* $Id$ */
+
+#ifndef OraclePlugin_H
+#define OraclePlugin_H
+
+// Qt Includes
+#include <QObject>
+#include <QAction>
+
+// QGIS Includes
+#include <qgisplugin.h>
+#include <qgisinterface.h>
+#include <qgisgui.h>
+
+class QgsOraclePlugin : public QObject, public QgisPlugin
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * Constructor for a plugin. The QgisInterface pointer is passed by
+ * QGIS when it attempts to instantiate the plugin.
+ * @param theInterface Pointer to the QgisInterface object.
+ */
+ QgsOraclePlugin(QgisInterface * theInterface);
+ //! Destructor
+ virtual ~QgsOraclePlugin();
+
+public slots:
+
+ //! init the gui
+ virtual void initGui();
+ //! Show the dialog box
+ void run();
+ //! unload the plugin
+ void unload();
+ //! show the help document
+ void help();
+
+private:
+
+ int mPluginType;
+ //! Pointer to the QGIS interface object
+ QgisInterface *mQGisIface;
+ //!pointer to the qaction for this plugin
+ QAction * mQActionPointer;
+
+};
+
+#endif //OraclePlugin_H
Added: trunk/qgis/src/plugins/oracle_raster/qgsoracleconnect_ui.cpp
===================================================================
--- trunk/qgis/src/plugins/oracle_raster/qgsoracleconnect_ui.cpp (rev 0)
+++ trunk/qgis/src/plugins/oracle_raster/qgsoracleconnect_ui.cpp 2009-04-15 14:18:30 UTC (rev 10566)
@@ -0,0 +1,88 @@
+/***************************************************************************
+ oracleconnectgui.cpp
+ -------------------
+ begin : Oracle Spatial Plugin
+ copyright : (C) Ivan Lucena
+ email : ivan.lucena at pmldnet.com
+/***************************************************************************
+ * *
+ * This program 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. *
+ * *
+ ***************************************************************************/
+/* $Id$ */
+
+#include "qgsoracleconnect_ui.h"
+
+// Qt Includes
+#include <QSettings>
+#include <QMessageBox>
+
+QgsOracleConnect::QgsOracleConnect(QWidget* parent,
+ const QString& connName,
+ Qt::WFlags fl) : QDialog(parent, fl)
+{
+ setupUi(this);
+
+ if ( ! connName.isEmpty() )
+ {
+ // populate the dialog with the information stored for the connection
+ // populate the fields with the stored setting parameters
+
+ QSettings settings;
+
+ QString key = "/Oracle/connections/" + connName;
+
+ txtDatabase->setText( settings.value( key + "/database" ).toString() );
+ txtUsername->setText( settings.value( key + "/username" ).toString() );
+
+ if ( settings.value( key + "/savepass" ).toString() == "true" )
+ {
+ txtPassword->setText( settings.value( key + "/password" ).toString() );
+ chkStorePassword->setChecked( true );
+ }
+ txtName->setText( connName );
+ }
+}
+
+QgsOracleConnect::~QgsOracleConnect()
+{
+}
+
+void QgsOracleConnect::on_btnCancel_clicked()
+{
+ helpInfo();
+}
+
+void QgsOracleConnect::on_btnOk_clicked()
+{
+ saveConnection();
+}
+
+void QgsOracleConnect::saveConnection()
+{
+ QSettings settings;
+
+ QString baseKey = "/Oracle/connections/";
+
+ settings.setValue( baseKey + "selected", txtName->text() );
+ baseKey += txtName->text();
+ settings.setValue( baseKey + "/database", txtDatabase->text() );
+ settings.setValue( baseKey + "/username", txtUsername->text() );
+ settings.setValue( baseKey + "/password", txtPassword->text() );
+ settings.setValue( baseKey + "/savepass", chkStorePassword->isChecked() ? "true" : "false" );
+ settings.setValue( baseKey + "/subdtset", "GEOR:" +
+ txtUsername->text() + "/" +
+ txtPassword->text() + "@" +
+ txtDatabase->text() );
+
+ accept();
+}
+
+void QgsOracleConnect::helpInfo()
+{
+ // QgsContextHelp::run( context_id );
+}
+
Added: trunk/qgis/src/plugins/oracle_raster/qgsoracleconnect_ui.h
===================================================================
--- trunk/qgis/src/plugins/oracle_raster/qgsoracleconnect_ui.h (rev 0)
+++ trunk/qgis/src/plugins/oracle_raster/qgsoracleconnect_ui.h 2009-04-15 14:18:30 UTC (rev 10566)
@@ -0,0 +1,46 @@
+/***************************************************************************
+ oracleconnectgui.u
+ -------------------
+ begin : Oracle Spatial Plugin
+ copyright : (C) Ivan Lucena
+ email : ivan.lucena at pmldnet.com
+/***************************************************************************
+ * *
+ * This program 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. *
+ * *
+ ***************************************************************************/
+/* $Id$ */
+
+#ifndef QgsOracleConnect_H
+#define QgsOracleConnect_H
+
+// Qt Designer Includes
+#include "ui_qgsoracleconnectbase.h"
+
+// QGIS Includes
+#include <qgisgui.h>
+
+class QgsOracleConnect : public QDialog, private Ui::OracleConnectGuiBase
+{
+ Q_OBJECT
+
+public:
+ QgsOracleConnect(QWidget* parent = 0,
+ const QString& connName = QString::null,
+ Qt::WFlags fl = QgisGui::ModalDialogFlags);
+ ~QgsOracleConnect();
+
+private:
+ void saveConnection();
+ void helpInfo();
+
+public slots:
+ void on_btnOk_clicked();
+ void on_btnCancel_clicked();
+ void on_btnHelp_clicked();
+};
+
+#endif /* _ORACLECONNECTGUI_H */
Added: trunk/qgis/src/plugins/oracle_raster/qgsoracleconnectbase.ui
===================================================================
--- trunk/qgis/src/plugins/oracle_raster/qgsoracleconnectbase.ui (rev 0)
+++ trunk/qgis/src/plugins/oracle_raster/qgsoracleconnectbase.ui 2009-04-15 14:18:30 UTC (rev 10566)
@@ -0,0 +1,248 @@
+<ui version="4.0" >
+ <class>OracleConnectGuiBase</class>
+ <widget class="QDialog" name="OracleConnectGuiBase" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>436</width>
+ <height>207</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string>Create Oracle Connection</string>
+ </property>
+ <property name="windowIcon" >
+ <iconset>
+ <normaloff/>
+ </iconset>
+ </property>
+ <widget class="QWidget" name="layoutWidget" >
+ <property name="geometry" >
+ <rect>
+ <x>339</x>
+ <y>11</y>
+ <width>89</width>
+ <height>189</height>
+ </rect>
+ </property>
+ <layout class="QVBoxLayout" name="boxConfirm" >
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QPushButton" name="btnOk" >
+ <property name="text" >
+ <string>OK</string>
+ </property>
+ <property name="shortcut" >
+ <string/>
+ </property>
+ <property name="autoDefault" >
+ <bool>true</bool>
+ </property>
+ <property name="default" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="btnCancel" >
+ <property name="text" >
+ <string>Cancel</string>
+ </property>
+ <property name="shortcut" >
+ <string/>
+ </property>
+ <property name="autoDefault" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeType" >
+ <enum>QSizePolicy::Expanding</enum>
+ </property>
+ <property name="sizeHint" stdset="0" >
+ <size>
+ <width>87</width>
+ <height>121</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QGroupBox" name="GroupBox1" >
+ <property name="geometry" >
+ <rect>
+ <x>10</x>
+ <y>10</y>
+ <width>322</width>
+ <height>191</height>
+ </rect>
+ </property>
+ <property name="title" >
+ <string>Connection Information</string>
+ </property>
+ <layout class="QVBoxLayout" name="_2" >
+ <property name="spacing" >
+ <number>0</number>
+ </property>
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" name="boxFields" >
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <item>
+ <layout class="QVBoxLayout" name="boxFieldLabels" >
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="TextLabel1_2" >
+ <property name="text" >
+ <string>Name</string>
+ </property>
+ <property name="buddy" >
+ <cstring>txtName</cstring>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="TextLabel2" >
+ <property name="text" >
+ <string>Database instance</string>
+ </property>
+ <property name="buddy" >
+ <cstring>txtDatabase</cstring>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="TextLabel3" >
+ <property name="text" >
+ <string>Username</string>
+ </property>
+ <property name="buddy" >
+ <cstring>txtUsername</cstring>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="TextLabel3_2" >
+ <property name="text" >
+ <string>Password</string>
+ </property>
+ <property name="buddy" >
+ <cstring>txtPassword</cstring>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="boxFieldEntries" >
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QLineEdit" name="txtName" >
+ <property name="toolTip" >
+ <string>Name of the new connection</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="txtDatabase" />
+ </item>
+ <item>
+ <widget class="QLineEdit" name="txtUsername" />
+ </item>
+ <item>
+ <widget class="QLineEdit" name="txtPassword" >
+ <property name="echoMode" >
+ <enum>QLineEdit::Password</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="boxCheckbox" >
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QCheckBox" name="chkStorePassword" >
+ <property name="text" >
+ <string>Save Password</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <resources/>
+ <connections>
+ <connection>
+ <sender>btnOk</sender>
+ <signal>clicked()</signal>
+ <receiver>OracleConnectGuiBase</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>383</x>
+ <y>24</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>217</x>
+ <y>103</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>btnCancel</sender>
+ <signal>clicked()</signal>
+ <receiver>OracleConnectGuiBase</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>383</x>
+ <y>56</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>217</x>
+ <y>103</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
Added: trunk/qgis/src/plugins/oracle_raster/qgsselectgeoraster_ui.cpp
===================================================================
--- trunk/qgis/src/plugins/oracle_raster/qgsselectgeoraster_ui.cpp (rev 0)
+++ trunk/qgis/src/plugins/oracle_raster/qgsselectgeoraster_ui.cpp 2009-04-15 14:18:30 UTC (rev 10566)
@@ -0,0 +1,321 @@
+/***************************************************************************
+ oracleselectgui.cpp
+ -------------------
+ begin : Oracle Spatial Plugin
+ copyright : (C) Ivan Lucena
+ email : ivan.lucena at pmldnet.com
+/***************************************************************************
+ * *
+ * This program 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. *
+ * *
+ ***************************************************************************/
+/* $Id$ */
+
+#include "qgsselectgeoraster_ui.h"
+#include "qgsoracleconnect_ui.h"
+
+//GDAL includes
+
+#include "gdal.h"
+#include "ogr_api.h"
+#include "ogrsf_frmts.h"
+#include "qgsvectorlayer.h"
+
+QgsOracleSelectGeoraster::QgsOracleSelectGeoraster(QWidget* parent,
+ QgisInterface* iface,
+ Qt::WFlags fl) : QDialog(parent, fl), mIface(iface)
+{
+ setupUi(this);
+
+ /*
+ * Load the list of connection from the registry
+ */
+
+ populateConnectionList();
+
+ /*
+ * Repeat last selected connection
+ */
+
+ QSettings settings;
+ QString selected = settings.value( "/Oracle/connections/selected" ).toString();
+ if ( selected == cmbConnections->currentText() )
+ {
+ this->connectToServer();
+ }
+}
+
+QgsOracleSelectGeoraster::~QgsOracleSelectGeoraster()
+{
+}
+
+void QgsOracleSelectGeoraster::populateConnectionList()
+{
+ QSettings settings;
+ settings.beginGroup( "/Oracle/connections" );
+ QStringList keys = settings.childGroups();
+ QStringList::Iterator it = keys.begin();
+
+ /*
+ * Fillup the combobox with connection names
+ */
+
+ cmbConnections->clear();
+ while ( it != keys.end() )
+ {
+ cmbConnections->addItem( *it );
+ ++it;
+ }
+ settings.endGroup();
+ setConnectionListPosition();
+
+ /*
+ * Update the status of several buttons
+ */
+
+ if ( keys.begin() == keys.end() )
+ {
+ btnConnect->setEnabled( false );
+ btnEdit->setEnabled( false );
+ btnDelete->setEnabled( false );
+ }
+ else
+ {
+ btnConnect->setEnabled( true );
+ btnEdit->setEnabled( true );
+ btnDelete->setEnabled( true );
+ }
+}
+
+void QgsOracleSelectGeoraster::addNewConnection()
+{
+ QgsOracleConnect *oc = new QgsOracleConnect( this, "New Connection" );
+ if ( oc->exec() )
+ {
+ populateConnectionList();
+ }
+}
+
+void QgsOracleSelectGeoraster::editConnection()
+{
+ QgsOracleConnect *oc = new QgsOracleConnect( this, cmbConnections->currentText() );
+ if ( oc->exec() )
+ {
+ populateConnectionList();
+ }
+}
+
+void QgsOracleSelectGeoraster::deleteConnection()
+{
+ QSettings settings;
+ QString key = "/Oracle/connections/" + cmbConnections->currentText();
+ QString msg =
+ tr( "Are you sure you want to remove the " ) +
+ cmbConnections->currentText() +
+ tr( " connection and all associated settings?" );
+ QMessageBox::StandardButton result = QMessageBox::information( this,
+ tr( "Confirm Delete" ),
+ msg,
+ QMessageBox::Ok | QMessageBox::Cancel );
+ if ( result == QMessageBox::Ok )
+ {
+ settings.remove( key + "/database" );
+ settings.remove( key + "/username" );
+ settings.remove( key + "/password" );
+ settings.remove( key + "/savepass" );
+ settings.remove( key + "/subdtset" );
+ settings.remove( key );
+ cmbConnections->removeItem( cmbConnections->currentIndex() );
+ setConnectionListPosition();
+ lineEdit->setText( "" );
+ listWidget->clear();
+ }
+}
+
+void QgsOracleSelectGeoraster::connectToServer()
+{
+ QSettings settings;
+ QString key = "/Oracle/connections/" + cmbConnections->currentText();
+ QString username = settings.value( key + "/username" ).toString();
+ QString password = settings.value( key + "/password" ).toString();
+ QString savepass = settings.value( key + "/savepass" ).toString();
+ QString database = settings.value( key + "/database" ).toString();
+ QString subdtset = settings.value( key + "/subdtset" ).toString();
+ bool makeConnection = true;
+ if ( savepass == "false" )
+ {
+ makeConnection = false;
+ QString password = QInputDialog::getText( this,
+ tr( "Password for " ) + username + "/<password>@" + database,
+ tr( "Please enter your password:" ),
+ QLineEdit::Password,
+ QString::null,
+ &makeConnection);
+ }
+ if (makeConnection)
+ {
+ settings.setValue( "/Oracle/connections/selected",
+ cmbConnections->currentText() );
+ showSelection( subdtset );
+ lineEdit->setText( subdtset );
+ }
+}
+
+void QgsOracleSelectGeoraster::showSelection( const QString & line )
+{
+ QString identification = line;
+
+ GDALDatasetH hDS = NULL;
+ GDALAccess eAccess = GA_ReadOnly;
+
+ /*
+ * Set access mode
+ */
+
+ if( checkBox->checkState() == Qt::Checked )
+ {
+ eAccess = GA_Update;
+ }
+
+ /*
+ * Try to open georaster dataset
+ */
+
+ hDS = GDALOpenShared( identification.toAscii(), eAccess );
+
+ btnAdd->setEnabled( false );
+ if ( hDS == NULL )
+ {
+ QMessageBox::information( this,
+ tr( "Open failed" ),
+ tr( "The connection to " + identification.toAscii() +
+ " failed. Please verify your connection parameters."
+ " Make sure you have the GDAL GeoRaster plugin installed." ) );
+ return;
+ }
+ btnAdd->setEnabled( true );
+
+ /*
+ * Get subdataset list
+ */
+
+ char **papszMetadata = NULL;
+ papszMetadata = GDALGetMetadata( hDS, "SUBDATASETS" );
+ int nSubDatasets = CSLCount( papszMetadata );
+
+ /*
+ * Add GeoRaster Layer
+ */
+
+ if ( ! nSubDatasets )
+ {
+ mIface->addRasterLayer( identification );
+ GDALClose(hDS);
+ return;
+ }
+
+ /*
+ * Save subdataset
+ */
+
+ QSettings settings;
+ settings.setValue( "/Oracle/connections/" +
+ cmbConnections->currentText() + "/subdtset", identification );
+
+ /*
+ * List subdatasets
+ */
+
+ QStringList fields = identification.split(',');
+ QString count = QString::number( nSubDatasets / 2 );
+
+ QString plural = "s";
+
+ if ( count == "1" )
+ {
+ plural = "";
+ }
+
+ if ( fields.size() < 4 )
+ {
+ labelStatus->setText( QString( "%1 GeoRaster table%2" )
+ .arg( count ).arg( plural ) );
+ checkBox->setEnabled( false );
+ }
+ else if ( fields.size() == 4 )
+ {
+ labelStatus->setText( QString( "%1 GeoRaster column%2 on table %3" )
+ .arg( count ).arg( plural ).arg( fields[3] ) );
+ checkBox->setEnabled( false );
+ }
+ else if ( fields.size() == 5 )
+ {
+ labelStatus->setText( QString( "%1 GeoRaster object%2 on table %3 column %4" )
+ .arg( count ).arg( plural ).arg( fields[3] ).arg( fields[4] ) );
+ checkBox->setEnabled( true );
+ }
+ else
+ {
+ labelStatus->setText( QString( "%1 GeoRaster object%2 on table %3 column %4 where %5" )
+ .arg( count ).arg( plural ).arg( fields[3] ).arg( fields[4] ).arg( fields[5] ) );
+ checkBox->setEnabled( true );
+ }
+
+ /*
+ * Populate selection list based on subdataset names
+ */
+
+ listWidget->clear();
+ QListWidgetItem *textItem;
+
+ for ( int i = 0; i < nSubDatasets; i += 2 )
+ {
+ QString metadata = papszMetadata[i];
+ QStringList subdataset = metadata.split( '=' );
+ textItem = new QListWidgetItem( subdataset[1] );
+ listWidget->addItem( textItem );
+ }
+
+ GDALClose(hDS);
+}
+
+void QgsOracleSelectGeoraster::showHelp()
+{
+ // implement me
+}
+
+void QgsOracleSelectGeoraster::setConnectionListPosition()
+{
+ QSettings settings;
+ // If possible, set the item currently displayed database
+ QString toSelect = settings.value( "/Oracle/connections/selected" ).toString();
+ // Does toSelect exist in cmbConnections?
+ bool set = false;
+ for ( int i = 0; i < cmbConnections->count(); ++ i)
+ {
+ if ( cmbConnections->itemText(i) == toSelect )
+ {
+ cmbConnections->setCurrentIndex( i );
+ set = true;
+ break;
+ }
+ }
+ // If we couldn't find the stored item, but there are some,
+ // default to the last item (this makes some sense when deleting
+ // items as it allows the user to repeatidly click on delete to
+ // remove a whole lot of items).
+ if ( ! set && cmbConnections->count() > 0 )
+ {
+ // If toSelect is null, then the selected connection wasn't found
+ // by QSettings, which probably means that this is the first time
+ // the user has used qgis with database connections, so default to
+ // the first in the list of connetions. Otherwise default to the last.
+ if ( toSelect.isNull() )
+ cmbConnections->setCurrentIndex( 0 );
+ else
+ cmbConnections->setCurrentIndex( cmbConnections->count() - 1 );
+ }
+}
Added: trunk/qgis/src/plugins/oracle_raster/qgsselectgeoraster_ui.h
===================================================================
--- trunk/qgis/src/plugins/oracle_raster/qgsselectgeoraster_ui.h (rev 0)
+++ trunk/qgis/src/plugins/oracle_raster/qgsselectgeoraster_ui.h 2009-04-15 14:18:30 UTC (rev 10566)
@@ -0,0 +1,95 @@
+/***************************************************************************
+ oracleselectgui.h
+ -------------------
+ begin : Oracle Spatial Plugin
+ copyright : (C) Ivan Lucena
+ email : ivan.lucena at pmldnet.com
+/***************************************************************************
+ * *
+ * This program 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. *
+ * *
+ ***************************************************************************/
+/* $Id$ */
+
+#ifndef OraclePluginGUI_H
+#define OraclePluginGUI_H
+
+// Qt Designer Includes
+#include "ui_qgsselectgeorasterbase.h"
+
+//Qt includes
+#include <QSettings>
+#include <QMessageBox>
+#include <QInputDialog>
+
+// QGIS Includes
+#include <qgisinterface.h>
+#include <qgsmapcanvas.h>
+
+class QgsOracleSelectGeoraster : public QDialog, private Ui::SelectGeoRasterBase
+{
+ Q_OBJECT
+
+public:
+ QgsOracleSelectGeoraster(QWidget* parent, QgisInterface* iface, Qt::WFlags fl = 0);
+ ~QgsOracleSelectGeoraster();
+
+private:
+ QgisInterface* mIface;
+ QString mUri;
+
+private:
+ void addNewConnection();
+ void editConnection();
+ void deleteConnection();
+ void populateConnectionList();
+ void connectToServer();
+ void showHelp();
+ void setConnectionListPosition();
+ void showSelection( const QString & line );
+
+public slots:
+
+ void on_btnNew_clicked()
+ {
+ addNewConnection();
+ };
+
+ void on_btnEdit_clicked()
+ {
+ editConnection();
+ };
+
+ void on_btnDelete_clicked()
+ {
+ deleteConnection();
+ };
+
+ void on_btnConnect_clicked()
+ {
+ connectToServer();
+ };
+
+ void on_listWidget_clicked( QModelIndex Index )
+ {
+ if( lineEdit->text() == listWidget->currentItem()->text() )
+ {
+ showSelection( lineEdit->text() );
+ }
+ else
+ {
+ lineEdit->setText( listWidget->currentItem()->text() );
+ }
+ }
+
+ void on_btnAdd_clicked()
+ {
+ showSelection( lineEdit->text() );
+ };
+
+};
+
+#endif
Added: trunk/qgis/src/plugins/oracle_raster/qgsselectgeorasterbase.ui
===================================================================
--- trunk/qgis/src/plugins/oracle_raster/qgsselectgeorasterbase.ui (rev 0)
+++ trunk/qgis/src/plugins/oracle_raster/qgsselectgeorasterbase.ui 2009-04-15 14:18:30 UTC (rev 10566)
@@ -0,0 +1,284 @@
+<ui version="4.0" >
+ <class>SelectGeoRasterBase</class>
+ <widget class="QDialog" name="SelectGeoRasterBase" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>461</width>
+ <height>454</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string>Select Oracle Spatial GeoRaster</string>
+ </property>
+ <property name="windowIcon" >
+ <iconset>
+ <normaloff>../../ui</normaloff>../../ui</iconset>
+ </property>
+ <property name="sizeGripEnabled" >
+ <bool>true</bool>
+ </property>
+ <property name="modal" >
+ <bool>true</bool>
+ </property>
+ <layout class="QGridLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item row="0" column="0" colspan="4" >
+ <widget class="QGroupBox" name="GroupBox1" >
+ <property name="title" >
+ <string>Server Connections</string>
+ </property>
+ <layout class="QGridLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item row="1" column="4" >
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType" >
+ <enum>QSizePolicy::Expanding</enum>
+ </property>
+ <property name="sizeHint" stdset="0" >
+ <size>
+ <width>131</width>
+ <height>30</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="0" column="0" colspan="5" >
+ <widget class="QComboBox" name="cmbConnections" />
+ </item>
+ <item row="1" column="0" >
+ <widget class="QPushButton" name="btnConnect" >
+ <property name="enabled" >
+ <bool>false</bool>
+ </property>
+ <property name="text" >
+ <string>C&onnect</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2" >
+ <widget class="QPushButton" name="btnEdit" >
+ <property name="enabled" >
+ <bool>false</bool>
+ </property>
+ <property name="text" >
+ <string>Edit</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="3" >
+ <widget class="QPushButton" name="btnDelete" >
+ <property name="enabled" >
+ <bool>false</bool>
+ </property>
+ <property name="text" >
+ <string>Delete</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1" >
+ <widget class="QPushButton" name="btnNew" >
+ <property name="text" >
+ <string>&New</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="4" >
+ <widget class="QGroupBox" name="gbCRS" >
+ <property name="title" >
+ <string>Selection</string>
+ </property>
+ <layout class="QHBoxLayout" >
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="labelCoordRefSys" >
+ <property name="text" >
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEdit" />
+ </item>
+ <item>
+ <widget class="QCheckBox" name="checkBox" >
+ <property name="enabled" >
+ <bool>false</bool>
+ </property>
+ <property name="text" >
+ <string>Update</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="4" column="0" colspan="4" >
+ <widget class="QLabel" name="labelStatus" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Preferred" hsizetype="Ignored" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>Ready</string>
+ </property>
+ <property name="wordWrap" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="2" >
+ <widget class="QPushButton" name="btnAdd" >
+ <property name="enabled" >
+ <bool>false</bool>
+ </property>
+ <property name="text" >
+ <string>&Select</string>
+ </property>
+ <property name="shortcut" >
+ <string>Alt+A</string>
+ </property>
+ <property name="autoDefault" >
+ <bool>true</bool>
+ </property>
+ <property name="default" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="4" >
+ <widget class="QGroupBox" name="btnGrpImageEncoding" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize" >
+ <size>
+ <width>16</width>
+ <height>64</height>
+ </size>
+ </property>
+ <property name="title" >
+ <string>Subdatasets</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout" >
+ <item>
+ <widget class="QListWidget" name="listWidget" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="autoFillBackground" >
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="3" column="1" >
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType" >
+ <enum>QSizePolicy::Expanding</enum>
+ </property>
+ <property name="sizeHint" stdset="0" >
+ <size>
+ <width>284</width>
+ <height>31</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="3" column="0" >
+ <widget class="QPushButton" name="btnHelp" >
+ <property name="enabled" >
+ <bool>true</bool>
+ </property>
+ <property name="text" >
+ <string>Help</string>
+ </property>
+ <property name="shortcut" >
+ <string>F1</string>
+ </property>
+ <property name="autoDefault" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="3" >
+ <widget class="QPushButton" name="btnCancel" >
+ <property name="text" >
+ <string>C&lose</string>
+ </property>
+ <property name="shortcut" >
+ <string>Alt+L</string>
+ </property>
+ <property name="autoDefault" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11" />
+ <tabstops>
+ <tabstop>cmbConnections</tabstop>
+ <tabstop>btnConnect</tabstop>
+ <tabstop>btnNew</tabstop>
+ <tabstop>btnEdit</tabstop>
+ <tabstop>btnDelete</tabstop>
+ <tabstop>btnHelp</tabstop>
+ <tabstop>btnAdd</tabstop>
+ <tabstop>btnCancel</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>btnCancel</sender>
+ <signal>clicked()</signal>
+ <receiver>SelectGeoRasterBase</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>410</x>
+ <y>457</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>229</x>
+ <y>252</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
More information about the QGIS-commit
mailing list