diff options
author | Michele Calgaro <michele.calgaro@yahoo.it> | 2021-05-23 20:48:35 +0900 |
---|---|---|
committer | Michele Calgaro <michele.calgaro@yahoo.it> | 2021-05-29 15:16:28 +0900 |
commit | 8b78a8791bc539bcffe7159f9d9714d577cb3d7d (patch) | |
tree | 1328291f966f19a22d7b13657d3f01a588eb1083 /kspread/kspread_view.cc | |
parent | 95834e2bdc5e01ae1bd21ac0dfa4fa1d2417fae9 (diff) | |
download | koffice-8b78a8791bc539bcffe7159f9d9714d577cb3d7d.tar.gz koffice-8b78a8791bc539bcffe7159f9d9714d577cb3d7d.zip |
Renaming of files in preparation for code style tools.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'kspread/kspread_view.cc')
-rw-r--r-- | kspread/kspread_view.cc | 7541 |
1 files changed, 0 insertions, 7541 deletions
diff --git a/kspread/kspread_view.cc b/kspread/kspread_view.cc deleted file mode 100644 index 519e4425..00000000 --- a/kspread/kspread_view.cc +++ /dev/null @@ -1,7541 +0,0 @@ -/* This file is part of the KDE project - Copyright (C) 2005-2006 Raphael Langerhorst <raphael.langerhorst@kdemail.net> - (C) 2006 Stefan Nikolaus <stefan.nikolaus@kdemail.net> - (C) 2002-2005 Ariya Hidayat <ariya@kde.org> - (C) 1999-2003 Laurent Montel <montel@kde.org> - (C) 2002-2003 Norbert Andres <nandres@web.de> - (C) 2002-2003 Philipp Mueller <philipp.mueller@gmx.de> - (C) 2002-2003 John Dailey <dailey@vt.edu> - (C) 1999-2003 David Faure <faure@kde.org> - (C) 1999-2001 Simon Hausmann <hausmann@kde.org> - (C) 1998-2000 Torben Weis <weis@kde.org> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. -*/ - -#include <kprinter.h> // has to be first - -// standard C/C++ includes -#include <assert.h> -#include <stdlib.h> -#include <time.h> - -// TQt includes -#include <tqbuffer.h> -#include <tqclipboard.h> -#include <tqcursor.h> -#include <tqlayout.h> -#include <tqpaintdevicemetrics.h> -#include <tqregexp.h> -#include <tqtimer.h> -#include <tqtoolbutton.h> -#include <tqsqldatabase.h> -#include <tqlistview.h> -#include <tqsizepolicy.h> - -// KDE includes -#include <dcopclient.h> -#include <dcopref.h> -#include <tdeapplication.h> -#include <tdeconfig.h> -#include <kdebug.h> -#include <kfind.h> -#include <kfinddialog.h> -#include <tdefontdialog.h> -#include <kinputdialog.h> -#include <tdemessagebox.h> -#include <knotifyclient.h> -#include <kpassdlg.h> -#include <kprocio.h> -#include <kreplace.h> -#include <kreplacedialog.h> -#include <tdespell.h> -#include <tdespelldlg.h> -#include <kstatusbar.h> -#include <kstdaction.h> -#include <kstandarddirs.h> -#include <tdetempfile.h> -#include <tdeparts/partmanager.h> -#include <tdelistview.h> -#include <kpushbutton.h> - -// KOffice includes -#include <tkcoloractions.h> -#include <kdatatool.h> -#include <KoCharSelectDia.h> -#include <KoCommandHistory.h> -#include <KoMainWindow.h> -#include <KoOasisLoadingContext.h> -#include <KoOasisStore.h> -#include <KoOasisStyles.h> -#include <KoPartSelectAction.h> -#include <KoStoreDrag.h> -#include <KoTabBar.h> -#include <kspread_toolbox.h> -#include <KoTemplateCreateDia.h> -#include <KoZoomAction.h> - -// KSpread includes -#include "commands.h" -#include "damages.h" -#include "digest.h" -#include "inspector.h" -#include "ksploadinginfo.h" -#include "kspread_canvas.h" -#include "kspread_editors.h" -#include "kspread_events.h" -#include "kspread_global.h" -#include "kspread_handler.h" -#include "kspread_locale.h" -#include "kspread_map.h" -#include "selection.h" -#include "kspread_sheetprint.h" -#include "kspread_style.h" -#include "kspread_style_manager.h" -#include "kspread_undo.h" -#include "testrunner.h" -#include "valuecalc.h" -#include "valueconverter.h" - -// dialogs -#include "dialogs/kspread_dlg_angle.h" -#include "dialogs/kspread_dlg_area.h" -#include "dialogs/kspread_dlg_comment.h" -#include "dialogs/kspread_dlg_conditional.h" -#include "dialogs/kspread_dlg_cons.h" -#include "dialogs/kspread_dlg_csv.h" -#include "dialogs/kspread_dlg_database.h" -#include "dialogs/kspread_dlg_format.h" -#include "dialogs/kspread_dlg_formula.h" -#include "dialogs/kspread_dlg_goalseek.h" -#include "dialogs/kspread_dlg_goto.h" -#include "dialogs/kspread_dlg_insert.h" -#include "dialogs/kspread_dlg_layout.h" -#include "dialogs/kspread_dlg_list.h" -//#include "dialogs/kspread_dlg_multipleop.h" -#include "dialogs/kspread_dlg_paperlayout.h" -#include "dialogs/kspread_dlg_pasteinsert.h" -#include "dialogs/kspread_dlg_preference.h" -#include "dialogs/kspread_dlg_reference.h" -#include "dialogs/kspread_dlg_resize2.h" -#include "dialogs/kspread_dlg_series.h" -#include "dialogs/kspread_dlg_show.h" -#include "dialogs/kspread_dlg_showColRow.h" -#include "dialogs/kspread_dlg_sort.h" -#include "dialogs/kspread_dlg_special.h" -#include "dialogs/kspread_dlg_styles.h" -#include "dialogs/kspread_dlg_subtotal.h" -#include "dialogs/kspread_dlg_validity.h" -#include "dialogs/link.h" -#include "dialogs/sheet_properties.h" -#include "dialogs/kspread_dlg_find.h" -#include "dialogs/SheetSelectWidget.h" -#include "kspread_propertyEditor.h" -#include "kspread_generalProperty.h" - -// KSpread DCOP -#include "KSpreadViewIface.h" - -#include "kspread_view.h" - -namespace KSpread -{ -class ViewActions; - -class View::Private -{ -public: - View* view; - Doc* doc; - DCOPObject* dcop; - - // the active sheet, may be 0 - // this is the sheet which has the input focus - Sheet* activeSheet; - - // GUI elements - TQWidget *frame; - TQFrame *toolWidget; - Canvas *canvas; - VBorder *vBorderWidget; - HBorder *hBorderWidget; - TQScrollBar *horzScrollBar; - TQScrollBar *vertScrollBar; - KoTabBar *tabBar; - KStatusBarLabel* calcLabel; - - // formulabar, consists of: - TQHBoxLayout* formulaBarLayout; - ComboboxLocationEditWidget *posWidget; - TQButton* formulaButton; - TQButton *okButton; - TQButton *cancelButton; - KSpread::EditWidget *editWidget; - TQGridLayout* viewLayout; - TQHBoxLayout* tabScrollBarLayout; - - // all UI actions - ViewActions* actions; - - // If updateEditWidget is called it changes some TDEToggleActions. - // That causes them to emit a signal. If this lock is true, then these - // signals are ignored. - bool toolbarLock; - - // if true, kspread is still loading the document - // don't try to refresh the view - bool loading; - - // selection/marker - Selection* selection; - Selection* choice; - TQMap<Sheet*, TQPoint> savedAnchors; - TQMap<Sheet*, TQPoint> savedMarkers; - TQMap<Sheet*, KoPoint> savedOffsets; - - // Find and Replace context. We remember the options and - // the strings used previously. - long findOptions; - TQStringList findStrings; - TQStringList replaceStrings; - FindOption::searchTypeValue typeValue; - FindOption::searchDirectionValue directionValue; - // Current "find" operation - KFind* find; - KReplace* replace; - int findLeftColumn; - int findRightColumn; - TQPoint findPos; - TQPoint findEnd; - - InsertHandler* insertHandler; - - // Insert special character dialog - KoCharSelectDia* specialCharDlg; - - // Holds a guarded pointer to the transformation toolbox. - TQGuardedPtr<KoTransformToolBox> transformToolBox; - - // the last popup menu (may be 0). - // Since only one popup menu can be opened at once, its pointer is stored here. - // Delete the old one before you store a pointer to anotheron here. - TQPopupMenu *popupMenu; - int popupMenuFirstToolId; - - TQPopupMenu *popupRow; - TQPopupMenu *popupColumn; - TQPopupMenu* popupChild; // for embedded children - TQPopupMenu* popupListChoose; // for list of choose - - // the child for which the popup menu has been opened. - Child* popupChildObject; - - // spell-check context - struct - { - KSpell * tdespell; - Sheet * firstSpellSheet; - Sheet * currentSpellSheet; - Cell * currentCell; - MacroUndoAction *macroCmdSpellCheck; - unsigned int spellCurrCellX; - unsigned int spellCurrCellY; - unsigned int spellStartCellX; - unsigned int spellStartCellY; - unsigned int spellEndCellX; - unsigned int spellEndCellY; - bool spellCheckSelection; - TQStringList replaceAll; - } spell; - - struct - { - Sheet * currentSheet; - Sheet * firstSheet; - } searchInSheets; - - // the tools - struct ToolEntry - { - TQString command; - KDataToolInfo info; - }; - TQPtrList<ToolEntry> toolList; - - void initActions(); - void adjustActions( bool mode ); - void adjustActions( Sheet* sheet, Cell* cell ); - void adjustWorkbookActions( bool mode ); - void updateButton( Cell *cell, int column, int row); - TQButton* newIconButton( const char *_file, bool _kbutton = false, TQWidget *_parent = 0L ); - - PropertyEditor *m_propertyEditor; - - // On timeout this will execute the status bar operation (e.g. SUM). - // This is delayed to speed up the selection. - TQTimer statusBarOpTimer; -}; - -class ViewActions -{ -public: - - // cell formatting - TDEAction* cellLayout; - TDEAction *actionExtraProperties; - TDEAction* defaultFormat; - TDEToggleAction* bold; - TDEToggleAction* italic; - TDEToggleAction* underline; - TDEToggleAction* strikeOut; - TDEFontAction* selectFont; - TDEFontSizeAction* selectFontSize; - TDEAction* fontSizeUp; - TDEAction* fontSizeDown; - TTDESelectColorAction* textColor; - TDEToggleAction* alignLeft; - TDEToggleAction* alignCenter; - TDEToggleAction* alignRight; - TDEToggleAction* alignTop; - TDEToggleAction* alignMiddle; - TDEToggleAction* alignBottom; - TDEToggleAction* wrapText; - TDEToggleAction* verticalText; - TDEAction* increaseIndent; - TDEAction* decreaseIndent; - TDEAction* changeAngle; - TDEToggleAction* percent; - TDEAction* precplus; - TDEAction* precminus; - TDEToggleAction* money; - TDEAction* upper; - TDEAction* lower; - TDEAction* firstLetterUpper; - TTDESelectColorAction* bgColor; - TDEAction* borderLeft; - TDEAction* borderRight; - TDEAction* borderTop; - TDEAction* borderBottom; - TDEAction* borderAll; - TDEAction* borderOutline; - TDEAction* borderRemove; - TTDESelectColorAction* borderColor; - TDESelectAction* selectStyle; - TDEAction* createStyle; - - // cell operations - TDEAction* editCell; - TDEAction* insertCell; - TDEAction* removeCell; - TDEAction* deleteCell; - TDEToolBarPopupAction* mergeCell; - TDEAction* mergeCellHorizontal; - TDEAction* mergeCellVertical; - TDEAction* dissociateCell; - TDEAction* clearText; - TDEAction* conditional; - TDEAction* clearConditional; - TDEAction* validity; - TDEAction* clearValidity; - TDEAction* addModifyComment; - TDEAction* removeComment; - TDEAction* clearComment; - - // column & row operations - TDEAction* resizeColumn; - TDEAction* insertColumn; - TDEAction* deleteColumn; - TDEAction* hideColumn; - TDEAction* showColumn; - TDEAction* equalizeColumn; - TDEAction* showSelColumns; - TDEAction* resizeRow; - TDEAction* insertRow; - TDEAction* deleteRow; - TDEAction* hideRow; - TDEAction* showRow; - TDEAction* equalizeRow; - TDEAction* showSelRows; - TDEAction* adjust; - - // sheet/workbook operations - TDEAction* sheetProperties; - TDEAction* insertSheet; - TDEAction* menuInsertSheet; - TDEAction* removeSheet; - TDEAction* renameSheet; - TDEAction* hideSheet; - TDEAction* showSheet; - TDEAction* autoFormat; - TDEAction* areaName; - TDEAction* showArea; - TDEAction* insertSeries; - TDEAction* insertFunction; - TDEAction* insertSpecialChar; - TDEAction* insertFromDatabase; - TDEAction* insertFromTextfile; - TDEAction* insertFromClipboard; - TDEAction* transform; - TDEAction* sort; - TDEAction* sortDec; - TDEAction* sortInc; - TDEAction* fillRight; - TDEAction* fillLeft; - TDEAction* fillUp; - TDEAction* fillDown; - TDEAction* paperLayout; - TDEAction* definePrintRange; - TDEAction* resetPrintRange; - TDEToggleAction* showPageBorders; - TDEAction* recalcWorksheet; - TDEAction* recalcWorkbook; - TDEToggleAction* protectSheet; - TDEToggleAction* protectDoc; - - // general editing - TDEAction* cut; - TDEAction* copy; - TDEAction* paste; - TDEAction* specialPaste; - TDEAction* insertCellCopy; - TDEAction* find; - TDEAction* replace; - - // navigation - TDEAction* gotoCell; - TDEAction* nextSheet; - TDEAction* prevSheet; - TDEAction* firstSheet; - TDEAction* lastSheet; - - // misc - TDEAction* styleDialog; - TDEAction* autoSum; - TDESelectAction* formulaSelection; - TDEAction* insertLink; - TDEAction* removeLink; - TDEAction* consolidate; - TDEAction* goalSeek; - TDEAction* subTotals; - TDEAction* textToColumns; - TDEAction* multipleOperations; - TDEAction* createTemplate; - KoPartSelectAction *insertPart; - TDEToggleAction* insertChartFrame; - TDEAction* insertPicture; - TDEAction* customList; - TDEAction* spellChecking; - TDEAction* internalTests; - TDEAction* inspector; - - // settings - KoZoomAction* viewZoom; - TDEToggleAction* showStatusBar; - TDEToggleAction* showTabBar; - TDEToggleAction* showFormulaBar; - TDEAction* preference; - - // running calculation - TDEToggleAction* calcNone; - TDEToggleAction* calcMin; - TDEToggleAction* calcMax; - TDEToggleAction* calcAverage; - TDEToggleAction* calcCount; - TDEToggleAction* calcSum; - TDEToggleAction* calcCountA; -}; - - -void View::Private::initActions() -{ - actions = new ViewActions; - - TDEActionCollection* ac = view->actionCollection(); - - // -- cell formatting actions -- - - actions->cellLayout = new TDEAction( i18n("Cell Format..."), "cell_layout", - TQt::CTRL+ TQt::ALT+ TQt::Key_F, TQT_TQOBJECT(view), TQT_SLOT( layoutDlg() ), ac, "cellLayout" ); - actions->cellLayout->setToolTip( i18n("Set the cell formatting.") ); - - actions->actionExtraProperties = new TDEAction( i18n( "&Properties" ), "penbrush", 0, - TQT_TQOBJECT(view), TQT_SLOT( extraProperties() ), ac, "extra_properties" ); - - actions->defaultFormat = new TDEAction( i18n("Default"), - 0, TQT_TQOBJECT(view), TQT_SLOT( defaultSelection() ), ac, "default" ); - actions->defaultFormat->setToolTip( i18n("Resets to the default format.") ); - - actions->bold = new TDEToggleAction( i18n("Bold"), "format-text-bold", - TQt::CTRL+TQt::Key_B, ac, "bold"); - TQT_BASE_OBJECT_NAME::connect( actions->bold, TQT_SIGNAL( toggled( bool) ), - TQT_TQOBJECT(view), TQT_SLOT( bold( bool ) ) ); - - actions->italic = new TDEToggleAction( i18n("Italic"), "format-text-italic", - TQt::CTRL+TQt::Key_I, ac, "italic"); - TQT_BASE_OBJECT_NAME::connect( actions->italic, TQT_SIGNAL( toggled( bool) ), - TQT_TQOBJECT(view), TQT_SLOT( italic( bool ) ) ); - - actions->underline = new TDEToggleAction( i18n("Underline"), "format-text-underline", - TQt::CTRL+TQt::Key_U, ac, "underline"); - TQT_BASE_OBJECT_NAME::connect( actions->underline, TQT_SIGNAL( toggled( bool) ), - TQT_TQOBJECT(view), TQT_SLOT( underline( bool ) ) ); - - actions->strikeOut = new TDEToggleAction( i18n("Strike Out"), "format-text-strikethrough", - 0, ac, "strikeout"); - TQT_BASE_OBJECT_NAME::connect( actions->strikeOut, TQT_SIGNAL( toggled( bool) ), - TQT_TQOBJECT(view), TQT_SLOT( strikeOut( bool ) ) ); - - actions->selectFont = new TDEFontAction( i18n("Select Font..."), - 0, ac, "selectFont" ); - TQT_BASE_OBJECT_NAME::connect( actions->selectFont, TQT_SIGNAL( activated( const TQString& ) ), - TQT_TQOBJECT(view), TQT_SLOT( fontSelected( const TQString& ) ) ); - - actions->selectFontSize = new TDEFontSizeAction( i18n("Select Font Size"), - 0, ac, "selectFontSize" ); - TQT_BASE_OBJECT_NAME::connect( actions->selectFontSize, TQT_SIGNAL( fontSizeChanged( int ) ), - TQT_TQOBJECT(view), TQT_SLOT( fontSizeSelected( int ) ) ); - - actions->fontSizeUp = new TDEAction( i18n("Increase Font Size"), "fontsizeup", - 0, TQT_TQOBJECT(view), TQT_SLOT( increaseFontSize() ), ac, "increaseFontSize" ); - - actions->fontSizeDown = new TDEAction( i18n("Decrease Font Size"), "fontsizedown", - 0, TQT_TQOBJECT(view), TQT_SLOT( decreaseFontSize() ), ac, "decreaseFontSize" ); - - actions->textColor = new TTDESelectColorAction( i18n("Text Color"), - TTDESelectColorAction::TextColor, TQT_TQOBJECT(view), TQT_SLOT( changeTextColor() ), - ac, "textColor",true ); - actions->textColor->setDefaultColor(TQColor()); - - actions->alignLeft = new TDEToggleAction( i18n("Align Left"), "format-text-direction-ltr", - 0, ac, "left"); - TQT_BASE_OBJECT_NAME::connect( actions->alignLeft, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( alignLeft( bool ) ) ); - actions->alignLeft->setExclusiveGroup( "Align" ); - actions->alignLeft->setToolTip(i18n("Left justify the cell contents.")); - - actions->alignCenter = new TDEToggleAction( i18n("Align Center"), "text_center", - 0, ac, "center"); - TQT_BASE_OBJECT_NAME::connect( actions->alignCenter, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( alignCenter( bool ) ) ); - actions->alignCenter->setExclusiveGroup( "Align" ); - actions->alignCenter->setToolTip(i18n("Center the cell contents.")); - - actions->alignRight = new TDEToggleAction( i18n("Align Right"), "format-text-direction-rtl", - 0, ac, "right"); - TQT_BASE_OBJECT_NAME::connect( actions->alignRight, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( alignRight( bool ) ) ); - actions->alignRight->setExclusiveGroup( "Align" ); - actions->alignRight->setToolTip(i18n("Right justify the cell contents.")); - - actions->alignTop = new TDEToggleAction( i18n("Align Top"), "text_top", - 0, ac, "top"); - TQT_BASE_OBJECT_NAME::connect( actions->alignTop, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( alignTop( bool ) ) ); - actions->alignTop->setExclusiveGroup( "Pos" ); - actions->alignTop->setToolTip(i18n("Align cell contents along the top of the cell.")); - - actions->alignMiddle = new TDEToggleAction( i18n("Align Middle"), "middle", - 0, ac, "middle"); - TQT_BASE_OBJECT_NAME::connect( actions->alignMiddle, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( alignMiddle( bool ) ) ); - actions->alignMiddle->setExclusiveGroup( "Pos" ); - actions->alignMiddle->setToolTip(i18n("Align cell contents centered in the cell.")); - - actions->alignBottom = new TDEToggleAction( i18n("Align Bottom"), "text_bottom", - 0, ac, "bottom"); - TQT_BASE_OBJECT_NAME::connect( actions->alignBottom, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( alignBottom( bool ) ) ); - actions->alignBottom->setExclusiveGroup( "Pos" ); - actions->alignBottom->setToolTip(i18n("Align cell contents along the bottom of the cell.")); - - actions->wrapText = new TDEToggleAction( i18n("Wrap Text"), "multirow", - 0, ac, "multiRow" ); - TQT_BASE_OBJECT_NAME::connect( actions->wrapText, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( wrapText( bool ) ) ); - actions->wrapText->setToolTip(i18n("Make the cell text wrap onto multiple lines.")); - - actions->verticalText = new TDEToggleAction( i18n("Vertical Text"),"vertical_text" , - 0 ,ac, "verticaltext" ); - TQT_BASE_OBJECT_NAME::connect( actions->verticalText, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( verticalText( bool ) ) ); - actions->verticalText->setToolTip(i18n("Print cell contents vertically.")); - - actions->increaseIndent = new TDEAction( i18n("Increase Indent"), - TQApplication::reverseLayout() ? "format_decreaseindent":"format_increaseindent", - 0, TQT_TQOBJECT(view), TQT_SLOT( increaseIndent() ), ac, "increaseindent" ); - actions->increaseIndent->setToolTip(i18n("Increase the indentation.")); - - actions->decreaseIndent = new TDEAction( i18n("Decrease Indent"), - TQApplication::reverseLayout() ? "format_increaseindent" : "format_decreaseindent", - 0, TQT_TQOBJECT(view), TQT_SLOT( decreaseIndent() ), ac, "decreaseindent"); - actions->decreaseIndent->setToolTip(i18n("Decrease the indentation.")); - - actions->changeAngle = new TDEAction( i18n("Change Angle..."), - 0, TQT_TQOBJECT(view), TQT_SLOT( changeAngle() ), ac, "changeangle" ); - actions->changeAngle->setToolTip(i18n("Change the angle that cell contents are printed.")); - - actions->percent = new TDEToggleAction( i18n("Percent Format"), "percent", - 0, ac, "percent"); - TQT_BASE_OBJECT_NAME::connect( actions->percent, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( percent( bool ) ) ); - actions->percent->setToolTip(i18n("Set the cell formatting to look like a percentage.")); - - actions->precplus = new TDEAction( i18n("Increase Precision"), "prec_plus", - 0, TQT_TQOBJECT(view), TQT_SLOT( precisionPlus() ), ac, "precplus"); - actions->precplus->setToolTip(i18n("Increase the decimal precision shown onscreen.")); - - actions->precminus = new TDEAction( i18n("Decrease Precision"), "prec_minus", - 0, TQT_TQOBJECT(view), TQT_SLOT( precisionMinus() ), ac, "precminus"); - actions->precminus->setToolTip(i18n("Decrease the decimal precision shown onscreen.")); - - actions->money = new TDEToggleAction( i18n("Money Format"), "money", - 0, ac, "money"); - TQT_BASE_OBJECT_NAME::connect( actions->money, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( moneyFormat( bool ) ) ); - actions->money->setToolTip(i18n("Set the cell formatting to look like your local currency.")); - - actions->upper = new TDEAction( i18n("Upper Case"), "fontsizeup", - 0, TQT_TQOBJECT(view), TQT_SLOT( upper() ), ac, "upper" ); - actions->upper->setToolTip(i18n("Convert all letters to upper case.")); - - actions->lower = new TDEAction( i18n("Lower Case"), "fontsizedown", - 0, TQT_TQOBJECT(view), TQT_SLOT( lower() ), ac, "lower" ); - actions->lower->setToolTip(i18n("Convert all letters to lower case.")); - - actions->firstLetterUpper = new TDEAction( i18n("Convert First Letter to Upper Case"), "first_letter_upper", - 0, TQT_TQOBJECT(view), TQT_SLOT( firstLetterUpper() ),ac, "firstletterupper" ); - actions->firstLetterUpper->setToolTip(i18n("Capitalize the first letter.")); - - actions->bgColor = new TTDESelectColorAction( i18n("Background Color"), - TTDESelectColorAction::FillColor, ac, "backgroundColor", true ); - TQT_BASE_OBJECT_NAME::connect(actions->bgColor, TQT_SIGNAL( activated() ), - TQT_TQOBJECT(view), TQT_SLOT( changeBackgroundColor() ) ); - actions->bgColor->setDefaultColor(TQColor()); - actions->bgColor->setToolTip(i18n("Set the background color.")); - - actions->borderLeft = new TDEAction( i18n("Border Left"), "border_left", - 0, TQT_TQOBJECT(view), TQT_SLOT( borderLeft() ), ac, "borderLeft" ); - actions->borderLeft->setToolTip(i18n("Set a left border to the selected area.")); - - actions->borderRight = new TDEAction( i18n("Border Right"), "border_right", - 0, TQT_TQOBJECT(view), TQT_SLOT( borderRight() ), ac, "borderRight" ); - actions->borderRight->setToolTip(i18n("Set a right border to the selected area.")); - - actions->borderTop = new TDEAction( i18n("Border Top"), "border_top", - 0, TQT_TQOBJECT(view), TQT_SLOT( borderTop() ), ac, "borderTop" ); - actions->borderTop->setToolTip(i18n("Set a top border to the selected area.")); - - actions->borderBottom = new TDEAction( i18n("Border Bottom"), "border_bottom", - 0, TQT_TQOBJECT(view), TQT_SLOT( borderBottom() ), ac, "borderBottom" ); - actions->borderBottom->setToolTip(i18n("Set a bottom border to the selected area.")); - - actions->borderAll = new TDEAction( i18n("All Borders"), "border_all", - 0, TQT_TQOBJECT(view), TQT_SLOT( borderAll() ), ac, "borderAll" ); - actions->borderAll->setToolTip(i18n("Set a border around all cells in the selected area.")); - - actions->borderRemove = new TDEAction( i18n("Remove Borders"), "border_remove", - 0, TQT_TQOBJECT(view), TQT_SLOT( borderRemove() ), ac, "borderRemove" ); - actions->borderRemove->setToolTip(i18n("Remove all borders in the selected area.")); - - actions->borderOutline = new TDEAction( i18n("Border Outline"), ("border_outline"), - 0, TQT_TQOBJECT(view), TQT_SLOT( borderOutline() ), ac, "borderOutline" ); - actions->borderOutline->setToolTip(i18n("Set a border to the outline of the selected area.")); - - actions->borderColor = new TTDESelectColorAction( i18n("Border Color"), - TTDESelectColorAction::LineColor, ac, "borderColor" ); - TQT_BASE_OBJECT_NAME::connect( actions->borderColor, TQT_SIGNAL( activated() ), - TQT_TQOBJECT(view), TQT_SLOT( changeBorderColor() ) ); - actions->borderColor->setToolTip( i18n( "Select a new border color." ) ); - - actions->selectStyle = new TDESelectAction( i18n( "St&yle" ), - 0, ac, "stylemenu" ); - actions->selectStyle->setToolTip( i18n( "Apply a predefined style to the selected cells." ) ); - TQT_BASE_OBJECT_NAME::connect( actions->selectStyle, TQT_SIGNAL( activated( const TQString & ) ), - TQT_TQOBJECT(view), TQT_SLOT( styleSelected( const TQString & ) ) ); - - actions->createStyle = new TDEAction( i18n( "Create Style From Cell..." ), - 0, TQT_TQOBJECT(view), TQT_SLOT( createStyleFromCell()), ac, "createStyle" ); - actions->createStyle->setToolTip( i18n( "Create a new style based on the currently selected cell." ) ); - - // -- cell operation actions -- - - actions->editCell = new TDEAction( i18n("Modify Cell"),"cell_edit", - TQt::CTRL+TQt::Key_M, TQT_TQOBJECT(view), TQT_SLOT( editCell() ), ac, "editCell" ); - actions->editCell->setToolTip(i18n("Edit the highlighted cell.")); - - actions->insertCell = new TDEAction( i18n("Insert Cells..."), "insertcell", - 0, TQT_TQOBJECT(view), TQT_SLOT( slotInsert() ), ac, "insertCell" ); - actions->insertCell->setToolTip(i18n("Insert a blank cell into the spreadsheet.")); - - actions->removeCell = new TDEAction( i18n("Remove Cells..."), "removecell", - 0, TQT_TQOBJECT(view), TQT_SLOT( slotRemove() ), ac, "removeCell" ); - actions->removeCell->setToolTip(i18n("Removes the current cell from the spreadsheet.")); - - actions->deleteCell = new TDEAction( i18n("Delete"), "deletecell", - 0, TQT_TQOBJECT(view), TQT_SLOT( deleteSelection() ), ac, "delete" ); - actions->deleteCell->setToolTip(i18n("Delete all contents and formatting of the current cell.")); - - actions->mergeCell = new TDEToolBarPopupAction( i18n("Merge Cells"),"mergecell", - 0, TQT_TQOBJECT(view), TQT_SLOT( mergeCell() ), ac, "mergecell" ); - actions->mergeCell->setToolTip(i18n("Merge the selected region.")); - actions->mergeCell->plug( actions->mergeCell->popupMenu() ); - - actions->mergeCellHorizontal = new TDEAction( i18n("Merge Cells Horizontally"),"mergecell-horizontal", - 0, TQT_TQOBJECT(view), TQT_SLOT( mergeCellHorizontal() ), ac, "mergecellHorizontal" ); - actions->mergeCellHorizontal->setToolTip(i18n("Merge the selected region horizontally.")); - actions->mergeCellHorizontal->plug( actions->mergeCell->popupMenu() ); - - actions->mergeCellVertical = new TDEAction( i18n("Merge Cells Vertically"),"mergecell-vertical", - 0, TQT_TQOBJECT(view), TQT_SLOT( mergeCellVertical() ), ac, "mergecellVertical" ); - actions->mergeCellVertical->setToolTip(i18n("Merge the selected region vertically.")); - actions->mergeCellVertical->plug( actions->mergeCell->popupMenu() ); - - actions->dissociateCell = new TDEAction( i18n("Dissociate Cells"),"dissociatecell", - 0, TQT_TQOBJECT(view), TQT_SLOT( dissociateCell() ), ac, "dissociatecell" ); - actions->dissociateCell->setToolTip(i18n("Unmerge the selected region.")); - - actions->clearText = new TDEAction( i18n("Text"), - 0, TQT_TQOBJECT(view), TQT_SLOT( clearTextSelection() ), ac, "cleartext" ); - actions->clearText->setToolTip(i18n("Remove the contents of the current cell.")); - - actions->conditional = new TDEAction( i18n("Conditional Cell Attributes..."), - 0, TQT_TQOBJECT(view), TQT_SLOT( conditional() ), ac, "conditional" ); - actions->conditional->setToolTip(i18n("Set cell format based on certain conditions.")); - - - actions->clearConditional = new TDEAction( i18n("Conditional Cell Attributes"), - 0, TQT_TQOBJECT(view), TQT_SLOT( clearConditionalSelection() ), ac, "clearconditional" ); - actions->clearConditional->setToolTip(i18n("Remove the conditional cell formatting.")); - - actions->validity = new TDEAction( i18n("Validity..."), - 0, TQT_TQOBJECT(view), TQT_SLOT( validity() ), ac, "validity" ); - actions->validity->setToolTip(i18n("Set tests to confirm cell data is valid.")); - - actions->clearValidity = new TDEAction( i18n("Validity"), - 0, TQT_TQOBJECT(view), TQT_SLOT( clearValiditySelection() ), ac, "clearvalidity" ); - actions->clearValidity->setToolTip(i18n("Remove the validity tests on this cell.")); - - actions->addModifyComment = new TDEAction( i18n("&Add/Modify Comment..."),"comment", - 0, TQT_TQOBJECT(view), TQT_SLOT( addModifyComment() ), ac, "addmodifycomment" ); - actions->addModifyComment->setToolTip(i18n("Edit a comment for this cell.")); - - actions->removeComment = new TDEAction( i18n("&Remove Comment"),"removecomment", - 0, TQT_TQOBJECT(view), TQT_SLOT( removeComment() ), ac, "removecomment" ); - actions->removeComment->setToolTip(i18n("Remove this cell's comment.")); - - actions->clearComment = new TDEAction( i18n("Comment"), - 0, TQT_TQOBJECT(view), TQT_SLOT( clearCommentSelection() ), ac, "clearcomment" ); - actions->clearComment->setToolTip(i18n("Remove this cell's comment.")); - - // -- column & row actions -- - - actions->resizeColumn = new TDEAction( i18n("Resize Column..."), "resizecol", - 0, TQT_TQOBJECT(view), TQT_SLOT( resizeColumn() ), ac, "resizeCol" ); - actions->resizeColumn->setToolTip(i18n("Change the width of a column.")); - - actions->insertColumn = new TDEAction( i18n("Insert Columns"), "insert_table_col", - 0, TQT_TQOBJECT(view), TQT_SLOT( insertColumn() ), ac, "insertColumn" ); - actions->insertColumn->setToolTip(i18n("Inserts a new column into the spreadsheet.")); - - actions->deleteColumn = new TDEAction( i18n("Delete Columns"), "delete_table_col", - 0, TQT_TQOBJECT(view), TQT_SLOT( deleteColumn() ), ac, "deleteColumn" ); - actions->deleteColumn->setToolTip(i18n("Removes a column from the spreadsheet.")); - - actions->hideColumn = new TDEAction( i18n("Hide Columns"), "hide_table_column", - 0, TQT_TQOBJECT(view), TQT_SLOT( hideColumn() ), ac, "hideColumn" ); - actions->hideColumn->setToolTip(i18n("Hide the column from view.")); - - actions->showColumn = new TDEAction( i18n("Show Columns..."), "show_table_column", - 0, TQT_TQOBJECT(view), TQT_SLOT( showColumn() ), ac, "showColumn" ); - actions->showColumn->setToolTip(i18n("Show hidden columns.")); - - actions->equalizeColumn = new TDEAction( i18n("Equalize Column"), "adjustcol", - 0, TQT_TQOBJECT(view), TQT_SLOT( equalizeColumn() ), ac, "equalizeCol" ); - actions->equalizeColumn->setToolTip(i18n("Resizes selected columns to be the same size.")); - - actions->showSelColumns = new TDEAction( i18n("Show Columns"), "show_sheet_column", - 0, TQT_TQOBJECT(view), TQT_SLOT( showSelColumns() ), ac, "showSelColumns" ); - actions->showSelColumns->setToolTip(i18n("Show hidden columns in the selection.")); - actions->showSelColumns->setEnabled(false); - - actions->resizeRow = new TDEAction( i18n("Resize Row..."), "resizerow", - 0, TQT_TQOBJECT(view), TQT_SLOT( resizeRow() ), ac, "resizeRow" ); - actions->resizeRow->setToolTip(i18n("Change the height of a row.")); - - actions->insertRow = new TDEAction( i18n("Insert Rows"), "insert_table_row", - 0, TQT_TQOBJECT(view), TQT_SLOT( insertRow() ), ac, "insertRow" ); - actions->insertRow->setToolTip(i18n("Inserts a new row into the spreadsheet.")); - - actions->deleteRow = new TDEAction( i18n("Delete Rows"), "delete_table_row", - 0, TQT_TQOBJECT(view), TQT_SLOT( deleteRow() ), ac, "deleteRow" ); - actions->deleteRow->setToolTip(i18n("Removes a row from the spreadsheet.")); - - actions->hideRow = new TDEAction( i18n("Hide Rows"), "hide_table_row", - 0, TQT_TQOBJECT(view), TQT_SLOT( hideRow() ), ac, "hideRow" ); - actions->hideRow->setToolTip(i18n("Hide a row from view.")); - - actions->showRow = new TDEAction( i18n("Show Rows..."), "show_table_row", - 0, TQT_TQOBJECT(view), TQT_SLOT( showRow() ), ac, "showRow" ); - actions->showRow->setToolTip(i18n("Show hidden rows.")); - - actions->equalizeRow = new TDEAction( i18n("Equalize Row"), "adjustrow", - 0, TQT_TQOBJECT(view), TQT_SLOT( equalizeRow() ), ac, "equalizeRow" ); - actions->equalizeRow->setToolTip(i18n("Resizes selected rows to be the same size.")); - - actions->showSelRows = new TDEAction( i18n("Show Rows"), "show_table_row", - 0, TQT_TQOBJECT(view), TQT_SLOT( showSelRows() ), ac, "showSelRows" ); - actions->showSelRows->setEnabled(false); - actions->showSelRows->setToolTip(i18n("Show hidden rows in the selection.")); - - actions->adjust = new TDEAction( i18n("Adjust Row && Column"), - 0, TQT_TQOBJECT(view), TQT_SLOT( adjust() ), ac, "adjust" ); - actions->adjust->setToolTip(i18n("Adjusts row/column size so that the contents will fit.")); - - // -- sheet/workbook actions -- - actions->sheetProperties = new TDEAction( i18n("Sheet Properties"), - 0, TQT_TQOBJECT(view), TQT_SLOT( sheetProperties() ), ac, "sheetProperties" ); - actions->sheetProperties->setToolTip(i18n("Modify current sheet's properties.")); - - actions->insertSheet = new TDEAction( i18n("Insert Sheet"),"inserttable", - 0, TQT_TQOBJECT(view), TQT_SLOT( insertSheet() ), ac, "insertSheet" ); - actions->insertSheet->setToolTip(i18n("Insert a new sheet.")); - - // same action as insertSheet, but without 'insert' in the caption - actions->menuInsertSheet = new TDEAction( i18n("&Sheet"),"inserttable", - 0, TQT_TQOBJECT(view), TQT_SLOT( insertSheet() ), ac, "menuInsertSheet" ); - actions->menuInsertSheet->setToolTip(i18n("Insert a new sheet.")); - - actions->removeSheet = new TDEAction( i18n("Remove Sheet"), "delete_table", - 0, TQT_TQOBJECT(view), TQT_SLOT( removeSheet() ), ac, "removeSheet" ); - actions->removeSheet->setToolTip(i18n("Remove the active sheet.")); - - actions->renameSheet=new TDEAction( i18n("Rename Sheet..."), - 0, TQT_TQOBJECT(view), TQT_SLOT( slotRename() ), ac, "renameSheet" ); - actions->renameSheet->setToolTip(i18n("Rename the active sheet.")); - - actions->showSheet = new TDEAction(i18n("Show Sheet..."), - 0, TQT_TQOBJECT(view), TQT_SLOT( showSheet()), ac, "showSheet" ); - actions->showSheet->setToolTip(i18n("Show a hidden sheet.")); - - actions->hideSheet = new TDEAction(i18n("Hide Sheet"), - 0, TQT_TQOBJECT(view), TQT_SLOT( hideSheet() ), ac, "hideSheet" ); - actions->hideSheet->setToolTip(i18n("Hide the active sheet.")); - - actions->autoFormat = new TDEAction( i18n("AutoFormat..."), - 0, TQT_TQOBJECT(view), TQT_SLOT( sheetFormat() ), ac, "sheetFormat" ); - actions->autoFormat->setToolTip(i18n("Set the worksheet formatting.")); - - actions->areaName = new TDEAction( i18n("Area Name..."), - 0, TQT_TQOBJECT(view), TQT_SLOT( setAreaName() ), ac, "areaname" ); - actions->areaName->setToolTip(i18n("Set a name for a region of the spreadsheet.")); - - actions->showArea = new TDEAction( i18n("Show Area..."), - 0, TQT_TQOBJECT(view), TQT_SLOT( showAreaName() ), ac, "showArea" ); - actions->showArea->setToolTip(i18n("Display a named area.")); - - actions->insertFunction = new TDEAction( i18n("&Function..."), "funct", - 0, TQT_TQOBJECT(view), TQT_SLOT( insertMathExpr() ), ac, "insertMathExpr" ); - actions->insertFunction->setToolTip(i18n("Insert math expression.")); - - actions->insertSeries = new TDEAction( i18n("&Series..."),"series", - 0, TQT_TQOBJECT(view), TQT_SLOT( insertSeries() ), ac, "series"); - actions->insertSeries ->setToolTip(i18n("Insert a series.")); - - actions->insertLink = new TDEAction( i18n("&Link..."), "insert_link", - 0, TQT_TQOBJECT(view), TQT_SLOT( insertHyperlink() ), ac, "insertHyperlink" ); - actions->insertLink->setToolTip(i18n("Insert an Internet hyperlink.")); - - actions->removeLink = new TDEAction( i18n("&Remove Link"), - 0, TQT_TQOBJECT(view), TQT_SLOT( removeHyperlink() ), ac, "removeHyperlink" ); - actions->removeLink->setToolTip(i18n("Remove a link.")); - - actions->insertSpecialChar = new TDEAction( i18n( "S&pecial Character..." ), "char", - TQT_TQOBJECT(view), TQT_SLOT( insertSpecialChar() ), ac, "insertSpecialChar" ); - actions->insertSpecialChar->setToolTip( i18n( "Insert one or more symbols or letters not found on the keyboard." ) ); - - actions->insertPart = new KoPartSelectAction( i18n("&Object"), "frame_query", - TQT_TQOBJECT(view), TQT_SLOT( insertObject() ), ac, "insertPart"); - actions->insertPart->setToolTip(i18n("Insert an object from another program.")); - - actions->insertChartFrame = new TDEToggleAction( i18n("&Chart"), "insert_chart", - 0, TQT_TQOBJECT(view), TQT_SLOT( insertChart() ), ac, "insertChart" ); - actions->insertChartFrame->setToolTip(i18n("Insert a chart.")); - - actions->insertPicture = new TDEAction( i18n("&Picture"), - 0, TQT_TQOBJECT(view), TQT_SLOT( insertPicture() ), ac, "insertPicture" ); - actions->insertPicture->setToolTip(i18n("Insert a picture.")); - -#ifndef TQT_NO_SQL - actions->insertFromDatabase = new TDEAction( i18n("From &Database..."), - 0, TQT_TQOBJECT(view), TQT_SLOT( insertFromDatabase() ), ac, "insertFromDatabase"); - actions->insertFromDatabase->setToolTip(i18n("Insert data from a SQL database.")); -#endif - - actions->insertFromTextfile = new TDEAction( i18n("From &Text File..."), - 0, TQT_TQOBJECT(view), TQT_SLOT( insertFromTextfile() ), ac, "insertFromTextfile"); - actions->insertFromTextfile->setToolTip(i18n("Insert data from a text file to the current cursor position/selection.")); - - actions->insertFromClipboard = new TDEAction( i18n("From &Clipboard..."), - 0, TQT_TQOBJECT(view), TQT_SLOT( insertFromClipboard() ), ac, "insertFromClipboard"); - actions->insertFromClipboard->setToolTip(i18n("Insert CSV data from the clipboard to the current cursor position/selection.")); - -// actions->transform = new TDEAction( i18n("Transform Object..."), "rotate", -// 0, TQT_TQOBJECT(view), TQT_SLOT( transformPart() ), ac, "transform" ); -// actions->transform->setToolTip(i18n("Rotate the contents of the cell.")); -// actions->transform->setEnabled( false ); - - actions->sort = new TDEAction( i18n("&Sort..."), - 0, TQT_TQOBJECT(view), TQT_SLOT( sort() ), ac, "sort" ); - actions->sort->setToolTip(i18n("Sort a group of cells.")); - - actions->sortDec = new TDEAction( i18n("Sort &Decreasing"), "sort_decrease", - 0, TQT_TQOBJECT(view), TQT_SLOT( sortDec() ), ac, "sortDec" ); - actions->sortDec->setToolTip(i18n("Sort a group of cells in decreasing (last to first) order.")); - - actions->sortInc = new TDEAction( i18n("Sort &Increasing"), "sort_incr", - 0, TQT_TQOBJECT(view), TQT_SLOT( sortInc() ), ac, "sortInc" ); - actions->sortInc->setToolTip(i18n("Sort a group of cells in ascending (first to last) order.")); - - actions->paperLayout = new TDEAction( i18n("Page Layout..."), - 0, TQT_TQOBJECT(view), TQT_SLOT( paperLayoutDlg() ), ac, "paperLayout" ); - actions->paperLayout->setToolTip(i18n("Specify the layout of the spreadsheet for a printout.")); - - actions->definePrintRange = new TDEAction( i18n("Define Print Range"), - 0, TQT_TQOBJECT(view), TQT_SLOT( definePrintRange() ), ac, "definePrintRange" ); - actions->definePrintRange->setToolTip(i18n("Define the print range in the current sheet.")); - - actions->resetPrintRange = new TDEAction( i18n("Reset Print Range"), - 0, TQT_TQOBJECT(view), TQT_SLOT( resetPrintRange() ), ac, "resetPrintRange" ); - actions->definePrintRange->setToolTip(i18n("Define the print range in the current sheet.")); - - actions->showPageBorders = new TDEToggleAction( i18n("Show Page Borders"), - 0, ac, "showPageBorders"); - actions->showPageBorders->setCheckedState(i18n("Hide Page Borders")); - TQT_BASE_OBJECT_NAME::connect( actions->showPageBorders, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( togglePageBorders( bool ) ) ); - actions->showPageBorders->setToolTip( i18n( "Show on the spreadsheet where the page borders will be." ) ); - - actions->recalcWorksheet = new TDEAction( i18n("Recalculate Sheet"), - TQt::SHIFT + TQt::Key_F9, TQT_TQOBJECT(view), TQT_SLOT( recalcWorkSheet() ), ac, "RecalcWorkSheet" ); - actions->recalcWorksheet->setToolTip(i18n("Recalculate the value of every cell in the current worksheet.")); - - actions->recalcWorkbook = new TDEAction( i18n("Recalculate Document"), - TQt::Key_F9, TQT_TQOBJECT(view), TQT_SLOT( recalcWorkBook() ), ac, "RecalcWorkBook" ); - actions->recalcWorkbook->setToolTip(i18n("Recalculate the value of every cell in all worksheets.")); - - actions->protectSheet = new TDEToggleAction( i18n( "Protect &Sheet..." ), - 0, ac, "protectSheet" ); - actions->protectSheet->setToolTip( i18n( "Protect the sheet from being modified." ) ); - TQT_BASE_OBJECT_NAME::connect( actions->protectSheet, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( toggleProtectSheet( bool ) ) ); - - actions->protectDoc = new TDEToggleAction( i18n( "Protect &Document..." ), - 0, ac, "protectDoc" ); - actions->protectDoc->setToolTip( i18n( "Protect the document from being modified." ) ); - TQT_BASE_OBJECT_NAME::connect( actions->protectDoc, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( toggleProtectDoc( bool ) ) ); - - // -- editing actions -- - - actions->copy = KStdAction::copy( TQT_TQOBJECT(view), TQT_SLOT( copySelection() ), ac, "copy" ); - actions->copy->setToolTip(i18n("Copy the cell object to the clipboard.")); - - actions->paste = KStdAction::paste( TQT_TQOBJECT(view), TQT_SLOT( paste() ), ac, "paste" ); - actions->paste->setToolTip(i18n("Paste the contents of the clipboard at the cursor.")); - - actions->cut = KStdAction::cut( TQT_TQOBJECT(view), TQT_SLOT( cutSelection() ), ac, "cut" ); - actions->cut->setToolTip(i18n("Move the cell object to the clipboard.")); - - actions->specialPaste = new TDEAction( i18n("Special Paste..."), "special_paste", - 0, TQT_TQOBJECT(view), TQT_SLOT( specialPaste() ), ac, "specialPaste" ); - actions->specialPaste->setToolTip(i18n("Paste the contents of the clipboard with special options.")); - - actions->insertCellCopy = new TDEAction( i18n("Paste with Insertion"), "insertcellcopy", - 0, TQT_TQOBJECT(view), TQT_SLOT( slotInsertCellCopy() ), ac, "insertCellCopy" ); - actions->insertCellCopy->setToolTip(i18n("Inserts a cell from the clipboard into the spreadsheet.")); - - actions->find = KStdAction::find( TQT_TQOBJECT(view), TQT_SLOT(find()), ac ); - /*actions->findNext =*/ KStdAction::findNext( TQT_TQOBJECT(view), TQT_SLOT( findNext() ), ac ); - /*actions->findPrevious =*/ KStdAction::findPrev( TQT_TQOBJECT(view), TQT_SLOT( findPrevious() ), ac ); - - actions->replace = KStdAction::replace( TQT_TQOBJECT(view), TQT_SLOT(replace()), ac ); - - actions->fillRight = new TDEAction( i18n( "&Right" ), 0, - 0, TQT_TQOBJECT(view), TQT_SLOT( fillRight() ), ac, "fillRight" ); - - actions->fillLeft = new TDEAction( i18n( "&Left" ), 0, - 0, TQT_TQOBJECT(view), TQT_SLOT( fillLeft() ), ac, "fillLeft" ); - - actions->fillDown = new TDEAction( i18n( "&Down" ), 0, - 0, TQT_TQOBJECT(view), TQT_SLOT( fillDown() ), ac, "fillDown" ); - - actions->fillUp = new TDEAction( i18n( "&Up" ), 0, - 0, TQT_TQOBJECT(view), TQT_SLOT( fillUp() ), ac, "fillUp" ); - - // -- misc actions -- - - actions->styleDialog = new TDEAction( i18n( "Style Manager" ), - 0, TQT_TQOBJECT(view), TQT_SLOT( styleDialog() ), ac, "styles" ); - actions->styleDialog->setToolTip( i18n( "Edit and organize cell styles." ) ); - - actions->autoSum = new TDEAction( i18n("Autosum"), "black_sum", - 0, TQT_TQOBJECT(view), TQT_SLOT( autoSum() ), ac, "autoSum" ); - actions->autoSum->setToolTip(i18n("Insert the 'sum' function")); - - actions->spellChecking = KStdAction::spelling( TQT_TQOBJECT(view), TQT_SLOT( extraSpelling() ), - ac, "spelling" ); - actions->spellChecking->setToolTip(i18n("Check the spelling.")); - - actions->formulaSelection = new TDESelectAction(i18n("Formula Selection"), - 0, ac, "formulaSelection"); - actions->formulaSelection->setToolTip(i18n("Insert a function.")); - TQStringList lst; - lst.append( "SUM"); - lst.append( "AVERAGE"); - lst.append( "IF"); - lst.append( "COUNT"); - lst.append( "MIN"); - lst.append( "MAX"); - lst.append( i18n("Others...") ); - ((TDESelectAction*) actions->formulaSelection)->setItems( lst ); - actions->formulaSelection->setComboWidth( 80 ); - actions->formulaSelection->setCurrentItem(0); - TQT_BASE_OBJECT_NAME::connect( actions->formulaSelection, TQT_SIGNAL( activated( const TQString& ) ), - TQT_TQOBJECT(view), TQT_SLOT( formulaSelection( const TQString& ) ) ); - - actions->viewZoom = new KoZoomAction( i18n( "Zoom" ), "viewmag", 0, ac, "view_zoom" ); - TQT_BASE_OBJECT_NAME::connect( actions->viewZoom, TQT_SIGNAL( zoomChanged( const TQString & ) ), - TQT_TQOBJECT(view), TQT_SLOT( viewZoom( const TQString & ) ) ); - - actions->consolidate = new TDEAction( i18n("&Consolidate..."), - 0, TQT_TQOBJECT(view), TQT_SLOT( consolidate() ), ac, "consolidate" ); - actions->consolidate->setToolTip(i18n("Create a region of summary data from a group of similar regions.")); - - actions->goalSeek = new TDEAction( i18n("&Goal Seek..."), - 0, TQT_TQOBJECT(view), TQT_SLOT( goalSeek() ), ac, "goalSeek" ); - actions->goalSeek->setToolTip( i18n("Repeating calculation to find a specific value.") ); - - actions->subTotals = new TDEAction( i18n("&Subtotals..."), - 0, TQT_TQOBJECT(view), TQT_SLOT( subtotals() ), ac, "subtotals" ); - actions->subTotals->setToolTip( i18n("Create different kind of subtotals to a list or database.") ); - - actions->textToColumns = new TDEAction( i18n("&Text to Columns..."), - 0, TQT_TQOBJECT(view), TQT_SLOT( textToColumns() ), ac, "textToColumns" ); - actions->textToColumns->setToolTip( i18n("Expand the content of cells to multiple columns.") ); - - actions->multipleOperations = new TDEAction( i18n("&Multiple Operations..."), - 0, TQT_TQOBJECT(view), TQT_SLOT( multipleOperations() ), ac, "multipleOperations" ); - actions->multipleOperations->setToolTip( i18n("Apply the same formula to various cells using different values for the parameter.") ); - - actions->createTemplate = new TDEAction( i18n( "&Create Template From Document..." ), - 0, TQT_TQOBJECT(view), TQT_SLOT( createTemplate() ), ac, "createTemplate" ); - - actions->customList = new TDEAction( i18n("Custom Lists..."), - 0, TQT_TQOBJECT(view), TQT_SLOT( sortList() ), ac, "sortlist" ); - actions->customList->setToolTip(i18n("Create custom lists for sorting or autofill.")); - - // -- navigation actions -- - - actions->gotoCell = new TDEAction( i18n("Goto Cell..."),"goto", - 0, TQT_TQOBJECT(view), TQT_SLOT( gotoCell() ), ac, "gotoCell" ); - actions->gotoCell->setToolTip(i18n("Move to a particular cell.")); - - actions->nextSheet = new TDEAction( i18n("Next Sheet"), "forward", - TQt::CTRL+TQt::Key_PageDown, TQT_TQOBJECT(view), TQT_SLOT( nextSheet() ), ac, "nextSheet"); - actions->nextSheet->setToolTip(i18n("Move to the next sheet.")); - - actions->prevSheet = new TDEAction( i18n("Previous Sheet"), "back", - TQt::CTRL+TQt::Key_PageUp, TQT_TQOBJECT(view), TQT_SLOT( previousSheet() ), ac, "previousSheet"); - actions->prevSheet->setToolTip(i18n("Move to the previous sheet.")); - - actions->firstSheet = new TDEAction( i18n("First Sheet"), "go-first", - 0, TQT_TQOBJECT(view), TQT_SLOT( firstSheet() ), ac, "firstSheet"); - actions->firstSheet->setToolTip(i18n("Move to the first sheet.")); - - actions->lastSheet = new TDEAction( i18n("Last Sheet"), "go-last", - 0, TQT_TQOBJECT(view), TQT_SLOT( lastSheet() ), ac, "lastSheet"); - actions->lastSheet->setToolTip(i18n("Move to the last sheet.")); - - // -- settings actions -- - - actions->showStatusBar = new TDEToggleAction( i18n("Show Status Bar"), - 0, ac, "showStatusBar" ); - actions->showStatusBar->setCheckedState(i18n("Hide Status Bar")); - TQT_BASE_OBJECT_NAME::connect( actions->showStatusBar, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( showStatusBar( bool ) ) ); - actions->showStatusBar->setToolTip(i18n("Show the status bar.")); - - actions->showTabBar = new TDEToggleAction( i18n("Show Tab Bar"), - 0, ac, "showTabBar" ); - actions->showTabBar->setCheckedState(i18n("Hide Tab Bar")); - TQT_BASE_OBJECT_NAME::connect( actions->showTabBar, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( showTabBar( bool ) ) ); - actions->showTabBar->setToolTip(i18n("Show the tab bar.")); - - actions->showFormulaBar = new TDEToggleAction( i18n("Show Formula Bar"), - 0, ac, "showFormulaBar" ); - actions->showFormulaBar->setCheckedState(i18n("Hide Formula Bar")); - TQT_BASE_OBJECT_NAME::connect( actions->showFormulaBar, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( showFormulaBar( bool ) ) ); - actions->showFormulaBar->setToolTip(i18n("Show the formula bar.")); - - actions->preference = new TDEAction( i18n("Configure KSpread..."),"configure", - 0, TQT_TQOBJECT(view), TQT_SLOT( preference() ), ac, "preference" ); - actions->preference->setToolTip(i18n("Set various KSpread options.")); - - // -- running calculation actions -- - - actions->calcNone = new TDEToggleAction( i18n("None"), 0, ac, "menu_none"); - TQT_BASE_OBJECT_NAME::connect( actions->calcNone, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( menuCalc( bool ) ) ); - actions->calcNone->setExclusiveGroup( "Calc" ); - actions->calcNone->setToolTip(i18n("No calculation")); - - actions->calcSum = new TDEToggleAction( i18n("Sum"), 0, ac, "menu_sum"); - TQT_BASE_OBJECT_NAME::connect( actions->calcSum, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( menuCalc( bool ) ) ); - actions->calcSum->setExclusiveGroup( "Calc" ); - actions->calcSum->setToolTip(i18n("Calculate using sum.")); - - actions->calcMin = new TDEToggleAction( i18n("Min"), 0, ac, "menu_min"); - TQT_BASE_OBJECT_NAME::connect( actions->calcMin, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( menuCalc( bool ) ) ); - actions->calcMin->setExclusiveGroup( "Calc" ); - actions->calcMin->setToolTip(i18n("Calculate using minimum.")); - - actions->calcMax = new TDEToggleAction( i18n("Max"), 0, ac, "menu_max"); - TQT_BASE_OBJECT_NAME::connect( actions->calcMax, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( menuCalc( bool ) ) ); - actions->calcMax->setExclusiveGroup( "Calc" ); - actions->calcMax->setToolTip(i18n("Calculate using maximum.")); - - actions->calcAverage = new TDEToggleAction( i18n("Average"), 0, ac, "menu_average"); - TQT_BASE_OBJECT_NAME::connect( actions->calcAverage, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( menuCalc( bool ) ) ); - actions->calcAverage->setExclusiveGroup( "Calc" ); - actions->calcAverage->setToolTip(i18n("Calculate using average.")); - - actions->calcCount = new TDEToggleAction( i18n("Count"), 0, ac, "menu_count"); - TQT_BASE_OBJECT_NAME::connect( actions->calcCount, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( menuCalc( bool ) ) ); - actions->calcCount->setExclusiveGroup( "Calc" ); - actions->calcCount->setToolTip(i18n("Calculate using the count.")); - - actions->calcCountA = new TDEToggleAction( i18n("CountA"), 0, ac, "menu_counta"); - TQT_BASE_OBJECT_NAME::connect( actions->calcCountA, TQT_SIGNAL( toggled( bool ) ), - TQT_TQOBJECT(view), TQT_SLOT( menuCalc( bool ) ) ); - actions->calcCountA->setExclusiveGroup( "Calc" ); - actions->calcCountA->setToolTip(i18n("Calculate using the countA.")); - - // -- special action, only for developers -- - - actions->internalTests = new TDEAction( i18n("Run Internal Tests..."), "internalTests", - TQt::CTRL+ TQt::SHIFT + TQt::Key_T, TQT_TQOBJECT(view), TQT_SLOT( runInternalTests() ), ac, "internalTests" ); - actions->inspector = new TDEAction( i18n("Run Inspector..."), "inspector", - TQt::CTRL+ TQt::SHIFT + TQt::Key_I, TQT_TQOBJECT(view), TQT_SLOT( runInspector() ), ac, "inspector" ); - - m_propertyEditor = 0; -} - -void View::Private::adjustActions( bool mode ) -{ - actions->replace->setEnabled( mode ); - actions->insertSeries->setEnabled( mode ); - actions->insertLink->setEnabled( mode ); - actions->insertSpecialChar->setEnabled( mode ); - actions->insertFunction->setEnabled( mode ); - actions->removeComment->setEnabled( mode ); - actions->decreaseIndent->setEnabled( mode ); - actions->bold->setEnabled( mode ); - actions->italic->setEnabled( mode ); - actions->underline->setEnabled( mode ); - actions->strikeOut->setEnabled( mode ); - actions->percent->setEnabled( mode ); - actions->precplus->setEnabled( mode ); - actions->precminus->setEnabled( mode ); - actions->money->setEnabled( mode ); - actions->alignLeft->setEnabled( mode ); - actions->alignCenter->setEnabled( mode ); - actions->alignRight->setEnabled( mode ); - actions->alignTop->setEnabled( mode ); - actions->alignMiddle->setEnabled( mode ); - actions->alignBottom->setEnabled( mode ); - actions->paste->setEnabled( mode ); - actions->cut->setEnabled( mode ); - actions->specialPaste->setEnabled( mode ); - actions->deleteCell->setEnabled( mode ); - actions->clearText->setEnabled( mode ); - actions->clearComment->setEnabled( mode ); - actions->clearValidity->setEnabled( mode ); - actions->clearConditional->setEnabled( mode ); - actions->recalcWorkbook->setEnabled( mode ); - actions->recalcWorksheet->setEnabled( mode ); - actions->adjust->setEnabled( mode ); - actions->editCell->setEnabled( mode ); - actions->paperLayout->setEnabled( mode ); - actions->styleDialog->setEnabled( mode ); - actions->definePrintRange->setEnabled( mode ); - actions->resetPrintRange->setEnabled( mode ); - actions->insertFromDatabase->setEnabled( mode ); - actions->insertFromTextfile->setEnabled( mode ); - actions->insertFromClipboard->setEnabled( mode ); - actions->conditional->setEnabled( mode ); - actions->validity->setEnabled( mode ); - actions->goalSeek->setEnabled( mode ); - actions->subTotals->setEnabled( mode ); - actions->multipleOperations->setEnabled( mode ); - actions->textToColumns->setEnabled( mode ); - actions->consolidate->setEnabled( mode ); - actions->insertCellCopy->setEnabled( mode ); - actions->wrapText->setEnabled( mode ); - actions->selectFont->setEnabled( mode ); - actions->selectFontSize->setEnabled( mode ); - actions->deleteColumn->setEnabled( mode ); - actions->hideColumn->setEnabled( mode ); - actions->showColumn->setEnabled( mode ); - actions->showSelColumns->setEnabled( mode ); - actions->insertColumn->setEnabled( mode ); - actions->deleteRow->setEnabled( mode ); - actions->insertRow->setEnabled( mode ); - actions->hideRow->setEnabled( mode ); - actions->showRow->setEnabled( mode ); - actions->showSelRows->setEnabled( mode ); - actions->formulaSelection->setEnabled( mode ); - actions->textColor->setEnabled( mode ); - actions->bgColor->setEnabled( mode ); - actions->cellLayout->setEnabled( mode ); - actions->borderLeft->setEnabled( mode ); - actions->borderRight->setEnabled( mode ); - actions->borderTop->setEnabled( mode ); - actions->borderBottom->setEnabled( mode ); - actions->borderAll->setEnabled( mode ); - actions->borderOutline->setEnabled( mode ); - actions->borderRemove->setEnabled( mode ); - actions->borderColor->setEnabled( mode ); - actions->removeSheet->setEnabled( mode ); - actions->autoSum->setEnabled( mode ); - actions->defaultFormat->setEnabled( mode ); - actions->areaName->setEnabled( mode ); - actions->resizeRow->setEnabled( mode ); - actions->resizeColumn->setEnabled( mode ); - actions->fontSizeUp->setEnabled( mode ); - actions->fontSizeDown->setEnabled( mode ); - actions->upper->setEnabled( mode ); - actions->lower->setEnabled( mode ); - actions->equalizeRow->setEnabled( mode ); - actions->equalizeColumn->setEnabled( mode ); - actions->verticalText->setEnabled( mode ); - actions->addModifyComment->setEnabled( mode ); - actions->removeComment->setEnabled( mode ); - actions->insertCell->setEnabled( mode ); - actions->removeCell->setEnabled( mode ); - actions->changeAngle->setEnabled( mode ); - actions->dissociateCell->setEnabled( mode ); - actions->increaseIndent->setEnabled( mode ); - actions->decreaseIndent->setEnabled( mode ); - actions->spellChecking->setEnabled( mode ); - actions->calcMin->setEnabled( mode ); - actions->calcMax->setEnabled( mode ); - actions->calcAverage->setEnabled( mode ); - actions->calcCount->setEnabled( mode ); - actions->calcCountA->setEnabled( mode ); - actions->calcSum->setEnabled( mode ); - actions->calcNone->setEnabled( mode ); - actions->insertPart->setEnabled( mode ); - actions->createStyle->setEnabled( mode ); - actions->selectStyle->setEnabled( mode ); - actions->insertChartFrame->setEnabled( mode ); - - actions->autoFormat->setEnabled( false ); - actions->sort->setEnabled( false ); - actions->mergeCell->setEnabled( false ); - actions->mergeCellHorizontal->setEnabled( false ); - actions->mergeCellVertical->setEnabled( false ); - actions->sortDec->setEnabled( false ); - actions->sortInc->setEnabled( false ); -// actions->transform->setEnabled( false ); - - actions->fillRight->setEnabled( false ); - actions->fillLeft->setEnabled( false ); - actions->fillUp->setEnabled( false ); - actions->fillDown->setEnabled( false ); - - if ( mode && !view->doc()->map()->isProtected() ) - actions->renameSheet->setEnabled( true ); - else - actions->renameSheet->setEnabled( false ); - - actions->showStatusBar->setChecked( view->doc()->showStatusBar() ); - actions->showTabBar->setChecked( view->doc()->showTabBar() ); - actions->showFormulaBar->setChecked( view->doc()->showFormulaBar() ); - - formulaButton->setEnabled( mode ); - - if ( activeSheet ) - { - selection->update(); - view->objectSelectedChanged(); - } -} - -void View::Private::adjustActions( Sheet* sheet, Cell* cell ) -{ - if ( sheet->isProtected() && !cell->isDefault() && cell->format()->notProtected( cell->column(), cell->row() ) ) - { - if ( selection->isSingular() ) - { - if ( !actions->bold->isEnabled() ) - adjustActions( true ); - } - else - { - if ( actions->bold->isEnabled() ) - adjustActions( false ); - } - } - else if ( sheet->isProtected() ) - { - if ( actions->bold->isEnabled() ) - adjustActions( false ); - } -} - -void View::Private::adjustWorkbookActions( bool mode ) -{ - tabBar->setReadOnly( !view->doc()->isReadWrite() || view->doc()->map()->isProtected() ); - - actions->hideSheet->setEnabled( mode ); - actions->showSheet->setEnabled( mode ); - actions->insertSheet->setEnabled( mode ); - actions->menuInsertSheet->setEnabled( mode ); - actions->removeSheet->setEnabled( mode ); - - if ( mode ) - { - if ( activeSheet && !activeSheet->isProtected() ) - { - bool state = ( view->doc()->map()->visibleSheets().count() > 1 ); - actions->removeSheet->setEnabled( state ); - actions->hideSheet->setEnabled( state ); - } - actions->showSheet->setEnabled( view->doc()->map()->hiddenSheets().count() > 0 ); - actions->renameSheet->setEnabled( activeSheet && !activeSheet->isProtected() ); - } -} - -// TODO this should be merged with adjustActions -void View::Private::updateButton( Cell *cell, int column, int row) -{ - toolbarLock = true; - - // workaround for bug #59291 (crash upon starting from template) - // certain TQt and Fontconfig combination fail miserably if can not - // find the font name (e.g. not installed in the system) - TQStringList fontList; - TDEFontChooser::getFontList( fontList, 0 ); - TQString fontFamily = cell->format()->textFontFamily( column,row ); - for ( TQStringList::Iterator it = fontList.begin(); it != fontList.end(); ++it ) - if ((*it).lower() == fontFamily.lower()) - { - actions->selectFont->setFont( fontFamily ); - break; - } - - actions->selectFontSize->setFontSize( cell->format()->textFontSize( column, row ) ); - actions->bold->setChecked( cell->format()->textFontBold( column, row ) ); - actions->italic->setChecked( cell->format()->textFontItalic( column, row) ); - actions->underline->setChecked( cell->format()->textFontUnderline( column, row ) ); - actions->strikeOut->setChecked( cell->format()->textFontStrike( column, row ) ); - - actions->alignLeft->setChecked( cell->format()->align( column, row ) == Format::Left ); - actions->alignCenter->setChecked( cell->format()->align( column, row ) == Format::Center ); - actions->alignRight->setChecked( cell->format()->align( column, row ) == Format::Right ); - - actions->alignTop->setChecked( cell->format()->alignY( column, row ) == Format::Top ); - actions->alignMiddle->setChecked( cell->format()->alignY( column, row ) == Format::Middle ); - actions->alignBottom->setChecked( cell->format()->alignY( column, row ) == Format::Bottom ); - - actions->verticalText->setChecked( cell->format()->verticalText( column,row ) ); - - actions->wrapText->setChecked( cell->format()->multiRow( column,row ) ); - - FormatType ft = cell->formatType(); - actions->percent->setChecked( ft == Percentage_format ); - actions->money->setChecked( ft == Money_format ); - - if ( activeSheet && !activeSheet->isProtected() ) - actions->removeComment->setEnabled( !cell->format()->comment(column,row).isEmpty() ); - - if ( activeSheet && !activeSheet->isProtected() ) - actions->decreaseIndent->setEnabled( cell->format()->getIndent( column, row ) > 0.0 ); - - toolbarLock = false; - if ( activeSheet ) - adjustActions( activeSheet, cell ); -} - -TQButton* View::Private::newIconButton( const char *_file, bool _kbutton, TQWidget *_parent ) -{ - if ( _parent == 0L ) - _parent = view; - - if ( !_kbutton ) { - TQPushButton* pb = new TQPushButton( _parent ); - pb->setIconSet( SmallIconSet(_file) ); - return pb; - } else { - TQToolButton* pb = new TQToolButton( _parent ); - pb->setIconSet( SmallIconSet(_file) ); - return pb; - } -} - -KPSheetSelectPage::KPSheetSelectPage( TQWidget *parent ) -: KPrintDialogPage(parent), - gui(new SheetSelectWidget(this)) -{ - setTitle(gui->caption()); - - //disabling automated sorting - gui->ListViewAvailable->setSorting(-1); - gui->ListViewSelected->setSorting(-1); - - //connect buttons - connect(gui->ButtonSelectAll,TQT_SIGNAL(clicked()),this,TQT_SLOT(selectAll())); - connect(gui->ButtonSelect,TQT_SIGNAL(clicked()),this,TQT_SLOT(select())); - connect(gui->ButtonRemove,TQT_SIGNAL(clicked()),this,TQT_SLOT(remove())); - connect(gui->ButtonRemoveAll,TQT_SIGNAL(clicked()),this,TQT_SLOT(removeAll())); - - connect(gui->ButtonMoveTop,TQT_SIGNAL(clicked()),this,TQT_SLOT(moveTop())); - connect(gui->ButtonMoveUp,TQT_SIGNAL(clicked()),this,TQT_SLOT(moveUp())); - connect(gui->ButtonMoveDown,TQT_SIGNAL(clicked()),this,TQT_SLOT(moveDown())); - connect(gui->ButtonMoveBottom,TQT_SIGNAL(clicked()),this,TQT_SLOT(moveBottom())); -} - -// KPSheetSelectPage::~KPSheetSelectPage() -// { -// } - -void KPSheetSelectPage::getOptions( TQMap<TQString,TQString>& opts, bool /*incldef*/ ) -{ - TQStringList sheetlist = this->selectedSheets(); - TQStringList::iterator it; - unsigned int i = 0; - for (it = sheetlist.begin(); it != sheetlist.end(); ++it, i++) - { - opts.insert(printOptionForIndex(i),*it); - } -} - -void KPSheetSelectPage::setOptions( const TQMap<TQString,TQString>& opts ) -{ - unsigned int i = 0; - TQStringList sheetlist; - while (opts.contains(printOptionForIndex(i))) - { - sheetlist.prepend(opts[printOptionForIndex(i++)]); - } - - TQStringList::iterator it; - for (it = sheetlist.begin(); it != sheetlist.end(); ++it) - { - kdDebug() << " adding sheet to list of printed sheets: " << *it << endl; - this->prependSelectedSheet(*it); - } -} - -bool KPSheetSelectPage::isValid(TQString& /*msg*/) -{ - // we print the activeSheet() by default if no sheet is selected, - // so we return true in any case - -// Q_ASSERT(gui); -// if (gui->ListViewSelected->childCount() < 1) -// { -// msg = i18n("No sheets selected for printing!"); -// return false; -// } - return true; -} - -TQString KPSheetSelectPage::printOptionForIndex(unsigned int index) -{ - return TQString("sheetprintorder%1").arg(index); -} - -void KPSheetSelectPage::prependAvailableSheet(const TQString& sheetname) -{ - Q_ASSERT(gui); - new TQListViewItem(gui->ListViewAvailable,sheetname); -} - -void KPSheetSelectPage::prependSelectedSheet(const TQString& sheetname) -{ - Q_ASSERT(gui); - new TQListViewItem(gui->ListViewSelected,sheetname); -} - -TQStringList KPSheetSelectPage::selectedSheets() -{ - Q_ASSERT(gui); - TQStringList list; - TQListViewItem* item = gui->ListViewSelected->firstChild(); - while (item) - { - list.append(item->text(0)); - item = item->nextSibling(); - } - return list; -} - -TQStringList KPSheetSelectPage::selectedSheets(KPrinter &prt) -{ - TQStringList list; - unsigned int index; - const TQMap<TQString,TQString>& options = prt.options(); - for (index = 0; options.contains(KPSheetSelectPage::printOptionForIndex(index)); index++) - { - list.append(options[KPSheetSelectPage::printOptionForIndex(index)]); - } - return list; -} - -void KPSheetSelectPage::clearSelection() -{ - gui->ListViewSelected->clear(); -} - -void KPSheetSelectPage::selectAll() -{ - //we have to add all the stuff in reverse order - // because inserted items (prependSelectedSheet) are prepended - TQStringList list; - TQListViewItem* item = gui->ListViewAvailable->firstChild(); - while (item) - { - list.prepend(item->text(0)); - item = item->nextSibling(); - } - TQStringList::iterator it; - for (it = list.begin(); it != list.end(); ++it) - { - this->prependSelectedSheet(*it); - } -} - -void KPSheetSelectPage::select() -{ - //we have to add all the stuff in reverse order - // because inserted items (prependSelectedSheet) are prepended - TQStringList list; - TQListViewItem* item = gui->ListViewAvailable->firstChild(); - while (item) - { - if (item->isSelected()) - list.prepend(item->text(0)); - item = item->nextSibling(); - } - TQStringList::iterator it; - for (it = list.begin(); it != list.end(); ++it) - { - this->prependSelectedSheet(*it); - } -} - -void KPSheetSelectPage::remove() -{ - TQListViewItem* item = gui->ListViewSelected->firstChild(); - TQListViewItem* nextitem = NULL; - while (item) - { - nextitem = item->nextSibling(); - if (item->isSelected()) - delete item; - item = nextitem; - } -} - -void KPSheetSelectPage::removeAll() -{ - gui->ListViewSelected->clear(); -} - - -void KPSheetSelectPage::moveTop() -{ - //this creates a temporary new list (selected first, then rest) - // which replaces the existing one, to avoid the need of an additional sort column - - TQValueList<TQListViewItem*> newlist; - TQListViewItem* item = gui->ListViewSelected->firstChild(); - TQListViewItem* nextitem = NULL; -// kdDebug() << "Filling new list with selected items first" << endl; - while (item) - { - nextitem = item->nextSibling(); - if (item->isSelected()) - { - newlist.prepend(item); - gui->ListViewSelected->takeItem(item); - } - item = nextitem; - } -// kdDebug() << "Appending the rest" << endl; - item = gui->ListViewSelected->firstChild(); - while (item) - { -// kdDebug() << " processing item " << item->text(0) << endl; - nextitem = item->nextSibling(); - if (!item->isSelected()) - { - newlist.prepend(item); - gui->ListViewSelected->takeItem(item); - } - item = nextitem; - } - -// kdDebug() << "Refill the view with the correctly ordered list" << endl; - //the view is empty now, refill in correct order (reversed!!) - TQValueList<TQListViewItem*>::iterator it; - for (it = newlist.begin(); it != newlist.end(); ++it) - { -// kdDebug() << " adding " << (*it)->text(0) << endl; - gui->ListViewSelected->insertItem(*it); - } -} - -void KPSheetSelectPage::moveUp() -{ - //this creates a temporary new list - // which replaces the existing one, to avoid the need of an additional sort column - - TQValueList<TQListViewItem*> newlist; - TQListViewItem* item = gui->ListViewSelected->firstChild(); - TQListViewItem* nextitem = NULL; - while (item) - { - nextitem = item->nextSibling(); - if (!item->isSelected()) - { - while (nextitem && nextitem->isSelected()) - { - TQListViewItem* nextnextitem = nextitem->nextSibling(); - newlist.prepend(nextitem); - gui->ListViewSelected->takeItem(nextitem); - nextitem = nextnextitem; - } - } - - newlist.prepend(item); - gui->ListViewSelected->takeItem(item); - item = nextitem; - } - -// kdDebug() << "Refill the view with the correctly ordered list" << endl; - //the view is empty now, refill in correct order (reversed!!) - TQValueList<TQListViewItem*>::iterator it; - for (it = newlist.begin(); it != newlist.end(); ++it) - { -// kdDebug() << " adding " << (*it)->text(0) << endl; - gui->ListViewSelected->insertItem(*it); - } -} - -void KPSheetSelectPage::moveDown() -{ - TQListViewItem* item = gui->ListViewSelected->lastItem(); -// while (item) -// { -// nextitem = item->nextSibling(); -// if (previousitem && previousitem->isSelected()) -// { -// previousitem->moveItem(item); -// } -// previousitem = item; -// item = nextitem; -// } - while (item) - { - while (item && !item->isSelected() && item->itemAbove() && item->itemAbove()->isSelected()) - { - TQListViewItem* tempitem = item->itemAbove(); - tempitem->moveItem(item); - } - if (item) - item = item->itemAbove(); - } -} - -void KPSheetSelectPage::moveBottom() -{ - //this creates a temporary new list (unselected first, then rest) - // which replaces the existing one, to avoid the need of an additional sort column - - TQValueList<TQListViewItem*> newlist; - TQListViewItem* item = gui->ListViewSelected->firstChild(); - TQListViewItem* nextitem = NULL; -// kdDebug() << "Filling new list with unselected items first" << endl; - while (item) - { -// kdDebug() << " processing item " << item->text(0) << endl; - nextitem = item->nextSibling(); - if (!item->isSelected()) - { - newlist.prepend(item); - gui->ListViewSelected->takeItem(item); - } - item = nextitem; - } -// kdDebug() << "Appending the rest" << endl; - item = gui->ListViewSelected->firstChild(); - while (item) - { - nextitem = item->nextSibling(); - if (item->isSelected()) - { - newlist.prepend(item); - gui->ListViewSelected->takeItem(item); - } - item = nextitem; - } - -// kdDebug() << "Refill the view with the correctly ordered list" << endl; - //the view is empty now, refill in correct order (reversed!!) - TQValueList<TQListViewItem*>::iterator it; - for (it = newlist.begin(); it != newlist.end(); ++it) - { -// kdDebug() << " adding " << (*it)->text(0) << endl; - gui->ListViewSelected->insertItem(*it); - } -} - - -/***************************************************************************** - * - * View - * - *****************************************************************************/ - -View::View( TQWidget *_parent, const char *_name, - Doc *_doc ) - : KoView( _doc, _parent, _name ) -{ - ElapsedTime et( "View constructor" ); - kdDebug(36001) << "sizeof(Cell)=" << sizeof(Cell) <<endl; - - d = new Private; - d->view = this; - d->doc = _doc; - - d->dcop = 0; - - d->activeSheet = 0; - - d->toolbarLock = false; - d->loading = true; - - d->selection = new Selection( this ); - d->choice = new Selection( this ); - d->choice->setMultipleSelection(true); - connect(d->selection, TQT_SIGNAL(changed(const Region&)), this, TQT_SLOT(slotChangeSelection(const Region&))); - connect(d->choice, TQT_SIGNAL(changed(const Region&)), this, TQT_SLOT(slotChangeChoice(const Region&))); - connect(d->choice, TQT_SIGNAL(changed(const Region&)), this, TQT_SLOT(slotScrollChoice(const Region&))); - - d->findOptions = 0; - d->findLeftColumn = 0; - d->findRightColumn = 0; - d->typeValue = FindOption::Value; - d->directionValue = FindOption::Row; - d->find = 0; - d->replace = 0; - - d->popupMenuFirstToolId = 0; - d->popupMenu = 0; - d->popupColumn = 0; - d->popupRow = 0; - d->popupChild = 0; - d->popupListChoose = 0; - d->popupChildObject = 0; - - d->searchInSheets.currentSheet = 0; - d->searchInSheets.firstSheet = 0; - - // spell-check context - d->spell.tdespell = 0; - d->spell.macroCmdSpellCheck = 0; - d->spell.firstSpellSheet = 0; - d->spell.currentSpellSheet = 0; - d->spell.currentCell = 0; - d->spell.spellStartCellX = 0; - d->spell.spellStartCellY = 0; - d->spell.spellEndCellX = 0; - d->spell.spellEndCellY = 0; - d->spell.spellCheckSelection = false; - - d->insertHandler = 0L; - d->specialCharDlg = 0; - - setInstance( Factory::global() ); - if ( doc()->isReadWrite() ) - setXMLFile( "kspread.rc" ); - else - setXMLFile( "kspread_readonly.rc" ); - - // build the DCOP object - dcopObject(); - - connect( doc()->commandHistory(), TQT_SIGNAL( commandExecuted() ), - this, TQT_SLOT( commandExecuted() ) ); - - // GUI Initializations - initView(); - - d->initActions(); - - - // Handler for moving and resizing embedded parts - KoContainerHandler* h = new KoContainerHandler( this, d->canvas ); - connect( h, TQT_SIGNAL( popupMenu( KoChild*, const TQPoint& ) ), this, TQT_SLOT( popupChildMenu( KoChild*, const TQPoint& ) ) ); - - - connect( this, TQT_SIGNAL( childSelected( KoDocumentChild* ) ), - this, TQT_SLOT( slotChildSelected( KoDocumentChild* ) ) ); - connect( this, TQT_SIGNAL( childUnselected( KoDocumentChild* ) ), - this, TQT_SLOT( slotChildUnselected( KoDocumentChild* ) ) ); - // If a selected part becomes active this is like it is deselected - // just before. - connect( this, TQT_SIGNAL( childActivated( KoDocumentChild* ) ), - this, TQT_SLOT( slotChildUnselected( KoDocumentChild* ) ) ); - - connect( d->canvas, TQT_SIGNAL( objectSelectedChanged() ), - this, TQT_SLOT( objectSelectedChanged() ) ); - - TQT_BASE_OBJECT_NAME::connect( doc()->map(), TQT_SIGNAL( sig_addSheet( Sheet* ) ), TQT_SLOT( slotAddSheet( Sheet* ) ) ); - - TQT_BASE_OBJECT_NAME::connect( doc(), TQT_SIGNAL( sig_refreshView( ) ), this, TQT_SLOT( slotRefreshView() ) ); - - TQT_BASE_OBJECT_NAME::connect( doc(), TQT_SIGNAL( sig_refreshLocale() ), this, TQT_SLOT( refreshLocale())); - - TQT_BASE_OBJECT_NAME::connect( doc(), TQT_SIGNAL( sig_addAreaName( const TQString & ) ), d->posWidget, TQT_SLOT( slotAddAreaName( const TQString & ) ) ); - - TQT_BASE_OBJECT_NAME::connect( doc(), TQT_SIGNAL( sig_removeAreaName( const TQString & ) ), d->posWidget, TQT_SLOT( slotRemoveAreaName( const TQString & ) ) ); - - TQT_BASE_OBJECT_NAME::connect( doc(), TQT_SIGNAL( damagesFlushed( const TQValueList<Damage*>& ) ), - this, TQT_SLOT( handleDamages( const TQValueList<Damage*>& ) ) ); - - //KoView::setZoom( doc()->zoomedResolutionY() /* KoView only supports one zoom */ ); // initial value - //when kspread is embedded into konqueror apply a zoom=100 - //in konqueror we can't change zoom -- ### TODO ? - if (!doc()->isReadWrite()) - { - setZoom( 100, true ); - } - - viewZoom( TQString::number( doc()->zoom() ) ); - - // ## Might be wrong, if doc isn't loaded yet - d->actions->selectStyle->setItems( d->doc->styleManager()->styleNames() ); - - // Delay the setting of the initial position, because - // we have to wait for the widget to be shown. Otherwise, - // we get a wrong widget size. - // This is the last operation for the "View loading" process. - // The loading flag will be unset at its end. - if ( !doc()->map()->sheetList().isEmpty() ) - TQTimer::singleShot(50, this, TQT_SLOT(initialPosition())); - - connect (&d->statusBarOpTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(calcStatusBarOp())); -} - -View::~View() -{ - // ElapsedTime el( "~View" ); - if ( doc()->isReadWrite() ) // make sure we're not embedded in Konq - deleteEditor( true ); - if ( !d->transformToolBox.isNull() ) - delete (&*d->transformToolBox); - /*if (d->calcLabel) - { - disconnect(d->calcLabel,TQT_SIGNAL(pressed( int )),this,TQT_SLOT(statusBarClicked(int))); - - }*/ - - delete d->spell.tdespell; - - d->canvas->endChoose(); - d->activeSheet = 0; // set the active sheet to 0L so that when during destruction - // of embedded child documents possible repaints in Sheet are not - // performed. The repains can happen if you delete an embedded document, - // which leads to an regionInvalidated() signal emission in KoView, which calls - // repaint, etc.etc. :-) (Simon) - - delete d->selection; - delete d->choice; - - delete d->popupColumn; - delete d->popupRow; - delete d->popupMenu; - delete d->popupChild; - delete d->popupListChoose; - delete d->calcLabel; - delete d->dcop; - - delete d->insertHandler; - d->insertHandler = 0L; - - delete d->actions; - // NOTE Stefan: Delete the Canvas explicitly, even if it has this view as - // parent. Otherwise, it leads to crashes, because it tries to - // access this View in some events (Bug #126492). - delete d->canvas; - delete d; -} - -Doc* View::doc() const -{ - return d->doc; -} - -// should be called only once, from the constructor - /* - * Top part is the formula bar. - * Central part is the canvas, row header and vertical scrollbar. - * Bottom part is the tab bar and horizontal scrollbar. - * - * Note that canvas must the one to be created, since other - * widgets might depend on it. - */ - -void View::initView() -{ - d->viewLayout = new TQGridLayout( this, 3, 4 ); - - // Vert. Scroll Bar - d->calcLabel = 0; - d->vertScrollBar = new TQScrollBar( this, "ScrollBar_2" ); - d->vertScrollBar->setRange( 0, 4096 ); - d->vertScrollBar->setOrientation( Qt::Vertical ); - d->vertScrollBar->setLineStep(60); //just random guess based on what feels okay - d->vertScrollBar->setPageStep(60); //This should be controlled dynamically, depending on how many rows are shown - - // Edit Bar - d->toolWidget = new TQFrame( this ); - - d->formulaBarLayout = new TQHBoxLayout( d->toolWidget ); - d->formulaBarLayout->setMargin( 4 ); - d->formulaBarLayout->addSpacing( 2 ); - - d->posWidget = new ComboboxLocationEditWidget( d->toolWidget, this ); - d->posWidget->setMinimumWidth( 100 ); - d->formulaBarLayout->addWidget( d->posWidget ); - d->formulaBarLayout->addSpacing( 6 ); - - d->formulaButton = d->newIconButton( "funct", true, d->toolWidget ); - d->formulaBarLayout->addWidget( d->formulaButton ); - d->formulaBarLayout->addSpacing( 2 ); - connect( d->formulaButton, TQT_SIGNAL( clicked() ), TQT_SLOT( insertMathExpr() ) ); - - d->cancelButton = d->newIconButton( "cancel", true, d->toolWidget ); - d->formulaBarLayout->addWidget( d->cancelButton ); - d->okButton = d->newIconButton( "ok", true, d->toolWidget ); - d->formulaBarLayout->addWidget( d->okButton ); - d->formulaBarLayout->addSpacing( 6 ); - - // The widget on which we display the sheet - d->canvas = new Canvas( this ); - - // The line-editor that appears above the sheet and allows to - // edit the cells content. It knows about the two buttons. - d->editWidget = new EditWidget( d->toolWidget, d->canvas, d->cancelButton, d->okButton ); - d->editWidget->setFocusPolicy( TQ_StrongFocus ); - d->formulaBarLayout->addWidget( d->editWidget, 2 ); - d->formulaBarLayout->addSpacing( 2 ); - - d->canvas->setEditWidget( d->editWidget ); - - d->hBorderWidget = new HBorder( this, d->canvas,this ); - d->vBorderWidget = new VBorder( this, d->canvas ,this ); - d->hBorderWidget->setSizePolicy( TQSizePolicy::Expanding, TQSizePolicy::Minimum ); - d->vBorderWidget->setSizePolicy( TQSizePolicy::Minimum, TQSizePolicy::Expanding ); - - d->canvas->setFocusPolicy( TQ_StrongFocus ); - TQWidget::setFocusPolicy( TQ_StrongFocus ); - setFocusProxy( d->canvas ); - - connect( this, TQT_SIGNAL( invalidated() ), d->canvas, TQT_SLOT( update() ) ); - - TQWidget* bottomPart = new TQWidget( this ); - d->tabScrollBarLayout = new TQHBoxLayout( bottomPart ); - d->tabScrollBarLayout->setAutoAdd( true ); - d->tabBar = new KoTabBar( bottomPart ); - d->horzScrollBar = new TQScrollBar( bottomPart, "ScrollBar_1" ); - - d->horzScrollBar->setRange( 0, 4096 ); - d->horzScrollBar->setOrientation( Qt::Horizontal ); - - d->horzScrollBar->setLineStep(60); //just random guess based on what feels okay - d->horzScrollBar->setPageStep(60); - - TQT_BASE_OBJECT_NAME::connect( d->tabBar, TQT_SIGNAL( tabChanged( const TQString& ) ), this, TQT_SLOT( changeSheet( const TQString& ) ) ); - TQT_BASE_OBJECT_NAME::connect( d->tabBar, TQT_SIGNAL( tabMoved( unsigned, unsigned ) ), - this, TQT_SLOT( moveSheet( unsigned, unsigned ) ) ); - TQT_BASE_OBJECT_NAME::connect( d->tabBar, TQT_SIGNAL( contextMenu( const TQPoint& ) ), - this, TQT_SLOT( popupTabBarMenu( const TQPoint& ) ) ); - TQT_BASE_OBJECT_NAME::connect( d->tabBar, TQT_SIGNAL( doubleClicked() ), - this, TQT_SLOT( slotRename() ) ); - - d->viewLayout->setColStretch( 1, 10 ); - d->viewLayout->setRowStretch( 2, 10 ); - d->viewLayout->addMultiCellWidget( d->toolWidget, 0, 0, 0, 2 ); - d->viewLayout->addMultiCellWidget( d->hBorderWidget, 1, 1, 1, 2 ); - d->viewLayout->addWidget( d->vBorderWidget, 2, 0 ); - d->viewLayout->addWidget( d->canvas, 2, 1 ); - d->viewLayout->addWidget( d->vertScrollBar, 2, 2 ); - d->viewLayout->addMultiCellWidget( bottomPart, 3, 3, 0, 2 ); - - KStatusBar * sb = statusBar(); - Q_ASSERT(sb); - d->calcLabel = sb ? new KStatusBarLabel( TQString(), 0, sb ) : 0; - addStatusBarItem( d->calcLabel, 0 ); - if (d->calcLabel) - connect(d->calcLabel ,TQT_SIGNAL(itemPressed( int )),this,TQT_SLOT(statusBarClicked(int))); - - // signal slot - TQT_BASE_OBJECT_NAME::connect( d->vertScrollBar, TQT_SIGNAL( valueChanged(int) ), d->canvas, TQT_SLOT( slotScrollVert(int) ) ); - TQT_BASE_OBJECT_NAME::connect( d->horzScrollBar, TQT_SIGNAL( valueChanged(int) ), d->canvas, TQT_SLOT( slotScrollHorz(int) ) ); - -} - -Canvas* View::canvasWidget() const -{ - return d->canvas; -} - -HBorder* View::hBorderWidget()const -{ - return d->hBorderWidget; -} - -VBorder* View::vBorderWidget()const -{ - return d->vBorderWidget; -} - -TQScrollBar* View::horzScrollBar()const -{ - return d->horzScrollBar; -} - -TQScrollBar* View::vertScrollBar()const -{ - return d->vertScrollBar; -} - -EditWidget* View::editWidget()const -{ - return d->editWidget; -} - -ComboboxLocationEditWidget* View::posWidget()const -{ - return d->posWidget; -} - -KoTabBar* View::tabBar() const -{ - return d->tabBar; -} - -bool View::isLoading() const -{ - return d->loading; -} - -Selection* View::selectionInfo() const -{ - return d->selection; -} - -Selection* View::choice() const -{ - return d->choice; -} - -void View::resetInsertHandle() -{ - d->actions->insertChartFrame->setChecked( false ); - // d->actions->insertPicture->setChecked( false ); - - d->insertHandler = 0; -} - -bool View::isInsertingObject() -{ - return d->insertHandler; -} - -const Sheet* View::activeSheet() const -{ - return d->activeSheet; -} - -Sheet* View::activeSheet() -{ - return d->activeSheet; -} - -void View::initConfig() -{ - TDEConfig *config = Factory::global()->config(); - if ( config->hasGroup("Parameters" )) - { - config->setGroup( "Parameters" ); - if ( !doc()->configLoadFromFile() ) - doc()->setShowHorizontalScrollBar(config->readBoolEntry("Horiz ScrollBar",true)); - if ( !doc()->configLoadFromFile() ) - doc()->setShowVerticalScrollBar(config->readBoolEntry("Vert ScrollBar",true)); - doc()->setShowColHeader(config->readBoolEntry("Column Header",true)); - doc()->setShowRowHeader(config->readBoolEntry("Row Header",true)); - if ( !doc()->configLoadFromFile() ) - doc()->setCompletionMode((TDEGlobalSettings::Completion)config->readNumEntry("Completion Mode",(int)(TDEGlobalSettings::CompletionAuto))); - doc()->setMoveToValue((KSpread::MoveTo)config->readNumEntry("Move",(int)(Bottom))); - doc()->setIndentValue( config->readDoubleNumEntry( "Indent", 10.0 ) ); - doc()->setTypeOfCalc((MethodOfCalc)config->readNumEntry("Method of Calc",(int)(SumOfNumber))); - if ( !doc()->configLoadFromFile() ) - doc()->setShowTabBar(config->readBoolEntry("Tabbar",true)); - - doc()->setShowMessageError(config->readBoolEntry( "Msg error" ,false) ); - - doc()->setShowFormulaBar(config->readBoolEntry("Formula bar",true)); - doc()->setShowStatusBar(config->readBoolEntry("Status bar",true)); - - changeNbOfRecentFiles(config->readNumEntry("NbRecentFile",10)); - //autosave value is stored as a minute. - //but default value is stored as seconde. - doc()->setAutoSave(config->readNumEntry("AutoSave",KoDocument::defaultAutoSave()/60)*60); - doc()->setBackupFile( config->readBoolEntry("BackupFile",true)); - } - - if ( config->hasGroup("KSpread Color" ) ) - { - config->setGroup( "KSpread Color" ); - TQColor _col(TQt::lightGray); - _col = config->readColorEntry("GridColor", &_col); - doc()->setGridColor(_col); - - TQColor _pbCol(TQt::red); - _pbCol = config->readColorEntry("PageBorderColor", &_pbCol); - doc()->changePageBorderColor(_pbCol); - } - -// Do we need a Page Layout in the congiguration file? Isn't this already in the template? Philipp -/* -if ( config->hasGroup("KSpread Page Layout" ) ) - { - config->setGroup( "KSpread Page Layout" ); - if ( d->activeSheet->isEmpty()) - { - d->activeSheet->setPaperFormat((KoFormat)config->readNumEntry("Default size page",1)); - - d->activeSheet->setPaperOrientation((KoOrientation)config->readNumEntry("Default orientation page",0)); - d->activeSheet->setPaperUnit((KoUnit::Unit)config->readNumEntry("Default unit page",0)); - } - } -*/ - - initCalcMenu(); - calcStatusBarOp(); -} - -void View::changeNbOfRecentFiles(int _nb) -{ - if (shell()) - shell()->setMaxRecentItems( _nb ); -} - -void View::initCalcMenu() -{ - switch( doc()->getTypeOfCalc()) - { - case SumOfNumber: - d->actions->calcSum->setChecked(true); - break; - case Min: - d->actions->calcMin->setChecked(true); - break; - case Max: - d->actions->calcMax->setChecked(true); - break; - case Average: - d->actions->calcAverage->setChecked(true); - break; - case Count: - d->actions->calcCount->setChecked(true); - break; - case CountA: - d->actions->calcCountA->setChecked(true); - break; - case NoneCalc: - d->actions->calcNone->setChecked(true); - break; - default : - d->actions->calcSum->setChecked(true); - break; - } - -} - - -void View::recalcWorkBook() -{ - if (!activeSheet()) - return; - - Sheet * tbl; - doc()->emitBeginOperation( true ); - for ( tbl = doc()->map()->firstSheet(); - tbl != 0L; - tbl = doc()->map()->nextSheet() ) - { - // bool b = tbl->getAutoCalc(); - // tbl->setAutoCalc( true ); - tbl->recalc( /*force recalculation = */ true); - // tbl->setAutoCalc( b ); - } - - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); -} - -void View::refreshLocale() -{ - doc()->emitBeginOperation(true); - Sheet *tbl; - for ( tbl = doc()->map()->firstSheet(); - tbl != 0L; - tbl = doc()->map()->nextSheet() ) - { - tbl->updateLocale(); - } - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); -} - -void View::recalcWorkSheet() -{ - if ( d->activeSheet != 0 ) - { - doc()->emitBeginOperation( true ); -// bool b = d->activeSheet->getAutoCalc(); -// d->activeSheet->setAutoCalc( true ); - d->activeSheet->recalc( /*force recalculation = */ true); - // d->activeSheet->setAutoCalc( b ); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); - } -} - - -void View::extraSpelling() -{ - if ( d->spell.tdespell ) - return; // Already in progress - - if (d->activeSheet == 0L) - return; - - d->spell.macroCmdSpellCheck = 0L; - d->spell.firstSpellSheet = d->activeSheet; - d->spell.currentSpellSheet = d->spell.firstSpellSheet; - - TQRect selection = d->selection->selection(); - - // if nothing is selected, check every cell - if (d->selection->isSingular()) - { - d->spell.spellStartCellX = 0; - d->spell.spellStartCellY = 0; - d->spell.spellEndCellX = 0; - d->spell.spellEndCellY = 0; - d->spell.spellCheckSelection = false; - d->spell.currentCell = d->activeSheet->firstCell(); - } - else - { - d->spell.spellStartCellX = selection.left(); - d->spell.spellStartCellY = selection.top(); - d->spell.spellEndCellX = selection.right(); - d->spell.spellEndCellY = selection.bottom(); - d->spell.spellCheckSelection = true; - d->spell.currentCell = 0L; - - // "-1" because X gets increased every time we go into spellCheckReady() - d->spell.spellCurrCellX = d->spell.spellStartCellX - 1; - d->spell.spellCurrCellY = d->spell.spellStartCellY; - } - - startKSpell(); -} - - -void View::startKSpell() -{ - if ( doc()->getKSpellConfig() ) - { - doc()->getKSpellConfig()->setIgnoreList( doc()->spellListIgnoreAll() ); - doc()->getKSpellConfig()->setReplaceAllList( d->spell.replaceAll ); - - } - d->spell.tdespell = new KSpell( this, i18n( "Spell Checking" ), TQT_TQOBJECT(this), - TQT_SLOT( spellCheckerReady() ), - doc()->getKSpellConfig() ); - - d->spell.tdespell->setIgnoreUpperWords( doc()->dontCheckUpperWord() ); - d->spell.tdespell->setIgnoreTitleCase( doc()->dontCheckTitleCase() ); - - TQT_BASE_OBJECT_NAME::connect( d->spell.tdespell, TQT_SIGNAL( death() ), - this, TQT_SLOT( spellCheckerFinished() ) ); - TQT_BASE_OBJECT_NAME::connect( d->spell.tdespell, TQT_SIGNAL( misspelling( const TQString &, - const TQStringList &, - unsigned int) ), - this, TQT_SLOT( spellCheckerMisspelling( const TQString &, - const TQStringList &, - unsigned int) ) ); - TQT_BASE_OBJECT_NAME::connect( d->spell.tdespell, TQT_SIGNAL( corrected( const TQString &, - const TQString &, - unsigned int) ), - this, TQT_SLOT( spellCheckerCorrected( const TQString &, - const TQString &, - unsigned int ) ) ); - TQT_BASE_OBJECT_NAME::connect( d->spell.tdespell, TQT_SIGNAL( done( const TQString & ) ), - this, TQT_SLOT( spellCheckerDone( const TQString & ) ) ); - TQT_BASE_OBJECT_NAME::connect( d->spell.tdespell, TQT_SIGNAL( ignoreall (const TQString & ) ), - this, TQT_SLOT( spellCheckerIgnoreAll( const TQString & ) ) ); - - TQT_BASE_OBJECT_NAME::connect( d->spell.tdespell, TQT_SIGNAL( replaceall( const TQString & , const TQString & )), this, TQT_SLOT( spellCheckerReplaceAll( const TQString & , const TQString & ))); - -} - -void View::spellCheckerReplaceAll( const TQString &orig, const TQString & replacement) -{ - d->spell.replaceAll.append( orig); - d->spell.replaceAll.append( replacement); -} - - -void View::spellCheckerIgnoreAll( const TQString & word) -{ - doc()->addIgnoreWordAll( word ); -} - - -void View::spellCheckerReady() -{ - if (d->canvas) - d->canvas->setCursor( WaitCursor ); - - // go on to the next cell - if (!d->spell.spellCheckSelection) - { - // if nothing is selected we have to check every cell - // we use a different way to make it faster - while ( d->spell.currentCell ) - { - // check text only - if ( d->spell.currentCell->value().isString() ) - { - d->spell.tdespell->check( d->spell.currentCell->text(), true ); - - return; - } - - d->spell.currentCell = d->spell.currentCell->nextCell(); - if ( d->spell.currentCell && d->spell.currentCell->isDefault() ) - kdDebug() << "checking default cell!!" << endl << endl; - } - - if (spellSwitchToOtherSheet()) - spellCheckerReady(); - else - spellCleanup(); - - return; - } - - // if something is selected: - - ++d->spell.spellCurrCellX; - if (d->spell.spellCurrCellX > d->spell.spellEndCellX) - { - d->spell.spellCurrCellX = d->spell.spellStartCellX; - ++d->spell.spellCurrCellY; - } - - unsigned int y; - unsigned int x; - - for ( y = d->spell.spellCurrCellY; y <= d->spell.spellEndCellY; ++y ) - { - for ( x = d->spell.spellCurrCellX; x <= d->spell.spellEndCellX; ++x ) - { - Cell * cell = d->spell.currentSpellSheet->cellAt( x, y ); - - // check text only - if (cell->isDefault() || !cell->value().isString()) - continue; - - d->spell.spellCurrCellX = x; - d->spell.spellCurrCellY = y; - - d->spell.tdespell->check( cell->text(), true ); - - return; - } - d->spell.spellCurrCellX = d->spell.spellStartCellX; - } - - // if the user selected something to be checked we are done - // otherwise ask for checking the next sheet if any - if (d->spell.spellCheckSelection) - { - // Done - spellCleanup(); - } - else - { - if (spellSwitchToOtherSheet()) - spellCheckerReady(); - else - spellCleanup(); - } -} - - -void View::spellCleanup() -{ - if ( d->canvas ) - d->canvas->setCursor( ArrowCursor ); - - d->spell.tdespell->cleanUp(); - delete d->spell.tdespell; - d->spell.tdespell = 0L; - d->spell.firstSpellSheet = 0L; - d->spell.currentSpellSheet = 0L; - d->spell.currentCell = 0L; - d->spell.replaceAll.clear(); - - - KMessageBox::information( this, i18n( "Spell checking is complete." ) ); - - if ( d->spell.macroCmdSpellCheck ) - doc()->addCommand( d->spell.macroCmdSpellCheck ); - d->spell.macroCmdSpellCheck=0L; -} - - -bool View::spellSwitchToOtherSheet() -{ - // there is no other sheet - if ( doc()->map()->count() == 1 ) - return false; - - // for optimization - TQPtrList<Sheet> sheetList = doc()->map()->sheetList(); - - unsigned int curIndex = sheetList.findRef(d->spell.currentSpellSheet); - ++curIndex; - - // last sheet? then start at the beginning - if ( curIndex >= sheetList.count() ) - d->spell.currentSpellSheet = sheetList.first(); - else - d->spell.currentSpellSheet = sheetList.at(curIndex); - - // if the current sheet is the first one again, we are done. - if ( d->spell.currentSpellSheet == d->spell.firstSpellSheet ) - { - setActiveSheet( d->spell.firstSpellSheet ); - return false; - } - - if (d->spell.spellCheckSelection) - { - d->spell.spellEndCellX = d->spell.currentSpellSheet->maxColumn(); - d->spell.spellEndCellY = d->spell.currentSpellSheet->maxRow(); - - d->spell.spellCurrCellX = d->spell.spellStartCellX - 1; - d->spell.spellCurrCellY = d->spell.spellStartCellY; - } - else - { - d->spell.currentCell = d->spell.currentSpellSheet->firstCell(); - } - - if ( KMessageBox::questionYesNo( this, - i18n( "Do you want to check the spelling in the next sheet?") ) - != KMessageBox::Yes ) - return false; - - setActiveSheet( d->spell.currentSpellSheet ); - - return true; -} - - -void View::spellCheckerMisspelling( const TQString &, - const TQStringList &, - unsigned int ) -{ - // scroll to the cell - if ( !d->spell.spellCheckSelection ) - { - d->spell.spellCurrCellX = d->spell.currentCell->column(); - d->spell.spellCurrCellY = d->spell.currentCell->row(); - } - - d->selection->initialize(TQPoint(d->spell.spellCurrCellX, d->spell.spellCurrCellY)); -} - - -void View::spellCheckerCorrected( const TQString & old, const TQString & corr, - unsigned int pos ) -{ - Cell * cell; - - if (d->spell.spellCheckSelection) - { - cell = d->spell.currentSpellSheet->cellAt( d->spell.spellCurrCellX, - d->spell.spellCurrCellY ); - } - else - { - cell = d->spell.currentCell; - d->spell.spellCurrCellX = cell->column(); - d->spell.spellCurrCellY = cell->row(); - } - - Q_ASSERT( cell ); - if ( !cell ) - return; - - doc()->emitBeginOperation(false); - TQString content( cell->text() ); - - UndoSetText* undo = new UndoSetText( doc(), d->activeSheet, - content, - d->spell.spellCurrCellX, - d->spell.spellCurrCellY, - cell->formatType()); - content.replace( pos, old.length(), corr ); - cell->setCellText( content ); - d->editWidget->setText( content ); - - if ( !d->spell.macroCmdSpellCheck ) - d->spell.macroCmdSpellCheck = new MacroUndoAction( doc(), i18n("Correct Misspelled Word") ); - d->spell.macroCmdSpellCheck->addCommand( undo ); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); -} - -void View::spellCheckerDone( const TQString & ) -{ - int result = d->spell.tdespell->dlgResult(); - - d->spell.tdespell->cleanUp(); - delete d->spell.tdespell; - d->spell.tdespell = 0L; - - if ( result != KS_CANCEL && result != KS_STOP ) - { - if (d->spell.spellCheckSelection) - { - if ( (d->spell.spellCurrCellY <= d->spell.spellEndCellY) - && (d->spell.spellCurrCellX <= d->spell.spellEndCellX) ) - { - startKSpell(); - return; - } - } - else - { - if ( d->spell.currentCell ) - { - d->spell.currentCell = d->spell.currentCell->nextCell(); - - startKSpell(); - - return; - } - } - } - d->spell.replaceAll.clear(); - - if ( d->spell.macroCmdSpellCheck ) - { - doc()->addCommand( d->spell.macroCmdSpellCheck ); - } - d->spell.macroCmdSpellCheck=0L; -} - -void View::spellCheckerFinished() -{ - if (d->canvas) - d->canvas->setCursor( ArrowCursor ); - - KSpell::spellStatus status = d->spell.tdespell->status(); - d->spell.tdespell->cleanUp(); - delete d->spell.tdespell; - d->spell.tdespell = 0L; - d->spell.replaceAll.clear(); - - bool tdespellNotConfigured=false; - - if (status == KSpell::Error) - { - KMessageBox::sorry(this, i18n("ISpell could not be started.\n" - "Please make sure you have ISpell properly configured and in your PATH.")); - tdespellNotConfigured=true; - } - else if (status == KSpell::Crashed) - { - KMessageBox::sorry(this, i18n("ISpell seems to have crashed.")); - } - - if (d->spell.macroCmdSpellCheck) - { - doc()->addCommand( d->spell.macroCmdSpellCheck ); - } - d->spell.macroCmdSpellCheck=0L; - - - if (tdespellNotConfigured) - { - PreferenceDialog configDlg( this, 0 ); - configDlg.openPage( PreferenceDialog::KS_SPELLING); - configDlg.exec(); - } -} - -void View::initialPosition() -{ - // Loading completed, pick initial worksheet - TQPtrListIterator<Sheet> it( doc()->map()->sheetList() ); - for( ; it.current(); ++it ) - addSheet( it.current() ); - - // Set the initial X and Y offsets for the view (OpenDocument loading) - if ( KSPLoadingInfo* loadingInfo = doc()->loadingInfo() ) - { - d->savedAnchors = loadingInfo->cursorPositions(); - d->savedMarkers = loadingInfo->cursorPositions(); - d->savedOffsets = loadingInfo->scrollingOffsets(); - } - - Sheet * tbl = 0L; - if ( doc()->isEmbedded() ) - { - tbl = doc()->displaySheet(); - } - - if ( !tbl ) - tbl = doc()->map()->initialActiveSheet(); - if ( tbl ) - setActiveSheet( tbl ); - else - { - //activate first table which is not hiding - tbl = doc()->map()->findSheet( doc()->map()->visibleSheets().first()); - if ( !tbl ) - { - tbl = doc()->map()->firstSheet(); - if ( tbl ) - { - tbl->setHidden( false ); - TQString tabName = tbl->sheetName(); - d->tabBar->addTab( tabName ); - } - } - setActiveSheet( tbl ); - } - - refreshView(); - - // Set the initial X and Y offsets for the view (Native format loading) - if ( !doc()->loadingInfo() ) - { - double offsetX = doc()->map()->initialXOffset(); - double offsetY = doc()->map()->initialYOffset(); - // Set the initial position for the marker as stored in the XML file, - // (1,1) otherwise - int col = doc()->map()->initialMarkerColumn(); - if ( col <= 0 ) - col = 1; - int row = doc()->map()->initialMarkerRow(); - if ( row <= 0 ) - row = 1; - d->canvas->setXOffset( offsetX ); - d->canvas->setYOffset( offsetY ); - d->horzScrollBar->setValue( (int)offsetX ); - d->vertScrollBar->setValue( (int)offsetY ); - d->selection->initialize( TQPoint(col, row) ); - } - - updateBorderButton(); - updateShowSheetMenu(); - - d->actions->autoFormat->setEnabled(false); - d->actions->sort->setEnabled(false); - d->actions->mergeCell->setEnabled(false); - d->actions->mergeCellHorizontal->setEnabled(false); - d->actions->mergeCellVertical->setEnabled(false); - d->actions->createStyle->setEnabled(false); - - d->actions->fillUp->setEnabled( false ); - d->actions->fillRight->setEnabled( false ); - d->actions->fillDown->setEnabled( false ); - d->actions->fillLeft->setEnabled( false ); - - // make paint effective: - doc()->decreaseNumOperation(); - - TQRect vr( activeSheet()->visibleRect( d->canvas ) ); - - doc()->emitBeginOperation( false ); - activeSheet()->setRegionPaintDirty( vr ); - doc()->emitEndOperation( vr ); - - if ( koDocument()->isReadWrite() ) - initConfig(); - - d->adjustActions( !d->activeSheet->isProtected() ); - d->adjustWorkbookActions( !doc()->map()->isProtected() ); - - // finish the "View Loading" process - d->loading = false; - doc()->deleteLoadingInfo(); -} - - -void View::updateEditWidgetOnPress() -{ - if (!d->activeSheet) - return; - - int column = d->canvas->markerColumn(); - int row = d->canvas->markerRow(); - - Cell* cell = d->activeSheet->cellAt( column, row ); - if ( !cell ) - { - d->editWidget->setText( "" ); - return; - } - if ( d->activeSheet->isProtected() && cell->format()->isHideFormula( column, row ) ) - d->editWidget->setText( cell->strOutText() ); - else if ( d->activeSheet->isProtected() && cell->format()->isHideAll( column, row ) ) - d->editWidget->setText( "" ); - else - d->editWidget->setText( cell->text() ); - - d->updateButton(cell, column, row); - d->adjustActions( d->activeSheet, cell ); -} - -void View::updateEditWidget() -{ - if (!d->activeSheet) - return; - - int column = d->canvas->markerColumn(); - int row = d->canvas->markerRow(); - - Cell * cell = d->activeSheet->cellAt( column, row ); - bool active = activeSheet()->getShowFormula() - && !( d->activeSheet->isProtected() && cell && cell->format()->isHideFormula( column, row ) ); - - if ( d->activeSheet && !d->activeSheet->isProtected() ) - { - d->actions->alignLeft->setEnabled(!active); - d->actions->alignCenter->setEnabled(!active); - d->actions->alignRight->setEnabled(!active); - } - - if ( !cell ) - { - d->editWidget->setText( "" ); - if ( d->activeSheet->isProtected() ) - d->editWidget->setEnabled( false ); - else - d->editWidget->setEnabled( true ); - return; - } - - if ( d->activeSheet->isProtected() && cell->format()->isHideFormula( column, row ) ) - d->editWidget->setText( cell->strOutText() ); - else if ( d->activeSheet->isProtected() && cell->format()->isHideAll( column, row ) ) - d->editWidget->setText( "" ); - else - d->editWidget->setText( cell->text() ); - - if ( d->activeSheet->isProtected() && !cell->format()->notProtected( column, row ) ) - d->editWidget->setEnabled( false ); - else - d->editWidget->setEnabled( true ); - - if ( d->canvas->editor() ) - { - d->canvas->editor()->setEditorFont(cell->format()->textFont(column, row), true); - d->canvas->editor()->setFocus(); - } - d->updateButton(cell, column, row); - d->adjustActions( d->activeSheet, cell ); -} - -void View::activateFormulaEditor() -{ -} - -void View::objectSelectedChanged() -{ - if ( d->canvas->isObjectSelected() ) - d->actions->actionExtraProperties->setEnabled( true ); - else - d->actions->actionExtraProperties->setEnabled( false ); -} - -void View::updateReadWrite( bool readwrite ) -{ - // d->cancelButton->setEnabled( readwrite ); - // d->okButton->setEnabled( readwrite ); - d->editWidget->setEnabled( readwrite ); - - TQValueList<TDEAction*> actions = actionCollection()->actions(); - TQValueList<TDEAction*>::ConstIterator aIt = actions.begin(); - TQValueList<TDEAction*>::ConstIterator aEnd = actions.end(); - for (; aIt != aEnd; ++aIt ) - (*aIt)->setEnabled( readwrite ); - -// d->actions->transform->setEnabled( false ); - if ( !doc() || !doc()->map() || doc()->map()->isProtected() ) - { - d->actions->showSheet->setEnabled( false ); - d->actions->hideSheet->setEnabled( false ); - } - else - { - d->actions->showSheet->setEnabled( true ); - d->actions->hideSheet->setEnabled( true ); - } - d->actions->gotoCell->setEnabled( true ); - d->actions->viewZoom->setEnabled( true ); - d->actions->showPageBorders->setEnabled( true ); - d->actions->find->setEnabled( true); - d->actions->replace->setEnabled( readwrite ); - if ( !doc()->isReadWrite()) - d->actions->copy->setEnabled( true ); - // d->actions->newView->setEnabled( true ); - //doc()->KXMLGUIClient::action( "newView" )->setEnabled( true ); // obsolete (Werner) -} - -void View::createTemplate() -{ - int width = 60; - int height = 60; - TQPixmap pix = doc()->generatePreview(TQSize(width, height)); - - KTempFile tempFile( TQString(), ".kst" ); - //Check that creation of temp file was successful - if (tempFile.status() != 0) - { - tqWarning("Creation of temprary file to store template failed."); - return; - } - - tempFile.setAutoDelete(true); - - doc()->saveNativeFormat( tempFile.name() ); - - KoTemplateCreateDia::createTemplate( "kspread_template", Factory::global(), - tempFile.name(), pix, this ); - - Factory::global()->dirs()->addResourceType("kspread_template", - TDEStandardDirs::kde_default( "data" ) + - "kspread/templates/"); -} - -void View::sheetFormat() -{ - FormatDialog dlg( this ); - dlg.exec(); -} - -void View::autoSum() -{ - if (!activeSheet()) - return; - - // ######## Torben: Make sure that this can not be called - // when canvas has a running editor - if ( d->canvas->editor() ) - return; - - //Get the selected range and remove the current cell from it (as that is - //where the result of the autosum will be stored - perhaps change - //this behaviour??) - Range rg; - //rg.sheet=activeSheet(); - TQRect sel = d->selection->selection(false); - - if (sel.height() > 1) - { - if (d->selection->marker().y()==sel.top()) - sel.setTop(sel.top()+1); - if (d->selection->marker().y()==sel.bottom()) - sel.setBottom(sel.bottom()-1); - } - else - { - if (sel.width() > 1) - { - if (d->selection->marker().x()==sel.left()) - sel.setLeft(sel.left()+1); - - if (d->selection->marker().x()==sel.right()) - sel.setRight(sel.right()-1); - } - else - { - sel=TQRect(); - - // only 1 cell selected - // try to automagically find cells the user wants to sum up - - int start = -1, end = -1; - - if ( (d->selection->marker().y() > 1) && activeSheet()->cellAt(d->selection->marker().x(), d->selection->marker().y()-1)->value().isNumber() ) - { - // check cells above the current one - start = end = d->selection->marker().y()-1; - for (start--; (start > 0) && activeSheet()->cellAt(d->selection->marker().x(), start)->value().isNumber(); start--) ; - - Point startPoint, endPoint; - startPoint.setRow(start+1); - startPoint.setColumn(d->selection->marker().x()); - endPoint.setRow(end); - endPoint.setColumn(d->selection->marker().x()); - - TQString str = Range(startPoint, endPoint).toString(); - - d->canvas->createEditor( Canvas::CellEditor , true , true ); - d->canvas->editor()->setText("=SUM(" + str + ")"); - d->canvas->editor()->setCursorPosition(5 + str.length()); - return; - } - else if ( (d->selection->marker().x() > 1) && activeSheet()->cellAt(d->selection->marker().x()-1, d->selection->marker().y())->value().isNumber() ) - { - // check cells to the left of the current one - start = end = d->selection->marker().x()-1; - for (start--; (start > 0) && activeSheet()->cellAt(start, d->selection->marker().y())->value().isNumber(); start--) ; - - Point startPoint, endPoint; - startPoint.setColumn(start+1); - startPoint.setRow(d->selection->marker().y()); - endPoint.setColumn(end); - endPoint.setRow(d->selection->marker().y()); - - TQString str = Range(startPoint, endPoint).toString(); - - d->canvas->createEditor( Canvas::CellEditor , true , true ); - d->canvas->editor()->setText("=SUM(" + str + ")"); - d->canvas->editor()->setCursorPosition(5 + str.length()); - return; - } - } - } - - if ( (sel.width() > 1) && (sel.height() > 1) ) - sel=TQRect(); - - rg.setRange(sel); - - d->canvas->createEditor( Canvas::CellEditor , true , true ); - - - if ( (rg.range().isValid() ) && (!rg.range().isEmpty()) ) - { - d->canvas->editor()->setText( "=SUM("+rg.toString()+")" ); - d->canvas->deleteEditor(true); - } - else - { - d->canvas->startChoose(); - d->canvas->editor()->setText( "=SUM()" ); - d->canvas->editor()->setCursorPosition( 5 ); - } -} - -/* -void View::oszilloscope() -{ - TQDialog* dlg = new OsziDlg( this ); - dlg->show(); -} -*/ - -void View::changeTextColor() -{ - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation(false); - d->activeSheet->setSelectionTextColor( selectionInfo(), d->actions->textColor->color() ); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); - } -} - -void View::setSelectionTextColor(const TQColor &txtColor) -{ - if (d->activeSheet != 0L) - { - doc()->emitBeginOperation(false); - d->activeSheet->setSelectionTextColor( selectionInfo(), txtColor ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::changeBackgroundColor() -{ - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation(false); - d->activeSheet->setSelectionbgColor( selectionInfo(), d->actions->bgColor->color() ); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); - } -} - -void View::setSelectionBackgroundColor(const TQColor &bgColor) -{ - if (d->activeSheet != 0L) - { - doc()->emitBeginOperation(false); - d->activeSheet->setSelectionbgColor( selectionInfo(), bgColor ); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); - } -} - -void View::changeBorderColor() -{ - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation(false); - d->activeSheet->setSelectionBorderColor( selectionInfo(), d->actions->borderColor->color() ); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); - } -} - -void View::setSelectionBorderColor(const TQColor &bdColor) -{ - if (d->activeSheet != 0L) - { - doc()->emitBeginOperation(false); - d->activeSheet->setSelectionBorderColor( selectionInfo(), bdColor ); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); - } -} - -void View::helpUsing() -{ - kapp->invokeHelp( ); -} - -void View::enableUndo( bool _b ) -{ - TDEAction* action = actionCollection()->action( "office_undo" ); - if( action ) action->setEnabled( _b ); -} - -void View::enableRedo( bool _b ) -{ - TDEAction* action = actionCollection()->action( "office_redo" ); - if( action ) action->setEnabled( _b ); -} - -void View::enableInsertColumn( bool _b ) -{ - if ( d->activeSheet && !d->activeSheet->isProtected() ) - d->actions->insertColumn->setEnabled( _b ); -} - -void View::enableInsertRow( bool _b ) -{ - if ( d->activeSheet && !d->activeSheet->isProtected() ) - d->actions->insertRow->setEnabled( _b ); -} - -void View::deleteColumn() -{ - if ( !d->activeSheet ) - return; - - doc()->emitBeginOperation( false ); - - TQRect r( d->selection->selection() ); - - d->activeSheet->removeColumn( r.left(), ( r.right()-r.left() ) ); - - updateEditWidget(); - // Stefan: update the selection after deleting (a) column(s) - d->selection->update(); - - TQRect vr( d->activeSheet->visibleRect( d->canvas ) ); - vr.setLeft( r.left() ); - - doc()->emitEndOperation( vr ); -} - -void View::deleteRow() -{ - if ( !d->activeSheet ) - return; - - doc()->emitBeginOperation( false ); - TQRect r( d->selection->selection() ); - d->activeSheet->removeRow( r.top(),(r.bottom()-r.top()) ); - - updateEditWidget(); - // Stefan: update the selection after deleting (a) column(s) - d->selection->update(); - - TQRect vr( d->activeSheet->visibleRect( d->canvas ) ); - vr.setTop( r.top() ); - - doc()->emitEndOperation( vr ); -} - -void View::insertColumn() -{ - if ( !d->activeSheet ) - return; - - doc()->emitBeginOperation( false ); - TQRect r( d->selection->selection() ); - d->activeSheet->insertColumn( r.left(), ( r.right()-r.left() ) ); - - updateEditWidget(); - - TQRect vr( d->activeSheet->visibleRect( d->canvas ) ); - vr.setLeft( r.left() - 1 ); - - doc()->emitEndOperation( vr ); -} - -void View::hideColumn() -{ - if ( !d->activeSheet ) - return; - - if ( d->selection->isRowSelected() ) - { - KMessageBox::error( this, i18n( "Area is too large." ) ); - return; - } - - d->activeSheet->hideColumn(*selectionInfo()); -} - -void View::showColumn() -{ - if ( !d->activeSheet ) - return; - - ShowColRow dlg( this, "showCol", ShowColRow::Column ); - dlg.exec(); -} - -void View::showSelColumns() -{ - if ( !d->activeSheet ) - return; - - d->activeSheet->showColumn(*selectionInfo()); -} - -void View::insertRow() -{ - if ( !d->activeSheet ) - return; - doc()->emitBeginOperation( false ); - TQRect r( d->selection->selection() ); - d->activeSheet->insertRow( r.top(), ( r.bottom() - r.top() ) ); - - updateEditWidget(); - TQRect vr( d->activeSheet->visibleRect( d->canvas ) ); - vr.setTop( r.top() - 1 ); - - doc()->emitEndOperation( vr ); -} - -void View::hideRow() -{ - if ( !d->activeSheet ) - return; - - if ( d->selection->isColumnSelected() ) - { - KMessageBox::error( this, i18n( "Area is too large." ) ); - return; - } - - d->activeSheet->hideRow(*selectionInfo()); -} - -void View::showRow() -{ - if ( !d->activeSheet ) - return; - - ShowColRow dlg( this, "showRow", ShowColRow::Row ); - dlg.exec(); -} - -void View::showSelRows() -{ - if ( !d->activeSheet ) - return; - - d->activeSheet->showRow(*selectionInfo()); -} - -void View::fontSelected( const TQString & _font ) -{ - if ( d->toolbarLock ) - return; - - doc()->emitBeginOperation(false); - if ( d->activeSheet != 0L ) - d->activeSheet->setSelectionFont( d->selection, _font.latin1() ); - - // Dont leave the focus in the toolbars combo box ... - if ( d->canvas->editor() ) - { - Cell * cell = d->activeSheet->cellAt( d->selection->marker() ); - d->canvas->editor()->setEditorFont( cell->format()->textFont( cell->column(), cell->row() ), true ); - d->canvas->editor()->setFocus(); - } - else - d->canvas->setFocus(); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::decreaseFontSize() -{ - setSelectionFontSize( -1 ); -} - -void View::increaseFontSize() -{ - setSelectionFontSize( 1 ); -} - -void View::setSelectionFontSize( int size ) -{ - if ( d->activeSheet != NULL ) - { - d->activeSheet->setSelectionSize( selectionInfo(), size ); - } -} - -void View::lower() -{ - if ( !d->activeSheet ) - return; - - doc()->emitBeginOperation( false ); - - d->activeSheet->setSelectionUpperLower( selectionInfo(), -1 ); - updateEditWidget(); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::upper() -{ - if ( !d->activeSheet ) - return; - - doc()->emitBeginOperation( false ); - - d->activeSheet->setSelectionUpperLower( selectionInfo(), 1 ); - updateEditWidget(); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::firstLetterUpper() -{ - if ( !d->activeSheet ) - return; - doc()->emitBeginOperation( false ); - d->activeSheet->setSelectionfirstLetterUpper( selectionInfo() ); - updateEditWidget(); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::verticalText(bool b) -{ - if ( !d->activeSheet ) - return; - - doc()->emitBeginOperation( false ); - d->activeSheet->setSelectionVerticalText( selectionInfo(), b ); - d->activeSheet->adjustArea(*selectionInfo()); - updateEditWidget(); // TODO Stefan: nescessary? - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::insertSpecialChar() -{ - TQString f( d->actions->selectFont->font() ); - TQChar c = ' '; - - if ( d->specialCharDlg == 0 ) - { - d->specialCharDlg = new KoCharSelectDia( this, "insert special char", f, c, false ); - connect( d->specialCharDlg, TQT_SIGNAL( insertChar( TQChar, const TQString & ) ), - this, TQT_SLOT( slotSpecialChar( TQChar, const TQString & ) ) ); - connect( d->specialCharDlg, TQT_SIGNAL( finished() ), - this, TQT_SLOT( slotSpecialCharDlgClosed() ) ); - } - d->specialCharDlg->show(); -} - -void View::slotSpecialCharDlgClosed() -{ - if ( d->specialCharDlg ) - { - disconnect( d->specialCharDlg, TQT_SIGNAL(insertChar(TQChar,const TQString &)), - this, TQT_SLOT(slotSpecialChar(TQChar,const TQString &))); - disconnect( d->specialCharDlg, TQT_SIGNAL( finished() ), - this, TQT_SLOT( slotSpecialCharDlgClosed() ) ); - d->specialCharDlg->deleteLater(); - d->specialCharDlg = 0L; - } -} - -void View::slotSpecialChar( TQChar c, const TQString & _font ) -{ - if ( d->activeSheet ) - { - TQPoint marker( d->selection->marker() ); - Cell * cell = d->activeSheet->nonDefaultCell( marker ); - if ( cell->format()->textFont( marker.x(), marker.y() ).family() != _font ) - { - cell->format()->setTextFontFamily( _font ); - } - EditWidget * edit = d->editWidget; - TQKeyEvent ev( TQEvent::KeyPress, 0, 0, 0, TQString( c ) ); - TQApplication::sendEvent( edit, &ev ); - } -} - -void View::insertMathExpr() -{ - if ( d->activeSheet == 0L ) - return; - - FormulaDialog * dlg = new FormulaDialog( this, "Function" ); - dlg->show(); - - /* TODO - because I search on 'TODO's :-) */ - // #### Is the dialog deleted when it's closed ? (David) - // Torben thinks that not. -} - -void View::formulaSelection( const TQString &_math ) -{ - if ( d->activeSheet == 0 ) - return; - - if ( _math == i18n("Others...") ) - { - insertMathExpr(); - return; - } - - FormulaDialog *dlg = new FormulaDialog( this, "Formula Editor", _math ); - dlg->exec(); -} - -void View::fontSizeSelected( int _size ) -{ - if ( d->toolbarLock ) - return; - - doc()->emitBeginOperation( false ); - - if ( d->activeSheet != 0L ) - d->activeSheet->setSelectionFont( selectionInfo(), 0L, _size ); - - // Dont leave the focus in the toolbars combo box ... - if ( d->canvas->editor() ) - { - Cell * cell = d->activeSheet->cellAt( d->selection->marker() ); - d->canvas->editor()->setEditorFont( cell->format()->textFont( d->canvas->markerColumn(), - d->canvas->markerRow() ), true ); - d->canvas->editor()->setFocus(); - } - else - d->canvas->setFocus(); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::bold( bool b ) -{ - if ( d->toolbarLock ) - return; - if ( d->activeSheet == 0 ) - return; - - doc()->emitBeginOperation( false ); - - int col = d->canvas->markerColumn(); - int row = d->canvas->markerRow(); - d->activeSheet->setSelectionFont( selectionInfo(), 0L, -1, b ); - - if ( d->canvas->editor() ) - { - Cell * cell = d->activeSheet->cellAt( col, row ); - d->canvas->editor()->setEditorFont( cell->format()->textFont( col, row ), true ); - } - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::underline( bool b ) -{ - if ( d->toolbarLock ) - return; - if ( d->activeSheet == 0 ) - return; - - doc()->emitBeginOperation( false ); - - int col = d->canvas->markerColumn(); - int row = d->canvas->markerRow(); - - d->activeSheet->setSelectionFont( selectionInfo(), 0L, -1, -1, -1 ,b ); - if ( d->canvas->editor() ) - { - Cell * cell = d->activeSheet->cellAt( col, row ); - d->canvas->editor()->setEditorFont( cell->format()->textFont( col, row ), true ); - } - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::strikeOut( bool b ) -{ - if ( d->toolbarLock ) - return; - if ( d->activeSheet == 0 ) - return; - - doc()->emitBeginOperation( false ); - - int col = d->canvas->markerColumn(); - int row = d->canvas->markerRow(); - - d->activeSheet->setSelectionFont( selectionInfo(), 0L, -1, -1, -1 ,-1, b ); - if ( d->canvas->editor() ) - { - Cell * cell = d->activeSheet->cellAt( col, row ); - d->canvas->editor()->setEditorFont( cell->format()->textFont( col, row ), true ); - } - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - - -void View::italic( bool b ) -{ - if ( d->toolbarLock ) - return; - if ( d->activeSheet == 0 ) - return; - - doc()->emitBeginOperation( false ); - - int col = d->canvas->markerColumn(); - int row = d->canvas->markerRow(); - - d->activeSheet->setSelectionFont( selectionInfo(), 0L, -1, -1, b ); - if ( d->canvas->editor() ) - { - Cell * cell = d->activeSheet->cellAt( col, row ); - d->canvas->editor()->setEditorFont( cell->format()->textFont( col, row ), true ); - } - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::sortInc() -{ - if (!activeSheet()) - return; - - TQRect range = d->selection->selection(); - if ( d->selection->isSingular() ) - { - KMessageBox::error( this, i18n( "You must select multiple cells." ) ); - return; - } - - doc()->emitBeginOperation( false ); - - // Entire row(s) selected ? Or just one row ? - if ( d->selection->isRowSelected() || range.top() == range.bottom() ) - activeSheet()->sortByRow( range, range.top(), Sheet::Increase ); - else - activeSheet()->sortByColumn( range, range.left(), Sheet::Increase ); - updateEditWidget(); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::sortDec() -{ - TQRect range = d->selection->selection(); - if ( d->selection->isSingular() ) - { - KMessageBox::error( this, i18n( "You must select multiple cells." ) ); - return; - } - - doc()->emitBeginOperation( false ); - - // Entire row(s) selected ? Or just one row ? - if ( d->selection->isRowSelected() || range.top() == range.bottom() ) - activeSheet()->sortByRow( range, range.top(), Sheet::Decrease ); - else - activeSheet()->sortByColumn( range, range.left(), Sheet::Decrease ); - updateEditWidget(); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - - -void View::borderBottom() -{ - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation( false ); - - d->activeSheet->borderBottom( d->selection, d->actions->borderColor->color() ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::setSelectionBottomBorderColor( const TQColor & color ) -{ - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation( false ); - d->activeSheet->borderBottom( selectionInfo(), color ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::borderRight() -{ - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation( false ); - if ( d->activeSheet->layoutDirection()==Sheet::RightToLeft ) - d->activeSheet->borderLeft( d->selection, d->actions->borderColor->color() ); - else - d->activeSheet->borderRight( d->selection, d->actions->borderColor->color() ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::setSelectionRightBorderColor( const TQColor & color ) -{ - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation( false ); - if ( d->activeSheet->layoutDirection()==Sheet::RightToLeft ) - d->activeSheet->borderLeft( selectionInfo(), color ); - else - d->activeSheet->borderRight( selectionInfo(), color ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::borderLeft() -{ - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation( false ); - if ( d->activeSheet->layoutDirection()==Sheet::RightToLeft ) - d->activeSheet->borderRight( d->selection, d->actions->borderColor->color() ); - else - d->activeSheet->borderLeft( d->selection, d->actions->borderColor->color() ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::setSelectionLeftBorderColor( const TQColor & color ) -{ - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation( false ); - if ( d->activeSheet->layoutDirection()==Sheet::RightToLeft ) - d->activeSheet->borderRight( selectionInfo(), color ); - else - d->activeSheet->borderLeft( selectionInfo(), color ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::borderTop() -{ - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation( false ); - d->activeSheet->borderTop( d->selection, d->actions->borderColor->color() ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::setSelectionTopBorderColor( const TQColor & color ) -{ - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation( false ); - d->activeSheet->borderTop( selectionInfo(), color ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::borderOutline() -{ - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation( false ); - d->activeSheet->borderOutline( d->selection, d->actions->borderColor->color() ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::setSelectionOutlineBorderColor( const TQColor & color ) -{ - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation( false ); - d->activeSheet->borderOutline( selectionInfo(), color ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::borderAll() -{ - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation( false ); - d->activeSheet->borderAll( d->selection, d->actions->borderColor->color() ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::setSelectionAllBorderColor( const TQColor & color ) -{ - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation( false ); - d->activeSheet->borderAll( selectionInfo(), color ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::borderRemove() -{ - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation(false); - d->activeSheet->borderRemove( d->selection ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::addSheet( Sheet * _t ) -{ - doc()->emitBeginOperation( false ); - - insertSheet( _t ); - - // Connect some signals - TQT_BASE_OBJECT_NAME::connect( _t, TQT_SIGNAL( sig_refreshView() ), TQT_SLOT( slotRefreshView() ) ); - TQT_BASE_OBJECT_NAME::connect( _t, TQT_SIGNAL( sig_updateView( Sheet* ) ), TQT_SLOT( slotUpdateView( Sheet* ) ) ); - TQT_BASE_OBJECT_NAME::connect( _t->print(), TQT_SIGNAL( sig_updateView( Sheet* ) ), TQT_SLOT( slotUpdateView( Sheet* ) ) ); - TQT_BASE_OBJECT_NAME::connect( _t, TQT_SIGNAL( sig_updateView( Sheet *, const Region& ) ), - TQT_SLOT( slotUpdateView( Sheet*, const Region& ) ) ); - TQT_BASE_OBJECT_NAME::connect( _t, TQT_SIGNAL( sig_updateView( EmbeddedObject* )), TQT_SLOT( slotUpdateView( EmbeddedObject* ) ) ); - - TQT_BASE_OBJECT_NAME::connect( _t, TQT_SIGNAL( sig_updateHBorder( Sheet * ) ), - TQT_SLOT( slotUpdateHBorder( Sheet * ) ) ); - TQT_BASE_OBJECT_NAME::connect( _t, TQT_SIGNAL( sig_updateVBorder( Sheet * ) ), - TQT_SLOT( slotUpdateVBorder( Sheet * ) ) ); - TQT_BASE_OBJECT_NAME::connect( _t, TQT_SIGNAL( sig_nameChanged( Sheet*, const TQString& ) ), - this, TQT_SLOT( slotSheetRenamed( Sheet*, const TQString& ) ) ); - TQT_BASE_OBJECT_NAME::connect( _t, TQT_SIGNAL( sig_SheetHidden( Sheet* ) ), - this, TQT_SLOT( slotSheetHidden( Sheet* ) ) ); - TQT_BASE_OBJECT_NAME::connect( _t, TQT_SIGNAL( sig_SheetShown( Sheet* ) ), - this, TQT_SLOT( slotSheetShown( Sheet* ) ) ); - TQT_BASE_OBJECT_NAME::connect( _t, TQT_SIGNAL( sig_SheetRemoved( Sheet* ) ), - this, TQT_SLOT( slotSheetRemoved( Sheet* ) ) ); - // ########### Why do these signals not send a pointer to the sheet? - // This will lead to bugs. - TQT_BASE_OBJECT_NAME::connect( _t, TQT_SIGNAL( sig_updateChildGeometry( EmbeddedKOfficeObject* ) ), - TQT_SLOT( slotUpdateChildGeometry( EmbeddedKOfficeObject* ) ) ); - TQT_BASE_OBJECT_NAME::connect( _t, TQT_SIGNAL( sig_maxColumn( int ) ), d->canvas, TQT_SLOT( slotMaxColumn( int ) ) ); - TQT_BASE_OBJECT_NAME::connect( _t, TQT_SIGNAL( sig_maxRow( int ) ), d->canvas, TQT_SLOT( slotMaxRow( int ) ) ); - - if ( !d->loading ) - updateBorderButton(); - - if ( !d->activeSheet ) - { - doc()->emitEndOperation(); - return; - } - doc()->emitEndOperation( *selectionInfo() ); -} - -void View::slotSheetRemoved( Sheet *_t ) -{ - doc()->emitBeginOperation( false ); - - TQString m_sheetName=_t->sheetName(); - d->tabBar->removeTab( _t->sheetName() ); - if (doc()->map()->findSheet( doc()->map()->visibleSheets().first())) - setActiveSheet( doc()->map()->findSheet( doc()->map()->visibleSheets().first() )); - else - d->activeSheet = 0L; - - TQValueList<Reference>::Iterator it; - TQValueList<Reference> area=doc()->listArea(); - for ( it = area.begin(); it != area.end(); ++it ) - { - //remove Area Name when sheet target is removed - if ( (*it).sheet_name == m_sheetName ) - { - doc()->removeArea( (*it).ref_name ); - //now area name is used in formula - //so you must recalc sheets when remove areaname - Sheet * tbl; - - for ( tbl = doc()->map()->firstSheet(); tbl != 0L; tbl = doc()->map()->nextSheet() ) - { - tbl->refreshRemoveAreaName((*it).ref_name); - } - } - } - - doc()->emitEndOperation( *selectionInfo() ); -} - -void View::removeAllSheets() -{ - doc()->emitBeginOperation(false); - d->tabBar->clear(); - - setActiveSheet( 0L ); - - doc()->emitEndOperation(); -} - -void View::setActiveSheet( Sheet * _t, bool updateSheet ) -{ - if ( _t == d->activeSheet ) - return; - - doc()->emitBeginOperation(false); - - saveCurrentSheetSelection(); - - Sheet * oldSheet = d->activeSheet; - - d->activeSheet = _t; - - if ( d->activeSheet == 0L ) - { - doc()->emitEndOperation(); - return; - } - - if ( oldSheet && oldSheet->layoutDirection()==Sheet::RightToLeft != d->activeSheet->layoutDirection()==Sheet::RightToLeft ) - refreshView(); - - doc()->setDisplaySheet( d->activeSheet ); - if ( updateSheet ) - { - d->tabBar->setActiveTab( _t->sheetName() ); - d->vBorderWidget->repaint(); - d->hBorderWidget->repaint(); - d->activeSheet->setRegionPaintDirty(TQRect(TQPoint(0,0), TQPoint(KS_colMax, KS_rowMax))); - d->canvas->slotMaxColumn( d->activeSheet->maxColumn() ); - d->canvas->slotMaxRow( d->activeSheet->maxRow() ); - } - - d->actions->showPageBorders->setChecked( d->activeSheet->isShowPageBorders() ); - d->actions->protectSheet->setChecked( d->activeSheet->isProtected() ); - d->actions->protectDoc->setChecked( doc()->map()->isProtected() ); - d->adjustActions( !d->activeSheet->isProtected() ); - d->adjustWorkbookActions( !doc()->map()->isProtected() ); - - /* see if there was a previous selection on this other sheet */ - TQMapIterator<Sheet*, TQPoint> it = d->savedAnchors.find(d->activeSheet); - TQMapIterator<Sheet*, TQPoint> it2 = d->savedMarkers.find(d->activeSheet); - TQMapIterator<Sheet*, KoPoint> it3 = d->savedOffsets.find(d->activeSheet); - - // TODO Stefan: store the save markers/anchors in the Selection? - TQPoint newAnchor = (it == d->savedAnchors.end()) ? TQPoint(1,1) : *it; - TQPoint newMarker = (it2 == d->savedMarkers.end()) ? TQPoint(1,1) : *it2; - - d->selection->clear(); - d->selection->setSheet( d->activeSheet ); - d->selection->initialize(TQRect(newMarker, newAnchor)); - - d->canvas->scrollToCell(newMarker); - if (it3 != d->savedOffsets.end()) - { - d->canvas->setXOffset((*it3).x()); - d->canvas->setYOffset((*it3).y()); - d->horzScrollBar->setValue((int)(*it3).x()); - d->vertScrollBar->setValue((int)(*it3).y()); - } - calcStatusBarOp(); - - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); -} - -void View::slotSheetRenamed( Sheet* sheet, const TQString& old_name ) -{ - doc()->emitBeginOperation( false ); - d->tabBar->renameTab( old_name, sheet->sheetName() ); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); -} - -void View::slotSheetHidden( Sheet* ) -{ - doc()->emitBeginOperation(false); - updateShowSheetMenu(); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); -} - -void View::slotSheetShown( Sheet* ) -{ - doc()->emitBeginOperation(false); - d->tabBar->setTabs( doc()->map()->visibleSheets() ); - updateShowSheetMenu(); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); -} - -void View::changeSheet( const TQString& _name ) -{ - if ( activeSheet()->sheetName() == _name ) - return; - - Sheet *t = doc()->map()->findSheet( _name ); - if ( !t ) - { - kdDebug(36001) << "Unknown sheet " << _name << endl; - return; - } - doc()->emitBeginOperation(false); - d->canvas->closeEditor(); // for selection mode - setActiveSheet( t, false /* False: Endless loop because of setActiveTab() => do the visual area update manually*/); - - d->canvas->updateEditor(); // for choose mode - updateEditWidget(); - //refresh toggle button - updateBorderButton(); - - //update visible area - d->vBorderWidget->repaint(); - d->hBorderWidget->repaint(); - d->canvas->slotMaxColumn( d->activeSheet->maxColumn() ); - d->canvas->slotMaxRow( d->activeSheet->maxRow() ); - t->setRegionPaintDirty( t->visibleRect( d->canvas ) ); - doc()->emitEndOperation(); -} - -void View::moveSheet( unsigned sheet, unsigned target ) -{ - if( doc()->map()->isProtected() ) return; - - TQStringList vs = doc()->map()->visibleSheets(); - - if( target >= vs.count() ) - doc()->map()->moveSheet( vs[ sheet ], vs[ vs.count()-1 ], false ); - else - doc()->map()->moveSheet( vs[ sheet ], vs[ target ], true ); - - d->tabBar->moveTab( sheet, target ); -} - -void View::sheetProperties() -{ - // sanity check, shouldn't happen - if( doc()->map()->isProtected() ) return; - if( d->activeSheet->isProtected() ) return; - - bool directionChanged = false; - - SheetPropertiesDialog* dlg = new SheetPropertiesDialog( this ); - dlg->setLayoutDirection( d->activeSheet->layoutDirection() ); - dlg->setAutoCalc( d->activeSheet->getAutoCalc() ); - dlg->setShowGrid( d->activeSheet->getShowGrid() ); - dlg->setShowPageBorders( d->activeSheet->isShowPageBorders() ); - dlg->setShowFormula( d->activeSheet->getShowFormula() ); - dlg->setHideZero( d->activeSheet->getHideZero() ); - dlg->setShowFormulaIndicator( d->activeSheet->getShowFormulaIndicator() ); - dlg->setShowCommentIndicator( d->activeSheet->getShowCommentIndicator() ); - dlg->setColumnAsNumber( d->activeSheet->getShowColumnNumber() ); - dlg->setLcMode( d->activeSheet->getLcMode() ); - dlg->setCapitalizeFirstLetter( d->activeSheet->getFirstLetterUpper() ); - - if( dlg->exec() ) - { - SheetPropertiesCommand* command = new SheetPropertiesCommand( doc(), d->activeSheet ); - - if ( d->activeSheet->layoutDirection() != dlg->layoutDirection() ) - directionChanged = true; - - command->setLayoutDirection( dlg->layoutDirection() ); - command->setAutoCalc( dlg->autoCalc() ); - command->setShowGrid( dlg->showGrid() ); - command->setShowPageBorders( dlg->showPageBorders() ); - command->setShowFormula( dlg->showFormula() ); - command->setHideZero( dlg->hideZero() ); - command->setShowFormulaIndicator( dlg->showFormulaIndicator() ); - command->setShowCommentIndicator( dlg->showCommentIndicator() ); - command->setColumnAsNumber( dlg->columnAsNumber() ); - command->setLcMode( dlg->lcMode() ); - command->setCapitalizeFirstLetter( dlg->capitalizeFirstLetter() ); - doc()->addCommand( command ); - command->execute(); - } - - delete dlg; - - if ( directionChanged ) - { - // the scrollbar and hborder remain reversed otherwise - d->horzScrollBar->setValue( d->horzScrollBar->maxValue() - - d->horzScrollBar->value() ); - d->hBorderWidget->update(); - } -} - -void View::insertSheet() -{ - if ( doc()->map()->isProtected() ) - { - KMessageBox::error( 0, i18n ( "You cannot change a protected sheet." ) ); - return; - } - - doc()->emitBeginOperation( false ); - d->canvas->closeEditor(); - Sheet * t = doc()->map()->createSheet(); - KCommand* command = new AddSheetCommand( t ); - doc()->addCommand( command ); - updateEditWidget(); - setActiveSheet( t ); - - if ( doc()->map()->visibleSheets().count() > 1 ) - { - d->actions->removeSheet->setEnabled( true ); - d->actions->hideSheet->setEnabled( true ); - } - - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); -} - -void View::hideSheet() -{ - if ( !d->activeSheet ) - return; - - if ( doc()->map()->visibleSheets().count() == 1) - { - KMessageBox::error( this, i18n("You cannot hide the last visible sheet.") ); - return; - } - - TQStringList vs = doc()->map()->visibleSheets(); - int i = vs.findIndex( d->activeSheet->tableName() ) - 1; - if( i < 0 ) i = 1; - TQString sn = vs[i]; - - doc()->emitBeginOperation(false); - - KCommand* command = new HideSheetCommand( activeSheet() ); - doc()->addCommand( command ); - command->execute(); - - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); - - d->tabBar->removeTab( d->activeSheet->sheetName() ); - d->tabBar->setActiveTab( sn ); -} - -void View::showSheet() -{ - if ( !d->activeSheet ) - return; - - ShowDialog dlg( this, "Sheet show"); - dlg.exec(); -} - -void View::copySelection() -{ - if ( !d->activeSheet ) - return; - - if ( canvasWidget()->isObjectSelected() ) - { - canvasWidget()->copyOasisObjects(); - return; - } - if ( !d->canvas->editor() ) - { - d->activeSheet->copySelection( selectionInfo() ); - - updateEditWidget(); - } - else - d->canvas->editor()->copy(); -} - -void View::copyAsText() -{ - if ( !d->activeSheet ) - return; - d->activeSheet->copyAsText( selectionInfo() ); -} - - -void View::cutSelection() -{ - if ( !d->activeSheet ) - return; - //don't used this function when we edit a cell. - doc()->emitBeginOperation(false); - - if ( canvasWidget()->isObjectSelected() ) - { - canvasWidget()->copyOasisObjects(); - markSelectionAsDirty(); - doc()->emitEndOperation(); - - KMacroCommand * macroCommand = 0L; - TQPtrListIterator<EmbeddedObject> it( doc()->embeddedObjects() ); - for ( ; it.current() ; ++it ) - { - if ( it.current()->sheet() == canvasWidget()->activeSheet() && it.current()->isSelected() ) - { - if( !macroCommand ) - macroCommand = new KMacroCommand( i18n( "Cut Objects" ) ); - RemoveObjectCommand *cmd = new RemoveObjectCommand( it.current(), true ); - macroCommand->addCommand( cmd ); - } - } - if ( macroCommand ) - { - doc()->addCommand( macroCommand ); - canvasWidget()->setMouseSelectedObject( false ); - macroCommand->execute(); - } - - return; - } - if ( !d->canvas->editor()) - { - d->activeSheet->cutSelection( selectionInfo() ); - calcStatusBarOp(); - updateEditWidget(); - } -else - d->canvas->editor()->cut(); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::paste() -{ - if ( !d->activeSheet ) - return; - - if (!koDocument()->isReadWrite()) // don't paste into a read only document - return; - - TQMimeSource *data = TQApplication::clipboard()->data( TQClipboard::Clipboard ); - for ( int i=0; data->format(i) != 0; i++ ) - kdDebug() << "format:" << data->format(i) << endl; - - if ( data->provides( KoStoreDrag::mimeType("application/vnd.oasis.opendocument.spreadsheet" ) )) - { - canvasWidget()->deselectAllObjects(); - TQCString returnedTypeMime = "application/vnd.oasis.opendocument.spreadsheet"; - const TQByteArray arr = data->encodedData( returnedTypeMime ); - if( arr.isEmpty() ) - return; - TQBuffer buffer( arr ); - KoStore * store = KoStore::createStore( TQT_TQIODEVICE(&buffer), KoStore::Read ); - - KoOasisStore oasisStore( store ); - TQDomDocument doc; - TQString errorMessage; - bool ok = oasisStore.loadAndParse( "content.xml", doc, errorMessage ); - if ( !ok ) { - kdError(32001) << "Error parsing content.xml: " << errorMessage << endl; - return; - } - - KoOasisStyles oasisStyles; - TQDomDocument stylesDoc; - (void)oasisStore.loadAndParse( "styles.xml", stylesDoc, errorMessage ); - // Load styles from style.xml - oasisStyles.createStyleMap( stylesDoc, true ); - // Also load styles from content.xml - oasisStyles.createStyleMap( doc, false ); - - // from KSpreadDoc::loadOasis: - TQDomElement content = doc.documentElement(); - TQDomElement realBody ( KoDom::namedItemNS( content, KoXmlNS::office, "body" ) ); - if ( realBody.isNull() ) - { - kdDebug() << "Invalid OASIS OpenDocument file. No office:body tag found." << endl; - return; - } - TQDomElement body = KoDom::namedItemNS( realBody, KoXmlNS::office, "spreadsheet" ); - - if ( body.isNull() ) - { - kdError(32001) << "No office:spreadsheet found!" << endl; - TQDomElement childElem; - TQString localName; - forEachElement( childElem, realBody ) { - localName = childElem.localName(); - } - return; - } - - KoOasisLoadingContext context( d->doc, oasisStyles, store ); - Q_ASSERT( !oasisStyles.officeStyle().isNull() ); - - //load in first - d->doc->styleManager()->loadOasisStyleTemplate( oasisStyles ); - -// // TODO check versions and mimetypes etc. - d->doc->loadOasisAreaName( body ); - d->doc->loadOasisCellValidation( body ); - - // all <sheet:sheet> goes to workbook - bool result = d->doc->map()->loadOasis( body, context ); - - if (!result) - return; - } - else - { - //TODO: What if the clipboard data is available in both pixmap and OASIS format? (ie. for embedded parts) - TQPixmap clipboardPixmap = TQApplication::clipboard()->pixmap( TQClipboard::Clipboard ); - if (!clipboardPixmap.isNull()) - { - d->activeSheet->insertPicture( markerDocumentPosition() , clipboardPixmap ); - } - } - - doc()->emitBeginOperation( false ); - if ( !d->canvas->editor() ) - { - //kdDebug(36001) << "Pasting. Rect= " << d->selection->selection(false) << " bytes" << endl; - d->activeSheet->paste( d->selection->lastRange(), true, - Paste::Normal, Paste::OverWrite, - false, 0, true ); - calcStatusBarOp(); - updateEditWidget(); - } - else - { - d->canvas->editor()->paste(); - } - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); -} - -void View::specialPaste() -{ - if ( !d->activeSheet ) - return; - - SpecialDialog dlg( this, "Special Paste" ); - if ( dlg.exec() ) - { - if ( d->activeSheet->getAutoCalc() ) - { - doc()->emitBeginOperation( false ); - d->activeSheet->recalc(); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); - } - calcStatusBarOp(); - updateEditWidget(); - } -} - -void View::removeComment() -{ - if ( !d->activeSheet ) - return; - - doc()->emitBeginOperation(false); - d->activeSheet->setSelectionRemoveComment( selectionInfo() ); - updateEditWidget(); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - - -void View::changeAngle() -{ - if ( !d->activeSheet ) - return; - - AngleDialog dlg( this, "Angle" , - TQPoint( d->canvas->markerColumn(), d->canvas->markerRow() )); - if ( dlg.exec() ) - { - //TODO Stefan: where is the angle operation? - d->activeSheet->adjustArea(*selectionInfo()); - } -} - -void View::setSelectionAngle( int angle ) -{ - doc()->emitBeginOperation( false ); - - if ( d->activeSheet != NULL ) - { - d->activeSheet->setSelectionAngle( selectionInfo(), angle ); - d->activeSheet->adjustArea(*selectionInfo()); - } - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::mergeCell() -{ - // sanity check - if( !d->activeSheet ) - return; - d->activeSheet->mergeCells(*selectionInfo()); -} - -void View::mergeCellHorizontal() -{ - // sanity check - if( !d->activeSheet ) - return; - d->activeSheet->mergeCells(*selectionInfo(), true); -} - -void View::mergeCellVertical() -{ - // sanity check - if( !d->activeSheet ) - return; - d->activeSheet->mergeCells(*selectionInfo(), false, true); -} - -void View::dissociateCell() -{ - // sanity check - if( !d->activeSheet ) - return; - d->activeSheet->dissociateCells(*selectionInfo()); -} - - -void View::increaseIndent() -{ - if ( !d->activeSheet ) - return; - - doc()->emitBeginOperation( false ); - d->activeSheet->increaseIndent( d->selection ); - updateEditWidget(); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::decreaseIndent() -{ - if ( !d->activeSheet ) - return; - - doc()->emitBeginOperation( false ); - int column = d->canvas->markerColumn(); - int row = d->canvas->markerRow(); - - d->activeSheet->decreaseIndent( d->selection ); - Cell * cell = d->activeSheet->cellAt( column, row ); - if ( cell ) - if ( !d->activeSheet->isProtected() ) - d->actions->decreaseIndent->setEnabled( cell->format()->getIndent( column, row ) > 0.0 ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::goalSeek() -{ - if ( d->canvas->editor() ) - { - d->canvas->deleteEditor( true ); // save changes - } - - GoalSeekDialog * dlg - = new GoalSeekDialog( this, TQPoint( d->canvas->markerColumn(), - d->canvas->markerRow() ), - "GoalSeekDialog" ); - dlg->show(); - /* dialog autodeletes itself */ -} - -void View::subtotals() -{ - if (!activeSheet()) - return; - - TQRect selection( d->selection->selection() ); - if ( ( selection.width() < 2 ) || ( selection.height() < 2 ) ) - { - KMessageBox::error( this, i18n("You must select multiple cells.") ); - return; - } - - SubtotalDialog dlg(this, selection, "SubtotalDialog" ); - if ( dlg.exec() ) - { - doc()->emitBeginOperation( false ); - - d->selection->initialize( TQRect(dlg.selection().topLeft(), dlg.selection().bottomRight()));//, dlg.sheet() ); - doc()->emitEndOperation( selection ); - } -} - -void View::multipleOperations() -{ - if ( d->canvas->editor() ) - { - d->canvas->deleteEditor( true ); // save changes - } - // MultipleOpDlg * dlg = new MultipleOpDlg( this, "MultipleOpDlg" ); - // dlg->show(); -} - -void View::textToColumns() -{ - if (!activeSheet()) - return; - - d->canvas->closeEditor(); - - TQRect area=d->selection->selection(); - - //Only use the first column - area.setRight(area.left()); - -/* if ( area.width() > 1 ) - { - //Only use the first column - - KMessageBox::error( this, i18n("You must not select an area containing more than one column.") ); - return; - }*/ - - CSVDialog dialog( this, "CSVDialog", area, CSVDialog::Column ); - if( !dialog.cancelled() ) - dialog.exec(); -} - -void View::consolidate() -{ - d->canvas->closeEditor(); - ConsolidateDialog * dlg = new ConsolidateDialog( this, "ConsolidateDialog" ); - dlg->show(); - // dlg destroys itself -} - -void View::sortList() -{ - if (!activeSheet()) return; - - ListDialog dlg( this, "List selection" ); - dlg.exec(); -} - -void View::gotoCell() -{ - if (!activeSheet()) return; - - GotoDialog dlg( this, "GotoCell" ); - dlg.exec(); -} - -void View::find() -{ - if (!activeSheet()) return; - - FindDlg dlg( this, "Find", d->findOptions, d->findStrings ); - dlg.setHasSelection( !d->selection->isSingular() ); - dlg.setHasCursor( true ); - if ( KFindDialog::Accepted != dlg.exec() ) - return; - - // Save for next time - d->findOptions = dlg.options(); - d->findStrings = dlg.findHistory(); - d->typeValue = dlg.searchType(); - d->directionValue = dlg.searchDirection(); - - // Create the KFind object - delete d->find; - delete d->replace; - d->find = new KFind( dlg.pattern(), dlg.options(), this ); - d->replace = 0L; - - d->searchInSheets.currentSheet = activeSheet(); - d->searchInSheets.firstSheet = d->searchInSheets.currentSheet; - - initFindReplace(); - findNext(); -} - -// Initialize a find or replace operation, using d->find or d->replace, -// and d->findOptions. -void View::initFindReplace() -{ - KFind* findObj = d->find ? d->find : d->replace; - Q_ASSERT( findObj ); - connect(findObj, TQT_SIGNAL( highlight( const TQString &, int, int ) ), - this, TQT_SLOT( slotHighlight( const TQString &, int, int ) ) ); - connect(findObj, TQT_SIGNAL( findNext() ), - this, TQT_SLOT( findNext() ) ); - - bool bck = d->findOptions & KFindDialog::FindBackwards; - Sheet* currentSheet = d->searchInSheets.currentSheet; - - TQRect region = ( d->findOptions & KFindDialog::SelectedText ) - ? d->selection->selection() - : TQRect( 1, 1, currentSheet->maxColumn(), currentSheet->maxRow() ); // All cells - - int colStart = !bck ? region.left() : region.right(); - int colEnd = !bck ? region.right() : region.left(); - int rowStart = !bck ? region.top() :region.bottom(); - int rowEnd = !bck ? region.bottom() : region.top(); - if ( d->findOptions & KFindDialog::FromCursor ) { - TQPoint marker( d->selection->marker() ); - colStart = marker.x(); - rowStart = marker.y(); - } - d->findLeftColumn = region.left(); - d->findRightColumn = region.right(); - d->findPos = TQPoint( colStart, rowStart ); - d->findEnd = TQPoint( colEnd, rowEnd ); - //kdDebug() << k_funcinfo << d->findPos << " to " << d->findEnd << endl; - //kdDebug() << k_funcinfo << "leftcol=" << d->findLeftColumn << " rightcol=" << d->findRightColumn << endl; -} - -void View::findNext() -{ - KFind* findObj = d->find ? d->find : d->replace; - if ( !findObj ) { - find(); - return; - } - KFind::Result res = KFind::NoMatch; - Cell* cell = findNextCell(); - bool forw = ! ( d->findOptions & KFindDialog::FindBackwards ); - while ( res == KFind::NoMatch && cell ) - { - if ( findObj->needData() ) - { - if ( d->typeValue == FindOption::Note ) - findObj->setData( cell->format()->comment( cell->column(), cell->row() ) ); - else - findObj->setData( cell->text() ); - d->findPos = TQPoint( cell->column(), cell->row() ); - //kdDebug() << "setData(cell " << d->findPos << ")" << endl; - } - - // Let KFind inspect the text fragment, and display a dialog if a match is found - if ( d->find ) - res = d->find->find(); - else - res = d->replace->replace(); - - if ( res == KFind::NoMatch ) { - // Go to next cell, skipping unwanted cells - if ( d->directionValue == FindOption::Row ) - { - if ( forw ) - ++d->findPos.rx(); - else - --d->findPos.rx(); - } - else - { - if ( forw ) - ++d->findPos.ry(); - else - --d->findPos.ry(); - } - cell = findNextCell(); - } - } - - if ( res == KFind::NoMatch ) - { - //emitUndoRedo(); - //removeHighlight(); - if ( findObj->shouldRestart() ) { - d->findOptions &= ~KFindDialog::FromCursor; - findObj->resetCounts(); - findNext(); - } - else { // done, close the 'find next' dialog - if ( d->find ) - d->find->closeFindNextDialog(); - else - d->replace->closeReplaceNextDialog(); - } - } -} - -Cell* View::nextFindValidCell( int col, int row ) -{ - Cell *cell = d->searchInSheets.currentSheet->cellAt( col, row ); - if ( cell->isDefault() || cell->isObscured() || cell->isFormula() ) - cell = 0L; - if ( d->typeValue == FindOption::Note && cell && cell->format()->comment(col, row).isEmpty()) - cell = 0L; - return cell; -} - -Cell* View::findNextCell() -{ - // getFirstCellRow / getNextCellRight would be faster at doing that, - // but it doesn't seem to be easy to combine it with 'start a column d->find.x()'... - - Sheet* sheet = d->searchInSheets.currentSheet; - Cell* cell = 0L; - bool forw = ! ( d->findOptions & KFindDialog::FindBackwards ); - int col = d->findPos.x(); - int row = d->findPos.y(); - int maxRow = sheet->maxRow(); - //kdDebug() << "findNextCell starting at " << col << "," << row << " forw=" << forw << endl; - - if ( d->directionValue == FindOption::Row ) - { - while ( !cell && row != d->findEnd.y() && (forw ? row < maxRow : row >= 0) ) - { - while ( !cell && (forw ? col <= d->findRightColumn : col >= d->findLeftColumn) ) - { - cell = nextFindValidCell( col, row ); - if ( forw ) ++col; - else --col; - } - if ( cell ) - break; - // Prepare looking in the next row - if ( forw ) { - col = d->findLeftColumn; - ++row; - } else { - col = d->findRightColumn; - --row; - } - //kdDebug() << "next row: " << col << "," << row << endl; - } - } - else - { - while ( !cell && (forw ? col <= d->findRightColumn : col >= d->findLeftColumn) ) - { - while ( !cell && row != d->findEnd.y() && (forw ? row < maxRow : row >= 0) ) - { - cell = nextFindValidCell( col, row ); - if ( forw ) ++row; - else --row; - } - if ( cell ) - break; - // Prepare looking in the next col - if ( forw ) { - row = 0; - ++col; - } else { - col = maxRow; - --col; - } - //kdDebug() << "next row: " << col << "," << row << endl; - } - } - // if ( !cell ) - // No more next cell - TODO go to next sheet (if not looking in a selection) - // (and make d->findEnd (max,max) in that case...) - //kdDebug() << k_funcinfo << " returning " << cell << endl; - return cell; -} - -void View::findPrevious() -{ - KFind* findObj = d->find ? d->find : d->replace; - if ( !findObj ) { - find(); - return; - } - //kdDebug() << "findPrevious" << endl; - int opt = d->findOptions; - bool forw = ! ( opt & KFindDialog::FindBackwards ); - if ( forw ) - d->findOptions = ( opt | KFindDialog::FindBackwards ); - else - d->findOptions = ( opt & ~KFindDialog::FindBackwards ); - - findNext(); - - d->findOptions = opt; // restore initial options -} - -void View::replace() -{ - if (!d->activeSheet) - return; - - SearchDlg dlg( this, "Replace", d->findOptions, d->findStrings, d->replaceStrings ); - dlg.setHasSelection( !d->selection->isSingular() ); - dlg.setHasCursor( true ); - if ( KReplaceDialog::Accepted != dlg.exec() ) - return; - - d->findOptions = dlg.options(); - d->findStrings = dlg.findHistory(); - d->replaceStrings = dlg.replacementHistory(); - d->typeValue = dlg.searchType(); - - delete d->find; - delete d->replace; - d->find = 0L; - // NOTE Stefan: Avoid beginning of line replacements with nothing which - // will lead to an infinite loop (Bug #125535). The reason - // for this is unclear to me, but who cares and who would - // want to do something like this, häh?! - if (dlg.pattern() == "^" && dlg.replacement().isEmpty()) - return; - d->replace = new KReplace( dlg.pattern(), dlg.replacement(), dlg.options() ); - - d->searchInSheets.currentSheet = activeSheet(); - d->searchInSheets.firstSheet = d->searchInSheets.currentSheet; - initFindReplace(); - connect( d->replace, TQT_SIGNAL( replace( const TQString &, int, int, int ) ), - this, TQT_SLOT( slotReplace( const TQString &, int, int, int ) ) ); - - if ( !doc()->undoLocked() ) - { - TQRect region( d->findPos, d->findEnd ); - //TODO create undo/redo for comment - UndoChangeAreaTextCell *undo = new UndoChangeAreaTextCell( doc(), d->searchInSheets.currentSheet, region ); - doc()->addCommand( undo ); - } - - findNext(); - -#if 0 - // Refresh the editWidget - // TODO - after a replacement only? - Cell *cell = activeSheet()->cellAt( canvasWidget()->markerColumn(), - canvasWidget()->markerRow() ); - if ( cell->text() != 0L ) - d->editWidget->setText( cell->text() ); - else - d->editWidget->setText( "" ); -#endif -} - -void View::slotHighlight( const TQString &/*text*/, int /*matchingIndex*/, int /*matchedLength*/ ) -{ - d->selection->initialize( d->findPos ); - KDialogBase *baseDialog=0L; - if ( d->find ) - baseDialog = d->find->findNextDialog(); - else - baseDialog = d->replace->replaceNextDialog(); - kdDebug()<<" baseDialog :"<<baseDialog<<endl; - TQRect globalRect( d->findPos, d->findEnd ); - globalRect.moveTopLeft( canvasWidget()->mapToGlobal( globalRect.topLeft() ) ); - KDialog::avoidArea( baseDialog, TQRect( d->findPos, d->findEnd )); -} - -void View::slotReplace( const TQString &newText, int, int, int ) -{ - // Which cell was this again? - Cell *cell = d->searchInSheets.currentSheet->cellAt( d->findPos ); - - // ...now I remember, update it! - cell->setDisplayDirtyFlag(); - if ( d->typeValue == FindOption::Value ) - cell->setCellText( newText ); - else if ( d->typeValue == FindOption::Note ) - cell->format()->setComment( newText ); - cell->clearDisplayDirtyFlag(); -} - -void View::conditional() -{ - TQRect rect( d->selection->selection() ); - - if ( util_isRowOrColumnSelected(rect)) - { - KMessageBox::error( this, i18n("Area is too large.") ); - } - else - { - ConditionalDialog dlg( this, "ConditionalDialog", rect); - dlg.exec(); - } -} - -void View::validity() -{ - TQRect rect( d->selection->selection() ); - - if (d->selection->isColumnOrRowSelected()) - { - KMessageBox::error( this, i18n("Area is too large.")); - } - else - { - DlgValidity dlg( this,"validity",rect); - dlg.exec(); - } -} - - -void View::insertSeries() -{ - d->canvas->closeEditor(); - SeriesDlg dlg( this, "Series", TQPoint( d->canvas->markerColumn(), d->canvas->markerRow() ) ); - dlg.exec(); -} - -void View::sort() -{ - if ( d->selection->isSingular() ) - { - KMessageBox::error( this, i18n("You must select multiple cells.") ); - return; - } - - SortDialog dlg( this, "Sort" ); - dlg.exec(); -} - -void View::removeHyperlink() -{ - TQPoint marker( d->selection->marker() ); - Cell * cell = d->activeSheet->cellAt( marker ); - if( !cell ) return; - if( cell->link().isEmpty() ) return; - - LinkCommand* command = new LinkCommand( cell, TQString(), TQString() ); - doc()->addCommand( command ); - command->execute(); - - canvasWidget()->setFocus(); - d->editWidget->setText( cell->text() ); -} - -void View::insertHyperlink() -{ - if (!activeSheet()) - return; - - d->canvas->closeEditor(); - - TQPoint marker( d->selection->marker() ); - Cell* cell = d->activeSheet->cellAt( marker ); - - LinkDialog* dlg = new LinkDialog( this ); - dlg->setCaption( i18n( "Insert Link" ) ); - if( cell ) - { - dlg->setText( cell->text() ); - if( !cell->link().isEmpty() ) - { - dlg->setCaption( i18n( "Edit Link" ) ); - dlg->setLink( cell->link() ); - } - } - - if( dlg->exec() == KDialog::Accepted ) - { - cell = d->activeSheet->nonDefaultCell( marker ); - - LinkCommand* command = new LinkCommand( cell, dlg->text(), dlg->link() ); - doc()->addCommand( command ); - command->execute(); - - //refresh editWidget - canvasWidget()->setFocus(); - d->editWidget->setText( cell->text() ); - } - delete dlg; -} - -void View::insertFromDatabase() -{ -#ifndef TQT_NO_SQL - d->canvas->closeEditor(); - - TQRect rect = d->selection->selection(); - - TQStringList str = TQSqlDatabase::drivers(); - if ( str.isEmpty() ) - { - KMessageBox::error( this, i18n("No database drivers available. To use this feature you need " - "to install the necessary TQt 3 database drivers.") ); - - return; - } - - doc()->doNotPaint( true ); - DatabaseDialog dlg(this, rect, "DatabaseDialog"); - dlg.exec(); - doc()->doNotPaint( false ); -#endif -} - -void View::insertFromTextfile() -{ - d->canvas->closeEditor(); - //KMessageBox::information( this, "Not implemented yet, work in progress..."); - doc()->doNotPaint( true ); - CSVDialog dialog( this, "CSVDialog", d->selection->selection(), CSVDialog::File ); - if( !dialog.cancelled() ) - dialog.exec(); - doc()->doNotPaint( false ); -} - -void View::insertFromClipboard() -{ - d->canvas->closeEditor(); - doc()->doNotPaint( true ); - CSVDialog dialog( this, "CSVDialog", d->selection->selection(), CSVDialog::Clipboard ); - if( !dialog.cancelled() ) - dialog.exec(); - doc()->doNotPaint( false ); -} - -void View::setupPrinter( KPrinter &prt ) -{ - if (!activeSheet()) - return; - - SheetPrint* print = d->activeSheet->print(); - - //apply page layout parameters - KoFormat pageFormat = print->paperFormat(); - - prt.setPageSize( static_cast<KPrinter::PageSize>( KoPageFormat::printerPageSize( pageFormat ) ) ); - - if ( print->orientation() == PG_LANDSCAPE || pageFormat == PG_SCREEN ) - prt.setOrientation( KPrinter::Landscape ); - else - prt.setOrientation( KPrinter::Portrait ); - - prt.setFullPage( true ); - - //add possibility to select the sheets to print: -// kdDebug() << "Adding sheet selection page." << endl; - KPSheetSelectPage* sheetpage = new KPSheetSelectPage(); - prt.addDialogPage(sheetpage); - -// kdDebug() << "Iterating through available sheets and initializing list of available sheets." << endl; - TQPtrList<Sheet> sheetlist = doc()->map()->sheetList(); - Sheet* sheet = sheetlist.last(); - while ( sheet ) - { - kdDebug() << "Adding " << sheet->sheetName() << endl; - sheetpage->prependAvailableSheet(sheet->sheetName()); - sheet = sheetlist.prev(); - } -} - -void View::print( KPrinter &prt ) -{ - if (!activeSheet()) - return; - - //save the current active sheet for later, so we can restore it at the end - Sheet* selectedsheet = this->activeSheet(); - - //print all sheets in the order given by the print dialog (Sheet Selection) - TQStringList sheetlist = KPSheetSelectPage::selectedSheets(prt); - - if (sheetlist.empty()) - { - kdDebug() << "No sheet for printing selected, printing active sheet" << endl; - sheetlist.append(d->activeSheet->sheetName()); - } - - TQPainter painter; - painter.begin( &prt ); - - bool firstpage = true; - - TQStringList::iterator sheetlistiterator; - for (sheetlistiterator = sheetlist.begin(); sheetlistiterator != sheetlist.end(); ++sheetlistiterator) - { - kdDebug() << " printing sheet " << *sheetlistiterator << endl; - Sheet* sheet = doc()->map()->findSheet(*sheetlistiterator); - if (sheet == NULL) - { - kdWarning() << i18n("Sheet %1 could not be found for printing").arg(*sheetlistiterator) << endl; - continue; - } - - setActiveSheet(sheet,FALSE); - - SheetPrint* print = d->activeSheet->print(); - - if (firstpage) - firstpage=false; - else - { - kdDebug() << " inserting new page" << endl; - prt.newPage(); - } - - if ( d->canvas->editor() ) - { - d->canvas->deleteEditor( true ); // save changes - } - - int oldZoom = doc()->zoom(); - - //Comment from KWord - // We don't get valid metrics from the printer - and we want a better resolution - // anyway (it's the PS driver that takes care of the printer resolution). - //But KSpread uses fixed 300 dpis, so we can use it. - - TQPaintDeviceMetrics metrics( &prt ); - - int dpiX = metrics.logicalDpiX(); - int dpiY = metrics.logicalDpiY(); - - doc()->setZoomAndResolution( int( print->zoom() * 100 ), dpiX, dpiY ); - - //store the current setting in a temporary variable - KoOrientation _orient = print->orientation(); - - //use the current orientation from print dialog - if ( prt.orientation() == KPrinter::Landscape ) - { - print->setPaperOrientation( PG_LANDSCAPE ); - } - else - { - print->setPaperOrientation( PG_PORTRAIT ); - } - - bool result = print->print( painter, &prt ); - - //Restore original orientation - print->setPaperOrientation( _orient ); - - doc()->setZoomAndResolution( oldZoom, KoGlobal::dpiX(), KoGlobal::dpiY() ); - doc()->newZoomAndResolution( true, false ); - - // Repaint at correct zoom - doc()->emitBeginOperation( false ); - setZoom( oldZoom, false ); - doc()->emitEndOperation(); - - // Nothing to print - if( !result ) - { - if( !prt.previewOnly() ) - { - KMessageBox::information( 0, - i18n("Nothing to print for sheet %1.").arg( - d->activeSheet->sheetName()) ); - //@todo: make sure we really can comment this out, - // what to do with partially broken printouts? -// prt.abort(); - } - } - } - - painter.end(); - this->setActiveSheet(selectedsheet); -} - -void View::insertChart( const TQRect& _geometry, KoDocumentEntry& _e ) -{ - if ( !d->activeSheet ) - return; - - // Transform the view coordinates to document coordinates - KoRect unzoomedRect = doc()->unzoomRect( _geometry ); - unzoomedRect.moveBy( d->canvas->xOffset(), d->canvas->yOffset() ); - - InsertObjectCommand *cmd = 0; - if ( d->selection->isColumnOrRowSelected() ) - { - KMessageBox::error( this, i18n("Area is too large.")); - return; - } - else - cmd = new InsertObjectCommand( unzoomedRect, _e, d->selection->selection(), d->canvas ); - - doc()->addCommand( cmd ); - cmd->execute(); -} - -void View::insertChild( const TQRect& _geometry, KoDocumentEntry& _e ) -{ - if ( !d->activeSheet ) - return; - - // Transform the view coordinates to document coordinates - KoRect unzoomedRect = doc()->unzoomRect( _geometry ); - unzoomedRect.moveBy( d->canvas->xOffset(), d->canvas->yOffset() ); - - InsertObjectCommand *cmd = new InsertObjectCommand( unzoomedRect, _e, d->canvas ); - doc()->addCommand( cmd ); - cmd->execute(); -} - -KoPoint View::markerDocumentPosition() -{ - TQPoint marker=selectionInfo()->marker(); - - return KoPoint( d->activeSheet->dblColumnPos(marker.x()), - d->activeSheet->dblRowPos(marker.y()) ); -} - -void View::insertPicture() -{ - //Note: We don't use the usual insert handler here (which allows the user to drag-select the target area - //for the object) because when inserting raster graphics, it is usually desireable to insert at 100% size, - //since the graphic won't look right if inserted with an incorrect aspect ratio or if blurred due to the - //scaling. If the user wishes to change the size and/or aspect ratio, they can do that afterwards. - //This behaviour can be seen in other spreadsheets. - //-- Robert Knight 12/02/06 <robertknight@gmail.com> - - KURL file = KFileDialog::getImageOpenURL( TQString(), d->canvas ); - - if (file.isEmpty()) - return; - - if ( !d->activeSheet ) - return; - - InsertObjectCommand *cmd = new InsertObjectCommand( KoRect(markerDocumentPosition(),KoSize(0,0)) , file, d->canvas ); - doc()->addCommand( cmd ); - cmd->execute(); -} - -void View::slotUpdateChildGeometry( EmbeddedKOfficeObject */*_child*/ ) -{ - // ############## - // TODO - /* - if ( _child->sheet() != d->activeSheet ) - return; - - // Find frame for child - ChildFrame *f = 0L; - TQPtrListIterator<ChildFrame> it( m_lstFrames ); - for ( ; it.current() && !f; ++it ) - if ( it.current()->child() == _child ) - f = it.current(); - - assert( f != 0L ); - - // Are we already up to date ? - if ( _child->geometry() == f->partGeometry() ) - return; - - // TODO zooming - f->setPartGeometry( _child->geometry() ); - */ -} - -void View::toggleProtectDoc( bool mode ) -{ - if ( !doc() || !doc()->map() ) - return; - - TQString password; - if ( mode ) - { - int result = KPasswordDialog::getNewPassword( password, i18n( "Protect Document" ) ); - if ( result != KPasswordDialog::Accepted ) - { - d->actions->protectDoc->setChecked( false ); - return; - } - - TQCString hash( "" ); - if ( password.length() > 0 ) - SHA1::getHash( password, hash ); - doc()->map()->setProtected( hash ); - } - else - { - int result = KPasswordDialog::getPassword( password, i18n( "Unprotect Document" ) ); - if ( result != KPasswordDialog::Accepted ) - { - d->actions->protectDoc->setChecked( true ); - return; - } - - TQCString hash( "" ); - if ( password.length() > 0 ) - SHA1::getHash( password, hash ); - if ( !doc()->map()->checkPassword( hash ) ) - { - KMessageBox::error( 0, i18n( "Password is incorrect." ) ); - d->actions->protectDoc->setChecked( true ); - return; - } - - doc()->map()->setProtected( TQCString() ); - } - - doc()->setModified( true ); - d->adjustWorkbookActions( !mode ); -} - -void View::toggleProtectSheet( bool mode ) -{ - if ( !d->activeSheet ) - return; - - TQString password; - if ( mode ) - { - int result = KPasswordDialog::getNewPassword( password, i18n( "Protect Sheet" ) ); - if ( result != KPasswordDialog::Accepted ) - { - d->actions->protectSheet->setChecked( false ); - return; - } - - TQCString hash( "" ); - if ( password.length() > 0 ) - SHA1::getHash( password, hash ); - - d->activeSheet->setProtected( hash ); - } - else - { - int result = KPasswordDialog::getPassword( password, i18n( "Unprotect Sheet" ) ); - if ( result != KPasswordDialog::Accepted ) - { - d->actions->protectSheet->setChecked( true ); - return; - } - - TQCString hash( "" ); - if ( password.length() > 0 ) - SHA1::getHash( password, hash ); - - if ( !d->activeSheet->checkPassword( hash ) ) - { - KMessageBox::error( 0, i18n( "Password is incorrect." ) ); - d->actions->protectSheet->setChecked( true ); - return; - } - - d->activeSheet->setProtected( TQCString() ); - } - doc()->setModified( true ); - d->adjustActions( !mode ); - doc()->emitBeginOperation(); - // d->activeSheet->setRegionPaintDirty( TQRect(TQPoint( 0, 0 ), TQPoint( KS_colMax, KS_rowMax ) ) ); - refreshView(); - updateEditWidget(); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); -} - -void View::togglePageBorders( bool mode ) -{ - if ( !d->activeSheet ) - return; - - doc()->emitBeginOperation( false ); - d->activeSheet->setShowPageBorders( mode ); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); -} - -void View::viewZoom( const TQString & s ) -{ - - int oldZoom = doc()->zoom(); - - bool ok = false; - TQRegExp regexp("(\\d+)"); // "Captured" non-empty sequence of digits - regexp.search(s); - int newZoom=regexp.cap(1).toInt(&ok); - if ( !ok || newZoom < 10 ) //zoom should be valid and >10 - newZoom = oldZoom; - if ( newZoom != oldZoom ) - { - d->actions->viewZoom->setZoom( newZoom ); - - doc()->emitBeginOperation( false ); - - d->canvas->closeEditor(); - setZoom( newZoom, true ); - - if (activeSheet()) - { - TQRect r( d->activeSheet->visibleRect( d->canvas ) ); - r.setWidth( r.width() + 2 ); - doc()->emitEndOperation( r ); - } - } -} - -void View::setZoom( int zoom, bool /*updateViews*/ ) -{ - kdDebug() << "---------SetZoom: " << zoom << endl; - - // Set the zoom in KoView (for embedded views) - doc()->emitBeginOperation( false ); - - doc()->setZoomAndResolution( zoom, KoGlobal::dpiX(), KoGlobal::dpiY()); - //KoView::setZoom( doc()->zoomedResolutionY() /* KoView only supports one zoom */ ); - - Q_ASSERT(d->activeSheet); - - if (d->activeSheet) //this is 0 when viewing a document in konqueror!? (see Q_ASSERT above) - d->activeSheet->setRegionPaintDirty(TQRect(TQPoint(0,0), TQPoint(KS_colMax, KS_rowMax))); - - doc()->refreshInterface(); - doc()->emitEndOperation(); -} - -void View::showStatusBar( bool b ) -{ - doc()->setShowStatusBar( b ); - refreshView(); -} - -void View::showTabBar( bool b ) -{ - doc()->setShowTabBar( b ); - refreshView(); -} - -void View::showFormulaBar( bool b ) -{ - doc()->setShowFormulaBar( b ); - refreshView(); -} - -void View::preference() -{ - if ( !d->activeSheet ) - return; - - PreferenceDialog dlg( this, "Preference" ); - if ( dlg.exec() ) - { - doc()->emitBeginOperation( false ); - d->activeSheet->refreshPreference(); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); - } -} - -void View::addModifyComment() -{ - if ( !d->activeSheet ) - return; - - CommentDialog dlg( this, "comment", - TQPoint( d->canvas->markerColumn(), - d->canvas->markerRow() ) ); - if ( dlg.exec() ) - updateEditWidget(); -} - -void View::setSelectionComment( TQString comment ) -{ - if ( d->activeSheet != NULL ) - { - doc()->emitBeginOperation( false ); - - d->activeSheet->setSelectionComment( selectionInfo(), comment.stripWhiteSpace() ); - updateEditWidget(); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::editCell() -{ - if ( d->canvas->editor() ) - return; - - d->canvas->createEditor(true); -} - -bool View::showSheet(const TQString& sheetName) { - Sheet *t=doc()->map()->findSheet(sheetName); - if ( !t ) - { - kdDebug(36001) << "Unknown sheet " <<sheetName<< endl; - return false; - } - d->canvas->closeEditor(); - setActiveSheet( t ); - - return true; -} - -void View::nextSheet() -{ - Sheet * t = doc()->map()->nextSheet( activeSheet() ); - if ( !t ) - { - kdDebug(36001) << "Unknown sheet " << endl; - return; - } - d->canvas->closeEditor(); - setActiveSheet( t ); - d->tabBar->setActiveTab( t->sheetName() ); - d->tabBar->ensureVisible( t->sheetName() ); -} - -void View::previousSheet() -{ - Sheet * t = doc()->map()->previousSheet( activeSheet() ); - if ( !t ) - { - kdDebug(36001) << "Unknown sheet " << endl; - return; - } - d->canvas->closeEditor(); - setActiveSheet( t ); - d->tabBar->setActiveTab( t->sheetName() ); - d->tabBar->ensureVisible( t->sheetName() ); -} - -void View::firstSheet() -{ - Sheet *t = doc()->map()->firstSheet(); - if ( !t ) - { - kdDebug(36001) << "Unknown sheet " << endl; - return; - } - d->canvas->closeEditor(); - setActiveSheet( t ); - d->tabBar->setActiveTab( t->sheetName() ); - d->tabBar->ensureVisible( t->sheetName() ); -} - -void View::lastSheet() -{ - Sheet *t = doc()->map()->lastSheet( ); - if ( !t ) - { - kdDebug(36001) << "Unknown sheet " << endl; - return; - } - d->canvas->closeEditor(); - setActiveSheet( t ); - d->tabBar->setActiveTab( t->sheetName() ); - d->tabBar->ensureVisible( t->sheetName() ); -} - -void View::keyPressEvent ( TQKeyEvent* _ev ) -{ - // Dont eat accelerators - if ( _ev->state() & ( TQt::AltButton | TQt::ControlButton ) ) - { - if ( _ev->state() & ( TQt::ControlButton ) ) - { - switch( _ev->key() ) - { -#ifndef NDEBUG - case TQt::Key_V: // Ctrl+Shift+V to show debug (similar to KWord) - if ( _ev->state() & TQt::ShiftButton ) - d->activeSheet->printDebug(); -#endif - default: - TQWidget::keyPressEvent( _ev ); - return; - } - } - TQWidget::keyPressEvent( _ev ); - } - else - TQApplication::sendEvent( d->canvas, _ev ); -} - -KoDocument * View::hitTest( const TQPoint& /*pos*/ ) -{ -// // Code copied from KoView::hitTest -// KoViewChild *viewChild; -// -// TQWMatrix m = matrix(); -// m.translate( d->canvas->xOffset() / doc()->zoomedResolutionX(), -// d->canvas->yOffset() / doc()->zoomedResolutionY() ); -// -// KoDocumentChild *docChild = selectedChild(); -// if ( docChild ) -// { -// if ( ( viewChild = child( docChild->document() ) ) ) -// { -// if ( viewChild->frameRegion( m ).contains( pos ) ) -// return 0; -// } -// else -// if ( docChild->frameRegion( m ).contains( pos ) ) -// return 0; -// } -// -// docChild = activeChild(); -// if ( docChild ) -// { -// if ( ( viewChild = child( docChild->document() ) ) ) -// { -// if ( viewChild->frameRegion( m ).contains( pos ) ) -// return 0; -// } -// else -// if ( docChild->frameRegion( m ).contains( pos ) ) -// return 0; -// } -// -// TQPtrListIterator<KoDocumentChild> it( doc()->children() ); -// for (; it.current(); ++it ) -// { -// // Is the child document on the visible sheet ? -// if ( ((EmbeddedKOfficeObject*)it.current())->sheet() == d->activeSheet ) -// { -// KoDocument *doc = it.current()->hitTest( pos, m ); -// if ( doc ) -// return doc; -// } -// } -// - return doc(); -} - -int View::leftBorder() const -{ - return int( d->canvas->doc()->zoomItX( YBORDER_WIDTH ) ); -} - -int View::rightBorder() const -{ - return d->vertScrollBar->width(); -} - -int View::topBorder() const -{ - return d->toolWidget->height() + int( d->canvas->doc()->zoomItX( Format::globalRowHeight() + 2 ) ); -} - -int View::bottomBorder() const -{ - return d->horzScrollBar->height(); -} - -void View::refreshView() -{ - kdDebug() << "refreshing view" << endl; - - Sheet * sheet = activeSheet(); - if ( !sheet ) - return; - - d->adjustActions( !sheet->isProtected() ); - d->actions->viewZoom->setZoom( doc()->zoom() ); - - bool active = sheet->getShowFormula(); - if ( sheet && !sheet->isProtected() ) - { - d->actions->alignLeft->setEnabled( !active ); - d->actions->alignCenter->setEnabled( !active ); - d->actions->alignRight->setEnabled( !active ); - } - - d->tabBar->setReadOnly( !doc()->isReadWrite() || doc()->map()->isProtected() ); - - d->toolWidget->setShown( doc()->showFormulaBar() ); - d->editWidget->showEditWidget( doc()->showFormulaBar() ); - d->hBorderWidget->setShown( doc()->showColumnHeader() ); - d->vBorderWidget->setShown( doc()->showRowHeader() ); - d->vertScrollBar->setShown( doc()->showVerticalScrollBar() ); - d->horzScrollBar->setShown( doc()->showHorizontalScrollBar() ); - d->tabBar->setShown( doc()->showTabBar() ); - if ( statusBar() ) statusBar()->setShown( doc()->showStatusBar() ); - - d->canvas->updatePosWidget(); - - d->hBorderWidget->setMinimumHeight( doc()->zoomItY( KoGlobal::defaultFont().pointSizeFloat() + 5 ) ); - d->vBorderWidget->setMinimumWidth( doc()->zoomItX( YBORDER_WIDTH ) ); - - Sheet::LayoutDirection sheetDir = sheet->layoutDirection(); - bool interfaceIsRTL = TQApplication::reverseLayout(); - - kdDebug()<<" sheetDir == Sheet::LeftToRight :"<<( sheetDir == Sheet::LeftToRight )<<endl; - if ((sheetDir == Sheet::LeftToRight && !interfaceIsRTL) || - (sheetDir == Sheet::RightToLeft && interfaceIsRTL)) - { - d->formulaBarLayout->setDirection( TQBoxLayout::LeftToRight ); - d->viewLayout->setOrigin( TQGridLayout::TopLeft ); - d->tabScrollBarLayout->setDirection( TQBoxLayout::LeftToRight ); - d->tabBar->setReverseLayout( interfaceIsRTL ); - } - else - { - d->formulaBarLayout->setDirection( TQBoxLayout::RightToLeft ); - d->viewLayout->setOrigin( TQGridLayout::TopRight ); - d->tabScrollBarLayout->setDirection( TQBoxLayout::RightToLeft ); - d->tabBar->setReverseLayout( !interfaceIsRTL ); - } -} - -void View::resizeEvent( TQResizeEvent * ) -{ -} - -void View::popupChildMenu( KoChild* child, const TQPoint& /*global_pos*/ ) -{ - if ( !child ) - return; - - delete d->popupChild; - -// d->popupChildObject = static_cast<EmbeddedKOfficeObject*>(child); -// -// d->popupChild = new TQPopupMenu( this ); -// -// d->popupChild->insertItem( i18n("Delete Embedded Document"), this, TQT_SLOT( slotPopupDeleteChild() ) ); -// -// d->popupChild->popup( global_pos ); - -} - -void View::slotPopupDeleteChild() -{ -// if ( !d->popupChildObject || !d->popupChildObject->sheet() ) -// return; - - //Removed popup warning dialog because - // a) It is annoying from a user's persepective - // b) The behaviour should be consistant with other KOffice apps - - /*int ret = KMessageBox::warningContinueCancel(this,i18n("You are about to remove this embedded document.\nDo you want to continue?"),i18n("Delete Embedded Document"),KGuiItem(i18n("&Delete"),"edit-delete")); - if ( ret == KMessageBox::Continue ) - { - -}*/ -// doc()->emitBeginOperation(false); -// d->popupChildObject->sheet()->deleteChild( d->popupChildObject ); -// d->popupChildObject = 0; -// doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); -} - -void View::popupColumnMenu( const TQPoint & _point ) -{ - assert( d->activeSheet ); - - if ( !koDocument()->isReadWrite() ) - return; - - delete d->popupColumn ; - - d->popupColumn = new TQPopupMenu( this ); - - bool isProtected = d->activeSheet->isProtected(); - - if ( !isProtected ) - { - d->actions->cellLayout->plug( d->popupColumn ); - d->popupColumn->insertSeparator(); - d->actions->cut->plug( d->popupColumn ); - } - d->actions->copy->plug( d->popupColumn ); - if ( !isProtected ) - { - d->actions->paste->plug( d->popupColumn ); - d->actions->specialPaste->plug( d->popupColumn ); - d->actions->insertCellCopy->plug( d->popupColumn ); - d->popupColumn->insertSeparator(); - d->actions->defaultFormat->plug( d->popupColumn ); - // If there is no selection - if (!d->selection->isColumnOrRowSelected()) - { - d->actions->areaName->plug( d->popupColumn ); - } - - d->actions->resizeColumn->plug( d->popupColumn ); - d->popupColumn->insertItem( i18n("Adjust Column"), this, TQT_SLOT(slotPopupAdjustColumn() ) ); - d->popupColumn->insertSeparator(); - d->actions->insertColumn->plug( d->popupColumn ); - d->actions->deleteColumn->plug( d->popupColumn ); - d->actions->hideColumn->plug( d->popupColumn ); - - d->actions->showSelColumns->setEnabled(false); - - ColumnFormat* format; - //kdDebug(36001) << "Column: L: " << rect.left() << endl; - Region::ConstIterator endOfList = d->selection->constEnd(); - for (Region::ConstIterator it = d->selection->constBegin(); it != endOfList; ++it) - { - TQRect range = (*it)->rect().normalize(); - int col; - for (col = range.left(); col < range.right(); ++col) - { - format = activeSheet()->columnFormat(col); - - if ( format->isHide() ) - { - d->actions->showSelColumns->setEnabled( true ); - d->actions->showSelColumns->plug( d->popupColumn ); - break; - } - } - if (range.left() > 1 && col == range.right()) - { - bool allHidden = true; - for (col = 1; col < range.left(); ++col) - { - format = activeSheet()->columnFormat(col); - - allHidden &= format->isHide(); - } - if (allHidden) - { - d->actions->showSelColumns->setEnabled( true ); - d->actions->showSelColumns->plug( d->popupColumn ); - break; - } - } - else - { - break; - } - } - } - - TQT_BASE_OBJECT_NAME::connect( d->popupColumn, TQT_SIGNAL(activated( int ) ), this, TQT_SLOT( slotActivateTool( int ) ) ); - - d->popupColumn->popup( _point ); -} - -void View::slotPopupAdjustColumn() -{ - if ( !d->activeSheet ) - return; - - d->activeSheet->adjustColumn(*selectionInfo()); -} - -void View::popupRowMenu( const TQPoint & _point ) -{ - assert( d->activeSheet ); - - if ( !koDocument()->isReadWrite() ) - return; - - delete d->popupRow ; - - d->popupRow= new TQPopupMenu(); - - bool isProtected = d->activeSheet->isProtected(); - - if ( !isProtected ) - { - d->actions->cellLayout->plug( d->popupRow ); - d->popupRow->insertSeparator(); - d->actions->cut->plug( d->popupRow ); - } - d->actions->copy->plug( d->popupRow ); - if ( !isProtected ) - { - d->actions->paste->plug( d->popupRow ); - d->actions->specialPaste->plug( d->popupRow ); - d->actions->insertCellCopy->plug( d->popupRow ); - d->popupRow->insertSeparator(); - d->actions->defaultFormat->plug( d->popupRow ); - // If there is no selection - if (!d->selection->isColumnOrRowSelected()) - { - d->actions->areaName->plug(d->popupRow); - } - - d->actions->resizeRow->plug( d->popupRow ); - d->popupRow->insertItem( i18n("Adjust Row"), this, TQT_SLOT( slotPopupAdjustRow() ) ); - d->popupRow->insertSeparator(); - d->actions->insertRow->plug( d->popupRow ); - d->actions->deleteRow->plug( d->popupRow ); - d->actions->hideRow->plug( d->popupRow ); - - d->actions->showSelColumns->setEnabled(false); - - RowFormat* format; - Region::ConstIterator endOfList = d->selection->constEnd(); - for (Region::ConstIterator it = d->selection->constBegin(); it != endOfList; ++it) - { - TQRect range = (*it)->rect().normalize(); - int row; - for (row = range.top(); row < range.bottom(); ++row) - { - format = activeSheet()->rowFormat(row); - - if ( format->isHide() ) - { - d->actions->showSelRows->setEnabled( true ); - d->actions->showSelRows->plug( d->popupRow ); - break; - } - } - if (range.top() > 1 && row == range.bottom()) - { - bool allHidden = true; - for (row = 1; row < range.top(); ++row) - { - format = activeSheet()->rowFormat(row); - - allHidden &= format->isHide(); - } - if (allHidden) - { - d->actions->showSelRows->setEnabled( true ); - d->actions->showSelRows->plug( d->popupRow ); - break; - } - } - else - { - break; - } - } - } - - TQT_BASE_OBJECT_NAME::connect( d->popupRow, TQT_SIGNAL( activated( int ) ), this, TQT_SLOT( slotActivateTool( int ) ) ); - d->popupRow->popup( _point ); -} - -void View::slotPopupAdjustRow() -{ - if ( !d->activeSheet ) - return; - - d->activeSheet->adjustRow(*selectionInfo()); -} - - -void View::slotListChoosePopupMenu( ) -{ - if ( !koDocument()->isReadWrite() ) - return; - - assert( d->activeSheet ); - delete d->popupListChoose; - - d->popupListChoose = new TQPopupMenu(); - int id = 0; - TQRect selection( d->selection->selection() ); - Cell * cell = d->activeSheet->cellAt( d->canvas->markerColumn(), d->canvas->markerRow() ); - TQString tmp = cell->text(); - TQStringList itemList; - - for ( int col = selection.left(); col <= selection.right(); ++col ) - { - Cell * c = d->activeSheet->getFirstCellColumn( col ); - while ( c ) - { - if ( !c->isPartOfMerged() - && !( col == d->canvas->markerColumn() - && c->row() == d->canvas->markerRow()) ) - { - if ( c->value().isString() && c->text() != tmp && !c->text().isEmpty() ) - { - if ( itemList.findIndex( c->text() ) == -1 ) - itemList.append(c->text()); - } - } - - c = d->activeSheet->getNextCellDown( col, c->row() ); - } - } - - /* TODO: remove this later: - for( ;c; c = c->nextCell() ) - { - int col = c->column(); - if ( selection.left() <= col && selection.right() >= col - &&!c->isPartOfMerged()&& !(col==d->canvas->markerColumn()&& c->row()==d->canvas->markerRow())) - { - if (c->isString() && c->text()!=tmp && !c->text().isEmpty()) - { - if (itemList.findIndex(c->text())==-1) - itemList.append(c->text()); - } - - } - } - */ - - for ( TQStringList::Iterator it = itemList.begin(); it != itemList.end();++it ) - d->popupListChoose->insertItem( (*it), id++ ); - - if ( id == 0 ) - return; - RowFormat * rl = d->activeSheet->rowFormat( d->canvas->markerRow()); - double tx = d->activeSheet->dblColumnPos( d->canvas->markerColumn(), d->canvas ); - double ty = d->activeSheet->dblRowPos(d->canvas->markerRow(), d->canvas ); - double h = rl->dblHeight( d->canvas ); - if ( cell->extraYCells() ) - h = cell->extraHeight(); - ty += h; - - if ( d->activeSheet->layoutDirection()==Sheet::RightToLeft ) - { - tx = canvasWidget()->width() - tx; - } - - TQPoint p( (int)tx, (int)ty ); - TQPoint p2 = d->canvas->mapToGlobal( p ); - - if ( d->activeSheet->layoutDirection()==Sheet::RightToLeft ) - { - p2.setX( p2.x() - d->popupListChoose->sizeHint().width() + 1 ); - } - - d->popupListChoose->popup( p2 ); - TQT_BASE_OBJECT_NAME::connect( d->popupListChoose, TQT_SIGNAL( activated( int ) ), - this, TQT_SLOT( slotItemSelected( int ) ) ); -} - - -void View::slotItemSelected( int id ) -{ - TQString tmp = d->popupListChoose->text( id ); - int x = d->canvas->markerColumn(); - int y = d->canvas->markerRow(); - Cell * cell = d->activeSheet->nonDefaultCell( x, y ); - - if ( tmp == cell->text() ) - return; - - doc()->emitBeginOperation( false ); - - if ( !doc()->undoLocked() ) - { - UndoSetText* undo = new UndoSetText( doc(), d->activeSheet, cell->text(), - x, y, cell->formatType() ); - doc()->addCommand( undo ); - } - - cell->setCellText( tmp ); - d->editWidget->setText( tmp ); - - doc()->emitEndOperation( TQRect( x, y, 1, 1 ) ); -} - -void View::openPopupMenu( const TQPoint & _point ) -{ - assert( d->activeSheet ); - delete d->popupMenu; - - if ( !koDocument()->isReadWrite() ) - return; - - d->popupMenu = new TQPopupMenu(); - - EmbeddedObject *obj; - if ( d->canvas->isObjectSelected() && ( obj = d->canvas->getObject( d->canvas->mapFromGlobal( _point ), d->activeSheet ) ) && obj->isSelected() ) - { - d->actions->deleteCell->plug( d->popupMenu ); - d->popupMenu->insertSeparator(); - d->actions->cut->plug( d->popupMenu ); - d->actions->copy->plug( d->popupMenu ); - d->actions->paste->plug( d->popupMenu ); - d->popupMenu->popup( _point ); - d->popupMenu->insertSeparator(); - d->actions->actionExtraProperties->plug( d->popupMenu ); - return; - } - - Cell * cell = d->activeSheet->cellAt( d->canvas->markerColumn(), d->canvas->markerRow() ); - - bool isProtected = d->activeSheet->isProtected(); - if ( !cell->isDefault() && cell->format()->notProtected( d->canvas->markerColumn(), d->canvas->markerRow() ) - && d->selection->isSingular() ) - isProtected = false; - - if ( !isProtected ) - { - d->actions->cellLayout->plug( d->popupMenu ); - d->popupMenu->insertSeparator(); - d->actions->cut->plug( d->popupMenu ); - } - d->actions->copy->plug( d->popupMenu ); - if ( !isProtected ) - d->actions->paste->plug( d->popupMenu ); - - if ( !isProtected ) - { - d->actions->specialPaste->plug( d->popupMenu ); - d->actions->insertCellCopy->plug( d->popupMenu ); - d->popupMenu->insertSeparator(); - d->actions->deleteCell->plug( d->popupMenu ); - d->actions->adjust->plug( d->popupMenu ); - d->actions->defaultFormat->plug( d->popupMenu ); - - // If there is no selection - if (!d->selection->isColumnOrRowSelected()) - { - d->actions->areaName->plug( d->popupMenu ); - d->popupMenu->insertSeparator(); - d->actions->insertCell->plug( d->popupMenu ); - d->actions->removeCell->plug( d->popupMenu ); - } - - d->popupMenu->insertSeparator(); - d->actions->addModifyComment->plug( d->popupMenu ); - if ( !cell->format()->comment(d->canvas->markerColumn(), d->canvas->markerRow()).isEmpty() ) - { - d->actions->removeComment->plug( d->popupMenu ); - } - - if (activeSheet()->testListChoose(selectionInfo())) - { - d->popupMenu->insertSeparator(); - d->popupMenu->insertItem( i18n("Selection List..."), this, TQT_SLOT( slotListChoosePopupMenu() ) ); - } - } - - // Remove informations about the last tools we offered - d->toolList.clear(); - d->toolList.setAutoDelete( true ); - - if ( !isProtected && !activeSheet()->getWordSpelling( selectionInfo() ).isEmpty() ) - { - d->popupMenuFirstToolId = 10; - int i = 0; - TQValueList<KDataToolInfo> tools = KDataToolInfo::query( TQSTRING_OBJECT_NAME_STRING, "text/plain", doc()->instance() ); - if ( tools.count() > 0 ) - { - d->popupMenu->insertSeparator(); - TQValueList<KDataToolInfo>::Iterator entry = tools.begin(); - for( ; entry != tools.end(); ++entry ) - { - TQStringList lst = (*entry).userCommands(); - TQStringList::ConstIterator it = lst.begin(); - - // ### Torben: Insert pixmaps here, too - for (; it != lst.end(); ++it ) - d->popupMenu->insertItem( *it, d->popupMenuFirstToolId + i++ ); - - lst = (*entry).commands(); - it = lst.begin(); - for (; it != lst.end(); ++it ) - { - Private::ToolEntry *t = new Private::ToolEntry; - t->command = *it; - t->info = *entry; - d->toolList.append( t ); - } - } - - TQT_BASE_OBJECT_NAME::connect( d->popupMenu, TQT_SIGNAL( activated( int ) ), this, TQT_SLOT( slotActivateTool( int ) ) ); - } - } - - d->popupMenu->popup( _point ); -} - -void View::slotActivateTool( int _id ) -{ - if (!activeSheet()) return; - - // Is it the id of a tool in the latest popupmenu ? - if ( _id < d->popupMenuFirstToolId ) - return; - - Private::ToolEntry* entry = d->toolList.at( _id - d->popupMenuFirstToolId ); - - KDataTool* tool = entry->info.createTool(); - if ( !tool ) - { - kdDebug(36001) << "Could not create Tool" << endl; - return; - } - - TQString text = activeSheet()->getWordSpelling( selectionInfo() ); - - if ( tool->run( entry->command, &text, TQSTRING_OBJECT_NAME_STRING, "text/plain") ) - { - doc()->emitBeginOperation(false); - - activeSheet()->setWordSpelling( selectionInfo(), text); - - Cell *cell = d->activeSheet->cellAt( d->canvas->markerColumn(), d->canvas->markerRow() ); - d->editWidget->setText( cell->text() ); - - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); - } -} - -void View::deleteSelection() -{ - if (!activeSheet()) return; - - if ( canvasWidget()->isObjectSelected() ) - { - deleteSelectedObjects(); - return; - } - - doc()->emitBeginOperation( false ); - d->activeSheet->deleteSelection( selectionInfo() ); - calcStatusBarOp(); - updateEditWidget(); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::deleteSelectedObjects() -{ - KMacroCommand * macroCommand = 0L; - TQPtrListIterator<EmbeddedObject> it( doc()->embeddedObjects() ); - for ( ; it.current() ; ++it ) - { - if ( it.current()->sheet() == canvasWidget()->activeSheet() && it.current()->isSelected() ) - { - // d->activeSheet->setRegionPaintDirty( it. - if( !macroCommand ) - macroCommand = new KMacroCommand( i18n( "Remove Object" ) ); - RemoveObjectCommand *cmd = new RemoveObjectCommand( it.current() ); - macroCommand->addCommand( cmd ); - } - } - if ( macroCommand ) - { - doc()->addCommand( macroCommand ); - canvasWidget()->setMouseSelectedObject( false ); - macroCommand->execute(); - } -} - -void View::adjust() -{ - if ( !d->activeSheet ) - return; - - d->activeSheet->adjustArea(*selectionInfo()); -} - -void View::clearTextSelection() -{ - if (!activeSheet()) - return; - - doc()->emitBeginOperation( false ); - d->activeSheet->clearTextSelection( selectionInfo() ); - - updateEditWidget(); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::clearCommentSelection() -{ - if (!activeSheet()) - return; - - doc()->emitBeginOperation( false ); - d->activeSheet->setSelectionRemoveComment( selectionInfo() ); - - updateEditWidget(); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::clearValiditySelection() -{ - if (!activeSheet()) - return; - - doc()->emitBeginOperation( false ); - d->activeSheet->clearValiditySelection( selectionInfo() ); - - updateEditWidget(); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::clearConditionalSelection() -{ - if (!activeSheet()) - return; - - doc()->emitBeginOperation( false ); - d->activeSheet->clearConditionalSelection( selectionInfo() ); - - updateEditWidget(); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::fillRight() -{ - if (!activeSheet()) - return; - - doc()->emitBeginOperation( false ); - d->activeSheet->fillSelection( selectionInfo(), Sheet::Right ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::fillLeft() -{ - if (!activeSheet()) - return; - - doc()->emitBeginOperation( false ); - d->activeSheet->fillSelection( selectionInfo(), Sheet::Left ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::fillUp() -{ - if (!activeSheet()) - return; - - doc()->emitBeginOperation( false ); - d->activeSheet->fillSelection( selectionInfo(), Sheet::Up ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::fillDown() -{ - if (!activeSheet()) - return; - - doc()->emitBeginOperation( false ); - d->activeSheet->fillSelection( selectionInfo(), Sheet::Down ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::defaultSelection() -{ - if (!activeSheet()) - return; - - doc()->emitBeginOperation( false ); - d->activeSheet->defaultSelection( selectionInfo() ); - - updateEditWidget(); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::slotInsert() -{ - TQRect r( d->selection->selection() ); - InsertDialog dlg( this, "InsertDialog", r, InsertDialog::Insert ); - dlg.exec(); -} - -void View::slotRemove() -{ - TQRect r( d->selection->selection() ); - InsertDialog dlg( this, "Remove", r, InsertDialog::Remove ); - dlg.exec(); -} - -void View::slotInsertCellCopy() -{ - if ( !d->activeSheet ) - return; - - if ( !d->activeSheet->testAreaPasteInsert() ) - { - doc()->emitBeginOperation( false ); - d->activeSheet->paste( d->selection->lastRange(), true, - Paste::Normal, Paste::OverWrite, true ); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); - } - else - { - PasteInsertDialog dlg( this, "Remove", d->selection->selection() ); - dlg.exec(); - } - - if ( d->activeSheet->getAutoCalc() ) - { - doc()->emitBeginOperation( false ); - d->activeSheet->recalc(); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); - } - updateEditWidget(); -} - -void View::setAreaName() -{ - AreaDialog dlg( this, "Area Name",TQPoint(d->canvas->markerColumn(), d->canvas->markerRow()) ); - dlg.exec(); -} - -void View::showAreaName() -{ - reference dlg( this, "Show Area" ); - dlg.exec(); -} - -void View::resizeRow() -{ - if (!activeSheet()) return; - - if ( d->selection->isColumnSelected() ) - KMessageBox::error( this, i18n("Area is too large.")); - else - { - ResizeRow dlg( this ); - dlg.exec(); - } -} - -void View::resizeColumn() -{ - if (!activeSheet()) return; - - - if ( d->selection->isRowSelected() ) - KMessageBox::error( this, i18n( "Area is too large." ) ); - else - { - ResizeColumn dlg( this ); - dlg.exec(); - } -} - -void View::equalizeRow() -{ - if (!activeSheet()) return; - - if ( d->selection->isColumnSelected() ) - KMessageBox::error( this, i18n( "Area is too large." ) ); - else - { - doc()->emitBeginOperation( false ); - canvasWidget()->equalizeRow(); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); - } -} - -void View::equalizeColumn() -{ - if (!activeSheet()) - return; - - if ( d->selection->isRowSelected() ) - KMessageBox::error( this, i18n( "Area is too large." ) ); - else - { - doc()->emitBeginOperation( false ); - canvasWidget()->equalizeColumn(); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); - } -} - - -void View::layoutDlg() -{ - if (!activeSheet()) - return; - - CellFormatDialog dlg( this, d->activeSheet ); -} - -void View::extraProperties() -{ - if (!activeSheet()) - return; - //d->canvas->setToolEditMode( TEM_MOUSE ); - - d->m_propertyEditor = new PropertyEditor( this, "KPrPropertyEditor", d->activeSheet, doc() ); - d->m_propertyEditor->setCaption( i18n( "Properties" ) ); - - connect( d->m_propertyEditor, TQT_SIGNAL( propertiesOk() ), this, TQT_SLOT( propertiesOk() ) ); - d->m_propertyEditor->exec(); - disconnect( d->m_propertyEditor, TQT_SIGNAL( propertiesOk() ), this, TQT_SLOT( propertiesOk() ) ); - - delete d->m_propertyEditor; - d->m_propertyEditor = 0; -} - -void View::propertiesOk() -{ - KCommand *cmd = d->m_propertyEditor->getCommand(); - - if ( cmd ) - { - cmd->execute(); - doc()->addCommand( cmd ); - } -} - -void View::styleDialog() -{ - StyleDlg dlg( this, doc()->styleManager() ); - dlg.exec(); - - d->actions->selectStyle->setItems( doc()->styleManager()->styleNames() ); - if ( d->activeSheet ) - { - d->activeSheet->setLayoutDirtyFlag(); - d->activeSheet->setRegionPaintDirty( d->activeSheet->visibleRect( d->canvas ) ); - } - if ( d->canvas ) - d->canvas->repaint(); -} - -void View::paperLayoutDlg() -{ - if ( d->canvas->editor() ) - { - d->canvas->deleteEditor( true ); // save changes - } - SheetPrint* print = d->activeSheet->print(); - - KoPageLayout pl; - pl.format = print->paperFormat(); - pl.orientation = print->orientation(); - - pl.ptWidth = MM_TO_POINT( print->paperWidth() ); - pl.ptHeight = MM_TO_POINT( print->paperHeight() ); - pl.ptLeft = MM_TO_POINT( print->leftBorder() ); - pl.ptRight = MM_TO_POINT( print->rightBorder() ); - pl.ptTop = MM_TO_POINT( print->topBorder() ); - pl.ptBottom = MM_TO_POINT( print->bottomBorder() ); - - KoHeadFoot hf; - hf.headLeft = print->localizeHeadFootLine( print->headLeft() ); - hf.headRight = print->localizeHeadFootLine( print->headRight() ); - hf.headMid = print->localizeHeadFootLine( print->headMid() ); - hf.footLeft = print->localizeHeadFootLine( print->footLeft() ); - hf.footRight = print->localizeHeadFootLine( print->footRight() ); - hf.footMid = print->localizeHeadFootLine( print->footMid() ); - - KoUnit::Unit unit = doc()->unit(); - - PaperLayout * dlg - = new PaperLayout( this, "PageLayout", pl, hf, - FORMAT_AND_BORDERS | HEADER_AND_FOOTER, - unit, d->activeSheet, this ); - dlg->show(); - // dlg destroys itself -} - -void View::definePrintRange() -{ - d->activeSheet->print()->definePrintRange( selectionInfo() ); -} - -void View::resetPrintRange() -{ - d->activeSheet->print()->resetPrintRange(); -} - -void View::wrapText( bool b ) -{ - if ( d->toolbarLock ) - return; - - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation( false ); - d->activeSheet->setSelectionMultiRow( selectionInfo(), b ); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); - } -} - -void View::alignLeft( bool b ) -{ - if ( d->toolbarLock ) - return; - - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation( false ); - if ( !b ) - d->activeSheet->setSelectionAlign( selectionInfo(), - Format::Undefined ); - else - d->activeSheet->setSelectionAlign( selectionInfo(), - Format::Left ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::alignRight( bool b ) -{ - if ( d->toolbarLock ) - return; - - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation( false ); - if ( !b ) - d->activeSheet->setSelectionAlign( selectionInfo(), Format::Undefined ); - else - d->activeSheet->setSelectionAlign( selectionInfo(), Format::Right ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::alignCenter( bool b ) -{ - if ( d->toolbarLock ) - return; - - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation( false ); - if ( !b ) - d->activeSheet->setSelectionAlign( selectionInfo(), Format::Undefined ); - else - d->activeSheet->setSelectionAlign( selectionInfo(), Format::Center ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::alignTop( bool b ) -{ - if ( d->toolbarLock ) - return; - - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation( false ); - if ( !b ) - d->activeSheet->setSelectionAlignY( selectionInfo(), Format::UndefinedY ); - else - d->activeSheet->setSelectionAlignY( selectionInfo(), Format::Top ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::alignBottom( bool b ) -{ - if ( d->toolbarLock ) - return; - - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation( false ); - if ( !b ) - d->activeSheet->setSelectionAlignY( selectionInfo(), Format::UndefinedY ); - else - d->activeSheet->setSelectionAlignY( selectionInfo(), Format::Bottom ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::alignMiddle( bool b ) -{ - if ( d->toolbarLock ) - return; - - if ( d->activeSheet != 0L ) - { - doc()->emitBeginOperation( false ); - if ( !b ) - d->activeSheet->setSelectionAlignY( selectionInfo(), Format::UndefinedY ); - else - d->activeSheet->setSelectionAlignY( selectionInfo(), Format::Middle ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::moneyFormat(bool b) -{ - if ( d->toolbarLock ) - return; - - doc()->emitBeginOperation( false ); - if ( d->activeSheet != 0L ) - d->activeSheet->setSelectionMoneyFormat( selectionInfo(), b ); - updateEditWidget(); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -void View::createStyleFromCell() -{ - if ( !d->activeSheet ) - return; - - TQPoint p( d->selection->selection().topLeft() ); - Cell * cell = d->activeSheet->nonDefaultCell( p.x(), p.y() ); - - bool ok = false; - TQString styleName( "" ); - - while( true ) - { - styleName = KInputDialog::getText( i18n( "Create Style From Cell" ), - i18n( "Enter name:" ), styleName, &ok, this ); - - if ( !ok ) // User pushed an OK button. - return; - - styleName = styleName.stripWhiteSpace(); - - if ( styleName.length() < 1 ) - { - KNotifyClient::beep(); - KMessageBox::sorry( this, i18n( "The style name cannot be empty." ) ); - continue; - } - - if ( doc()->styleManager()->style( styleName ) != 0 ) - { - KNotifyClient::beep(); - KMessageBox::sorry( this, i18n( "A style with this name already exists." ) ); - continue; - } - break; - } - - CustomStyle * style = new CustomStyle( cell->format()->style(), styleName ); - - doc()->styleManager()->m_styles[ styleName ] = style; - cell->format()->setStyle( style ); - TQStringList lst( d->actions->selectStyle->items() ); - lst.push_back( styleName ); - d->actions->selectStyle->setItems( lst ); -} - -void View::styleSelected( const TQString & style ) -{ - if (d->activeSheet ) - { - Style * s = doc()->styleManager()->style( style ); - - if ( s ) - { - doc()->emitBeginOperation(false); - d->activeSheet->setSelectionStyle( selectionInfo(), s ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } - } -} - -void View::precisionPlus() -{ - setSelectionPrecision( 1 ); -} - -void View::precisionMinus() -{ - setSelectionPrecision( -1 ); -} - -void View::setSelectionPrecision( int delta ) -{ - if ( d->activeSheet != NULL ) - { - doc()->emitBeginOperation( false ); - d->activeSheet->setSelectionPrecision( selectionInfo(), delta ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::percent( bool b ) -{ - if ( d->toolbarLock ) - return; - - doc()->emitBeginOperation( false ); - if ( d->activeSheet != 0L ) - d->activeSheet->setSelectionPercent( selectionInfo() ,b ); - updateEditWidget(); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - - -void View::insertObject() -{ - if (!activeSheet()) - return; - - doc()->emitBeginOperation( false ); - KoDocumentEntry e = d->actions->insertPart->documentEntry();//KoPartSelectDia::selectPart( d->canvas ); - if ( e.isEmpty() ) - { - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); - return; - } - - //Don't start handles more than once - delete d->insertHandler; - - d->insertHandler = new InsertPartHandler( this, d->canvas, e ); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); -} - -void View::insertChart() -{ - if (!activeSheet()) - return; - - if ( d->selection->isColumnOrRowSelected() ) - { - KMessageBox::error( this, i18n("Area too large.")); - return; - } - TQValueList<KoDocumentEntry> vec = KoDocumentEntry::query( true, "'KOfficeChart' in ServiceTypes" ); - if ( vec.isEmpty() ) - { - KMessageBox::error( this, i18n("No charting component registered.") ); - return; - } - - //Don't start handles more than once - delete d->insertHandler; - - doc()->emitBeginOperation( false ); - - d->insertHandler = new InsertChartHandler( this, d->canvas, vec[0] ); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); -} - - - -/* - // TODO Use KoView setScaling/xScaling/yScaling instead -void View::zoomMinus() -{ - if ( m_fZoom <= 0.25 ) - return; - - m_fZoom -= 0.25; - - if ( d->activeSheet != 0L ) - d->activeSheet->setLayoutDirtyFlag(); - - d->canvas->repaint(); - d->vBorderWidget->repaint(); - d->hBorderWidget->repaint(); -} - -void View::zoomPlus() -{ - if ( m_fZoom >= 3 ) - return; - - m_fZoom += 0.25; - - if ( d->activeSheet != 0L ) - d->activeSheet->setLayoutDirtyFlag(); - - d->canvas->repaint(); - d->vBorderWidget->repaint(); - d->hBorderWidget->repaint(); -} -*/ - -void View::removeSheet() -{ - if ( doc()->map()->count() <= 1 || ( doc()->map()->visibleSheets().count() <= 1 ) ) - { - KNotifyClient::beep(); - KMessageBox::sorry( this, i18n("You cannot delete the only sheet."), i18n("Remove Sheet") ); // FIXME bad english? no english! - return; - } - KNotifyClient::beep(); - int ret = KMessageBox::warningContinueCancel( this, i18n( "You are about to remove the active sheet.\nDo you want to continue?" ), - i18n( "Remove Sheet" ),KGuiItem(i18n("&Delete"),"edit-delete") ); - - if ( ret == KMessageBox::Continue ) - { - doc()->emitBeginOperation( false ); - if ( d->canvas->editor() ) - { - d->canvas->deleteEditor( false ); - } - doc()->setModified( true ); - Sheet * tbl = activeSheet(); - KCommand* command = new RemoveSheetCommand( tbl ); - doc()->addCommand( command ); - command->execute(); - - -#if 0 - UndoRemoveSheet * undo = new UndoRemoveSheet( doc(), tbl ); - doc()->addCommand( undo ); - tbl->doc()->map()->takeSheet( tbl ); - doc()->takeSheet( tbl ); -#endif - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); - } -} - - -void View::slotRename() -{ - - Sheet * sheet = activeSheet(); - - if( sheet->isProtected() ) - { - KMessageBox::error( 0, i18n ( "You cannot change a protected sheet." ) ); - return; - } - - bool ok; - TQString activeName = sheet->sheetName(); - TQString newName = KInputDialog::getText( i18n("Rename Sheet"),i18n("Enter name:"), activeName, &ok, this ); - - if( !ok ) return; - - while (!util_validateSheetName(newName)) - { - KNotifyClient::beep(); - KMessageBox::information( this, i18n("Sheet name contains illegal characters. Only numbers and letters are allowed."), - i18n("Change Sheet Name") ); - - newName = newName.simplifyWhiteSpace(); - int n = newName.find('-'); - if ( n > -1 ) newName[n] = '_'; - n = newName.find('!'); - if ( n > -1 ) newName[n] = '_'; - n = newName.find('$'); - if ( n > -1 ) newName[n] = '_'; - - newName = KInputDialog::getText( i18n("Rename Sheet"),i18n("Enter name:"), newName, &ok, this ); - - if ( !ok ) return; - } - - if ( (newName.stripWhiteSpace()).isEmpty() ) // Sheet name is empty. - { - KNotifyClient::beep(); - KMessageBox::information( this, i18n("Sheet name cannot be empty."), i18n("Change Sheet Name") ); - // Recursion - slotRename(); - } - else if ( newName != activeName ) // Sheet name changed. - { - // Is the name already used - if ( doc()->map()->findSheet( newName ) ) - { - KNotifyClient::beep(); - KMessageBox::information( this, i18n("This name is already used."), i18n("Change Sheet Name") ); - // Recursion - slotRename(); - return; - } - - KCommand* command = new RenameSheetCommand( sheet, newName ); - doc()->addCommand( command ); - command->execute(); - - //sheet->setSheetName( newName ); - - doc()->emitBeginOperation(false); - updateEditWidget(); - doc()->setModified( true ); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); - } -} - -void View::setText (const TQString & _text, bool array) -{ - if ( d->activeSheet == 0L ) - return; - - if (array) { - // array version - d->activeSheet->setArrayFormula (d->selection, _text); - } - else - { - // non-array version - int x = d->canvas->markerColumn(); - int y = d->canvas->markerRow(); - - d->activeSheet->setText( y, x, _text ); - - Cell * cell = d->activeSheet->cellAt( x, y ); - if ( cell->value().isString() && !_text.isEmpty() && !_text.at(0).isDigit() && !cell->isFormula() ) - doc()->addStringCompletion( _text ); - } -} - -//------------------------------------------------ -// -// Document signals -// -//------------------------------------------------ - -void View::slotAddSheet( Sheet *_sheet ) -{ - addSheet( _sheet ); -} - -void View::slotRefreshView() -{ - refreshView(); - d->canvas->repaint(); - d->vBorderWidget->repaint(); - d->hBorderWidget->repaint(); -} - -void View::slotUpdateView( Sheet *_sheet ) -{ - // Do we display this sheet ? - if ( ( !activeSheet() ) || ( _sheet != d->activeSheet ) ) - return; - - d->activeSheet->setRegionPaintDirty( d->activeSheet->visibleRect( d->canvas ) ); - doc()->emitEndOperation(); -} - -void View::slotUpdateView( Sheet * _sheet, const Region& region ) -{ - // tqDebug("void View::slotUpdateView( Sheet *_sheet, const TQRect& %i %i|%i %i )\n",_rect.left(),_rect.top(),_rect.right(),_rect.bottom()); - - // Do we display this sheet ? - if ( _sheet != d->activeSheet ) - return; - - // doc()->emitBeginOperation( false ); - d->activeSheet->setRegionPaintDirty( region ); - doc()->emitEndOperation( region ); -} - -void View::slotUpdateView( EmbeddedObject *obj ) -{ - d->canvas->repaintObject( obj ); -} - -void View::slotUpdateHBorder( Sheet * _sheet ) -{ - // kdDebug(36001)<<"void View::slotUpdateHBorder( Sheet *_sheet )\n"; - - // Do we display this sheet ? - if ( _sheet != d->activeSheet ) - return; - - doc()->emitBeginOperation(false); - d->hBorderWidget->update(); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); -} - -void View::slotUpdateVBorder( Sheet *_sheet ) -{ - // kdDebug("void View::slotUpdateVBorder( Sheet *_sheet )\n"; - - // Do we display this sheet ? - if ( _sheet != d->activeSheet ) - return; - - doc()->emitBeginOperation( false ); - d->vBorderWidget->update(); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); -} - -void View::slotChangeSelection(const KSpread::Region& changedRegion) -{ -// kdDebug() << *selectionInfo() << endl; - - if (!changedRegion.isValid()) - { - return; - } - - doc()->emitBeginOperation( false ); - - bool colSelected = d->selection->isColumnSelected(); - bool rowSelected = d->selection->isRowSelected(); - if (d->activeSheet && !d->activeSheet->isProtected()) - { - // Activate or deactivate some actions. - d->actions->insertRow->setEnabled( !colSelected ); - d->actions->deleteRow->setEnabled( !colSelected ); - d->actions->resizeRow->setEnabled( !colSelected ); - d->actions->equalizeRow->setEnabled( !colSelected ); - d->actions->hideRow->setEnabled( !colSelected ); - d->actions->validity->setEnabled( !colSelected && !rowSelected); - d->actions->conditional->setEnabled( !colSelected && !rowSelected); - d->actions->insertColumn->setEnabled( !rowSelected ); - d->actions->deleteColumn->setEnabled( !rowSelected ); - d->actions->resizeColumn->setEnabled( !rowSelected ); - d->actions->equalizeColumn->setEnabled( !rowSelected ); - d->actions->hideColumn->setEnabled( !rowSelected ); - d->actions->textToColumns->setEnabled( !rowSelected ); - - bool simpleSelection = d->selection->isSingular() || colSelected || rowSelected; - d->actions->autoFormat->setEnabled( !simpleSelection ); - d->actions->sort->setEnabled( !simpleSelection ); - d->actions->mergeCell->setEnabled( !simpleSelection ); - d->actions->mergeCellHorizontal->setEnabled( !simpleSelection ); - d->actions->mergeCellVertical->setEnabled( !simpleSelection ); - d->actions->fillRight->setEnabled( !simpleSelection ); - d->actions->fillUp->setEnabled( !simpleSelection ); - d->actions->fillDown->setEnabled( !simpleSelection ); - d->actions->fillLeft->setEnabled( !simpleSelection ); - d->actions->sortDec->setEnabled( !simpleSelection ); - d->actions->sortInc->setEnabled( !simpleSelection); - d->actions->createStyle->setEnabled( simpleSelection ); // just from one cell - - bool contiguousSelection = d->selection->isContiguous(); - d->actions->subTotals->setEnabled(contiguousSelection); - } - d->actions->selectStyle->setCurrentItem( -1 ); - // delayed recalculation of the operation shown in the status bar - d->statusBarOpTimer.start(250, true); - // Send some event around. This is read for example - // by the calculator plugin. -// SelectionChanged ev(*selectionInfo(), activeSheet()->name()); -// TQApplication::sendEvent( this, &ev ); - - d->canvas->setSelectionChangePaintDirty( d->activeSheet, changedRegion ); - d->vBorderWidget->update(); - d->hBorderWidget->update(); - - if (colSelected || rowSelected) - { - doc()->emitEndOperation(/* *selectionInfo() */); - return; - } - - d->canvas->validateSelection(); - - //Don't scroll to the marker if there is an active embedded object, since this may cause - //the canvas to scroll so that the object isn't in the visible area. - //There is still the problem of the object no longer being visible immediately after deactivating the child - //as the sheet jumps back to the marker though. - if (!activeChild()) - d->canvas->scrollToCell(selectionInfo()->marker()); - - // Perhaps the user is entering a value in the cell. - // In this case we may not touch the EditWidget - if ( !d->canvas->editor() && !d->canvas->chooseMode() ) - { - updateEditWidgetOnPress(); - } - d->canvas->updatePosWidget(); - - doc()->emitEndOperation(/* *selectionInfo() */); -} - -void View::slotChangeChoice(const KSpread::Region& changedRegion) -{ - if (!changedRegion.isValid()) - { - return; - } - doc()->emitBeginOperation( false ); - d->canvas->updateEditor(); - d->canvas->setSelectionChangePaintDirty( d->activeSheet, changedRegion ); - doc()->emitEndOperation( *choice() ); - kdDebug() << "Choice: " << *choice() << endl; -} - -void View::slotScrollChoice( const KSpread::Region& changedRegion ) -{ - if ( !changedRegion.isValid() ) - return; - d->canvas->scrollToCell( choice()->marker() ); -} - -void View::calcStatusBarOp() -{ - Sheet * sheet = activeSheet(); - ValueCalc* calc = d->doc->calc(); - Value val; - TQRect tmpRect(d->selection->selection()); - MethodOfCalc tmpMethod = doc()->getTypeOfCalc(); - if ( tmpMethod != NoneCalc ) - { - - Value range = sheet->valueRange (tmpRect.left(), tmpRect.top(), - tmpRect.right(), tmpRect.bottom()); - switch (tmpMethod) - { - case SumOfNumber: - val = calc->sum (range); - break; - case Average: - val = calc->avg (range); - break; - case Min: - val = calc->min (range); - break; - case Max: - val = calc->max (range); - break; - case CountA: - val = Value (calc->count (range)); - break; - case Count: - val = Value (calc->count (range, false)); - case NoneCalc: - break; - default: - break; - } - - } - - TQString res = d->doc->converter()->asString (val).asString (); - TQString tmp; - switch(tmpMethod ) - { - case SumOfNumber: - tmp = i18n("Sum: ") + res; - break; - case Average: - tmp = i18n("Average: ") + res; - break; - case Min: - tmp = i18n("Min: ") + res; - break; - case Max: - tmp = i18n("Max: ") + res; - break; - case Count: - tmp = i18n("Count: ") + res; - break; - case CountA: - tmp = i18n("CountA: ") + res; - break; - case NoneCalc: - tmp = ""; - break; - } - - //doc()->emitBeginOperation(); - if ( d->calcLabel ) - d->calcLabel->setText(TQString(" ") + tmp + ' '); - //doc()->emitEndOperation(); -} - -void View::statusBarClicked(int _id) -{ - if ( !koDocument()->isReadWrite() || !factory() ) - return; - if ( _id == 0 ) //menu calc - { - TQPoint mousepos = TQCursor::pos(); - ((TQPopupMenu*)factory()->container( "calc_popup" , this ) )->popup( mousepos ); - } -} - -void View::menuCalc( bool ) -{ - doc()->emitBeginOperation(false); - if ( d->actions->calcMin->isChecked() ) - { - doc()->setTypeOfCalc( Min ); - } - else if ( d->actions->calcMax->isChecked() ) - { - doc()->setTypeOfCalc( Max ); - } - else if ( d->actions->calcCount->isChecked() ) - { - doc()->setTypeOfCalc( Count ); - } - else if ( d->actions->calcAverage->isChecked() ) - { - doc()->setTypeOfCalc( Average ); - } - else if ( d->actions->calcSum->isChecked() ) - { - doc()->setTypeOfCalc( SumOfNumber ); - } - else if ( d->actions->calcCountA->isChecked() ) - { - doc()->setTypeOfCalc( CountA ); - } - else if ( d->actions->calcNone->isChecked() ) - doc()->setTypeOfCalc( NoneCalc ); - - calcStatusBarOp(); - - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); -} - - -TQWMatrix View::matrix() const -{ - TQWMatrix m; - m.scale( d->doc->zoomedResolutionX(), - d->doc->zoomedResolutionY() ); - m.translate( - d->canvas->xOffset(), - d->canvas->yOffset() ); - return m; -} - -void View::transformPart() -{ - Q_ASSERT( selectedChild() ); - - if ( d->transformToolBox.isNull() ) - { - d->transformToolBox = new KoTransformToolBox( selectedChild(), topLevelWidget() ); - d->transformToolBox->show(); - - d->transformToolBox->setDocumentChild( selectedChild() ); - } - else - { - d->transformToolBox->show(); - d->transformToolBox->raise(); - } -} - -void View::slotChildSelected( KoDocumentChild* /*ch*/ ) -{ -// if ( d->activeSheet && !d->activeSheet->isProtected() ) -// { -// d->actions->transform->setEnabled( true ); -// -// if ( !d->transformToolBox.isNull() ) -// { -// d->transformToolBox->setEnabled( true ); -// d->transformToolBox->setDocumentChild( ch ); -// } -// } - - - doc()->emitBeginOperation( false ); - d->activeSheet->setRegionPaintDirty(TQRect(TQPoint(0,0), TQPoint(KS_colMax, KS_rowMax))); - - doc()->emitEndOperation(); - paintUpdates(); -} - -void View::slotChildUnselected( KoDocumentChild* ) -{ -// if ( d->activeSheet && !d->activeSheet->isProtected() ) -// { -// d->actions->transform->setEnabled( false ); -// -// if ( !d->transformToolBox.isNull() ) -// { -// d->transformToolBox->setEnabled( false ); -// } -// deleteEditor( true ); -// } - - - doc()->emitBeginOperation( false ); - d->activeSheet->setRegionPaintDirty(TQRect(TQPoint(0,0), TQPoint(KS_colMax, KS_rowMax))); - doc()->emitEndOperation(); - paintUpdates(); -} - - -void View::deleteEditor( bool saveChanges ) -{ - doc()->emitBeginOperation( false ); - d->canvas->deleteEditor( saveChanges ); - - markSelectionAsDirty(); - doc()->emitEndOperation(); -} - -DCOPObject * View::dcopObject() -{ - if ( !d->dcop ) - d->dcop = new ViewIface( this ); - - return d->dcop; -} - -TQWidget * View::canvas() const -{ - return canvasWidget(); -} - -int View::canvasXOffset() const -{ - if (!d->activeSheet) - return 0; - - double zoomedResX = d->activeSheet->doc()->zoomedResolutionX(); - return int( canvasWidget()->xOffset() * zoomedResX ); -} - -int View::canvasYOffset() const -{ - if (!d->activeSheet) - return 0; - - double zoomedResY = d->activeSheet->doc()->zoomedResolutionY(); - return int( canvasWidget()->yOffset() * zoomedResY ); -} - - -void View::guiActivateEvent( KParts::GUIActivateEvent *ev ) -{ - if ( d->activeSheet ) - { - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); - - if ( ev->activated() ) - { - if ( d->calcLabel ) - calcStatusBarOp(); - } - else - { - /*if (d->calcLabel) - { - disconnect(d->calcLabel,TQT_SIGNAL(pressed( int )),this,TQT_SLOT(statusBarClicked(int))); - }*/ - } - } - - KoView::guiActivateEvent( ev ); -} - -void View::popupTabBarMenu( const TQPoint & _point ) -{ - if ( !koDocument()->isReadWrite() || !factory() ) - return; - if ( d->tabBar ) - { - bool state = ( doc()->map()->visibleSheets().count() > 1 ); - if ( d->activeSheet && d->activeSheet->isProtected() ) - { - d->actions->removeSheet->setEnabled( false ); - d->actions->hideSheet->setEnabled( false ); - d->actions->showSheet->setEnabled( false ); - } - else - { - d->actions->removeSheet->setEnabled( state); - d->actions->hideSheet->setEnabled( state ); - d->actions->showSheet->setEnabled( doc()->map()->hiddenSheets().count()>0 ); - } - if ( !doc() || !doc()->map() || doc()->map()->isProtected() ) - { - d->actions->insertSheet->setEnabled( false ); - d->actions->renameSheet->setEnabled( false ); - d->actions->showSheet->setEnabled( false ); - d->actions->hideSheet->setEnabled( false ); - d->actions->removeSheet->setEnabled( false ); - } - static_cast<TQPopupMenu*>(factory()->container("menupage_popup",this))->popup(_point); - } -} - -void View::updateBorderButton() -{ - // doc()->emitBeginOperation( false ); - if ( d->activeSheet ) - d->actions->showPageBorders->setChecked( d->activeSheet->isShowPageBorders() ); - // doc()->emitEndOperation(); -} - -void View::removeSheet( Sheet *_t ) -{ - doc()->emitBeginOperation(false); - TQString m_tablName=_t->sheetName(); - d->tabBar->removeTab( m_tablName ); - setActiveSheet( doc()->map()->findSheet( doc()->map()->visibleSheets().first() )); - - bool state = doc()->map()->visibleSheets().count() > 1; - d->actions->removeSheet->setEnabled( state ); - d->actions->hideSheet->setEnabled( state ); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); -} - -void View::insertSheet( Sheet* sheet ) -{ - doc()->emitBeginOperation( false ); - TQString tabName = sheet->sheetName(); - if ( !sheet->isHidden() ) - { - d->tabBar->addTab( tabName ); - } - - bool state = ( doc()->map()->visibleSheets().count() > 1 ); - d->actions->removeSheet->setEnabled( state ); - d->actions->hideSheet->setEnabled( state ); - doc()->emitEndOperation( sheet->visibleRect( d->canvas ) ); -} - -TQColor View::borderColor() const -{ - return d->actions->borderColor->color(); -} - -void View::updateShowSheetMenu() -{ - doc()->emitBeginOperation( false ); - if ( d->activeSheet->isProtected() ) - d->actions->showSheet->setEnabled( false ); - else - d->actions->showSheet->setEnabled( doc()->map()->hiddenSheets().count() > 0 ); - doc()->emitEndOperation( d->activeSheet->visibleRect( d->canvas ) ); -} - -void View::closeEditor() -{ - if ( d->activeSheet ) { // #45822 - doc()->emitBeginOperation( false ); - d->canvas->closeEditor(); - - markSelectionAsDirty(); - doc()->emitEndOperation(); - } -} - -void View::markSelectionAsDirty() -{ - if (!d->activeSheet) - return; - - d->activeSheet->setRegionPaintDirty( *selectionInfo() ); -} - -void View::paintUpdates() -{ - /* don't do any begin/end operation here -- this is what is called at an - endOperation - */ - d->canvas->paintUpdates(); -} - -void View::commandExecuted() -{ - updateEditWidget(); - calcStatusBarOp(); -} - -void View::initialiseMarkerFromSheet( Sheet *_sheet, const TQPoint &point ) -{ - d->savedMarkers.replace( _sheet, point); -} - -TQPoint View::markerFromSheet( Sheet* sheet ) const -{ - TQMapIterator<Sheet*, TQPoint> it = d->savedMarkers.find(sheet); - TQPoint newMarker = (it == d->savedMarkers.end()) ? TQPoint(1,1) : *it; - return newMarker; -} - -KoPoint View::offsetFromSheet( Sheet* sheet ) const -{ - TQMapIterator<Sheet*, KoPoint> it = d->savedOffsets.find(sheet); - KoPoint offset = (it == d->savedOffsets.end()) ? KoPoint() : *it; - return offset; -} - -void View::saveCurrentSheetSelection() -{ - /* save the current selection on this sheet */ - if (d->activeSheet != NULL) - { - d->savedAnchors.replace(d->activeSheet, d->selection->anchor()); - kdDebug() << " Current scrollbar vert value: " << d->canvas->vertScrollBar()->value() << endl; - kdDebug() << "Saving marker pos: " << d->selection->marker() << endl; - d->savedMarkers.replace(d->activeSheet, d->selection->marker()); - d->savedOffsets.replace(d->activeSheet, KoPoint(d->canvas->xOffset(), - d->canvas->yOffset())); - } -} - -void View::handleDamages( const TQValueList<Damage*>& damages ) -{ - TQValueList<Damage*>::ConstIterator it; - for( it = damages.begin(); it != damages.end(); ++it ) - { - Damage* damage = *it; - if( !damage ) continue; - - if( damage->type() == Damage::Cell ) - { - CellDamage* cd = static_cast<CellDamage*>( damage ); - Cell* damagedCell = cd->cell(); - Sheet* damagedSheet = damagedCell->sheet(); - TQRect drect( damagedCell->column(), damagedCell->row(), 1, 1 ); - damagedSheet->setRegionPaintDirty( drect ); - paintUpdates(); - } - - if( damage->type() == Damage::Sheet ) - { - SheetDamage* sd = static_cast<SheetDamage*>( damage ); - Sheet* damagedSheet = sd->sheet(); - - if( sd->action() == SheetDamage::PropertiesChanged ) - { - CellBinding * b = 0; - for ( b = damagedSheet->firstCellBinding(); b != 0; - b = damagedSheet->nextCellBinding() ) - b->cellChanged( 0 ); - - d->activeSheet->setRegionPaintDirty( TQRect(TQPoint(0,0), - TQPoint(KS_colMax, KS_rowMax))); - - paintUpdates(); - refreshView(); - } - - } - - } -} - -void View::runInternalTests() -{ - // run various tests, only for developers - KSpread::TestRunner* runner = new KSpread::TestRunner(); - runner->exec(); - delete runner; -} - -void View::runInspector() -{ - // useful to inspect objects - if(!d->activeSheet) return; - Cell * cell = d->activeSheet->cellAt( d->selection->marker() ); - KSpread::Inspector* ins = new KSpread::Inspector( cell ); - ins->exec(); - delete ins; -} - -TQColor View::highlightColor() -{ - return TQApplication::palette().active().highlight().light( 175 ); -} - -} // namespace KSpread - -#include "kspread_view.moc" |