сигнал о создании нового/открытии проекта
Добавлено: 18 окт 2010, 10:27
Преамбула
Настройки многих плагинов зависят от настроек проекта. Часто требуется, когда пользователь qgis открывает проект, прочитать настройки плагина. Когда пользователь создал новый, сбросить эти настройки на "по умолчанию" и привести в порядок GUI введенный плагином.
Многие разработчики решают эту проблему так: см https://svn.osgeo.org/qgis/trunk/qgis/s ... plugin.cpp
Я решил проблему точно так же: http://svn.gis-lab.info/road-graph/src/ ... plugin.cpp
Проблема: замечательные сигналы projeсtRead() и newProject() недокументированы. А метод mQGisIface->mainWindow() возвращает загадочный QWidget* .
У разработчиков qgis есть причины прятать QGisApp* за QWidget*, я уверен. А хоть какое-то описание этих сигналов можно найти только в исходном коде: https://svn.osgeo.org/qgis/trunk/qgis/src/app/qgisapp.h
Предлагаю: ввести в QGisInterface соответствующие сигналы, дабы они были доступны и документированы.
Прошу: одобрить и довести до разработчиков qgis.
Настройки многих плагинов зависят от настроек проекта. Часто требуется, когда пользователь qgis открывает проект, прочитать настройки плагина. Когда пользователь создал новый, сбросить эти настройки на "по умолчанию" и привести в порядок GUI введенный плагином.
Многие разработчики решают эту проблему так:
Код: Выделить всё
void QgsCopyrightLabelPlugin::initGui()
{
...
//this resets this plugin up if a project is loaded
connect( qGisInterface->mainWindow(), SIGNAL( projectRead() ), this, SLOT( projectRead() ) );
...
//initialise default values in the gui
projectRead();
}
Я решил проблему точно так же:
Код: Выделить всё
/*
* 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 RoadGraphPlugin::initGui()
{
...
connect( mQGisIface->mainWindow(), SIGNAL( projectRead() ), this, SLOT( projectRead() ) );
connect( mQGisIface->mainWindow() , SIGNAL( newProject() ), this, SLOT( newProject() ) );
...
} // RoadGraphPlugin::initGui()
Проблема: замечательные сигналы projeсtRead() и newProject() недокументированы. А метод mQGisIface->mainWindow() возвращает загадочный QWidget* .
У разработчиков qgis есть причины прятать QGisApp* за QWidget*, я уверен. А хоть какое-то описание этих сигналов можно найти только в исходном коде: https://svn.osgeo.org/qgis/trunk/qgis/src/app/qgisapp.h
Предлагаю: ввести в QGisInterface соответствующие сигналы, дабы они были доступны и документированы.
Прошу: одобрить и довести до разработчиков qgis.