diff options
Diffstat (limited to 'tdeui/kactionclasses.cpp')
-rw-r--r-- | tdeui/kactionclasses.cpp | 2421 |
1 files changed, 0 insertions, 2421 deletions
diff --git a/tdeui/kactionclasses.cpp b/tdeui/kactionclasses.cpp deleted file mode 100644 index 87c9932a3..000000000 --- a/tdeui/kactionclasses.cpp +++ /dev/null @@ -1,2421 +0,0 @@ -/* This file is part of the KDE libraries - Copyright (C) 1999 Reginald Stadlbauer <reggie@kde.org> - (C) 1999 Simon Hausmann <hausmann@kde.org> - (C) 2000 Nicolas Hadacek <haadcek@kde.org> - (C) 2000 Kurt Granroth <granroth@kde.org> - (C) 2000 Michael Koch <koch@kde.org> - (C) 2001 Holger Freyther <freyther@kde.org> - (C) 2002 Ellis Whitehead <ellis@kde.org> - (C) 2002 Joseph Wenninger <jowenn@kde.org> - (C) 2003 Andras Mantia <amantia@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 version 2 as published by the Free Software Foundation. - - 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 "kactionclasses.h" - -#include <assert.h> -#include <ft2build.h> -#include <fontconfig/fontconfig.h> - -#include <tqcursor.h> -#include <tqclipboard.h> -#include <tqfontdatabase.h> -#include <tqobjectlist.h> -#include <tqwhatsthis.h> -#include <tqtimer.h> -#include <tqfile.h> -#include <tqregexp.h> - -#include <dcopclient.h> -#include <dcopref.h> -#include <kaccel.h> -#include <kapplication.h> -#include <tdeconfig.h> -#include <kdebug.h> -#include <kfontcombo.h> -#include <kfontdialog.h> -#include <klocale.h> -#include <kmainwindow.h> -#include <kmenubar.h> -#include <kpopupmenu.h> -#include <ktoolbar.h> -#include <ktoolbarbutton.h> -#include <kurl.h> -#include <kstandarddirs.h> -#include <kstringhandler.h> - -class TDEToggleAction::TDEToggleActionPrivate -{ -public: - TDEToggleActionPrivate() - { - m_checked = false; - m_checkedGuiItem = 0; - } - - bool m_checked; - TQString m_exclusiveGroup; - KGuiItem* m_checkedGuiItem; -}; - -TDEToggleAction::TDEToggleAction( const TQString& text, const TDEShortcut& cut, - TQObject* parent, - const char* name ) - : TDEAction( text, cut, parent, name ) -{ - d = new TDEToggleActionPrivate; -} - -TDEToggleAction::TDEToggleAction( const TQString& text, const TDEShortcut& cut, - const TQObject* receiver, const char* slot, - TQObject* parent, const char* name ) - : TDEAction( text, cut, receiver, slot, parent, name ) -{ - d = new TDEToggleActionPrivate; -} - -TDEToggleAction::TDEToggleAction( const TQString& text, const TQIconSet& pix, - const TDEShortcut& cut, - TQObject* parent, const char* name ) - : TDEAction( text, pix, cut, parent, name ) -{ - d = new TDEToggleActionPrivate; -} - -TDEToggleAction::TDEToggleAction( const TQString& text, const TQString& pix, - const TDEShortcut& cut, - TQObject* parent, const char* name ) - : TDEAction( text, pix, cut, parent, name ) -{ - d = new TDEToggleActionPrivate; -} - -TDEToggleAction::TDEToggleAction( const TQString& text, const TQIconSet& pix, - const TDEShortcut& cut, - const TQObject* receiver, - const char* slot, TQObject* parent, - const char* name ) - : TDEAction( text, pix, cut, receiver, slot, parent, name ) -{ - d = new TDEToggleActionPrivate; -} - -TDEToggleAction::TDEToggleAction( const TQString& text, const TQString& pix, - const TDEShortcut& cut, - const TQObject* receiver, - const char* slot, TQObject* parent, - const char* name ) - : TDEAction( text, pix, cut, receiver, slot, parent, name ) -{ - d = new TDEToggleActionPrivate; -} - -TDEToggleAction::TDEToggleAction( TQObject* parent, const char* name ) - : TDEAction( parent, name ) -{ - d = new TDEToggleActionPrivate; -} - -TDEToggleAction::~TDEToggleAction() -{ - delete d->m_checkedGuiItem; - delete d; -} - -int TDEToggleAction::plug( TQWidget* widget, int index ) -{ - if ( !::tqqt_cast<TQPopupMenu *>( widget ) && !::tqqt_cast<TDEToolBar *>( widget ) ) - { - kdWarning() << "Can not plug TDEToggleAction in " << widget->className() << endl; - return -1; - } - if (kapp && !kapp->authorizeTDEAction(name())) - return -1; - - int _index = TDEAction::plug( widget, index ); - if ( _index == -1 ) - return _index; - - if ( ::tqqt_cast<TDEToolBar *>( widget ) ) { - TDEToolBar *bar = static_cast<TDEToolBar *>( widget ); - - bar->setToggle( itemId( _index ), true ); - bar->setButton( itemId( _index ), isChecked() ); - } - - if ( d->m_checked ) - updateChecked( _index ); - - return _index; -} - -void TDEToggleAction::setChecked( bool c ) -{ - if ( c == d->m_checked ) - return; - //kdDebug(129) << "TDEToggleAction::setChecked(" << c << ") " << this << " " << name() << endl; - - d->m_checked = c; - - int len = containerCount(); - - for( int i = 0; i < len; ++i ) - updateChecked( i ); - - if ( c && parent() && !exclusiveGroup().isEmpty() ) { - const TQObjectList list = parent()->childrenListObject(); - if ( !list.isEmpty() ) { - TQObjectListIt it( list ); - for( ; it.current(); ++it ) { - if ( ::tqqt_cast<TDEToggleAction *>( it.current() ) && it.current() != this && - static_cast<TDEToggleAction*>(it.current())->exclusiveGroup() == exclusiveGroup() ) { - TDEToggleAction *a = static_cast<TDEToggleAction*>(it.current()); - if( a->isChecked() ) { - a->setChecked( false ); - emit a->toggled( false ); - } - } - } - } - } -} - -void TDEToggleAction::updateChecked( int id ) -{ - TQWidget *w = container( id ); - - if ( ::tqqt_cast<TQPopupMenu *>( w ) ) { - TQPopupMenu* pm = static_cast<TQPopupMenu*>(w); - int itemId_ = itemId( id ); - if ( !d->m_checkedGuiItem ) - pm->setItemChecked( itemId_, d->m_checked ); - else { - const KGuiItem* gui = d->m_checked ? d->m_checkedGuiItem : &guiItem(); - if ( d->m_checkedGuiItem->hasIcon() ) - pm->changeItem( itemId_, gui->iconSet( KIcon::Small ), gui->text() ); - else - pm->changeItem( itemId_, gui->text() ); - - // If the text doesn't change, then set the icon to be "pressed", otherwise - // there is too little difference between checked and unchecked. - if ( d->m_checkedGuiItem->text() == guiItem().text() ) - pm->setItemChecked( itemId_, d->m_checked ); - - if ( !d->m_checkedGuiItem->whatsThis().isEmpty() ) // if empty, we keep the initial one - pm->TQMenuData::setWhatsThis( itemId_, gui->whatsThis() ); - updateShortcut( pm, itemId_ ); - } - } - else if ( ::tqqt_cast<TQMenuBar *>( w ) ) // not handled in plug... - static_cast<TQMenuBar*>(w)->setItemChecked( itemId( id ), d->m_checked ); - else if ( ::tqqt_cast<TDEToolBar *>( w ) ) - { - TQWidget* r = static_cast<TDEToolBar*>( w )->getButton( itemId( id ) ); - if ( r && ::tqqt_cast<TDEToolBarButton *>( r ) ) { - static_cast<TDEToolBar*>( w )->setButton( itemId( id ), d->m_checked ); - if ( d->m_checkedGuiItem && d->m_checkedGuiItem->hasIcon() ) { - const KGuiItem* gui = d->m_checked ? d->m_checkedGuiItem : &guiItem(); - static_cast<TDEToolBar*>( w )->setButtonIconSet( itemId( id ), gui->iconSet( KIcon::Toolbar ) ); - } - } - } -} - -void TDEToggleAction::slotActivated() -{ - setChecked( !isChecked() ); - TDEAction::slotActivated(); - emit toggled( isChecked() ); -} - -bool TDEToggleAction::isChecked() const -{ - return d->m_checked; -} - -void TDEToggleAction::setExclusiveGroup( const TQString& name ) -{ - d->m_exclusiveGroup = name; -} - -TQString TDEToggleAction::exclusiveGroup() const -{ - return d->m_exclusiveGroup; -} - -void TDEToggleAction::setCheckedState( const KGuiItem& checkedItem ) -{ - delete d->m_checkedGuiItem; - d->m_checkedGuiItem = new KGuiItem( checkedItem ); -} - -TQString TDEToggleAction::toolTip() const -{ - if ( d->m_checkedGuiItem && d->m_checked ) - return d->m_checkedGuiItem->toolTip(); - else - return TDEAction::toolTip(); -} - -TDERadioAction::TDERadioAction( const TQString& text, const TDEShortcut& cut, - TQObject* parent, const char* name ) -: TDEToggleAction( text, cut, parent, name ) -{ -} - -TDERadioAction::TDERadioAction( const TQString& text, const TDEShortcut& cut, - const TQObject* receiver, const char* slot, - TQObject* parent, const char* name ) -: TDEToggleAction( text, cut, receiver, slot, parent, name ) -{ -} - -TDERadioAction::TDERadioAction( const TQString& text, const TQIconSet& pix, - const TDEShortcut& cut, - TQObject* parent, const char* name ) -: TDEToggleAction( text, pix, cut, parent, name ) -{ -} - -TDERadioAction::TDERadioAction( const TQString& text, const TQString& pix, - const TDEShortcut& cut, - TQObject* parent, const char* name ) -: TDEToggleAction( text, pix, cut, parent, name ) -{ -} - -TDERadioAction::TDERadioAction( const TQString& text, const TQIconSet& pix, - const TDEShortcut& cut, - const TQObject* receiver, const char* slot, - TQObject* parent, const char* name ) -: TDEToggleAction( text, pix, cut, receiver, slot, parent, name ) -{ -} - -TDERadioAction::TDERadioAction( const TQString& text, const TQString& pix, - const TDEShortcut& cut, - const TQObject* receiver, const char* slot, - TQObject* parent, const char* name ) -: TDEToggleAction( text, pix, cut, receiver, slot, parent, name ) -{ -} - -TDERadioAction::TDERadioAction( TQObject* parent, const char* name ) -: TDEToggleAction( parent, name ) -{ -} - -void TDERadioAction::slotActivated() -{ - if ( isChecked() ) - { - const TQObject *senderObj = TQT_TQOBJECT_CONST(sender()); - - if ( !senderObj || !::tqqt_cast<const TDEToolBarButton *>( senderObj ) ) - return; - - const_cast<TDEToolBarButton *>( static_cast<const TDEToolBarButton *>( TQT_TQWIDGET_CONST(senderObj) ) )->on( true ); - - return; - } - - TDEToggleAction::slotActivated(); -} - -class TDESelectAction::TDESelectActionPrivate -{ -public: - TDESelectActionPrivate() - { - m_edit = false; - m_menuAccelsEnabled = true; - m_menu = 0; - m_current = -1; - m_comboWidth = -1; - m_maxComboViewCount = -1; - } - bool m_edit; - bool m_menuAccelsEnabled; - TQPopupMenu *m_menu; - int m_current; - int m_comboWidth; - TQStringList m_list; - int m_maxComboViewCount; - - TQString makeMenuText( const TQString &_text ) - { - if ( m_menuAccelsEnabled ) - return _text; - TQString text = _text; - uint i = 0; - while ( i < text.length() ) { - if ( text[ i ] == '&' ) { - text.insert( i, '&' ); - i += 2; - } - else - ++i; - } - return text; - } -}; - -TDESelectAction::TDESelectAction( const TQString& text, const TDEShortcut& cut, - TQObject* parent, const char* name ) - : TDEAction( text, cut, parent, name ) -{ - d = new TDESelectActionPrivate; -} - -TDESelectAction::TDESelectAction( const TQString& text, const TDEShortcut& cut, - const TQObject* receiver, const char* slot, - TQObject* parent, const char* name ) - : TDEAction( text, cut, receiver, slot, parent, name ) -{ - d = new TDESelectActionPrivate; -} - -TDESelectAction::TDESelectAction( const TQString& text, const TQIconSet& pix, - const TDEShortcut& cut, - TQObject* parent, const char* name ) - : TDEAction( text, pix, cut, parent, name ) -{ - d = new TDESelectActionPrivate; -} - -TDESelectAction::TDESelectAction( const TQString& text, const TQString& pix, - const TDEShortcut& cut, - TQObject* parent, const char* name ) - : TDEAction( text, pix, cut, parent, name ) -{ - d = new TDESelectActionPrivate; -} - -TDESelectAction::TDESelectAction( const TQString& text, const TQIconSet& pix, - const TDEShortcut& cut, - const TQObject* receiver, - const char* slot, TQObject* parent, - const char* name ) - : TDEAction( text, pix, cut, receiver, slot, parent, name ) -{ - d = new TDESelectActionPrivate; -} - -TDESelectAction::TDESelectAction( const TQString& text, const TQString& pix, - const TDEShortcut& cut, - const TQObject* receiver, - const char* slot, TQObject* parent, - const char* name ) - : TDEAction( text, pix, cut, receiver, slot, parent, name ) -{ - d = new TDESelectActionPrivate; -} - -TDESelectAction::TDESelectAction( TQObject* parent, const char* name ) - : TDEAction( parent, name ) -{ - d = new TDESelectActionPrivate; -} - -TDESelectAction::~TDESelectAction() -{ - assert(d); - delete d->m_menu; - delete d; d = 0; -} - -void TDESelectAction::setCurrentItem( int id ) -{ - if ( id >= (int)d->m_list.count() ) { - Q_ASSERT(id < (int)d->m_list.count()); - return; - } - - if ( d->m_menu ) - { - if ( d->m_current >= 0 ) - d->m_menu->setItemChecked( d->m_current, false ); - if ( id >= 0 ) - d->m_menu->setItemChecked( id, true ); - } - - d->m_current = id; - - int len = containerCount(); - - for( int i = 0; i < len; ++i ) - updateCurrentItem( i ); - - // emit TDEAction::activated(); - // emit activated( currentItem() ); - // emit activated( currentText() ); -} - -void TDESelectAction::setComboWidth( int width ) -{ - if ( width < 0 ) - return; - - d->m_comboWidth=width; - - int len = containerCount(); - - for( int i = 0; i < len; ++i ) - updateComboWidth( i ); - -} - -void TDESelectAction::setMaxComboViewCount( int n ) -{ - d->m_maxComboViewCount = n; -} - -TQPopupMenu* TDESelectAction::popupMenu() const -{ - kdDebug(129) << "TDEAction::popupMenu()" << endl; // remove -- ellis - if ( !d->m_menu ) - { - d->m_menu = new TDEPopupMenu(0L, "TDESelectAction::popupMenu()"); - setupMenu(); - if ( d->m_current >= 0 ) - d->m_menu->setItemChecked( d->m_current, true ); - } - - return d->m_menu; -} - -void TDESelectAction::setupMenu() const -{ - if ( !d->m_menu ) - return; - d->m_menu->clear(); - - TQStringList::ConstIterator it = d->m_list.begin(); - for( uint id = 0; it != d->m_list.end(); ++it, ++id ) { - TQString text = *it; - if ( !text.isEmpty() ) - d->m_menu->insertItem( d->makeMenuText( text ), this, TQT_SLOT( slotActivated( int ) ), 0, id ); - else - d->m_menu->insertSeparator(); - } -} - -void TDESelectAction::changeItem( int index, const TQString& text ) -{ - if ( index < 0 || index >= (int)d->m_list.count() ) - { - kdWarning() << "TDESelectAction::changeItem Index out of scope" << endl; - return; - } - - d->m_list[ index ] = text; - - if ( d->m_menu ) - d->m_menu->changeItem( index, d->makeMenuText( text ) ); - - int len = containerCount(); - for( int i = 0; i < len; ++i ) - changeItem( i, index, text ); -} - -void TDESelectAction::changeItem( int id, int index, const TQString& text) -{ - if ( index < 0 ) - return; - - TQWidget* w = container( id ); - if ( ::tqqt_cast<TDEToolBar *>( w ) ) - { - TQWidget* r = (static_cast<TDEToolBar*>( w ))->getWidget( itemId( id ) ); - if ( ::tqqt_cast<TQComboBox *>( r ) ) - { - TQComboBox *b = static_cast<TQComboBox*>( r ); - b->changeItem(text, index ); - } - } -} - -void TDESelectAction::setItems( const TQStringList &lst ) -{ - d->m_list = lst; - d->m_current = -1; - - setupMenu(); - - int len = containerCount(); - for( int i = 0; i < len; ++i ) - updateItems( i ); - - // Disable if empty and not editable - setEnabled ( lst.count() > 0 || d->m_edit ); -} - -TQStringList TDESelectAction::items() const -{ - return d->m_list; -} - -TQString TDESelectAction::currentText() const -{ - if ( currentItem() < 0 ) - return TQString::null; - - return d->m_list[ currentItem() ]; -} - -int TDESelectAction::currentItem() const -{ - return d->m_current; -} - -void TDESelectAction::updateCurrentItem( int id ) -{ - if ( d->m_current < 0 ) - return; - - TQWidget* w = container( id ); - if ( ::tqqt_cast<TDEToolBar *>( w ) ) { - TQWidget* r = static_cast<TDEToolBar*>( w )->getWidget( itemId( id ) ); - if ( ::tqqt_cast<TQComboBox *>( r ) ) { - TQComboBox *b = static_cast<TQComboBox*>( r ); - b->setCurrentItem( d->m_current ); - } - } -} - -int TDESelectAction::comboWidth() const -{ - return d->m_comboWidth; -} - -void TDESelectAction::updateComboWidth( int id ) -{ - TQWidget* w = container( id ); - if ( ::tqqt_cast<TDEToolBar *>( w ) ) { - TQWidget* r = static_cast<TDEToolBar*>( w )->getWidget( itemId( id ) ); - if ( ::tqqt_cast<TQComboBox *>( r ) ) { - TQComboBox *cb = static_cast<TQComboBox*>( r ); - cb->setMinimumWidth( d->m_comboWidth ); - cb->setMaximumWidth( d->m_comboWidth ); - } - } -} - -void TDESelectAction::updateItems( int id ) -{ - kdDebug(129) << "TDEAction::updateItems( " << id << ", lst )" << endl; // remove -- ellis - TQWidget* w = container( id ); - if ( ::tqqt_cast<TDEToolBar *>( w ) ) { - TQWidget* r = static_cast<TDEToolBar*>( w )->getWidget( itemId( id ) ); - if ( ::tqqt_cast<TQComboBox *>( r ) ) { - TQComboBox *cb = static_cast<TQComboBox*>( r ); - cb->clear(); - TQStringList lst = comboItems(); - TQStringList::ConstIterator it = lst.begin(); - for( ; it != lst.end(); ++it ) - cb->insertItem( *it ); - // qt caches and never recalculates the sizeHint() - // qcombobox.cpp recommends calling setFont to invalidate the sizeHint - // setFont sets own_font = True, so we're a bit mean and calll - // unsetFont which calls setFont and then overwrites the own_font - cb->unsetFont(); - } - } -} - -int TDESelectAction::plug( TQWidget *widget, int index ) -{ - if (kapp && !kapp->authorizeTDEAction(name())) - return -1; - kdDebug(129) << "TDESelectAction::plug( " << widget << ", " << index << " )" << endl; // remove -- ellis - if ( ::tqqt_cast<TQPopupMenu *>( widget) ) - { - // Create the PopupMenu and store it in m_menu - (void)popupMenu(); - - TQPopupMenu* menu = static_cast<TQPopupMenu*>( widget ); - int id; - if ( hasIcon() ) - id = menu->insertItem( iconSet(), text(), d->m_menu, -1, index ); - else - id = menu->insertItem( text(), d->m_menu, -1, index ); - - if ( !isEnabled() ) - menu->setItemEnabled( id, false ); - - TQString wth = whatsThis(); - if ( !wth.isEmpty() ) - menu->TQMenuData::setWhatsThis( id, wth ); - - addContainer( menu, id ); - connect( menu, TQT_SIGNAL( destroyed() ), this, TQT_SLOT( slotDestroyed() ) ); - - return containerCount() - 1; - } - else if ( ::tqqt_cast<TDEToolBar *>( widget ) ) - { - TDEToolBar* bar = static_cast<TDEToolBar*>( widget ); - int id_ = TDEAction::getToolButtonID(); - bar->insertCombo( comboItems(), id_, isEditable(), - TQT_SIGNAL( activated( const TQString & ) ), this, - TQT_SLOT( slotActivated( const TQString & ) ), isEnabled(), - toolTip(), -1, index ); - - TQComboBox *cb = bar->getCombo( id_ ); - if ( cb ) - { - if (!isEditable()) cb->setFocusPolicy(TQ_NoFocus); - cb->setMinimumWidth( cb->sizeHint().width() ); - if ( d->m_comboWidth > 0 ) - { - cb->setMinimumWidth( d->m_comboWidth ); - cb->setMaximumWidth( d->m_comboWidth ); - } - cb->setInsertionPolicy( TQComboBox::NoInsertion ); - TQWhatsThis::add( cb, whatsThis() ); - if ( d->m_maxComboViewCount != -1 ) cb->setSizeLimit( d->m_maxComboViewCount ); - } - - addContainer( bar, id_ ); - - connect( bar, TQT_SIGNAL( destroyed() ), this, TQT_SLOT( slotDestroyed() ) ); - - updateCurrentItem( containerCount() - 1 ); - - return containerCount() - 1; - } - else if ( ::tqqt_cast<TQMenuBar *>( widget ) ) - { - // Create the PopupMenu and store it in m_menu - (void)popupMenu(); - - TQMenuBar* menu = static_cast<TQMenuBar*>( widget ); - int id = menu->insertItem( text(), d->m_menu, -1, index ); - - if ( !isEnabled() ) - menu->setItemEnabled( id, false ); - - TQString wth = whatsThis(); - if ( !wth.isEmpty() ) - menu->TQMenuData::setWhatsThis( id, wth ); - - addContainer( menu, id ); - connect( menu, TQT_SIGNAL( destroyed() ), this, TQT_SLOT( slotDestroyed() ) ); - - return containerCount() - 1; - } - - kdWarning() << "Can not plug TDEAction in " << widget->className() << endl; - return -1; -} - -TQStringList TDESelectAction::comboItems() const -{ - if( d->m_menuAccelsEnabled ) { - TQStringList lst; - TQStringList::ConstIterator it = d->m_list.begin(); - for( ; it != d->m_list.end(); ++it ) - { - TQString item = *it; - int i = item.find( '&' ); - if ( i > -1 ) - item = item.remove( i, 1 ); - lst.append( item ); - } - return lst; - } - else - return d->m_list; -} - -void TDESelectAction::clear() -{ - if ( d->m_menu ) - d->m_menu->clear(); - - int len = containerCount(); - for( int i = 0; i < len; ++i ) - updateClear( i ); -} - -void TDESelectAction::updateClear( int id ) -{ - TQWidget* w = container( id ); - if ( ::tqqt_cast<TDEToolBar *>( w ) ) { - TQWidget* r = static_cast<TDEToolBar*>( w )->getWidget( itemId( id ) ); - if ( ::tqqt_cast<TQComboBox *>( r ) ) { - TQComboBox *b = static_cast<TQComboBox*>( r ); - b->clear(); - } - } -} - -void TDESelectAction::slotActivated( int id ) -{ - if ( d->m_current == id ) - return; - - setCurrentItem( id ); - // Delay this. Especially useful when the slot connected to activated() will re-create - // the menu, e.g. in the recent files action. This prevents a crash. - TQTimer::singleShot( 0, this, TQT_SLOT( slotActivated() ) ); -} - -void TDESelectAction::slotActivated( const TQString &text ) -{ - if ( isEditable() ) - { - TQStringList lst = d->m_list; - if(!lst.contains(text)) - { - lst.append( text ); - setItems( lst ); - } - } - - int i = d->m_list.findIndex( text ); - if ( i > -1 ) - setCurrentItem( i ); - else - setCurrentItem( comboItems().findIndex( text ) ); - // Delay this. Especially useful when the slot connected to activated() will re-create - // the menu, e.g. in the recent files action. This prevents a crash. - TQTimer::singleShot( 0, this, TQT_SLOT( slotActivated() ) ); -} - -void TDESelectAction::slotActivated() -{ - TDEAction::slotActivated(); - kdDebug(129) << "TDESelectAction::slotActivated currentItem=" << currentItem() << " currentText=" << currentText() << endl; - emit activated( currentItem() ); - emit activated( currentText() ); -} - -void TDESelectAction::setEditable( bool edit ) -{ - d->m_edit = edit; -} - -bool TDESelectAction::isEditable() const -{ - return d->m_edit; -} - -void TDESelectAction::setRemoveAmpersandsInCombo( bool b ) -{ - setMenuAccelsEnabled( b ); -} - -bool TDESelectAction::removeAmpersandsInCombo() const -{ - return menuAccelsEnabled( ); -} - -void TDESelectAction::setMenuAccelsEnabled( bool b ) -{ - d->m_menuAccelsEnabled = b; -} - -bool TDESelectAction::menuAccelsEnabled() const -{ - return d->m_menuAccelsEnabled; -} - -class TDEListAction::TDEListActionPrivate -{ -public: - TDEListActionPrivate() - { - m_current = 0; - } - int m_current; -}; - -TDEListAction::TDEListAction( const TQString& text, const TDEShortcut& cut, - TQObject* parent, const char* name ) - : TDESelectAction( text, cut, parent, name ) -{ - d = new TDEListActionPrivate; -} - -TDEListAction::TDEListAction( const TQString& text, const TDEShortcut& cut, - const TQObject* receiver, const char* slot, - TQObject* parent, const char* name ) - : TDESelectAction( text, cut, parent, name ) -{ - d = new TDEListActionPrivate; - if ( receiver ) - connect( this, TQT_SIGNAL( activated( int ) ), receiver, slot ); -} - -TDEListAction::TDEListAction( const TQString& text, const TQIconSet& pix, - const TDEShortcut& cut, - TQObject* parent, const char* name ) - : TDESelectAction( text, pix, cut, parent, name ) -{ - d = new TDEListActionPrivate; -} - -TDEListAction::TDEListAction( const TQString& text, const TQString& pix, - const TDEShortcut& cut, - TQObject* parent, const char* name ) - : TDESelectAction( text, pix, cut, parent, name ) -{ - d = new TDEListActionPrivate; -} - -TDEListAction::TDEListAction( const TQString& text, const TQIconSet& pix, - const TDEShortcut& cut, const TQObject* receiver, - const char* slot, TQObject* parent, - const char* name ) - : TDESelectAction( text, pix, cut, parent, name ) -{ - d = new TDEListActionPrivate; - if ( receiver ) - connect( this, TQT_SIGNAL( activated( int ) ), receiver, slot ); -} - -TDEListAction::TDEListAction( const TQString& text, const TQString& pix, - const TDEShortcut& cut, const TQObject* receiver, - const char* slot, TQObject* parent, - const char* name ) - : TDESelectAction( text, pix, cut, parent, name ) -{ - d = new TDEListActionPrivate; - if ( receiver ) - connect( this, TQT_SIGNAL( activated( int ) ), receiver, slot ); -} - -TDEListAction::TDEListAction( TQObject* parent, const char* name ) - : TDESelectAction( parent, name ) -{ - d = new TDEListActionPrivate; -} - -TDEListAction::~TDEListAction() -{ - delete d; d = 0; -} - -void TDEListAction::setCurrentItem( int index ) -{ - TDESelectAction::setCurrentItem( index ); - d->m_current = index; - - // emit TDEAction::activated(); - // emit activated( currentItem() ); - // emit activated( currentText() ); -} - -TQString TDEListAction::currentText() const -{ - return TDESelectAction::currentText(); -} - -int TDEListAction::currentItem() const -{ - return d->m_current; -} - -class TDERecentFilesAction::TDERecentFilesActionPrivate -{ -public: - TDERecentFilesActionPrivate() - { - m_maxItems = 0; - m_popup = 0; - } - uint m_maxItems; - TDEPopupMenu *m_popup; - TQMap<TQString, TQString> m_shortNames; - TQMap<TQString, KURL> m_urls; -}; - -TDERecentFilesAction::TDERecentFilesAction( const TQString& text, - const TDEShortcut& cut, - TQObject* parent, const char* name, - uint maxItems ) - : TDEListAction( text, cut, parent, name) -{ - d = new TDERecentFilesActionPrivate; - d->m_maxItems = maxItems; - - init(); -} - -TDERecentFilesAction::TDERecentFilesAction( const TQString& text, - const TDEShortcut& cut, - const TQObject* receiver, - const char* slot, - TQObject* parent, const char* name, - uint maxItems ) - : TDEListAction( text, cut, parent, name) -{ - d = new TDERecentFilesActionPrivate; - d->m_maxItems = maxItems; - - init(); - - if ( receiver ) - connect( this, TQT_SIGNAL(urlSelected(const KURL&)), - receiver, slot ); -} - -TDERecentFilesAction::TDERecentFilesAction( const TQString& text, - const TQIconSet& pix, - const TDEShortcut& cut, - TQObject* parent, const char* name, - uint maxItems ) - : TDEListAction( text, pix, cut, parent, name) -{ - d = new TDERecentFilesActionPrivate; - d->m_maxItems = maxItems; - - init(); -} - -TDERecentFilesAction::TDERecentFilesAction( const TQString& text, - const TQString& pix, - const TDEShortcut& cut, - TQObject* parent, const char* name, - uint maxItems ) - : TDEListAction( text, pix, cut, parent, name) -{ - d = new TDERecentFilesActionPrivate; - d->m_maxItems = maxItems; - - init(); -} - -TDERecentFilesAction::TDERecentFilesAction( const TQString& text, - const TQIconSet& pix, - const TDEShortcut& cut, - const TQObject* receiver, - const char* slot, - TQObject* parent, const char* name, - uint maxItems ) - : TDEListAction( text, pix, cut, parent, name) -{ - d = new TDERecentFilesActionPrivate; - d->m_maxItems = maxItems; - - init(); - - if ( receiver ) - connect( this, TQT_SIGNAL(urlSelected(const KURL&)), - receiver, slot ); -} - -TDERecentFilesAction::TDERecentFilesAction( const TQString& text, - const TQString& pix, - const TDEShortcut& cut, - const TQObject* receiver, - const char* slot, - TQObject* parent, const char* name, - uint maxItems ) - : TDEListAction( text, pix, cut, parent, name) -{ - d = new TDERecentFilesActionPrivate; - d->m_maxItems = maxItems; - - init(); - - if ( receiver ) - connect( this, TQT_SIGNAL(urlSelected(const KURL&)), - receiver, slot ); -} - -TDERecentFilesAction::TDERecentFilesAction( TQObject* parent, const char* name, - uint maxItems ) - : TDEListAction( parent, name ) -{ - d = new TDERecentFilesActionPrivate; - d->m_maxItems = maxItems; - - init(); -} - -void TDERecentFilesAction::init() -{ - TDERecentFilesAction *that = const_cast<TDERecentFilesAction*>(this); - that->d->m_popup = new TDEPopupMenu; - connect(d->m_popup, TQT_SIGNAL(aboutToShow()), this, TQT_SLOT(menuAboutToShow())); - connect(d->m_popup, TQT_SIGNAL(activated(int)), this, TQT_SLOT(menuItemActivated(int))); - connect( this, TQT_SIGNAL( activated( const TQString& ) ), - this, TQT_SLOT( itemSelected( const TQString& ) ) ); - - setMenuAccelsEnabled( false ); -} - -TDERecentFilesAction::~TDERecentFilesAction() -{ - delete d->m_popup; - delete d; d = 0; -} - -uint TDERecentFilesAction::maxItems() const -{ - return d->m_maxItems; -} - -void TDERecentFilesAction::setMaxItems( uint maxItems ) -{ - TQStringList lst = TDESelectAction::items(); - uint oldCount = lst.count(); - - // set new maxItems - d->m_maxItems = maxItems; - - // remove all items that are too much - while( lst.count() > maxItems ) - { - // remove last item - TQString lastItem = lst.last(); - d->m_shortNames.erase( lastItem ); - d->m_urls.erase( lastItem ); - lst.remove( lastItem ); - } - - // set new list if changed - if( lst.count() != oldCount ) - setItems( lst ); -} - -void TDERecentFilesAction::addURL( const KURL& url ) -{ - addURL( url, url.fileName() ); -} - -void TDERecentFilesAction::addURL( const KURL& url, const TQString& name ) -{ - if ( url.isLocalFile() && !TDEGlobal::dirs()->relativeLocation("tmp", url.path()).startsWith("/")) - return; - const TQString file = url.pathOrURL(); - TQStringList lst = TDESelectAction::items(); - - // remove file if already in list - const TQStringList::Iterator end = lst.end(); - for ( TQStringList::Iterator it = lst.begin(); it != end; ++it ) - { - TQString title = (*it); - if ( title.endsWith( file + "]" ) ) - { - lst.remove( it ); - d->m_urls.erase( title ); - d->m_shortNames.erase( title ); - break; - } - } - // remove last item if already maxitems in list - if( lst.count() == d->m_maxItems ) - { - // remove last item - const TQString lastItem = lst.last(); - d->m_shortNames.erase( lastItem ); - d->m_urls.erase( lastItem ); - lst.remove( lastItem ); - } - - // add file to list - const TQString title = name + " [" + file + "]"; - d->m_shortNames.insert( title, name ); - d->m_urls.insert( title, url ); - lst.prepend( title ); - setItems( lst ); -} - -void TDERecentFilesAction::removeURL( const KURL& url ) -{ - TQStringList lst = TDESelectAction::items(); - TQString file = url.pathOrURL(); - - // remove url - TQStringList::Iterator end = lst.end(); - for ( TQStringList::Iterator it = lst.begin(); it != end; ++it ) - { - if ( (*it).endsWith( file + "]" )) - { - d->m_shortNames.erase( (*it) ); - d->m_urls.erase( (*it) ); - lst.remove( it ); - setItems( lst ); - break; - } - } -} - -void TDERecentFilesAction::clearURLList() -{ - clear(); - d->m_shortNames.clear(); - d->m_urls.clear(); -} - -void TDERecentFilesAction::loadEntries( TDEConfig* config, TQString groupname) -{ - TQString key; - TQString value; - TQString nameKey; - TQString nameValue; - TQString title; - TQString oldGroup; - TQStringList lst; - KURL url; - - oldGroup = config->group(); - - if (groupname.isEmpty()) - groupname = "RecentFiles"; - config->setGroup( groupname ); - - // read file list - for( unsigned int i = 1 ; i <= d->m_maxItems ; i++ ) - { - key = TQString( "File%1" ).arg( i ); - value = config->readPathEntry( key ); - url = KURL::fromPathOrURL( value ); - - // Don't restore if file doesn't exist anymore - if (url.isLocalFile() && !TQFile::exists(url.path())) - continue; - - nameKey = TQString( "Name%1" ).arg( i ); - nameValue = config->readPathEntry( nameKey, url.fileName() ); - title = nameValue + " [" + value + "]"; - if (!value.isNull()) - { - lst.append( title ); - d->m_shortNames.insert( title, nameValue ); - d->m_urls.insert( title, url ); - } - } - - // set file - setItems( lst ); - - config->setGroup( oldGroup ); -} - -void TDERecentFilesAction::saveEntries( TDEConfig* config, TQString groupname ) -{ - TQString key; - TQString value; - TQString oldGroup; - TQStringList lst = TDESelectAction::items(); - - oldGroup = config->group(); - - if (groupname.isEmpty()) - groupname = "RecentFiles"; - config->deleteGroup( groupname, true ); - config->setGroup( groupname ); - - // write file list - for( unsigned int i = 1 ; i <= lst.count() ; i++ ) - { - //kdDebug(129) << "Entry for " << lst[i-1] << d->m_urls[ lst[ i - 1 ] ] << endl; - key = TQString( "File%1" ).arg( i ); - value = d->m_urls[ lst[ i - 1 ] ].pathOrURL(); - config->writePathEntry( key, value ); - key = TQString( "Name%1" ).arg( i ); - value = d->m_shortNames[ lst[ i - 1 ] ]; - config->writePathEntry( key, value ); - } - - config->setGroup( oldGroup ); -} - -void TDERecentFilesAction::itemSelected( const TQString& text ) -{ - //return a copy of the URL since the slot where it is connected might call - //addURL or removeURL where the d->m_urls.erase( title ) could destroy the - //d->m_urls[ text ] and the emitted URL will be invalid in the rest of the slot - emit urlSelected( KURL(d->m_urls[ text ]) ); -} - -void TDERecentFilesAction::menuItemActivated( int id ) -{ - TQString text = d->m_popup->text(id); - //return a copy of the URL since the slot where it is connected might call - //addURL or removeURL where the d->m_urls.erase( title ) could destroy the - //d->m_urls[ text ] and the emitted URL will be invalid in the rest of the slot - emit urlSelected( KURL(d->m_urls[ text ]) ); -} - -void TDERecentFilesAction::menuAboutToShow() -{ - TDEPopupMenu *menu = d->m_popup; - menu->clear(); - TQStringList list = TDESelectAction::items(); - for ( TQStringList::Iterator it = list.begin(); it != list.end(); ++it ) - { - menu->insertItem(*it); - } -} - -int TDERecentFilesAction::plug( TQWidget *widget, int index ) -{ - if (kapp && !kapp->authorizeTDEAction(name())) - return -1; - // This is very related to TDEActionMenu::plug. - // In fact this class could be an interesting base class for TDEActionMenu - if ( ::tqqt_cast<TDEToolBar *>( widget ) ) - { - TDEToolBar *bar = (TDEToolBar *)widget; - - int id_ = TDEAction::getToolButtonID(); - - TDEInstance * instance; - if ( m_parentCollection ) - instance = m_parentCollection->instance(); - else - instance = TDEGlobal::instance(); - - bar->insertButton( icon(), id_, TQT_SIGNAL( clicked() ), this, - TQT_SLOT( slotClicked() ), isEnabled(), plainText(), - index, instance ); - - addContainer( bar, id_ ); - - connect( bar, TQT_SIGNAL( destroyed() ), this, TQT_SLOT( slotDestroyed() ) ); - - bar->setDelayedPopup( id_, d->m_popup, true); - - if ( !whatsThis().isEmpty() ) - TQWhatsThis::add( bar->getButton( id_ ), whatsThisWithIcon() ); - - return containerCount() - 1; - } - - return TDEListAction::plug( widget, index ); -} - -void TDERecentFilesAction::slotClicked() -{ - TDEAction::slotActivated(); -} - -void TDERecentFilesAction::slotActivated(const TQString& text) -{ - TDEListAction::slotActivated(text); -} - - -void TDERecentFilesAction::slotActivated(int id) -{ - TDEListAction::slotActivated(id); -} - - -void TDERecentFilesAction::slotActivated() -{ - emit activated( currentItem() ); - emit activated( currentText() ); -} - -//KDE4: rename to urls() and return a KURL::List -TQStringList TDERecentFilesAction::items() const -{ - TQStringList lst = TDESelectAction::items(); - TQStringList result; - - for( unsigned int i = 1 ; i <= lst.count() ; i++ ) - { - result += d->m_urls[ lst[ i - 1 ] ].prettyURL(0, KURL::StripFileProtocol); - } - - return result; -} - -//KDE4: remove -TQStringList TDERecentFilesAction::completeItems() const -{ - return TDESelectAction::items(); -} - - -class TDEFontAction::TDEFontActionPrivate -{ -public: - TDEFontActionPrivate() - { - } - TQStringList m_fonts; -}; - -TDEFontAction::TDEFontAction( const TQString& text, - const TDEShortcut& cut, TQObject* parent, - const char* name ) - : TDESelectAction( text, cut, parent, name ) -{ - d = new TDEFontActionPrivate; - TDEFontChooser::getFontList( d->m_fonts, 0 ); - TDESelectAction::setItems( d->m_fonts ); - setEditable( true ); -} - -TDEFontAction::TDEFontAction( const TQString& text, const TDEShortcut& cut, - const TQObject* receiver, const char* slot, - TQObject* parent, const char* name ) - : TDESelectAction( text, cut, receiver, slot, parent, name ) -{ - d = new TDEFontActionPrivate; - TDEFontChooser::getFontList( d->m_fonts, 0 ); - TDESelectAction::setItems( d->m_fonts ); - setEditable( true ); -} - -TDEFontAction::TDEFontAction( const TQString& text, const TQIconSet& pix, - const TDEShortcut& cut, - TQObject* parent, const char* name ) - : TDESelectAction( text, pix, cut, parent, name ) -{ - d = new TDEFontActionPrivate; - TDEFontChooser::getFontList( d->m_fonts, 0 ); - TDESelectAction::setItems( d->m_fonts ); - setEditable( true ); -} - -TDEFontAction::TDEFontAction( const TQString& text, const TQString& pix, - const TDEShortcut& cut, - TQObject* parent, const char* name ) - : TDESelectAction( text, pix, cut, parent, name ) -{ - d = new TDEFontActionPrivate; - TDEFontChooser::getFontList( d->m_fonts, 0 ); - TDESelectAction::setItems( d->m_fonts ); - setEditable( true ); -} - -TDEFontAction::TDEFontAction( const TQString& text, const TQIconSet& pix, - const TDEShortcut& cut, - const TQObject* receiver, const char* slot, - TQObject* parent, const char* name ) - : TDESelectAction( text, pix, cut, receiver, slot, parent, name ) -{ - d = new TDEFontActionPrivate; - TDEFontChooser::getFontList( d->m_fonts, 0 ); - TDESelectAction::setItems( d->m_fonts ); - setEditable( true ); -} - -TDEFontAction::TDEFontAction( const TQString& text, const TQString& pix, - const TDEShortcut& cut, - const TQObject* receiver, const char* slot, - TQObject* parent, const char* name ) - : TDESelectAction( text, pix, cut, receiver, slot, parent, name ) -{ - d = new TDEFontActionPrivate; - TDEFontChooser::getFontList( d->m_fonts, 0 ); - TDESelectAction::setItems( d->m_fonts ); - setEditable( true ); -} - -TDEFontAction::TDEFontAction( uint fontListCriteria, const TQString& text, - const TDEShortcut& cut, TQObject* parent, - const char* name ) - : TDESelectAction( text, cut, parent, name ) -{ - d = new TDEFontActionPrivate; - TDEFontChooser::getFontList( d->m_fonts, fontListCriteria ); - TDESelectAction::setItems( d->m_fonts ); - setEditable( true ); -} - -TDEFontAction::TDEFontAction( uint fontListCriteria, const TQString& text, const TQString& pix, - const TDEShortcut& cut, - TQObject* parent, const char* name ) - : TDESelectAction( text, pix, cut, parent, name ) -{ - d = new TDEFontActionPrivate; - TDEFontChooser::getFontList( d->m_fonts, fontListCriteria ); - TDESelectAction::setItems( d->m_fonts ); - setEditable( true ); -} - -TDEFontAction::TDEFontAction( TQObject* parent, const char* name ) - : TDESelectAction( parent, name ) -{ - d = new TDEFontActionPrivate; - TDEFontChooser::getFontList( d->m_fonts, 0 ); - TDESelectAction::setItems( d->m_fonts ); - setEditable( true ); -} - -TDEFontAction::~TDEFontAction() -{ - delete d; - d = 0; -} - -/* - * Maintenance note: Keep in sync with TDEFontCombo::setCurrentFont() - */ -void TDEFontAction::setFont( const TQString &family ) -{ - TQString lowerName = family.lower(); - int i = 0; - for ( TQStringList::Iterator it = d->m_fonts.begin(); it != d->m_fonts.end(); ++it, ++i ) - { - if ((*it).lower() == lowerName) - { - setCurrentItem(i); - return; - } - } - i = lowerName.find(" ["); - if (i>-1) - { - lowerName = lowerName.left(i); - i = 0; - for ( TQStringList::Iterator it = d->m_fonts.begin(); it != d->m_fonts.end(); ++it, ++i ) - { - if ((*it).lower() == lowerName) - { - setCurrentItem(i); - return; - } - } - } - - lowerName += " ["; - i = 0; - for ( TQStringList::Iterator it = d->m_fonts.begin(); it != d->m_fonts.end(); ++it, ++i ) - { - if ((*it).lower().startsWith(lowerName)) - { - setCurrentItem(i); - return; - } - } - - // nothing matched yet, try a fontconfig reverse lookup and - // check again to solve an alias - FcPattern *pattern = NULL; - FcConfig *config = NULL; - TQString realFamily; - TQRegExp regExp("[-:]"); - pattern = FcNameParse( (unsigned char*) family.ascii() ); - FcDefaultSubstitute(pattern); - FcConfigSubstitute (config, pattern, FcMatchPattern); - pattern = FcFontMatch(NULL, pattern, NULL); - realFamily = (char*)FcNameUnparse(pattern); - realFamily.remove(realFamily.find(regExp), realFamily.length()); - - if ( !realFamily.isEmpty() && realFamily != family ) - setFont( realFamily ); - else - kdDebug(129) << "Font not found " << family.lower() << endl; -} - -int TDEFontAction::plug( TQWidget *w, int index ) -{ - if (kapp && !kapp->authorizeTDEAction(name())) - return -1; - if ( ::tqqt_cast<TDEToolBar *>( w ) ) - { - TDEToolBar* bar = static_cast<TDEToolBar*>( w ); - int id_ = TDEAction::getToolButtonID(); - TDEFontCombo *cb = new TDEFontCombo( items(), bar ); - connect( cb, TQT_SIGNAL( activated( const TQString & ) ), - TQT_SLOT( slotActivated( const TQString & ) ) ); - cb->setEnabled( isEnabled() ); - bar->insertWidget( id_, comboWidth(), cb, index ); - cb->setMinimumWidth( cb->sizeHint().width() ); - - addContainer( bar, id_ ); - - connect( bar, TQT_SIGNAL( destroyed() ), this, TQT_SLOT( slotDestroyed() ) ); - - updateCurrentItem( containerCount() - 1 ); - - return containerCount() - 1; - } - else return TDESelectAction::plug( w, index ); -} - -class TDEFontSizeAction::TDEFontSizeActionPrivate -{ -public: - TDEFontSizeActionPrivate() - { - } -}; - -TDEFontSizeAction::TDEFontSizeAction( const TQString& text, - const TDEShortcut& cut, - TQObject* parent, const char* name ) - : TDESelectAction( text, cut, parent, name ) -{ - init(); -} - -TDEFontSizeAction::TDEFontSizeAction( const TQString& text, - const TDEShortcut& cut, - const TQObject* receiver, const char* slot, - TQObject* parent, const char* name ) - : TDESelectAction( text, cut, receiver, slot, parent, name ) -{ - init(); -} - -TDEFontSizeAction::TDEFontSizeAction( const TQString& text, const TQIconSet& pix, - const TDEShortcut& cut, - TQObject* parent, const char* name ) - : TDESelectAction( text, pix, cut, parent, name ) -{ - init(); -} - -TDEFontSizeAction::TDEFontSizeAction( const TQString& text, const TQString& pix, - const TDEShortcut& cut, - TQObject* parent, const char* name ) - : TDESelectAction( text, pix, cut, parent, name ) -{ - init(); -} - -TDEFontSizeAction::TDEFontSizeAction( const TQString& text, const TQIconSet& pix, - const TDEShortcut& cut, - const TQObject* receiver, - const char* slot, TQObject* parent, - const char* name ) - : TDESelectAction( text, pix, cut, receiver, slot, parent, name ) -{ - init(); -} - -TDEFontSizeAction::TDEFontSizeAction( const TQString& text, const TQString& pix, - const TDEShortcut& cut, - const TQObject* receiver, - const char* slot, TQObject* parent, - const char* name ) - : TDESelectAction( text, pix, cut, receiver, slot, parent, name ) -{ - init(); -} - -TDEFontSizeAction::TDEFontSizeAction( TQObject* parent, const char* name ) - : TDESelectAction( parent, name ) -{ - init(); -} - -TDEFontSizeAction::~TDEFontSizeAction() -{ - delete d; - d = 0; -} - -void TDEFontSizeAction::init() -{ - d = new TDEFontSizeActionPrivate; - - setEditable( true ); - TQFontDatabase fontDB; - TQValueList<int> sizes = fontDB.standardSizes(); - TQStringList lst; - for ( TQValueList<int>::Iterator it = sizes.begin(); it != sizes.end(); ++it ) - lst.append( TQString::number( *it ) ); - - setItems( lst ); -} - -void TDEFontSizeAction::setFontSize( int size ) -{ - if ( size == fontSize() ) { - setCurrentItem( items().findIndex( TQString::number( size ) ) ); - return; - } - - if ( size < 1 ) { - kdWarning() << "TDEFontSizeAction: Size " << size << " is out of range" << endl; - return; - } - - int index = items().findIndex( TQString::number( size ) ); - if ( index == -1 ) { - // Insert at the correct position in the list (to keep sorting) - TQValueList<int> lst; - // Convert to list of ints - TQStringList itemsList = items(); - for (TQStringList::Iterator it = itemsList.begin() ; it != itemsList.end() ; ++it) - lst.append( (*it).toInt() ); - // New size - lst.append( size ); - // Sort the list - qHeapSort( lst ); - // Convert back to string list - TQStringList strLst; - for (TQValueList<int>::Iterator it = lst.begin() ; it != lst.end() ; ++it) - strLst.append( TQString::number(*it) ); - TDESelectAction::setItems( strLst ); - // Find new current item - index = lst.findIndex( size ); - setCurrentItem( index ); - } - else - setCurrentItem( index ); - - - //emit TDEAction::activated(); - //emit activated( index ); - //emit activated( TQString::number( size ) ); - //emit fontSizeChanged( size ); -} - -int TDEFontSizeAction::fontSize() const -{ - return currentText().toInt(); -} - -void TDEFontSizeAction::slotActivated( int index ) -{ - TDESelectAction::slotActivated( index ); - - emit fontSizeChanged( items()[ index ].toInt() ); -} - -void TDEFontSizeAction::slotActivated( const TQString& size ) -{ - setFontSize( size.toInt() ); // insert sorted first - TDESelectAction::slotActivated( size ); - emit fontSizeChanged( size.toInt() ); -} - -class TDEActionMenu::TDEActionMenuPrivate -{ -public: - TDEActionMenuPrivate() - { - m_popup = new TDEPopupMenu(0L,"TDEActionMenu::TDEActionMenuPrivate"); - m_delayed = true; - m_stickyMenu = true; - } - ~TDEActionMenuPrivate() - { - delete m_popup; m_popup = 0; - } - TDEPopupMenu *m_popup; - bool m_delayed; - bool m_stickyMenu; -}; - -TDEActionMenu::TDEActionMenu( TQObject* parent, const char* name ) - : TDEAction( parent, name ) -{ - d = new TDEActionMenuPrivate; - setShortcutConfigurable( false ); -} - -TDEActionMenu::TDEActionMenu( const TQString& text, TQObject* parent, - const char* name ) - : TDEAction( text, 0, parent, name ) -{ - d = new TDEActionMenuPrivate; - setShortcutConfigurable( false ); -} - -TDEActionMenu::TDEActionMenu( const TQString& text, const TQIconSet& icon, - TQObject* parent, const char* name ) - : TDEAction( text, icon, 0, parent, name ) -{ - d = new TDEActionMenuPrivate; - setShortcutConfigurable( false ); -} - -TDEActionMenu::TDEActionMenu( const TQString& text, const TQString& icon, - TQObject* parent, const char* name ) - : TDEAction( text, icon, 0, parent, name ) -{ - d = new TDEActionMenuPrivate; - setShortcutConfigurable( false ); -} - -TDEActionMenu::~TDEActionMenu() -{ - unplugAll(); - kdDebug(129) << "TDEActionMenu::~TDEActionMenu()" << endl; // ellis - delete d; d = 0; -} - -void TDEActionMenu::popup( const TQPoint& global ) -{ - popupMenu()->popup( global ); -} - -TDEPopupMenu* TDEActionMenu::popupMenu() const -{ - return d->m_popup; -} - -void TDEActionMenu::insert( TDEAction* cmd, int index ) -{ - if ( cmd ) - cmd->plug( d->m_popup, index ); -} - -void TDEActionMenu::remove( TDEAction* cmd ) -{ - if ( cmd ) - cmd->unplug( d->m_popup ); -} - -bool TDEActionMenu::delayed() const { - return d->m_delayed; -} - -void TDEActionMenu::setDelayed(bool _delayed) { - d->m_delayed = _delayed; -} - -bool TDEActionMenu::stickyMenu() const { - return d->m_stickyMenu; -} - -void TDEActionMenu::setStickyMenu(bool sticky) { - d->m_stickyMenu = sticky; -} - -int TDEActionMenu::plug( TQWidget* widget, int index ) -{ - if (kapp && !kapp->authorizeTDEAction(name())) - return -1; - kdDebug(129) << "TDEActionMenu::plug( " << widget << ", " << index << " )" << endl; // remove -- ellis - if ( ::tqqt_cast<TQPopupMenu *>( widget ) ) - { - TQPopupMenu* menu = static_cast<TQPopupMenu*>( widget ); - int id; - if ( hasIcon() ) - id = menu->insertItem( iconSet(), text(), d->m_popup, -1, index ); - else - id = menu->insertItem( text(), d->m_popup, -1, index ); - - if ( !isEnabled() ) - menu->setItemEnabled( id, false ); - - addContainer( menu, id ); - connect( menu, TQT_SIGNAL( destroyed() ), this, TQT_SLOT( slotDestroyed() ) ); - - if ( m_parentCollection ) - m_parentCollection->connectHighlight( menu, this ); - - return containerCount() - 1; - } - else if ( ::tqqt_cast<TDEToolBar *>( widget ) ) - { - TDEToolBar *bar = static_cast<TDEToolBar *>( widget ); - - int id_ = TDEAction::getToolButtonID(); - - if ( icon().isEmpty() && !iconSet().isNull() ) - bar->insertButton( iconSet().pixmap(), id_, TQT_SIGNAL( clicked() ), this, - TQT_SLOT( slotActivated() ), isEnabled(), plainText(), - index ); - else - { - TDEInstance *instance; - - if ( m_parentCollection ) - instance = m_parentCollection->instance(); - else - instance = TDEGlobal::instance(); - - bar->insertButton( icon(), id_, TQT_SIGNAL( clicked() ), this, - TQT_SLOT( slotActivated() ), isEnabled(), plainText(), - index, instance ); - } - - addContainer( bar, id_ ); - - if (!whatsThis().isEmpty()) - TQWhatsThis::add( bar->getButton(id_), whatsThis() ); - - connect( bar, TQT_SIGNAL( destroyed() ), this, TQT_SLOT( slotDestroyed() ) ); - - if (delayed()) { - bar->setDelayedPopup( id_, popupMenu(), stickyMenu() ); - } else { - bar->getButton(id_)->setPopup(popupMenu(), stickyMenu() ); - } - - if ( m_parentCollection ) - m_parentCollection->connectHighlight( bar, this ); - - return containerCount() - 1; - } - else if ( ::tqqt_cast<TQMenuBar *>( widget ) ) - { - TQMenuBar *bar = static_cast<TQMenuBar *>( widget ); - - int id; - - id = bar->insertItem( text(), popupMenu(), -1, index ); - - if ( !isEnabled() ) - bar->setItemEnabled( id, false ); - - addContainer( bar, id ); - connect( bar, TQT_SIGNAL( destroyed() ), this, TQT_SLOT( slotDestroyed() ) ); - - return containerCount() - 1; - } - - return -1; -} - -//////// - -TDEToolBarPopupAction::TDEToolBarPopupAction( const TQString& text, - const TQString& icon, - const TDEShortcut& cut, - TQObject* parent, const char* name ) - : TDEAction( text, icon, cut, parent, name ) -{ - m_popup = 0; - m_delayed = true; - m_stickyMenu = true; -} - -TDEToolBarPopupAction::TDEToolBarPopupAction( const TQString& text, - const TQString& icon, - const TDEShortcut& cut, - const TQObject* receiver, - const char* slot, TQObject* parent, - const char* name ) - : TDEAction( text, icon, cut, receiver, slot, parent, name ) -{ - m_popup = 0; - m_delayed = true; - m_stickyMenu = true; -} - -TDEToolBarPopupAction::TDEToolBarPopupAction( const KGuiItem& item, - const TDEShortcut& cut, - const TQObject* receiver, - const char* slot, TDEActionCollection* parent, - const char* name ) - : TDEAction( item, cut, receiver, slot, parent, name ) -{ - m_popup = 0; - m_delayed = true; - m_stickyMenu = true; -} - -TDEToolBarPopupAction::~TDEToolBarPopupAction() -{ - delete m_popup; -} - -bool TDEToolBarPopupAction::delayed() const { - return m_delayed; -} - -void TDEToolBarPopupAction::setDelayed(bool delayed) { - m_delayed = delayed; -} - -bool TDEToolBarPopupAction::stickyMenu() const { - return m_stickyMenu; -} - -void TDEToolBarPopupAction::setStickyMenu(bool sticky) { - m_stickyMenu = sticky; -} - -int TDEToolBarPopupAction::plug( TQWidget *widget, int index ) -{ - if (kapp && !kapp->authorizeTDEAction(name())) - return -1; - // This is very related to TDEActionMenu::plug. - // In fact this class could be an interesting base class for TDEActionMenu - if ( ::tqqt_cast<TDEToolBar *>( widget ) ) - { - TDEToolBar *bar = (TDEToolBar *)widget; - - int id_ = TDEAction::getToolButtonID(); - - if ( icon().isEmpty() && !iconSet().isNull() ) { - bar->insertButton( iconSet().pixmap(), id_, TQT_SIGNAL( buttonClicked(int, TQt::ButtonState) ), this, - TQT_SLOT( slotButtonClicked(int, TQt::ButtonState) ), - isEnabled(), plainText(), - index ); - } else { - TDEInstance * instance; - if ( m_parentCollection ) - instance = m_parentCollection->instance(); - else - instance = TDEGlobal::instance(); - - bar->insertButton( icon(), id_, TQT_SIGNAL( buttonClicked(int, TQt::ButtonState) ), this, - TQT_SLOT( slotButtonClicked(int, TQt::ButtonState) ), - isEnabled(), plainText(), - index, instance ); - } - - addContainer( bar, id_ ); - - connect( bar, TQT_SIGNAL( destroyed() ), this, TQT_SLOT( slotDestroyed() ) ); - - if (delayed()) { - bar->setDelayedPopup( id_, popupMenu(), stickyMenu() ); - } else { - bar->getButton(id_)->setPopup(popupMenu(), stickyMenu()); - } - - if ( !whatsThis().isEmpty() ) - TQWhatsThis::add( bar->getButton( id_ ), whatsThisWithIcon() ); - - return containerCount() - 1; - } - - return TDEAction::plug( widget, index ); -} - -TDEPopupMenu *TDEToolBarPopupAction::popupMenu() const -{ - if ( !m_popup ) { - TDEToolBarPopupAction *that = const_cast<TDEToolBarPopupAction*>(this); - that->m_popup = new TDEPopupMenu; - } - return m_popup; -} - -//////// - -TDEToggleToolBarAction::TDEToggleToolBarAction( const char* toolBarName, - const TQString& text, TDEActionCollection* parent, const char* name ) - : TDEToggleAction( text, TDEShortcut(), parent, name ) - , m_toolBarName( toolBarName ) - , m_toolBar( 0L ) -{ -} - -TDEToggleToolBarAction::TDEToggleToolBarAction( TDEToolBar *toolBar, const TQString &text, - TDEActionCollection *parent, const char *name ) - : TDEToggleAction( text, TDEShortcut(), parent, name ) - , m_toolBarName( 0 ), m_toolBar( toolBar ) -{ -} - -TDEToggleToolBarAction::~TDEToggleToolBarAction() -{ -} - -int TDEToggleToolBarAction::plug( TQWidget* w, int index ) -{ - if (kapp && !kapp->authorizeTDEAction(name())) - return -1; - - if ( !m_toolBar ) { - // Note: topLevelWidget() stops too early, we can't use it. - TQWidget * tl = w; - TQWidget * n; - while ( !tl->isDialog() && ( n = tl->parentWidget() ) ) // lookup parent and store - tl = n; - - TDEMainWindow * mw = tqt_dynamic_cast<TDEMainWindow *>(tl); // try to see if it's a kmainwindow - - if ( mw ) - m_toolBar = mw->toolBar( m_toolBarName ); - } - - if( m_toolBar ) { - setChecked( m_toolBar->isVisible() ); - connect( m_toolBar, TQT_SIGNAL(visibilityChanged(bool)), this, TQT_SLOT(setChecked(bool)) ); - // Also emit toggled when the toolbar's visibility changes (see comment in header) - connect( m_toolBar, TQT_SIGNAL(visibilityChanged(bool)), this, TQT_SIGNAL(toggled(bool)) ); - } else { - setEnabled( false ); - } - - return TDEToggleAction::plug( w, index ); -} - -void TDEToggleToolBarAction::setChecked( bool c ) -{ - if( m_toolBar && c != m_toolBar->isVisible() ) { - if( c ) { - m_toolBar->show(); - } else { - m_toolBar->hide(); - } - TQMainWindow* mw = m_toolBar->mainWindow(); - if ( mw && ::tqqt_cast<TDEMainWindow *>( mw ) ) - static_cast<TDEMainWindow *>( mw )->setSettingsDirty(); - } - TDEToggleAction::setChecked( c ); -} - -//////// - -TDEToggleFullScreenAction::TDEToggleFullScreenAction( const TDEShortcut &cut, - const TQObject* receiver, const char* slot, - TQObject* parent, TQWidget* window, - const char* name ) - : TDEToggleAction( TQString::null, cut, receiver, slot, parent, name ), - window( NULL ) -{ - setWindow( window ); -} - -TDEToggleFullScreenAction::~TDEToggleFullScreenAction() -{ -} - -void TDEToggleFullScreenAction::setWindow( TQWidget* w ) -{ - if( window ) - window->removeEventFilter( this ); - window = w; - if( window ) - window->installEventFilter( this ); -} - -void TDEToggleFullScreenAction::setChecked( bool c ) -{ - if (c) - { - setText(i18n("Exit F&ull Screen Mode")); - setIcon("window_nofullscreen"); - } - else - { - setText(i18n("F&ull Screen Mode")); - setIcon("window_fullscreen"); - } - TDEToggleAction::setChecked( c ); -} - -bool TDEToggleFullScreenAction::eventFilter( TQObject* o, TQEvent* e ) -{ - if( TQT_BASE_OBJECT(o) == TQT_BASE_OBJECT(window) ) - if( e->type() == TQEvent::WindowStateChange ) - { - if( window->isFullScreen() != isChecked()) - slotActivated(); // setChecked( window->isFullScreen()) wouldn't emit signals - } - return false; -} - -//////// - -KWidgetAction::KWidgetAction( TQWidget* widget, - const TQString& text, const TDEShortcut& cut, - const TQObject* receiver, const char* slot, - TDEActionCollection* parent, const char* name ) - : TDEAction( text, cut, receiver, slot, parent, name ) - , m_widget( widget ) - , m_autoSized( false ) -{ - connect( this, TQT_SIGNAL(enabled(bool)), widget, TQT_SLOT(setEnabled(bool)) ); -} - -KWidgetAction::~KWidgetAction() -{ -} - -void KWidgetAction::setAutoSized( bool autoSized ) -{ - if( m_autoSized == autoSized ) - return; - - m_autoSized = autoSized; - - if( !m_widget || !isPlugged() ) - return; - - TDEToolBar* toolBar = (TDEToolBar*)m_widget->parent(); - int i = findContainer( toolBar ); - if ( i == -1 ) - return; - int id = itemId( i ); - - toolBar->setItemAutoSized( id, m_autoSized ); -} - -int KWidgetAction::plug( TQWidget* w, int index ) -{ - if (kapp && !kapp->authorizeTDEAction(name())) - return -1; - - if ( !::tqqt_cast<TDEToolBar *>( w ) ) { - kdError() << "KWidgetAction::plug: KWidgetAction must be plugged into TDEToolBar." << endl; - return -1; - } - if ( !m_widget ) { - kdError() << "KWidgetAction::plug: Widget was deleted or null!" << endl; - return -1; - } - - TDEToolBar* toolBar = static_cast<TDEToolBar*>( w ); - - int id = TDEAction::getToolButtonID(); - - m_widget->reparent( toolBar, TQPoint() ); - toolBar->insertWidget( id, 0, m_widget, index ); - toolBar->setItemAutoSized( id, m_autoSized ); - - TQWhatsThis::add( m_widget, whatsThis() ); - addContainer( toolBar, id ); - - connect( toolBar, TQT_SIGNAL( toolbarDestroyed() ), this, TQT_SLOT( slotToolbarDestroyed() ) ); - connect( toolBar, TQT_SIGNAL( destroyed() ), this, TQT_SLOT( slotDestroyed() ) ); - - return containerCount() - 1; -} - -void KWidgetAction::unplug( TQWidget *w ) -{ - if( !m_widget || !isPlugged() ) - return; - - TDEToolBar* toolBar = (TDEToolBar*)m_widget->parent(); - if ( toolBar == w ) - { - disconnect( toolBar, TQT_SIGNAL( toolbarDestroyed() ), this, TQT_SLOT( slotToolbarDestroyed() ) ); - m_widget->reparent( 0L, TQPoint(), false /*showIt*/ ); - } - TDEAction::unplug( w ); -} - -void KWidgetAction::slotToolbarDestroyed() -{ - //Q_ASSERT( m_widget ); // When exiting the app the widget could be destroyed before the toolbar. - Q_ASSERT( isPlugged() ); - if( !m_widget || !isPlugged() ) - return; - - // Don't let a toolbar being destroyed, delete my widget. - m_widget->reparent( 0L, TQPoint(), false /*showIt*/ ); -} - -//////// - -TDEActionSeparator::TDEActionSeparator( TQObject *parent, const char *name ) - : TDEAction( parent, name ) -{ -} - -TDEActionSeparator::~TDEActionSeparator() -{ -} - -int TDEActionSeparator::plug( TQWidget *widget, int index ) -{ - if ( ::tqqt_cast<TQPopupMenu *>( widget) ) - { - TQPopupMenu* menu = static_cast<TQPopupMenu*>( widget ); - - int id = menu->insertSeparator( index ); - - addContainer( menu, id ); - connect( menu, TQT_SIGNAL( destroyed() ), this, TQT_SLOT( slotDestroyed() ) ); - - return containerCount() - 1; - } - else if ( ::tqqt_cast<TQMenuBar *>( widget ) ) - { - TQMenuBar *menuBar = static_cast<TQMenuBar *>( widget ); - - int id = menuBar->insertSeparator( index ); - - addContainer( menuBar, id ); - - connect( menuBar, TQT_SIGNAL( destroyed() ), this, TQT_SLOT( slotDestroyed() ) ); - - return containerCount() - 1; - } - else if ( ::tqqt_cast<TDEToolBar *>( widget ) ) - { - TDEToolBar *toolBar = static_cast<TDEToolBar *>( widget ); - - int id = toolBar->insertSeparator( index ); - - addContainer( toolBar, id ); - - connect( toolBar, TQT_SIGNAL( destroyed() ), this, TQT_SLOT( slotDestroyed() ) ); - - return containerCount() - 1; - } - - return -1; -} - -TDEPasteTextAction::TDEPasteTextAction( const TQString& text, - const TQString& icon, - const TDEShortcut& cut, - const TQObject* receiver, - const char* slot, TQObject* parent, - const char* name) - : TDEAction( text, icon, cut, receiver, slot, parent, name ) -{ - m_popup = new TDEPopupMenu; - connect(m_popup, TQT_SIGNAL(aboutToShow()), this, TQT_SLOT(menuAboutToShow())); - connect(m_popup, TQT_SIGNAL(activated(int)), this, TQT_SLOT(menuItemActivated(int))); - m_popup->setCheckable(true); - m_mixedMode = true; -} - -TDEPasteTextAction::~TDEPasteTextAction() -{ - delete m_popup; -} - -void TDEPasteTextAction::setMixedMode(bool mode) -{ - m_mixedMode = mode; -} - -int TDEPasteTextAction::plug( TQWidget *widget, int index ) -{ - if (kapp && !kapp->authorizeTDEAction(name())) - return -1; - if ( ::tqqt_cast<TDEToolBar *>( widget ) ) - { - TDEToolBar *bar = (TDEToolBar *)widget; - - int id_ = TDEAction::getToolButtonID(); - - TDEInstance * instance; - if ( m_parentCollection ) - instance = m_parentCollection->instance(); - else - instance = TDEGlobal::instance(); - - bar->insertButton( icon(), id_, TQT_SIGNAL( clicked() ), this, - TQT_SLOT( slotActivated() ), isEnabled(), plainText(), - index, instance ); - - addContainer( bar, id_ ); - - connect( bar, TQT_SIGNAL( destroyed() ), this, TQT_SLOT( slotDestroyed() ) ); - - bar->setDelayedPopup( id_, m_popup, true ); - - if ( !whatsThis().isEmpty() ) - TQWhatsThis::add( bar->getButton( id_ ), whatsThisWithIcon() ); - - return containerCount() - 1; - } - - return TDEAction::plug( widget, index ); -} - -void TDEPasteTextAction::menuAboutToShow() -{ - m_popup->clear(); - TQStringList list; - DCOPClient *client = kapp->dcopClient(); - if (client->isAttached() && client->isApplicationRegistered("klipper")) { - DCOPRef klipper("klipper","klipper"); - DCOPReply reply = klipper.call("getClipboardHistoryMenu"); - if (reply.isValid()) - list = reply; - } - TQString clipboardText = tqApp->clipboard()->text(TQClipboard::Clipboard); - if (list.isEmpty()) - list << clipboardText; - bool found = false; - for ( TQStringList::ConstIterator it = list.begin(); it != list.end(); ++it ) - { - TQString text = KStringHandler::cEmSqueeze((*it).simplifyWhiteSpace(), m_popup->fontMetrics(), 20); - text.replace("&", "&&"); - int id = m_popup->insertItem(text); - if (!found && *it == clipboardText) - { - m_popup->setItemChecked(id, true); - found = true; - } - } -} - -void TDEPasteTextAction::menuItemActivated( int id) -{ - DCOPClient *client = kapp->dcopClient(); - if (client->isAttached() && client->isApplicationRegistered("klipper")) { - DCOPRef klipper("klipper","klipper"); - DCOPReply reply = klipper.call("getClipboardHistoryItem(int)", m_popup->indexOf(id)); - if (!reply.isValid()) - return; - TQString clipboardText = reply; - reply = klipper.call("setClipboardContents(TQString)", clipboardText); - if (reply.isValid()) - kdDebug(129) << "Clipboard: " << TQString(tqApp->clipboard()->text(TQClipboard::Clipboard)) << endl; - } - TQTimer::singleShot(20, this, TQT_SLOT(slotActivated())); -} - -void TDEPasteTextAction::slotActivated() -{ - if (!m_mixedMode) { - TQWidget *w = tqApp->widgetAt(TQCursor::pos(), true); - TQMimeSource *data = TQApplication::clipboard()->data(); - if (!data->provides("text/plain") && w) { - m_popup->popup(w->mapToGlobal(TQPoint(0, w->height()))); - } else - TDEAction::slotActivated(); - } else - TDEAction::slotActivated(); -} - - -void TDEToggleAction::virtual_hook( int id, void* data ) -{ TDEAction::virtual_hook( id, data ); } - -void TDERadioAction::virtual_hook( int id, void* data ) -{ TDEToggleAction::virtual_hook( id, data ); } - -void TDESelectAction::virtual_hook( int id, void* data ) -{ TDEAction::virtual_hook( id, data ); } - -void TDEListAction::virtual_hook( int id, void* data ) -{ TDESelectAction::virtual_hook( id, data ); } - -void TDERecentFilesAction::virtual_hook( int id, void* data ) -{ TDEListAction::virtual_hook( id, data ); } - -void TDEFontAction::virtual_hook( int id, void* data ) -{ TDESelectAction::virtual_hook( id, data ); } - -void TDEFontSizeAction::virtual_hook( int id, void* data ) -{ TDESelectAction::virtual_hook( id, data ); } - -void TDEActionMenu::virtual_hook( int id, void* data ) -{ TDEAction::virtual_hook( id, data ); } - -void TDEToolBarPopupAction::virtual_hook( int id, void* data ) -{ TDEAction::virtual_hook( id, data ); } - -void TDEToggleToolBarAction::virtual_hook( int id, void* data ) -{ TDEToggleAction::virtual_hook( id, data ); } - -void TDEToggleFullScreenAction::virtual_hook( int id, void* data ) -{ TDEToggleAction::virtual_hook( id, data ); } - -void KWidgetAction::virtual_hook( int id, void* data ) -{ TDEAction::virtual_hook( id, data ); } - -void TDEActionSeparator::virtual_hook( int id, void* data ) -{ TDEAction::virtual_hook( id, data ); } - -void TDEPasteTextAction::virtual_hook( int id, void* data ) -{ TDEAction::virtual_hook( id, data ); } - -/* vim: et sw=2 ts=2 - */ - -#include "kactionclasses.moc" |