diff options
author | Darrell Anderson <[email protected]> | 2014-02-06 17:28:41 -0600 |
---|---|---|
committer | Darrell Anderson <[email protected]> | 2014-02-06 17:28:41 -0600 |
commit | 7ad9c00daa716f90e6b71af463c50eebc93f4250 (patch) | |
tree | f472270f99cab538f9db00a80e09d35f4d351d6b /tdeiconedit/knew.cpp | |
parent | 00af0dfbf87c62e25b5050102b7bd8df2ddcc1d0 (diff) | |
download | tdegraphics-7ad9c00daa716f90e6b71af463c50eebc93f4250.tar.gz tdegraphics-7ad9c00daa716f90e6b71af463c50eebc93f4250.zip |
Finish renaming kiconedit->tdeiconedit.
Diffstat (limited to 'tdeiconedit/knew.cpp')
-rw-r--r-- | tdeiconedit/knew.cpp | 326 |
1 files changed, 326 insertions, 0 deletions
diff --git a/tdeiconedit/knew.cpp b/tdeiconedit/knew.cpp new file mode 100644 index 00000000..2536816f --- /dev/null +++ b/tdeiconedit/knew.cpp @@ -0,0 +1,326 @@ +/* + KDE Draw - a small graphics drawing program for the KDE + Copyright (C) 1998 Thomas Tanghus ([email protected]) + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This program 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 + 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 <tqlayout.h> +#include <tqpainter.h> +#include <tqbuttongroup.h> +#include <tqradiobutton.h> +#include <tqpushbutton.h> + +#include <tdeconfig.h> +#include <tdelocale.h> +#include <tdeglobal.h> +#include <kiconloader.h> +#include <kdebug.h> +#include <tdeapplication.h> + +#include "knew.h" + +TDEIconTemplateContainer* TDEIconTemplateContainer::instance = 0; + +void createStandardTemplates(TDEIconTemplateContainer *list) +{ + TDEIconLoader *kil = TDEGlobal::iconLoader(); + + TDEIconTemplate it; + it.path = kil->iconPath("standard", TDEIcon::User); + it.title = i18n("Standard File"); + list->append(it); + + it.path = kil->iconPath("source", TDEIcon::User); + it.title = i18n("Source File"); + list->append(it); + + it.path = kil->iconPath("compressed", TDEIcon::User); + it.title = i18n("Compressed File"); + list->append(it); + + it.path = kil->iconPath("folder", TDEIcon::User); + it.title = i18n("Standard Folder"); + list->append(it); + + it.path = kil->iconPath("package", TDEIcon::User); + it.title = i18n("Standard Package"); + list->append(it); + + it.path = kil->iconPath("mini-folder", TDEIcon::User); + it.title = i18n("Mini Folder"); + list->append(it); + + it.path = kil->iconPath("mini-package", TDEIcon::User); + it.title = i18n("Mini Package"); + list->append(it); +} + +void TDEIconTemplateContainer::save() +{ + TDEConfig *k = kapp->config(); + k->setGroup("Templates"); + + TQStringList names; + for (TQValueListIterator<TDEIconTemplate> iter = begin(); iter != end(); iter++) + { + names.append((*iter).title); + } + + k->writeEntry("Names", names); + + for(unsigned int i = 0; i < names.count(); i++) + { + k->writePathEntry(names[i], (*this)[i].path); + } +} + +TDEIconTemplateContainer::TDEIconTemplateContainer() : TQValueList<TDEIconTemplate>() +{ + TQStrList names; + TDEConfig *k = kapp->config(); + k->setGroup("Templates"); + k->readListEntry("Names", names); + for(int i = 0; i < (int)names.count(); i++) + { + TDEIconTemplate it; + it.path = k->readPathEntry(names.at(i)); + it.title = names.at(i); + //kdDebug(4640) << "Template: " << names.at(i) << "\n" << path.data() << endl; + append(it); + } + + if(count() == 0) + { + createStandardTemplates(this); + } +} + +TDEIconTemplateContainer::~TDEIconTemplateContainer() +{ + clear(); +} + +TDEIconListBoxItem::TDEIconListBoxItem( TDEIconTemplate t ) + : TQListBoxItem(), icontemplate(t) +{ + //kdDebug(4640) << "TDEIconListBoxItem - " << t->path.data() << ", " << t->title.data() << endl; + + pm.load(t.path); + setText( t.title ); +} + +void TDEIconListBoxItem::reloadIcon() +{ + pm.load(icontemplate.path); + setText( icontemplate.title ); +} + + + +void TDEIconListBoxItem::paint( TQPainter *p ) +{ + p->drawPixmap( 3, 0, pm ); + TQFontMetrics fm = p->fontMetrics(); + int yPos; // vertical text position + if ( pm.height() < fm.height() ) + yPos = fm.ascent() + fm.leading()/2; + else + yPos = pm.height()/2 - fm.height()/2 + fm.ascent(); + p->drawText( pm.width() + 5, yPos, text() ); +} + +int TDEIconListBoxItem::height(const TQListBox *lb ) const +{ + return TQMAX( pm.height(), lb->fontMetrics().lineSpacing() + 1 ); +} + +int TDEIconListBoxItem::width(const TQListBox *lb ) const +{ + return pm.width() + lb->fontMetrics().width( text() ) + 6; +} + +NewSelect::NewSelect(TQWidget *parent) : TQWidget( parent ) +{ + wiz = (KWizard*) parent; + grp = new TQButtonGroup( this ); + connect( grp, TQT_SIGNAL( clicked( int ) ), TQT_SLOT( buttonClicked( int ) ) ); + grp->setExclusive( true ); + + TQVBoxLayout* ml = new TQVBoxLayout( this ); + ml->addWidget( grp, 1 ); + //ml->addWidget(grp, 10, AlignLeft); + TQVBoxLayout* l = new TQVBoxLayout( grp, 10 ); + + rbscratch = new TQRadioButton( i18n( "Create from scratch" ), grp ); + l->addWidget( rbscratch, 1 ); + //l->addWidget(rbscratch, 5, AlignLeft); + + rbtempl = new TQRadioButton( i18n( "Create from template" ), grp ); + l->addWidget( rbtempl, 1 ); + //l->addWidget(rbtempl, 5, AlignLeft); + + //grp->setMinimumSize(grp->childrenRect().size()); + + grp->setButton( 0 ); +} + +NewSelect::~NewSelect() +{ +} + +void NewSelect::buttonClicked(int id) +{ + //kdDebug(4640) << "Button: " << id << endl; + + emit iconopenstyle(id); +} + +NewFromTemplate::NewFromTemplate( TQWidget* parent ) + : TQWidget( parent ) +{ + wiz = (KWizard*) parent; + + TQVBoxLayout* ml = new TQVBoxLayout(this); + + grp = new TQGroupBox( i18n( "Templates" ), this ); + ml->addWidget( grp, 1 ); + //ml->addWidget(grp, 10, AlignLeft); + + TQHBoxLayout* l = new TQHBoxLayout( grp, 15 ); + + templates = new TDEIconListBox( grp ); + connect( templates, TQT_SIGNAL( highlighted( int ) ), TQT_SLOT( checkSelection( int ) ) ); + l->addWidget( templates ); + + for( int i = 0; i < (int) TDEIconTemplateContainer::self()->count(); i++ ) + templates->insertItem( new TDEIconListBoxItem( *TDEIconTemplateContainer::self()->at( i ) ) ); +} + +NewFromTemplate::~NewFromTemplate() +{ +} + +void NewFromTemplate::checkSelection( int ) +{ + //kdDebug(4640) << "checkSelection(int) " << templates->currentItem() << endl; + if( templates->currentItem() != -1 ) + wiz->finishButton()->setEnabled( true ); + else + wiz->finishButton()->setEnabled( false ); +} + +KNewIcon::KNewIcon( TQWidget* parent ) + : KWizard( parent, 0, true ) +{ + //kdDebug(4640) << "KNewIcon" << endl; + setCaption( i18n( "Create New Icon" ) ); + resize( 400, 250 ); + + openstyle = 0; + + finishButton()->setEnabled( true ); + cancelButton()->setEnabled( true ); + nextButton()->setEnabled( false ); + + select = new NewSelect( this ); + connect( select, TQT_SIGNAL( iconopenstyle( int ) ), TQT_SLOT( iconOpenStyle( int ) ) ); + + scratch = new KResizeWidget( this, 0, TQSize( 32, 32 ) ); + // this doesn't accept default valid size, besides spin buttons won't allow + // an invalid size to be set by the user - forces user to change valid default + // size to create the new icon object - + connect( scratch, TQT_SIGNAL( validSize( bool ) ), TQT_SLOT( checkPage( bool ) ) ); + connect(this, TQT_SIGNAL(selected(const TQString &)), this, TQT_SLOT(checkPage(const TQString &))); + templ = new NewFromTemplate(this); + templ->hide(); + + addPage(select, i18n("Select Icon Type")); + addPage(scratch, i18n("Create From Scratch")); + act = scratch; + //addPage(templ, i18n("Create From Template")); +} + +KNewIcon::~KNewIcon() +{ + delete select; + delete scratch; + delete templ; +} + +void KNewIcon::okClicked() +{ + if(openstyle == Blank) + emit newicon(scratch->getSize()); + else + emit newicon(templ->path()); + hide(); + setResult(1); + accept(); +} + +void KNewIcon::cancelClicked() +{ + hide(); + setResult(0); + reject(); +} + +void KNewIcon::iconOpenStyle(int style) +{ + openstyle = style; + + if( act ) + removePage( act ); + + if(openstyle == Blank) + { + act = scratch; + setNextEnabled( act, true ); + addPage( scratch, i18n( "Create From Scratch" ) ); + } + else if( openstyle == Template ) + { + act = templ; + setNextEnabled( act, true ); + addPage( templ, i18n( "Create From Template" ) ); + } +} + +void KNewIcon::checkPage( bool b) +{ + //kdDebug(4640) << "checkPage(int) " << openstyle << " " << p << endl; + if(openstyle == Blank) + finishButton()->setEnabled(true); + else if( !b ) + finishButton()->setEnabled(false); + else + templ->checkSelection(0); +} + +void KNewIcon::checkPage(const TQString &) +{ + if(currentPage() == select || openstyle == Blank) + finishButton()->setEnabled(true); + else + finishButton()->setEnabled(false); +} +#include "knew.moc" + + + + + |