diff options
Diffstat (limited to 'kiconedit/kiconedit.cpp')
-rw-r--r-- | kiconedit/kiconedit.cpp | 497 |
1 files changed, 0 insertions, 497 deletions
diff --git a/kiconedit/kiconedit.cpp b/kiconedit/kiconedit.cpp deleted file mode 100644 index bec3af7f..00000000 --- a/kiconedit/kiconedit.cpp +++ /dev/null @@ -1,497 +0,0 @@ -/* - kiconedit - a small graphics drawing program for the KDE - 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 <tqwhatsthis.h> -#include <tqtooltip.h> - -#include <tdepopupmenu.h> -#include <kstdaction.h> -#include <tdeconfig.h> -#include <tdelocale.h> -#include <tdemessagebox.h> -#include <kdebug.h> - -#include "kiconedit.h" -#include "palettetoolbar.h" - -WindowList TDEIconEdit::windowList; - -TDEIconEdit::TDEIconEdit(const TQImage image, const char *name) - : TDEMainWindow(0, name) -{ - init(); - img = image; - img.detach(); - grid->load(&img); - grid->setModified(true); -} - -TDEIconEdit::TDEIconEdit(KURL url, const char *name) - : TDEMainWindow(0, name) -{ - init(); - icon->open(&img, url); -} - -void TDEIconEdit::init() -{ - setMinimumSize( 600, 540 ); - - windowList.append(this); - setCaption(kapp->caption()); - - m_paletteToolBar = 0L; - statusbar = 0L; - - history = new KCommandHistory( actionCollection(), true ); - - gridview = new KGridView(&img, history, this); - grid = gridview->grid(); - icon = new TDEIconEditIcon(TQT_TQOBJECT(this), &grid->image()); - - setAcceptDrops(true); - - setupActions(); - setupStatusBar(); - setStandardToolBarMenuEnabled( true ); - - createGUI(); - - connect(this, TQT_SIGNAL(newname(const TQString &)), - TQT_SLOT( slotUpdateStatusName(const TQString &))); - - connect( icon, TQT_SIGNAL( saved()), TQT_SLOT(slotSaved())); - connect( icon, TQT_SIGNAL( loaded(TQImage *)), grid, TQT_SLOT(load(TQImage *))); - connect( icon, TQT_SIGNAL(opennewwin(const TQString &)), - TQT_SLOT(slotNewWin(const TQString &))); - connect(icon, TQT_SIGNAL(newname(const TQString &)), - TQT_SLOT( slotUpdateStatusName(const TQString &))); - connect(icon, TQT_SIGNAL(newmessage(const TQString &)), - TQT_SLOT( slotUpdateStatusMessage(const TQString &))); - connect(icon, TQT_SIGNAL(addrecent(const TQString &)), - TQT_SLOT( addRecent(const TQString &))); - - connect( m_paletteToolBar, TQT_SIGNAL( newColor(uint)), - grid, TQT_SLOT(setColorSelection(uint))); - - connect( grid, TQT_SIGNAL( changed(const TQPixmap &) ), - m_paletteToolBar, TQT_SLOT( previewChanged(const TQPixmap &) ) ); - connect( grid, TQT_SIGNAL( addingcolor(uint) ), - m_paletteToolBar, TQT_SLOT(addColor(uint))); - connect( grid, TQT_SIGNAL( colorschanged(uint, uint*) ), - m_paletteToolBar, TQT_SLOT(addColors(uint, uint*))); - - connect(grid, TQT_SIGNAL(sizechanged(int, int)), - TQT_SLOT( slotUpdateStatusSize(int, int))); - connect(grid, TQT_SIGNAL(poschanged(int, int)), - TQT_SLOT( slotUpdateStatusPos(int, int))); - connect(grid, TQT_SIGNAL(scalingchanged(int)), - TQT_SLOT( slotUpdateStatusScaling(int))); - connect(grid, TQT_SIGNAL(scalingchanged(int)), - TQT_SLOT( slotUpdateZoom(int))); - connect( grid, TQT_SIGNAL( addingcolor(uint) ), - TQT_SLOT(slotUpdateStatusColors(uint))); - connect(grid, TQT_SIGNAL(colorschanged(uint, uint*)), - TQT_SLOT( slotUpdateStatusColors(uint, uint*))); - connect(grid, TQT_SIGNAL(newmessage(const TQString &)), - TQT_SLOT( slotUpdateStatusMessage(const TQString &))); - connect(grid, TQT_SIGNAL(clipboarddata(bool)), - TQT_SLOT( slotUpdatePaste(bool))); - connect(grid, TQT_SIGNAL(colorSelected(uint)), - m_paletteToolBar, TQT_SLOT(currentColorChanged(uint))); - connect(grid, TQT_SIGNAL(modifiedchanged(bool)), - TQT_SLOT( slotUpdateStatusModified(bool))); - gridview->checkClipboard(); //Not very elegant, but fixes a buglet - - connect(grid, TQT_SIGNAL(selecteddata(bool)), TQT_SLOT( slotUpdateCopy(bool))); - - kdDebug(4640) << "Updating statusbar" << endl; - slotUpdateStatusSize(grid->cols(), grid->rows()); - slotUpdateStatusScaling(grid->scaling()); - - slotUpdateZoom( grid->scaling() ); - - if(icon->url().length()) - slotUpdateStatusName(icon->url()); - else - slotUpdateStatusName(i18n("Untitled")); - - slotUpdateCopy(false); - - uint *c = 0, n = 0; - n = grid->getColors(c); - slotUpdateStatusColors(n, c); - - setCentralWidget(gridview); - - applyMainWindowSettings( kapp->config(), "MainWindowSettings" ); - updateProperties(); - - updateAccels(); - show(); - moveDockWindow( m_paletteToolBar, TQt::DockRight, true, 0 ); -} - -TDEIconEdit::~TDEIconEdit() -{ - windowList.remove(this); - - if (windowList.count() < 1) - { - kapp->quit(); - } -} - -bool TDEIconEdit::queryClose() -{ - 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::Cancel: - cancel = true; - break; - case KMessageBox::No: - default: - break; - } - } - - if(!cancel) - { - writeConfig(); - } - return (!cancel); -} - -// this is for exit by request of the session manager -void TDEIconEdit::saveProperties(TDEConfig *config ) -{ - kdDebug(4640) << "TDEIconEdit::saveProperties" << endl; - - config->writePathEntry("Name", icon->url()); -} - -// this is for instances opened by the session manager -void TDEIconEdit::readProperties(TDEConfig *config) -{ - kdDebug(4640) << "TDEIconEdit::readProperties" << endl; - - TQString entry = config->readPathEntry("Name"); // no default - if (entry.isEmpty()) return; - icon->open(&grid->image(), KURL::fromPathOrURL( entry )); -} - -/* - this is for normal exits or request from "Options->Save options". -*/ -void TDEIconEdit::writeConfig() -{ - TDEConfig *config = kapp->config(); - m_actRecent->saveEntries( kapp->config() ); - - TDEIconEditProperties::self()->save(); - - saveMainWindowSettings( config, "MainWindowSettings" ); -} - -TQSize TDEIconEdit::sizeHint() const -{ - if(gridview) - return gridview->sizeHint(); - else - return TQSize(-1, -1); -} - -void TDEIconEdit::setupActions() -{ - kdDebug(4640) << "setupActions" << endl; - - TDEAction *action; - TDERadioAction *toolAction; - TDEShortcut cut; - - // File Menu - action = new TDEAction(i18n("New &Window"), "window_new", cut, - TQT_TQOBJECT(this), TQT_SLOT(slotNewWin()), actionCollection(), "file_new_window"); - action->setWhatsThis(i18n("New window\n\nOpens a new icon editor window.")); - - action = KStdAction::openNew(TQT_TQOBJECT(this), TQT_SLOT(slotNew()), actionCollection()); - action->setWhatsThis(i18n("New\n\nCreate a new icon, either from a" - " template or by specifying the size")); - - action = KStdAction::open(TQT_TQOBJECT(this), TQT_SLOT(slotOpen()), actionCollection()); - action->setWhatsThis(i18n("Open\n\nOpen an existing icon")); - - m_actRecent = KStdAction::openRecent(TQT_TQOBJECT(this), - TQT_SLOT(slotOpenRecent(const KURL&)), actionCollection()); - m_actRecent->setMaxItems(15); // FIXME should be configurable! - m_actRecent->loadEntries(kapp->config()); - - action = KStdAction::save(TQT_TQOBJECT(this), TQT_SLOT(slotSave()), actionCollection()); - action->setWhatsThis(i18n("Save\n\nSave the current icon")); - - KStdAction::saveAs(TQT_TQOBJECT(this), TQT_SLOT(slotSaveAs()), actionCollection()); - - action = KStdAction::print(TQT_TQOBJECT(this), TQT_SLOT(slotPrint()), actionCollection()); - action->setWhatsThis(i18n("Print\n\nOpens a print dialog to let you print" - " the current icon.")); - - KStdAction::close(TQT_TQOBJECT(this), TQT_SLOT(slotClose()), actionCollection()); - - // Edit Menu - - m_actCut = KStdAction::cut(TQT_TQOBJECT(this), TQT_SLOT(slotCut()), actionCollection()); - m_actCut->setWhatsThis(i18n("Cut\n\nCut the current selection out of the" - " icon.\n\n(Tip: You can make both rectangular and circular selections)")); - - m_actCopy = KStdAction::copy(TQT_TQOBJECT(this), TQT_SLOT(slotCopy()), actionCollection()); - m_actCopy->setWhatsThis(i18n("Copy\n\nCopy the current selection out of the" - " icon.\n\n(Tip: You can make both rectangular and circular selections)")); - - m_actPaste = KStdAction::paste(TQT_TQOBJECT(this), TQT_SLOT(slotPaste()), actionCollection()); - m_actPaste->setWhatsThis(i18n("Paste\n\n" - "Paste the contents of the clipboard into the current icon.\n\n" - "If the contents are larger than the current icon you can paste them" - " in a new window.\n\n" - "(Tip: Select \"Paste transparent pixels\" in the configuration dialog" - " if you also want to paste transparency.)")); - - m_actPasteNew = new TDEAction( i18n( "Paste as &New" ), cut, TQT_TQOBJECT(grid), - TQT_SLOT( editPasteAsNew() ), actionCollection(), "edit_paste_as_new" ); - - KStdAction::clear(TQT_TQOBJECT(this), TQT_SLOT(slotClear()), actionCollection()); - KStdAction::selectAll(TQT_TQOBJECT(this), TQT_SLOT(slotSelectAll()), actionCollection()); - - action = new TDEAction(i18n("Resi&ze..."), "transform", cut, - TQT_TQOBJECT(grid), TQT_SLOT(editResize()), actionCollection(), "edit_resize"); - action->setWhatsThis(i18n("Resize\n\nSmoothly resizes the icon while" - " trying to preserve the contents")); - - action = new TDEAction(i18n("&GrayScale"), "grayscale", cut, - TQT_TQOBJECT(grid), TQT_SLOT(grayScale()), actionCollection(), "edit_grayscale"); - action->setWhatsThis(i18n("Gray scale\n\nGray scale the current icon.\n" - "(Warning: The result is likely to contain colors not in the icon" - " palette")); - - // View Menu - m_actZoomIn = KStdAction::zoomIn(TQT_TQOBJECT(this), TQT_SLOT(slotZoomIn()), - actionCollection()); - m_actZoomIn->setWhatsThis(i18n("Zoom in\n\nZoom in by one.")); - - m_actZoomOut = KStdAction::zoomOut(TQT_TQOBJECT(this), TQT_SLOT(slotZoomOut()), - actionCollection()); - m_actZoomOut->setWhatsThis(i18n("Zoom out\n\nZoom out by one.")); - - TDEActionMenu *actMenu = new TDEActionMenu( i18n( "&Zoom" ), "viewmag", - actionCollection(), "view_zoom" ); - - // xgettext:no-c-format - action = new TDEAction( i18n( "100%" ), cut, TQT_TQOBJECT(this), TQT_SLOT( slotZoom1() ), - actionCollection(), "view_zoom_1" ); - actMenu->insert( action ); - // xgettext:no-c-format - action = new TDEAction( i18n( "200%" ), cut, TQT_TQOBJECT(this), TQT_SLOT( slotZoom2() ), - actionCollection(), "view_zoom_2" ); - actMenu->insert( action ); - // xgettext:no-c-format - action = new TDEAction( i18n( "500%" ), cut, TQT_TQOBJECT(this), TQT_SLOT( slotZoom5() ), - actionCollection(), "view_zoom_5" ); - actMenu->insert( action ); - // xgettext:no-c-format - action = new TDEAction( i18n( "1000%" ), cut, TQT_TQOBJECT(this), TQT_SLOT( slotZoom10() ), - actionCollection(), "view_zoom_10" ); - actMenu->insert( action ); - - // Settings Menu - KStdAction::keyBindings(TQT_TQOBJECT(this), TQT_SLOT(slotConfigureKeys()), - actionCollection()); - KStdAction::preferences(TQT_TQOBJECT(this), TQT_SLOT(slotConfigureSettings()), - actionCollection()); - - createStandardStatusBarAction(); - - TDEToggleAction *toggle; - - toggle = new TDEToggleAction( i18n( "Show &Grid" ), "grid", - cut, TQT_TQOBJECT(this), TQT_SLOT( slotShowGrid() ), actionCollection(), - "options_show_grid" ); - toggle->setCheckedState(i18n("Hide &Grid")); - toggle->setWhatsThis( i18n( "Show grid\n\nToggles the grid in the icon" - " edit grid on/off" ) ); - toggle->setChecked( TDEIconEditProperties::self()->showGrid() ); - - // Tools Menu - toolAction = new TDERadioAction(i18n("Color Picker"), "colorpicker", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolPointer()), actionCollection(), - "tool_find_pixel"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Color Picker\n\nThe color of the pixel clicked" - " on will be the current draw color")); - - toolAction = new TDERadioAction(i18n("Freehand"), "paintbrush", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolFreehand()), actionCollection(), - "tool_freehand"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Free hand\n\nDraw non-linear lines")); - - toolAction->setChecked( true ); - grid->setTool(TDEIconEditGrid::Freehand); - - toolAction = new TDERadioAction(i18n("Rectangle"), "rectangle", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolRectangle()), actionCollection(), - "tool_rectangle"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Rectangle\n\nDraw a rectangle")); - - toolAction = new TDERadioAction(i18n("Filled Rectangle"), "filledrectangle", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolFilledRectangle()), actionCollection(), - "tool_filled_rectangle"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Filled rectangle\n\nDraw a filled rectangle")); - - toolAction = new TDERadioAction(i18n("Circle"), "circle", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolCircle()), actionCollection(), - "tool_circle"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Circle\n\nDraw a circle")); - - toolAction = new TDERadioAction(i18n("Filled Circle"), "filledcircle", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolFilledCircle()), actionCollection(), - "tool_filled_circle"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Filled circle\n\nDraw a filled circle")); - - toolAction = new TDERadioAction(i18n("Ellipse"), "ellipse", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolEllipse()), actionCollection(), - "tool_ellipse"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Ellipse\n\nDraw an ellipse")); - - toolAction = new TDERadioAction(i18n("Filled Ellipse"), "filledellipse", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolFilledEllipse()), actionCollection(), - "tool_filled_ellipse"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Filled ellipse\n\nDraw a filled ellipse")); - - toolAction = new TDERadioAction(i18n("Spray"), "airbrush", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolSpray()), actionCollection(), - "tool_spray"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Spray\n\nDraw scattered pixels in the" - " current color")); - - toolAction = new TDERadioAction(i18n("Flood Fill"), "fill", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolFlood()), actionCollection(), - "tool_flood_fill"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Flood fill\n\nFill adjoining pixels with" - " the same color with the current color")); - - toolAction = new TDERadioAction(i18n("Line"), "line", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolLine()), actionCollection(), - "tool_line"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Line\n\nDraw a straight line vertically," - " horizontally or at 45 deg. angles")); - - toolAction = new TDERadioAction(i18n("Eraser (Transparent)"), "eraser", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolEraser()), actionCollection(), - "tool_eraser"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Erase\n\nErase pixels. Set the pixels to" - " be transparent\n\n(Tip: If you want to draw transparency with a" - " different tool, first click on \"Erase\" then on the tool you want" - " to use)")); - - toolAction = new TDERadioAction(i18n("Rectangular Selection"), - "selectrect", cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolSelectRect()), - actionCollection(), "edit_select_rectangle"); - toolAction->setExclusiveGroup( "toolActions" ); - toolAction->setWhatsThis(i18n("Select\n\nSelect a rectangular section" - " of the icon using the mouse.")); - - toolAction = new TDERadioAction(i18n("Circular Selection"), - "selectcircle", cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolSelectCircle()), - actionCollection(), "edit_select_circle"); - toolAction->setExclusiveGroup( "toolActions" ); - toolAction->setWhatsThis(i18n("Select\n\nSelect a circular section of the" - " icon using the mouse.")); -} - -void TDEIconEdit::updateAccels() -{ - actionCollection()->readShortcutSettings(); -} - -TQWidget *TDEIconEdit::createContainer( TQWidget *parent, int index, - const TQDomElement &element, int &id ) -{ - if ( element.attribute( "name" ) == "paletteToolBar" ) - { - m_paletteToolBar = new PaletteToolBar( this, "paletteToolBar" ); - m_paletteToolBar->setText( i18n( "Palette Toolbar" ) ); - return m_paletteToolBar; - } - - return KXMLGUIBuilder::createContainer( parent, index, element, id ); -} - -bool TDEIconEdit::setupStatusBar() -{ - statusbar = statusBar(); - - TQString str = i18n("Statusbar\n\nThe statusbar gives information on" - " the status of the current icon. The fields are:\n\n" - "\t- Application messages\n\t- Cursor position\n\t- Size\n\t- Zoom factor\n" - "\t- Number of colors"); - TQWhatsThis::add(statusBar(), str); - - statusbar->insertFixedItem("99999,99999", 0, true); - statusbar->insertFixedItem("99999 x 99999", 1, true); - statusbar->insertFixedItem(" 1:999", 2, true); - str = i18n("Colors: %1").arg(9999999); - statusbar->insertFixedItem(str, 3, true); - statusbar->insertItem("", 4); - - statusbar->changeItem( "", 0); - statusbar->changeItem( "", 1); - statusbar->changeItem( "", 2); - statusbar->changeItem( "", 3); - - return true; -} - -void TDEIconEdit::addRecent(const TQString & path) -{ - m_actRecent->addURL(KURL( path )); -} - -#include "kiconedit.moc" |