00001
00023
#include "core.h"
00024
#include "editor.h"
00025
00026
#include <ksettings/dialog.h>
00027
#include <kparts/partmanager.h>
00028
#include <kparts/part.h>
00029
#include <kparts/componentfactory.h>
00030
#include <kapplication.h>
00031
#include <kconfig.h>
00032
#include <ktrader.h>
00033
#include <klibloader.h>
00034
#include <kstdaction.h>
00035
#include <klistbox.h>
00036
#include <kiconloader.h>
00037
#include <kstandarddirs.h>
00038
#include <kshortcut.h>
00039
#include <kparts/componentfactory.h>
00040
#include <klocale.h>
00041
#include <kstatusbar.h>
00042
#include <kguiitem.h>
00043
#include <kpopupmenu.h>
00044
#include <kshortcut.h>
00045
#include <kcmultidialog.h>
00046
#include <kdebug.h>
00047
00048
#include <qwidgetstack.h>
00049
#include <qhbox.h>
00050
#include <qwidget.h>
00051
00052
using namespace Komposer;
00053
00054 Core::Core(
QWidget *parent,
const char *name )
00055 : KParts::MainWindow( parent, name ), m_currentEditor( 0 )
00056 {
00057
00058 statusBar()->show();
00059
00060 initWidgets();
00061
00062
00063 m_partManager =
new KParts::PartManager(
this );
00064 connect( m_partManager, SIGNAL(activePartChanged(KParts::Part*) ),
00065
this, SLOT(slotActivePartChanged(KParts::Part*)) );
00066
00067 loadEditors();
00068
00069 setXMLFile(
"komposerui.rc" );
00070
00071 createGUI( 0 );
00072
00073 resize( 600, 400 );
00074 setAutoSaveSettings();
00075
00076 loadSettings();
00077 }
00078
00079 Core::~Core()
00080 {
00081 saveSettings();
00082
00083
QPtrList<KParts::Part> parts = *m_partManager->parts();
00084 parts.setAutoDelete(
true );
00085 parts.clear();
00086
00087
00088 }
00089
00090
void
00091 Core::loadEditors()
00092 {
00093
00094 }
00095
00096
void
00097 Core::unloadEditors()
00098 {
00099 }
00100
00101
void
00102 Core::addEditor( Komposer::Editor *editor )
00103 {
00104 kdDebug(5600) <<
"Added editor" << endl;
00105
00106
00107 insertChildClient( editor );
00108 }
00109
00110
void
00111 Core::addPart( KParts::Part* part )
00112 {
00113 kdDebug()<<
"Part = "<< part <<
" widget = "<< part->widget() <<endl;
00114
if ( part->widget() )
00115 m_stack->addWidget( part->widget(), 0 );
00116
00117 m_partManager->addPart( part,
false );
00118 }
00119
00120
void
00121 Core::slotActivePartChanged( KParts::Part* part )
00122 {
00123
if ( !part ) {
00124 createGUI( 0 );
00125
return;
00126 }
00127
00128 kdDebug() <<
"Part activated: " << part <<
" with stack id. "
00129 << m_stack->id( part->widget() )<< endl;
00130
00131 createGUI( part );
00132 }
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
void
00169 Core::loadSettings()
00170 {
00171
00172
00173
00174
00175 }
00176
00177
void
00178 Core::saveSettings()
00179 {
00180
00181
00182 }
00183
00184
void
00185 Core::slotQuit()
00186 {
00187 close();
00188 }
00189
00190
void
00191 Core::slotPreferences()
00192 {
00193
if ( m_dlg == 0 )
00194 m_dlg =
new KSettings::Dialog(
this );
00195 m_dlg->show();
00196 }
00197
00198 KParts::ReadWritePart*
00199 Core::createPart(
const char *libname )
00200 {
00201 kdDebug() <<
"Core:createPart(): " << libname << endl;
00202
00203
QMap<QCString,KParts::ReadWritePart *>::ConstIterator it;
00204
00205 it = m_parts.find( libname );
00206
00207
if ( it != m_parts.end() )
00208
return it.data();
00209
00210 kdDebug() <<
"Creating new KPart" << endl;
00211
00212 KParts::ReadWritePart *part =
00213 KParts::ComponentFactory::
00214 createPartInstanceFromLibrary<KParts::ReadWritePart>
00215 ( libname,
this, 0,
this,
"komposer" );
00216
00217
if ( part )
00218 m_parts.insert( libname, part );
00219
00220
return part;
00221 }
00222
00223
void
00224 Core::initWidgets()
00225 {
00226
QHBox *topWidget =
new QHBox(
this );
00227 setCentralWidget( topWidget );
00228 m_stack =
new QWidgetStack( topWidget );
00229 }
00230
00231
#include "core.moc"