From 8362bf63dea22bbf6736609b0f49c152f975eb63 Mon Sep 17 00:00:00 2001 From: tpearson Date: Wed, 20 Jan 2010 01:29:50 +0000 Subject: Added old abandoned KDE3 version of koffice git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kspread/kspread_view.h | 753 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 753 insertions(+) create mode 100644 kspread/kspread_view.h (limited to 'kspread/kspread_view.h') diff --git a/kspread/kspread_view.h b/kspread/kspread_view.h new file mode 100644 index 00000000..52794a32 --- /dev/null +++ b/kspread/kspread_view.h @@ -0,0 +1,753 @@ +/* This file is part of the KDE project + Copyright (C) 2006 Raphael Langerhorst + (C) 2002-2004 Ariya Hidayat + (C) 1999-2003 Laurent Montel + (C) 2002-2003 Norbert Andres + (C) 2002-2003 Philipp Mueller + (C) 2002-2003 John Dailey + (C) 1999-2003 David Faure + (C) 1999-2001 Simon Hausmann + (C) 1998-2000 Torben Weis + + 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. +*/ + +#ifndef KSPREAD_VIEW +#define KSPREAD_VIEW + +#include +#include +#include +#include + +#include +#include + +#include +#include + + +class QScrollBar; + +class KoDocumentEntry; +class KoTabBar; + +class SheetSelectWidget; + +namespace KSpread +{ +class Cell; +class Damage; +class Sheet; +class Canvas; +class Child; +class Doc; +class EditWidget; +class HBorder; +class LocationEditWidget; +class Region; +class Selection; +class VBorder; +class View; +class ComboboxLocationEditWidget; +class EmbeddedKOfficeObject; +class EmbeddedObject; + + +/** + * \class KPSheetSelectPage + * \brief Print dialog page for selecting sheets to print. + * @author raphael.langerhorst@kdemail.net + * @see SheetSelectWidget + * + * This dialog is shown in the print dialog and allows the user + * to select the sheets that should be printed and in which order + * they should be printed. + */ +class KPSheetSelectPage : public KPrintDialogPage +{ + Q_OBJECT + public: + KPSheetSelectPage( QWidget *parent = 0 ); +// ~KPSheetSelectPage(); + +// //reimplement virtual functions + /** + * @see printOptionPrefix() + */ + void getOptions( QMap& opts, bool incldef = false ); + + /** + * @see printOptionPrefix() + */ + void setOptions( const QMap& opts ); + + /** + * @return false if no sheet is selected for printing. + */ + bool isValid( QString& msg ); + + /** + * @return list of sheets that will be printed, in correct order. + */ + QStringList selectedSheets(); + + /** + * Removes all sheets from the list of selected sheets. + */ + void clearSelection(); + + /** + * The print order of the sheets is stored in the option map, + * using a prefix plus the index of the sheet, like the following: + * \li sheetprintorder0 + * \li sheetprintorder1 + * \li sheetprintorder2 + * Please note that this is just the key to the value, not the value + * itself. The value of the option is the sheetname itself. + * @param index the index of the print order, starting at 0 + * @return the string that is used in the printoption for given index + */ + static QString printOptionForIndex(unsigned int index); + + /** + * @param prt the printer from which the options should be read. + * @return list of sheets to print in correct order configured for given printer. + */ + static QStringList selectedSheets(KPrinter &prt); + + public slots: + + /** + * Inserts given sheet to the list of available sheets. + */ + void prependAvailableSheet(const QString& sheetname); + + /** + * Inserts given sheet to the list of sheets for printing at the top. + */ + void prependSelectedSheet(const QString& sheetname); + + protected slots: + + // The following slots just implement the code for the buttons + + void selectAll(); + void select(); + void remove(); + void removeAll(); + + void moveTop(); + void moveUp(); + void moveDown(); + void moveBottom(); + + private: + + /** + * The widget used, includes two lists of sheet names and + * buttons to move sheets between and within the lists. + */ + SheetSelectWidget* gui; +}; + + +/** @class View + * + * @brief The View class displays a KSpread document. + * + * + * View is used to display a spreadsheet document and provide + * the interface for the user to perform editing and data analysis. + * + * A view consists of several parts: + * \li canvas to display cells in a sheet + * \li line editor to display and edit cell contents + * \li location editor to show marker and/or selection + * \li column header to show columns + * \li row header to show rows + * \li horizontal and vertical scrollbars for navigation + * \li tab bar to select active worksheet + * + */ +class KSPREAD_EXPORT View : public KoView +{ + friend class Canvas; + + Q_OBJECT +public: + + /** Creates a new view */ + View( QWidget *_parent, const char *_name, + Doc *doc ); + + /** Destroys the view */ + ~View(); + + Doc* doc() const; + + /** Returns the canvas of the view */ + Canvas* canvasWidget() const; + + /** Returns the column header */ + HBorder* hBorderWidget() const; + + /** Returns the row header */ + VBorder* vBorderWidget() const; + + /** Returns the horizontal scrollbar */ + QScrollBar* horzScrollBar() const; + + /** Returns the vertical scrollbar */ + QScrollBar* vertScrollBar() const; + + /** Returns the editor widget */ + KSpread::EditWidget* editWidget() const; + + /** Returns the location widget */ + ComboboxLocationEditWidget* posWidget() const; + + /** Returns the tab bar */ + KoTabBar* tabBar() const; + + void setZoom( int zoom, bool updateViews ); // change the zoom value + + void addSheet( Sheet *_t ); + //void removesheet( Sheet *_t ); + void removeAllSheets(); + void setActiveSheet( Sheet *_t,bool updatesheet=true ); + + const Sheet* activeSheet() const; + Sheet* activeSheet(); + + void openPopupMenu( const QPoint &_global ); + void popupRowMenu(const QPoint & _point ) ; + void popupColumnMenu( const QPoint & _point); + + // void showFormulaToolBar( bool show ); + + /** + * Used by @ref EditWidget. Sets the text of the active cell(s). + */ + void setText( const QString& _text, bool array = false ); + + void enableUndo( bool _b ); + void enableRedo( bool _b ); + void enableInsertColumn( bool _b ); + void enableInsertRow( bool _b ); + + /** + * + * @param _geometry is the zoomed geometry of the new child. + * @param _entry is the entry to insert. + * + * @todo check validity of @p _entry docs. + */ + void insertChart( const QRect& _geometry, KoDocumentEntry& _entry ); + /** + * + * @param _geometry is the geometry of the new child. + * @param _entry is the entry to insert. + * + * @todo check validity of @p _entry docs. + */ + void insertChild( const QRect& _geometry, KoDocumentEntry& _entry ); + + // void insertPicture( const QRect& _geometry, KURL& _file ); + + virtual void print( KPrinter &printer ); + virtual void setupPrinter( KPrinter &printer ); + + /** + * Fills the @ref EditWidget with the current cells + * content. This function is usually called after the + * cursor moved. + */ + void updateEditWidget(); + /** + * Same as updateEditEidget() but no update of menus and toolbars + */ + void updateEditWidgetOnPress(); + + + /** + * Called before saving, to finish the current edition (if any) + */ + void deleteEditor( bool saveChanges = true ); + void closeEditor(); + virtual DCOPObject* dcopObject(); + + virtual QWidget *canvas() const; + virtual int canvasXOffset() const; + virtual int canvasYOffset() const; + + /** + * @reimp + */ + KoDocument *hitTest( const QPoint &pos ); + + + void initConfig(); + + + void initCalcMenu(); + + void changeNbOfRecentFiles(int _nb); + + void updateBorderButton(); + + void removeSheet( Sheet *_t ); + void insertSheet( Sheet* sheet ); + QColor borderColor() const; + + Selection* selectionInfo() const; + Selection* choice() const; + + void updateShowSheetMenu(); + + /** + * Mark all selected cells / regions of cells as 'dirty' (ie. requiring a repaint) + * They will be repainted on the next call to paintUpdates() + */ + void markSelectionAsDirty(); + + /** + * Repaint any cell with the paintDirty flag that is visible in this view + */ + void paintUpdates(); + + /** + * Resets the internal handle pointer, called from InsertHandler destructor + */ + void resetInsertHandle(); + + bool isInsertingObject(); + + bool showSheet(const QString& sheetName); + + /** + * @return marker for @p sheet + */ + QPoint markerFromSheet( Sheet* sheet ) const; + + /** + * @return scroll offset for @p sheet + */ + KoPoint offsetFromSheet( Sheet* sheet ) const; + + /** + * Save current sheet selection. + * Call when we change sheet, or before save in OpenDocument format. + */ + void saveCurrentSheetSelection(); + + void deleteSelectedObjects(); + + /** + * Returns the default color for highlighting cells and column / row headers + */ + static QColor highlightColor(); + +public slots: + /** + * refresh view when you hide/show vertical scrollbar + */ + void refreshView(); + void initialPosition(); + /** + * Actions + */ + void createTemplate(); + void transformPart(); + void copySelection(); + void cutSelection(); + void deleteSelection(); + void clearTextSelection(); + void clearCommentSelection(); + void clearValiditySelection(); + void clearConditionalSelection(); + void fillRight(); + void fillLeft(); + void fillUp(); + void fillDown(); + void recalcWorkBook(); + void recalcWorkSheet(); + void paste(); + void specialPaste(); + void editCell(); + void setAreaName(); + void showAreaName(); + void adjust(); + void defaultSelection(); + void paperLayoutDlg(); + void styleDialog(); + void definePrintRange(); + void resetPrintRange(); + void insertObject(); + void insertFromDatabase(); + void insertFromTextfile(); + void insertFromClipboard(); + void insertSpecialChar(); + void togglePageBorders( bool ); + void toggleProtectSheet( bool ); + void toggleProtectDoc( bool ); + void viewZoom( const QString & ); + void find(); + void findNext(); + void findPrevious(); + void replace(); + void conditional(); + void validity(); + void insertSeries(); + void sort(); + void insertHyperlink(); + void removeHyperlink(); + void goalSeek(); + void multipleOperations(); + void subtotals(); + void textToColumns(); + void consolidate(); + void insertSheet(); + void removeSheet(); + void hideSheet(); + void showSheet(); + void helpUsing(); + void insertChart(); + void insertPicture(); + void moneyFormat(bool b); + void alignLeft( bool b ); + void alignRight( bool b ); + void alignCenter( bool b ); + void alignTop( bool b ); + void alignMiddle( bool b ); + void alignBottom( bool b ); + void wrapText( bool b ); + void precisionMinus(); + void precisionPlus(); + void createStyleFromCell(); + void styleSelected( const QString & ); + void setSelectionPrecision(int delta); + void percent(bool b); + void fontSelected( const QString &_font ); + void fontSizeSelected( int size ); + void bold( bool b ); + void italic( bool b ); + void underline( bool b ); + void strikeOut( bool b ); + void deleteColumn(); + void insertColumn(); + void deleteRow(); + void insertRow(); + void hideRow(); + void showRow(); + void showSelRows(); + void hideColumn(); + void showColumn(); + void showSelColumns(); + void insertMathExpr(); + void formulaSelection( const QString &_math ); + void changeTextColor(); + void changeBackgroundColor(); + void sortInc(); + void sortDec(); + void layoutDlg(); + void extraProperties(); + void borderBottom(); + void borderRight(); + void borderLeft(); + void borderTop(); + void borderOutline(); + void borderAll(); + void borderRemove(); + void changeBorderColor(); + void sheetFormat(); + void autoSum(); + void resizeRow(); + void resizeColumn(); + void increaseFontSize(); + void decreaseFontSize(); + void setSelectionFontSize(int size); + + void setSelectionTextColor(const QColor &txtColor); + void setSelectionBackgroundColor(const QColor &bgColor); + void setSelectionBorderColor(const QColor &bdColor); + + void setSelectionLeftBorderColor(const QColor &color); + void setSelectionRightBorderColor(const QColor &color); + void setSelectionTopBorderColor(const QColor &color); + void setSelectionBottomBorderColor(const QColor &color); + void setSelectionAllBorderColor(const QColor &color); + void setSelectionOutlineBorderColor(const QColor &color); + + void upper(); + void lower(); + void equalizeColumn(); + void equalizeRow(); + void preference(); + void firstLetterUpper(); + void verticalText(bool ); + void addModifyComment(); + void setSelectionComment(QString comment); + void removeComment(); + void changeAngle(); + void setSelectionAngle(int angle); + + /** + * Merges selected cells into one cell. This will not work if only one + * cell is selected. An entire row or column can't be merged as well. + * + * \sa dissociateCell + */ + void mergeCell(); + void mergeCellHorizontal(); + void mergeCellVertical(); + + + /** + * Breaks merged cell. Obviously this can be done only on merged cells. + * + * \sa mergeCell + */ + void dissociateCell(); + + void gotoCell(); + void increaseIndent(); + void decreaseIndent(); + void copyAsText(); + + void moveSheet( unsigned sheet, unsigned target ); + + /** + * Shows the sheet properties dialog. + */ + void sheetProperties(); + + /** + * Switch the active sheet to the name. This slot is connected to the tab bar + * and activated when the user selects a new sheet in the tab bar. + */ + void changeSheet( const QString& _name ); + + /** + * Switch the active sheet to the next visible sheet. Does nothing if the current + * active sheet is the last visible sheet in the workbook. + */ + void nextSheet(); + + /** + * Switch the active sheet to the previous visible sheet. Does nothing if the current + * active sheet is the first visible sheet in the workbook. + */ + void previousSheet(); + + /** + * Switch the active sheet to the first visible sheet in the workbook. Does nothing + * if the current active sheet is already the first one. + */ + void firstSheet(); + + /** + * Switch the active sheet to the last visible sheet in the workbook. Does nothing + * if the current active sheet is already the last one. + */ + void lastSheet(); + + void sortList(); + + void statusBarClicked(int _id); + void menuCalc(bool); + + /** + * Shows the status bar if b is true, otherwise the status bar will be hidden. + */ + void showStatusBar( bool b ); + + /** + * Shows the tab bar if b is true, otherwise the tab bar will be hidden. + */ + void showTabBar( bool b ); + + /** + * Shows the formula bar if b is true, otherwise the formula bar will be hidden. + */ + void showFormulaBar( bool b ); + + /** + * Shows context menu when tabbar is double-clicked. + */ + void popupTabBarMenu( const QPoint& ); + + void handleDamages( const QValueList& damages ); + + void runInternalTests(); + void runInspector(); + + void initialiseMarkerFromSheet( Sheet *_sheet, const QPoint &point ); + + /** + * write in statusBar result of calc (Min, or Max, average, sum, count) + */ + void calcStatusBarOp(); + +protected slots: + /** + * Popup menu + */ + void slotActivateTool( int _id ); + void slotInsert(); + void slotInsertCellCopy(); + void slotRemove(); + void slotRename(); + + /** + * Invoked if the popup menu for an embedded document should be opened. + */ + void popupChildMenu( KoChild*, const QPoint& global_pos ); + + /** + * Invoked when the "Delete Embedded Document" option from an embedded document's + * popup menu is selected. + */ + void slotPopupDeleteChild(); + + /** + * Border popup menu + */ + void slotPopupAdjustColumn(); + void slotPopupAdjustRow(); + + /** + * list from list choose + */ + void slotItemSelected( int ); + void slotListChoosePopupMenu( ); + + /** + * Called by find/replace (findNext) when it found a match + */ + void slotHighlight( const QString &text, int matchingIndex, int matchedLength ); + /** + * Called when replacing text in a cell + */ + void slotReplace( const QString &newText, int, int, int ); + + void slotSpecialChar( QChar c, const QString & _font ); + void slotSpecialCharDlgClosed(); + + void propertiesOk(); + + void objectSelectedChanged(); + +protected slots: + void slotChildSelected( KoDocumentChild* ch ); + void slotChildUnselected( KoDocumentChild* ); + +public slots: + // Document signals + void slotRefreshView(); + void slotUpdateView( Sheet *_sheet ); + void slotUpdateView( Sheet *_sheet, const Region& ); + void slotUpdateView( EmbeddedObject* obj ); + void slotUpdateHBorder( Sheet *_sheet ); + void slotUpdateVBorder( Sheet *_sheet ); + void slotChangeSelection(const Region&); + void slotChangeChoice(const Region&); + void slotScrollChoice(const Region&); + void slotAddSheet( Sheet *_sheet ); + void slotUpdateChildGeometry( EmbeddedKOfficeObject *_child ); + void slotSheetRenamed( Sheet* sheet, const QString& old_name ); + void slotSheetHidden( Sheet*_sheet ); + void slotSheetShown( Sheet*_sheet ); + void slotSheetRemoved( Sheet*_sheet ); + void refreshLocale(); + void extraSpelling(); + + void spellCheckerReady(); + void spellCheckerMisspelling( const QString &, const QStringList &, unsigned int); + void spellCheckerCorrected( const QString &, const QString &, unsigned int); + void spellCheckerDone( const QString & ); + void spellCheckerFinished( ); + void spellCheckerIgnoreAll( const QString & word); + void spellCheckerReplaceAll( const QString &, const QString &); + void startKSpell(); + + /** + * Updates the view and the action. This is typically connected + * to KoCommandHistory::commandExecuted() signal. + */ + void commandExecuted(); + + virtual int leftBorder() const; + virtual int rightBorder() const; + virtual int topBorder() const; + virtual int bottomBorder() const; + +protected: + + virtual void keyPressEvent ( QKeyEvent * _ev ); + virtual void resizeEvent( QResizeEvent *_ev ); + + virtual QWMatrix matrix() const; + + /** + * Returns the position of the top-left point of the currently selected cell in document coordinates. + * This is used when inserting some types of objects or pasting images into the document (so that the newly + * pasted object's top-left point will be aligned with the top-left point of the currently selected cell) + * + */ + KoPoint markerDocumentPosition(); + + /** + * Activates the formula editor for the current cell. + * This function is usually called if the user presses + * a button in the formula toolbar. + */ + void activateFormulaEditor(); + + virtual void updateReadWrite( bool readwrite ); + + virtual void guiActivateEvent( KParts::GUIActivateEvent *ev ); + + void initFindReplace(); + Cell* findNextCell(); + +private: + class Private; + Private* d; + + // don't allow copy or assignment + View( const View& ); + View& operator=( const View& ); + + void initView(); + + bool spellSwitchToOtherSheet(); + void spellCleanup(); + + /** + * @return @c true if document is being loaded. It is useful to supress scrolling + * while the "View loading" process. + */ + bool isLoading() const; + + Cell* nextFindValidCell( int col, int row ); + + friend class Private; +}; + +} // namespace KSpread + +#endif // KSPREAD_VIEW -- cgit v1.2.1