void GuiModuleFactory::RegisterGuiPlugin(string filename) { typedef string (* GetTypeFunc)(); typedef Gui* (* CreateFunc)( Module* mod ); GetTypeFunc GetType; CreateFunc Create; // GError **error; filename = "./plugins/" + filename; GModule* gm = g_module_open( filename.c_str(), G_MODULE_BIND_MASK ); if( gm!=NULL ) { if( g_module_symbol( gm, "GetGuiType", (gpointer *)&GetType ) == TRUE ) { if( g_module_symbol( gm, "CreateGui", (gpointer *)&Create ) == TRUE ) { RegisterGui( GetType(), Create ); } else { TRACE( "GuiModuleFactory::RegisterGuiPlugin - Nie znaleziono " "CreateGui() w %s\n", filename.c_str() ); } } else { TRACE( "MGuiModuleFactory::RegisterGuiPlugin - Nie znaleziono CreateGui() w pliku %s\n", filename.c_str() ); } } }
/** * static method SetParent must be called first */ tcContainerGui::tcContainerGui(const wxPoint& pos, const wxString& configFile, const wxString& name) : tcXmlWindow(parent, pos, wxSize(10, 10), configFile, name, parent), drawCount(0), dragIsArmed(false), parentItem(0), isLButtonDown(false), windowDragOn(false), protectDeselectIdx(999), draggingSelectionBox(false) { // put gui window on top SetBaseRenderBin(parent->GetBaseRenderBin() + windowLayer*10); wxWindow::Raise(); tc3DWindow2::SetStencilLayer(windowLayer-3); // assumes windowLayer starts at 4 windowLayer++; TiXmlNode* root = config->FirstChild("Window"); if (!root) { fprintf(stderr, "tcContainerGui::tcContainerGui - Missing top level <Window> tag\n"); return; } TiXmlNode* current = root; /* TiXmlElement* elt = current->ToElement(); // background image std::string imageName = elt->Attribute("BackgroundImage"); if (imageName.size() > 2) { LoadBackgroundImage(imageName.c_str()); } // size of window int xmlWidth, xmlHeight; elt->Attribute("Width", &xmlWidth); elt->Attribute("Height", &xmlHeight); SetSize(pos.x, pos.y, xmlWidth, xmlHeight); // set all size params */ // add slots current = root->FirstChild("Slot"); while (current) { int x = 0; int y = 0; int size = 0; TiXmlElement* elt = current->ToElement(); elt->Attribute("X", &x); elt->Attribute("Y", &y); elt->Attribute("Size", &size); tcRect loc; loc.Set(x, x+size, y, y+size); AddSlot(loc); current = current->NextSibling("Slot"); } SetUseRenderSurface(true); SetRenderSurfaceUpdateInterval(4); SetActive(true); RegisterGui(); #ifdef _DEBUG fprintf(stdout, "tcContainerGui::tcContainerGui - %s, %d slots\n", name.c_str(), slots.size()); #endif SetBorderDraw(true); }
GuiModuleFactory::GuiModuleFactory() { RegisterGui( GConstant::GetTypeStatic(), GConstant::Create ); RegisterGui( GSlider::GetTypeStatic(), GSlider::Create ); RegisterGui( GGate::GetTypeStatic(), GGate::Create ); RegisterGui( GMonitor::GetTypeStatic(), GMonitor::Create ); RegisterGui( GFilter::GetTypeStatic(), GFilter::Create ); RegisterGui( GGain::GetTypeStatic(), GGain::Create ); RegisterGui( GADSR::GetTypeStatic(), GADSR::Create ); //RegisterGui( GFFT::GetTypeStatic(), GFFT::Create ); RegisterGui( GMonitorGraph::GetTypeStatic(), GMonitorGraph::Create ); RegisterGui( GDelay::GetTypeStatic(), GDelay::Create ); RegisterGui( GFeedbackDelay::GetTypeStatic(), GFeedbackDelay::Create ); RegisterGui( GVariableDelay::GetTypeStatic(), GVariableDelay::Create ); if ( g_module_supported() == TRUE ) { RegisterAllGuiPlugins(); } }