summaryrefslogtreecommitdiffstats
path: root/kdeui/kxmlguibuilder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kdeui/kxmlguibuilder.cpp')
-rw-r--r--kdeui/kxmlguibuilder.cpp441
1 files changed, 0 insertions, 441 deletions
diff --git a/kdeui/kxmlguibuilder.cpp b/kdeui/kxmlguibuilder.cpp
deleted file mode 100644
index 123d85b2c..000000000
--- a/kdeui/kxmlguibuilder.cpp
+++ /dev/null
@@ -1,441 +0,0 @@
-/* This file is part of the KDE project
- Copyright (C) 2000 Simon Hausmann <hausmann@kde.org>
- David Faure <faure@kde.org>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-#include "kapplication.h"
-#include "kxmlguibuilder.h"
-#include "kmenubar.h"
-#include "kpopupmenu.h"
-#include "ktoolbar.h"
-#include "kstatusbar.h"
-#include "kmainwindow.h"
-#include "kaction.h"
-#include "kglobalsettings.h"
-#include <klocale.h>
-#include <kiconloader.h>
-#include <kdebug.h>
-#include <tqobjectlist.h>
-
-class KXMLGUIBuilderPrivate
-{
-public:
- KXMLGUIBuilderPrivate() {
- }
- ~KXMLGUIBuilderPrivate() {
- }
-
- TQWidget *m_widget;
-
- TQString tagMainWindow;
- TQString tagMenuBar;
- TQString tagMenu;
- TQString tagToolBar;
- TQString tagStatusBar;
-
- TQString tagSeparator;
- TQString tagTearOffHandle;
- TQString tagMenuTitle;
-
- TQString attrName;
- TQString attrLineSeparator;
-
- TQString attrText1;
- TQString attrText2;
- TQString attrContext;
-
- TQString attrIcon;
-
- KInstance *m_instance;
- KXMLGUIClient *m_client;
-};
-
-KXMLGUIBuilder::KXMLGUIBuilder( TQWidget *widget )
-{
- d = new KXMLGUIBuilderPrivate;
- d->m_widget = widget;
-
- d->tagMainWindow = TQString::tqfromLatin1( "mainwindow" );
- d->tagMenuBar = TQString::tqfromLatin1( "menubar" );
- d->tagMenu = TQString::tqfromLatin1( "menu" );
- d->tagToolBar = TQString::tqfromLatin1( "toolbar" );
- d->tagStatusBar = TQString::tqfromLatin1( "statusbar" );
-
- d->tagSeparator = TQString::tqfromLatin1( "separator" );
- d->tagTearOffHandle = TQString::tqfromLatin1( "tearoffhandle" );
- d->tagMenuTitle = TQString::tqfromLatin1( "title" );
-
- d->attrName = TQString::tqfromLatin1( "name" );
- d->attrLineSeparator = TQString::tqfromLatin1( "lineseparator" );
-
- d->attrText1 = TQString::tqfromLatin1( "text" );
- d->attrText2 = TQString::tqfromLatin1( "Text" );
- d->attrContext = TQString::tqfromLatin1( "context" );
-
- d->attrIcon = TQString::tqfromLatin1( "icon" );
-
- d->m_instance = 0;
- d->m_client = 0;
-}
-
-KXMLGUIBuilder::~KXMLGUIBuilder()
-{
- delete d;
-}
-
-TQWidget *KXMLGUIBuilder::widget()
-{
- return d->m_widget;
-}
-
-TQStringList KXMLGUIBuilder::containerTags() const
-{
- TQStringList res;
- res << d->tagMenu << d->tagToolBar << d->tagMainWindow << d->tagMenuBar << d->tagStatusBar;
-
- return res;
-}
-
-TQWidget *KXMLGUIBuilder::createContainer( TQWidget *parent, int index, const TQDomElement &element, int &id )
-{
- id = -1;
- if ( element.tagName().lower() == d->tagMainWindow )
- {
- KMainWindow *mainwindow = 0;
- if ( ::tqqt_cast<KMainWindow *>( d->m_widget ) )
- mainwindow = static_cast<KMainWindow *>(d->m_widget);
-
- return mainwindow;
- }
-
- if ( element.tagName().lower() == d->tagMenuBar )
- {
- KMenuBar *bar;
-
- if ( ::tqqt_cast<KMainWindow *>( d->m_widget ) )
- bar = static_cast<KMainWindow *>(d->m_widget)->menuBar();
- else
- bar = new KMenuBar( d->m_widget );
-
- bar->show();
- return bar;
- }
-
- if ( element.tagName().lower() == d->tagMenu )
- {
- // Look up to see if we are inside a mainwindow. If yes, then
- // use it as parent widget (to get kaction to plug itself into the
- // mainwindow). Don't use a popupmenu as parent widget, otherwise
- // the popup won't be hidden if it is used as a standalone menu as well.
- // And we don't want to set the parent for a standalone popupmenu,
- // otherwise its shortcuts appear.
- TQWidget* p = parent;
- while ( p && !::tqqt_cast<KMainWindow *>( p ) )
- p = p->parentWidget();
-
- TQCString name = element.attribute( d->attrName ).utf8();
-
- if (!kapp->authorizeKAction(name))
- return 0;
-
- KPopupMenu *popup = new KPopupMenu( p, name);
-
- TQString i18nText;
- TQDomElement textElem = element.namedItem( d->attrText1 ).toElement();
- if ( textElem.isNull() ) // try with capital T
- textElem = element.namedItem( d->attrText2 ).toElement();
- TQCString text = textElem.text().utf8();
- TQCString context = textElem.attribute(d->attrContext).utf8();
-
- if ( text.isEmpty() ) // still no luck
- i18nText = i18n( "No text!" );
- else if ( context.isEmpty() )
- i18nText = i18n( text );
- else
- i18nText = i18n( context, text );
-
- TQString icon = element.attribute( d->attrIcon );
- TQIconSet pix;
-
- if ( !icon.isEmpty() )
- {
- KInstance *instance = d->m_instance;
- if ( !instance )
- instance = KGlobal::instance();
-
- pix = SmallIconSet( icon, 16, instance );
- }
-
- if ( parent && ::tqqt_cast<KMenuBar *>( parent ) )
- {
- if ( !icon.isEmpty() )
- id = static_cast<KMenuBar *>(parent)->insertItem( pix, i18nText, popup, -1, index );
- else
- id = static_cast<KMenuBar *>(parent)->insertItem( i18nText, popup, -1, index );
- }
- else if ( parent && ::tqqt_cast<TQPopupMenu *>( parent ) )
- {
- if ( !icon.isEmpty() )
- id = static_cast<TQPopupMenu *>(parent)->insertItem( pix, i18nText, popup, -1, index );
- else
- id = static_cast<TQPopupMenu *>(parent)->insertItem( i18nText, popup, -1, index );
- }
-
- return popup;
- }
-
- if ( element.tagName().lower() == d->tagToolBar )
- {
- bool honor = (element.attribute( d->attrName ) == "mainToolBar");
-
- TQCString name = element.attribute( d->attrName ).utf8();
-
- KToolBar *bar = static_cast<KToolBar*>(TQT_TQWIDGET(d->m_widget->child( name, "KToolBar" )));
- if( !bar )
- {
- bar = new KToolBar( d->m_widget, name, honor, false );
- }
-
- if ( ::tqqt_cast<KMainWindow *>( d->m_widget ) )
- {
- if ( d->m_client && !d->m_client->xmlFile().isEmpty() )
- bar->setXMLGUIClient( d->m_client );
- }
-
- bar->loadState( element );
-
- return bar;
- }
-
- if ( element.tagName().lower() == d->tagStatusBar )
- {
- if ( ::tqqt_cast<KMainWindow *>( d->m_widget ) )
- {
- KMainWindow *mainWin = static_cast<KMainWindow *>(d->m_widget);
- mainWin->statusBar()->show();
- return mainWin->statusBar();
- }
- KStatusBar *bar = new KStatusBar( d->m_widget );
- return bar;
- }
-
- return 0L;
-}
-
-void KXMLGUIBuilder::removeContainer( TQWidget *container, TQWidget *parent, TQDomElement &element, int id )
-{
- // Warning parent can be 0L
-
- if ( ::tqqt_cast<TQPopupMenu *>( container ) )
- {
- if ( parent )
- {
- if ( ::tqqt_cast<KMenuBar *>( parent ) )
- static_cast<KMenuBar *>(parent)->removeItem( id );
- else if ( ::tqqt_cast<TQPopupMenu *>( parent ) )
- static_cast<TQPopupMenu *>(parent)->removeItem( id );
- }
-
- delete container;
- }
- else if ( ::tqqt_cast<KToolBar *>( container ) )
- {
- KToolBar *tb = static_cast<KToolBar *>( container );
-
- tb->saveState( element );
- delete tb;
- }
- else if ( ::tqqt_cast<KMenuBar *>( container ) )
- {
- KMenuBar *mb = static_cast<KMenuBar *>( container );
- mb->hide();
- // Don't delete menubar - it can be reused by createContainer.
- // If you decide that you do need to delete the menubar, make
- // sure that TQMainWindow::d->mb does not point to a deleted
- // menubar object.
- }
- else if ( ::tqqt_cast<KStatusBar *>( container ) )
- {
- if ( ::tqqt_cast<KMainWindow *>( d->m_widget ) )
- container->hide();
- else
- delete static_cast<KStatusBar *>(container);
- }
- else
- kdWarning() << "Unhandled container to remove : " << container->className() << endl;
-}
-
-TQStringList KXMLGUIBuilder::customTags() const
-{
- TQStringList res;
- res << d->tagSeparator << d->tagTearOffHandle << d->tagMenuTitle;
- return res;
-}
-
-int KXMLGUIBuilder::createCustomElement( TQWidget *parent, int index, const TQDomElement &element )
-{
- if ( element.tagName().lower() == d->tagSeparator )
- {
- if ( ::tqqt_cast<TQPopupMenu *>( parent ) )
- {
- // Don't insert multiple separators in a row
- TQPopupMenu *menu = static_cast<TQPopupMenu *>(parent);
- int count = menu->count();
- if (count)
- {
- int previousId = -1;
- if ((index == -1) || (index > count))
- previousId = menu->idAt(count-1);
- else if (index > 0)
- previousId = menu->idAt(index-1);
- if (previousId != -1)
- {
- if (menu->text(previousId).isEmpty() &&
- !menu->iconSet(previousId) &&
- !menu->pixmap(previousId))
- return 0;
- }
- }
- // Don't insert a separator at the top of the menu
- if(count == 0)
- return 0;
- else
- return menu->insertSeparator( index );
- }
- else if ( ::tqqt_cast<TQMenuBar *>( parent ) )
- return static_cast<TQMenuBar *>(parent)->insertSeparator( index );
- else if ( ::tqqt_cast<KToolBar *>( parent ) )
- {
- KToolBar *bar = static_cast<KToolBar *>( parent );
-
- bool isLineSep = true;
-
- TQDomNamedNodeMap attributes = element.attributes();
- unsigned int i = 0;
- for (; i < attributes.length(); i++ )
- {
- TQDomAttr attr = attributes.item( i ).toAttr();
-
- if ( attr.name().lower() == d->attrLineSeparator &&
- attr.value().lower() == TQString::tqfromLatin1("false") )
- {
- isLineSep = false;
- break;
- }
- }
-
- int id = KAction::getToolButtonID();
-
- if ( isLineSep )
- bar->insertLineSeparator( index, id );
- else
- bar->insertSeparator( index, id );
-
- return id;
- }
- }
- else if ( element.tagName().lower() == d->tagTearOffHandle )
- {
- if ( ::tqqt_cast<TQPopupMenu *>( parent ) && KGlobalSettings::insertTearOffHandle())
- return static_cast<TQPopupMenu *>(parent)->insertTearOffHandle( -1, index );
- }
- else if ( element.tagName().lower() == d->tagMenuTitle )
- {
- if ( ::tqqt_cast<KPopupMenu *>( parent ) )
- {
- TQString i18nText;
- TQCString text = element.text().utf8();
-
- if ( text.isEmpty() )
- i18nText = i18n( "No text!" );
- else
- i18nText = i18n( text );
-
- TQString icon = element.attribute( d->attrIcon );
- TQPixmap pix;
-
- if ( !icon.isEmpty() )
- {
- KInstance *instance = d->m_instance;
- if ( !instance )
- instance = KGlobal::instance();
-
- pix = SmallIcon( icon, instance );
- }
-
- if ( !icon.isEmpty() )
- return static_cast<KPopupMenu *>(parent)->insertTitle( pix, i18nText, -1, index );
- else
- return static_cast<KPopupMenu *>(parent)->insertTitle( i18nText, -1, index );
- }
- }
- return 0;
-}
-
-void KXMLGUIBuilder::removeCustomElement( TQWidget *parent, int id )
-{
- if ( ::tqqt_cast<TQPopupMenu *>( parent ) )
- static_cast<TQPopupMenu *>(parent)->removeItem( id );
- else if ( ::tqqt_cast<TQMenuBar *>( parent ) )
- static_cast<TQMenuBar *>(parent)->removeItem( id );
- else if ( ::tqqt_cast<KToolBar *>( parent ) )
- static_cast<KToolBar *>(parent)->removeItemDelayed( id );
-}
-
-KXMLGUIClient *KXMLGUIBuilder::builderClient() const
-{
- return d->m_client;
-}
-
-void KXMLGUIBuilder::setBuilderClient( KXMLGUIClient *client )
-{
- d->m_client = client;
- if ( client )
- setBuilderInstance( client->instance() );
-}
-
-KInstance *KXMLGUIBuilder::builderInstance() const
-{
- return d->m_instance;
-}
-
-void KXMLGUIBuilder::setBuilderInstance( KInstance *instance )
-{
- d->m_instance = instance;
-}
-
-void KXMLGUIBuilder::finalizeGUI( KXMLGUIClient * )
-{
- if ( !d->m_widget || !::tqqt_cast<KMainWindow *>( d->m_widget ) )
- return;
-#if 0
- KToolBar *toolbar = 0;
- QListIterator<KToolBar> it( ( (KMainWindow*)d->m_widget )->toolBarIterator() );
- while ( ( toolbar = it.current() ) ) {
- kdDebug() << "KXMLGUIBuilder::finalizeGUI toolbar=" << (void*)toolbar << endl;
- ++it;
- toolbar->positionYourself();
- }
-#else
- static_cast<KMainWindow *>(d->m_widget)->finalizeGUI( false );
-#endif
-}
-
-void KXMLGUIBuilder::virtual_hook( int, void* )
-{ /*BASE::virtual_hook( id, data );*/ }
-