21#include "kexiinternalpart.h"
23#include "kexidialogbase.h"
24#include "kexiviewbase.h"
25#include "keximainwindow.h"
27#include <tqasciidict.h>
31#include <klibloader.h>
34#include <tdeparts/componentfactory.h>
35#include <kexidb/msghandler.h>
38class KexiInternalPartManager
41 KexiInternalPartManager()
44 m_parts.setAutoDelete( false);
47 KexiInternalPart* findPart(KexiDB::MessageHandler *msgHdr, const char* partName)
49 KexiInternalPart *part = m_parts[partName];
51 TQCString fullname( "kexihandler_");
52 fullname += TQCString(partName).lower();
53 part = KParts::ComponentFactory::createInstanceFromLibrary<KexiInternalPart>(
54 fullname, 0, fullname);
57 msgHdr-> showErrorMessage(i18n( "Could not load \"%1\" plugin.").arg(partName));
60 m_parts.insert(partName, part);
67 TQAsciiDict<KexiInternalPart> m_parts;
70KexiInternalPartManager internalPartManager;
74KexiInternalPart::KexiInternalPart(TQObject *parent, const char *name, const TQStringList &)
75 : TQObject(parent, name)
76 , m_uniqueDialog(true)
81KexiInternalPart::~KexiInternalPart()
89 return internalPartManager.findPart(msgHdr, partName);
95 TQWidget *parent, const char *objName, TQMap<TQString,TQString>* args)
97 KexiInternalPart * part = internalPartManager.findPart(msgHdr, partName);
100 return part->createWidget(widgetClass, mainWin, parent, objName ? objName : partName, args);
119 dlg->setCaption( view->caption() );
120 dlg->setTabCaption( view->caption() );
121 dlg->resize(view->sizeHint());
122 dlg->setMinimumSize(view->minimumSizeHint().width(),view->minimumSizeHint().height());
124 dlg->registerDialog();
130 const char* partName,
133 KexiInternalPart * part = internalPartManager.findPart(msgHdr, partName);
135 kdDebug() << "KexiInternalPart::createDialogInstance() !part" << endl;
138 return part->findOrCreateKexiDialog(mainWin, objName ? objName : partName);
144 const char *objName, TQMap<TQString,TQString>* args)
146 KexiInternalPart * part = internalPartManager.findPart(msgHdr, partName);
148 kdDebug() << "KexiInternalPart::createDialogInstance() !part" << endl;
152 if ( part->uniqueDialog() && ! part->m_uniqueWidget.isNull())
153 w = part->m_uniqueWidget;
155 w = part->createWidget(dialogClass, mainWin, mainWin, objName ? objName : partName, args);
157 if ( dynamic_cast<TQDialog* >(w)) {
158 if ( part->uniqueDialog())
159 part->m_uniqueWidget = w;
160 return dynamic_cast<TQDialog* >(w);
163 if (! ( part->uniqueDialog() && ! part->m_uniqueWidget.isNull()))
170 KexiMainWindow* mainWin, const char* commandName, TQMap<TQString,TQString>* args)
172 KexiInternalPart * part = internalPartManager.findPart(0, partName);
174 kdDebug() << "KexiInternalPart::createDialogInstance() !part" << endl;
177 return part->executeCommand(mainWin, commandName, args);
181 TQWidget * parent, const char * objName, TQMap<TQString,TQString>* args)
183 Q_UNUSED(widgetClass);
192 const char * objName)
201 TQMap<TQString,TQString>* args)
204 Q_UNUSED(commandName);
209#include "kexiinternalpart.moc"
virtual void showErrorMessage(const TQString &title, const TQString &details=TQString())=0
Base class for child window of Kexi's main application window.
void addView(KexiViewBase *view) Adds view for the dialog. It will be the only view (of unspecified mode) for the dialog.
A prototype for Kexi Internal Parts (plugins) implementation.
static const KexiInternalPart * part(KexiDB::MessageHandler *msgHdr, const char *partName)
static TQWidget * createWidgetInstance(const char *partName, const char *widgetClass, KexiDB::MessageHandler *msgHdr, KexiMainWindow *mainWin, TQWidget *parent, const char *objName=0, TQMap< TQString, TQString > *args=0)
virtual KexiViewBase * createView(KexiMainWindow *mainWin, TQWidget *parent, const char *objName=0)
TQGuardedPtr< TQWidget > m_uniqueWidget Unique dialog - we're using guarded ptr for the dialog so can know if it has been closed.
virtual TQWidget * createWidget(const char *widgetClass, KexiMainWindow *mainWin, TQWidget *parent, const char *objName=0, TQMap< TQString, TQString > *args=0)
bool m_uniqueDialog true if createDialogInstance() should return only one dialog
static bool executeCommand(const char *partName, KexiMainWindow *mainWin, const char *commandName, TQMap< TQString, TQString > *args=0)
static KexiDialogBase * createKexiDialogInstance(const char *partName, KexiDB::MessageHandler *msgHdr, KexiMainWindow *mainWin, const char *objName=0)
static TQDialog * createModalDialogInstance(const char *partName, const char *dialogClass, KexiDB::MessageHandler *msgHdr, KexiMainWindow *mainWin, const char *objName=0, TQMap< TQString, TQString > *args=0)
KexiDialogBase * findOrCreateKexiDialog(KexiMainWindow *mainWin, const char *objName)
Kexi's main window interface This interface is implemented by KexiMainWindowImpl class.
virtual int generatePrivateID()=0
Base class for single view embeddable of in KexiDialogBase.
|