Paraview工程
Paraview——main.cxx
pqparaviewInitializer pvInitializer;
paraview的初始化功能在这里完成
然后看看源码
pqparaviewInitializer.h
class pqparaviewInitializer
{
public:
pqparaviewInitializer();
~pqparaviewInitializer();
/// Initialize ParaView. It returns false if the initialization failed.
bool Initialize(int argc,char* argv[]);
private:
pqPVApplicationCore* PVApp;
QMainWindow* MainWindow;
QSplashScreen* Splash;
};
一个初始化函数,三个私有变量,pqPVApplicationCore是继承pqApplicationCore的类,它比后者要有更多的功能,MainWindow主窗体类,ParaViewMainWindow初始化Mainwindow,Splash是登陆界面,防止假死。
位置:pqparaviewInitializer.cxx函数Initialize(int argc,char* argv[])
这里重要的有两点,即MainWindow初始化和加载需要的插件。首先看
// Create main window.
this->MainWindow =new ParaViewMainWindow();
位置: ParaViewMainWindow.cxx
首先看 pqInternals,该类是继承UI的一个类,用于装载或者管理界面。然后看构造函数
ParaViewMainWindow::ParaViewMainWindow()
真是一目了然,首先界面装载,
// Set up the dock window corners to give the vertical docks more room.
// Enable automatic creation of representation on accept.
// Enable help for from the object inspector.
然后就是// Populate application menus with actions.菜单 工具栏 等
// Final step, define application behaviors. Since we want all ParaView
// behaviors, we use this convenience method.
new pqParaViewBehaviors(this,this);
先到这儿,回到pqparaviewInitializer.cxx函数Initialize(int argc,char* argv[])
// Load required application plugins.
QString plugin_string = "";
QStringList plugin_list = plugin_string.split(';',QString::SkipEmptyParts);
pqBrandPluginsLoader loader;
if (loader.loadPlugins(plugin_list) ==false)
{
qCritical() << "Failed to load required plugins for this application";
returnfalse;
}
// Load optional plugins.
plugin_string = "";
plugin_list = plugin_string.split(';',QString::SkipEmptyParts);
loader.loadPlugins(plugin_list,true); //quietly skip not-found plugins.
#if 1
// Load configuration xmls after all components have been instantiated.
// This configuration part is something that needs to be cleaned up, I haven't
// given this too much thought.
QDir dir2(":/paraview/Configuration");//????命名configure这些xml是在paraview下得的文件夹,不知道这里为什么还是加载到了???
QStringList files = dir2.entryList(QDir::Files);
foreach (QString file, files)
{
this->PVApp->loadConfiguration(QString(":/paraview/Configuration/") + file);
}
#endif