diff options
Diffstat (limited to 'tdeiconedit/tdeiconeditslots.cpp')
-rw-r--r-- | tdeiconedit/tdeiconeditslots.cpp | 543 |
1 files changed, 543 insertions, 0 deletions
diff --git a/tdeiconedit/tdeiconeditslots.cpp b/tdeiconedit/tdeiconeditslots.cpp new file mode 100644 index 00000000..913c4037 --- /dev/null +++ b/tdeiconedit/tdeiconeditslots.cpp @@ -0,0 +1,543 @@ +/* + TDE Icon Editor - a small graphics drawing program for the TDE + Copyright (C) 1998 Thomas Tanghus (tanghus@kde.org) + + 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 <tqpaintdevicemetrics.h> +#include <tqpainter.h> + +#include <kkeydialog.h> +#include <tdelocale.h> +#include <tdemessagebox.h> +#include <kdebug.h> +#include <kprinter.h> +#include <kurldrag.h> + +#include "tdeiconedit.h" +#include "tdeiconcolors.h" +#include "palettetoolbar.h" + +#ifndef PICS_INCLUDED +#define PICS_INCLUDED +#include "pics/logo.xpm" +#endif + +void TDEIconEdit::updateProperties() +{ + TDEIconEditProperties *props = TDEIconEditProperties::self(); + gridview->setShowRulers(props->showRulers()); + if(props->bgMode() == TQWidget::FixedPixmap) + { + TQPixmap pix(props->bgPixmap()); + if(pix.isNull()) + { + TQPixmap pmlogo((const char**)logo); + pix = pmlogo; + } + gridview->viewPortWidget()->viewport()->setBackgroundPixmap(pix); + m_paletteToolBar->setPreviewBackground(pix); + } + else + { + gridview->viewPortWidget()->viewport() + ->setBackgroundColor(props->bgColor()); + m_paletteToolBar->setPreviewBackground(props->bgColor()); + } + grid->setTransparencyDisplayType(props->transparencyDisplayType()); + grid->setTransparencySolidColor(props->transparencySolidColor()); + grid->setCheckerboardColor1(props->checkerboardColor1()); + grid->setCheckerboardColor2(props->checkerboardColor2()); + grid->setCheckerboardSize(props->checkerboardSize()); + grid->update(); +} + +void TDEIconEdit::slotNewWin(const TQString & url) +{ + //kdDebug(4640) << "TDEIconEdit::openNewWin() - " << url << endl; + + TDEIconEdit *w = new TDEIconEdit(KURL(url), "tdeiconedit"); + TQ_CHECK_PTR(w); +} + + +void TDEIconEdit::slotNew() +{ + bool cancel = false; + if (grid->isModified()) + { + int r = KMessageBox::warningYesNoCancel(this, + i18n("The current file has been modified.\nDo you want to save it?"), TQString(), KStdGuiItem::save(), KStdGuiItem::discard()); + + switch(r) + { + case KMessageBox::Yes: + if(!icon->save(&grid->image())) + { + cancel = true; + } + break; + + case KMessageBox::No: + break; + + case KMessageBox::Cancel: + cancel = true; + break; + + default: + break; + } + } + if(!cancel) + { + KNewIcon newicon(this); + if(newicon.exec()) + { + int r = newicon.openStyle(); + if(r == KNewIcon::Blank) + { + grid->editClear(); + const TQSize s = newicon.templateSize(); + //kdDebug(4640) << "Size: " << s.width() << " x " << s.height() << endl; + grid->setSize(s); + grid->setModified(false); + } + else if(r == KNewIcon::Template) + { + TQString str = newicon.templatePath(); + icon->open(&grid->image(), KURL( str )); + } + icon->setUrl(""); + emit newname(i18n("Untitled")); + } + } +} + + +void TDEIconEdit::slotOpen() +{ + bool cancel = false; + + if( grid->isModified() ) + { + int r = KMessageBox::warningYesNoCancel(this, + i18n("The current file has been modified.\nDo you want to save it?"),TQString(), KStdGuiItem::save(), KStdGuiItem::discard()); + + switch( r ) + { + case KMessageBox::Yes: + if(!icon->save( &grid->image() )) + { + cancel = true; + } + break; + + case KMessageBox::No: + break; + + case KMessageBox::Cancel: + cancel = true; + break; + + default: + break; + } + } + + if( !cancel ) + { + if (icon->promptForFile( &grid->image() )) + { + grid->setModified(false); + } + } +} + +/* + close only the current window +*/ +void TDEIconEdit::slotClose() +{ + //kdDebug(4640) << "TDEIconEdit: Closing " << endl; + close(); +} + +void TDEIconEdit::slotSave() +{ + //kdDebug(4640) << "TDEIconEdit: slotSave() " << endl; + icon->save(&grid->image()); +} + + +void TDEIconEdit::slotSaveAs() +{ + //kdDebug(4640) << "TDEIconEdit: slotSaveAs() " << endl; + icon->saveAs(&grid->image()); +} + + +void TDEIconEdit::slotPrint() +{ + KPrinter printer; + + if ( printer.setup(this, i18n("Print %1").arg(icon->url().section('/', -1))) ) + { + int margin = 10, yPos = 0; + printer.setCreator("TDE Icon Editor"); + + TQPainter p; + p.begin( &printer ); + TQFontMetrics fm = p.fontMetrics(); + // need width/height + TQPaintDeviceMetrics metrics( &printer ); + + p.drawText( margin, margin + yPos, metrics.width(), fm.lineSpacing(), + ExpandTabs | DontClip, icon->url() ); + yPos = yPos + fm.lineSpacing(); + p.drawPixmap( margin, margin + yPos, grid->pixmap() ); + p.end(); + } +} + +void TDEIconEdit::slotZoomIn() +{ + grid->zoom(DirIn); +} + +void TDEIconEdit::slotZoomOut() +{ + grid->zoom(DirOut); +} + +void TDEIconEdit::slotZoom1() +{ + grid->zoomTo(1); +} + +void TDEIconEdit::slotZoom2() +{ + grid->zoomTo(2); +} + +void TDEIconEdit::slotZoom5() +{ + grid->zoomTo(5); +} + +void TDEIconEdit::slotZoom10() +{ + grid->zoomTo(10); +} + +void TDEIconEdit::slotCopy() +{ + grid->editCopy(); +} + +void TDEIconEdit::slotCut() +{ + grid->editCopy(true); +} + +void TDEIconEdit::slotPaste() +{ + static_cast<TDERadioAction*>(actionCollection() + ->action("tool_find_pixel"))->setChecked(true); + grid->setTool(TDEIconEditGrid::Find); + grid->editPaste(); +} + +void TDEIconEdit::slotClear() +{ + grid->editClear(); +} + +void TDEIconEdit::slotSelectAll() +{ + grid->setTool(TDEIconEditGrid::SelectRect); + grid->editSelectAll(); +} + +void TDEIconEdit::slotOpenRecent(const KURL& iconFile) +{ + bool cancel = false; + + if( grid->isModified() ) + { + int r = KMessageBox::warningYesNoCancel(this, + i18n("The current file has been modified.\nDo you want to save it?"),TQString(), KStdGuiItem::save(), KStdGuiItem::discard()); + + switch( r ) + { + case KMessageBox::Yes: + if (!icon->save( &grid->image() )) + { + cancel = true; + } + break; + + case KMessageBox::No: + break; + + case KMessageBox::Cancel: + cancel = true; + break; + + default: + break; + } + } + + if( !cancel ) + { + if(icon->open(&grid->image(), iconFile)) + { + grid->setModified(false); + } + } +} + +void TDEIconEdit::slotConfigureSettings() +{ + TDEIconConfig* c = new TDEIconConfig(this); + c->exec(); + delete c; +} + +void TDEIconEdit::slotConfigureKeys() +{ + KKeyDialog::configure(actionCollection()); + + TDEIconEdit *ki = 0L; + for (ki = windowList.first(); ki; ki = windowList.next()) + { + if (ki != this) + { + ki->updateAccels(); + } + } +} + +void TDEIconEdit::slotShowGrid() +{ + bool b = TDEIconEditProperties::self()->showGrid(); + grid->setGrid( !b ); + TDEIconEditProperties::self()->setShowGrid( !b ); +} + +void TDEIconEdit::slotToolPointer() +{ + grid->setTool(TDEIconEditGrid::Find); +} + +void TDEIconEdit::slotToolFreehand() +{ + grid->setTool(TDEIconEditGrid::Freehand); +} + +void TDEIconEdit::slotToolRectangle() +{ + grid->setTool(TDEIconEditGrid::Rect); +} + +void TDEIconEdit::slotToolFilledRectangle() +{ + grid->setTool(TDEIconEditGrid::FilledRect); +} + +void TDEIconEdit::slotToolCircle() +{ + grid->setTool(TDEIconEditGrid::Circle); +} + +void TDEIconEdit::slotToolFilledCircle() +{ + grid->setTool(TDEIconEditGrid::FilledCircle); +} + +void TDEIconEdit::slotToolEllipse() +{ + grid->setTool(TDEIconEditGrid::Ellipse); +} + +void TDEIconEdit::slotToolFilledEllipse() +{ + grid->setTool(TDEIconEditGrid::FilledEllipse); +} + +void TDEIconEdit::slotToolSpray() +{ + grid->setTool(TDEIconEditGrid::Spray); +} + +void TDEIconEdit::slotToolFlood() +{ + grid->setTool(TDEIconEditGrid::FloodFill); +} + +void TDEIconEdit::slotToolLine() +{ + grid->setTool(TDEIconEditGrid::Line); +} + +void TDEIconEdit::slotToolEraser() +{ + grid->setTool(TDEIconEditGrid::Eraser); +} + +void TDEIconEdit::slotToolSelectRect() +{ + grid->setTool(TDEIconEditGrid::SelectRect); +} + +void TDEIconEdit::slotToolSelectCircle() +{ + grid->setTool(TDEIconEditGrid::SelectCircle); +} + +void TDEIconEdit::slotSaved() +{ + grid->setModified(false); +} + +void TDEIconEdit::slotUpdateZoom( int s ) +{ + m_actZoomOut->setEnabled( s>1 ); +} + +void TDEIconEdit::slotUpdateStatusPos(int x, int y) +{ + TQString str = i18n("Status Position", "%1, %2").arg(x).arg(y); + statusbar->changeItem( str, 0); +} + +void TDEIconEdit::slotUpdateStatusSize(int x, int y) +{ + TQString str = i18n("Status Size", "%1 x %2").arg(x).arg(y); + statusbar->changeItem( str, 1); +} + +void TDEIconEdit::slotUpdateStatusScaling(int s) +{ + TDEIconEditProperties::self()->setGridScale( s ); + TQString str; + + str.sprintf("1:%d", s); + statusbar->changeItem( str, 2); +} + +void TDEIconEdit::slotUpdateStatusColors(uint) +{ + TQString str = i18n("Colors: %1").arg(grid->numColors()); + statusbar->changeItem( str, 3); +} + +void TDEIconEdit::slotUpdateStatusColors(uint n, uint *) +{ + TQString str = i18n("Colors: %1").arg(n); + statusbar->changeItem( str, 3); +} + + +void TDEIconEdit::slotUpdateStatusMessage(const TQString & msg) +{ + statusbar->changeItem( msg, 4); +} + + +void TDEIconEdit::slotUpdateStatusName(const TQString & name) +{ + m_name = name; + + TQString text = m_name; + + if(grid->isModified()) + { + text += " ["+i18n("modified")+"]"; + } + + setCaption(text); +} + + +void TDEIconEdit::slotUpdateStatusModified(bool) +{ + slotUpdateStatusName(m_name); +} + +void TDEIconEdit::slotUpdatePaste(bool state) +{ + m_actPaste->setEnabled(state); + m_actPasteNew->setEnabled(state); +} + + +void TDEIconEdit::slotUpdateCopy(bool state) +{ + m_actCopy->setEnabled(state); + m_actCut->setEnabled(state); +} + + +void TDEIconEdit::slotOpenBlank(const TQSize s) +{ + grid->loadBlank( s.width(), s.height()); +} + + +void TDEIconEdit::dragEnterEvent(TQDragEnterEvent* e) +{ + e->accept(KURLDrag::canDecode(e)); +} + + +/* + accept drop of a file - opens file in current window + old code to drop image, as image, should be removed +*/ +void TDEIconEdit::dropEvent( TQDropEvent *e ) +{ + //kdDebug(4640) << "Got TQDropEvent!" << endl; + + KURL::List fileList; + bool loadedinthis = false; + + if(KURLDrag::decode(e, fileList)) + { + for(KURL::List::ConstIterator it = fileList.begin(); + it != fileList.end(); ++it) + { + //kdDebug(4640) << "In dropEvent for " << (*it).prettyURL() << endl; + const KURL &url = *it; + if(url.isValid()) + { + if (!grid->isModified() && !loadedinthis) + { + icon->open(&grid->image(), url); + loadedinthis = true; + } + else + { + slotNewWin(url.url()); + } + } + } + } +} + + |