summaryrefslogtreecommitdiffstats
path: root/tqtinterface/qt4/src/table/tqtable.h
diff options
context:
space:
mode:
Diffstat (limited to 'tqtinterface/qt4/src/table/tqtable.h')
-rw-r--r--tqtinterface/qt4/src/table/tqtable.h565
1 files changed, 565 insertions, 0 deletions
diff --git a/tqtinterface/qt4/src/table/tqtable.h b/tqtinterface/qt4/src/table/tqtable.h
new file mode 100644
index 0000000..d978ad2
--- /dev/null
+++ b/tqtinterface/qt4/src/table/tqtable.h
@@ -0,0 +1,565 @@
+/****************************************************************************
+**
+** Definition of TQTable widget class
+**
+** Created : 000607
+**
+** Copyright (C) 2010 Timothy Pearson and (C) 1992-2008 Trolltech ASA.
+**
+** This file is part of the table module of the TQt GUI Toolkit.
+**
+** This file may be used under the terms of the GNU General
+** Public License versions 2.0 or 3.0 as published by the Free
+** Software Foundation and appearing in the files LICENSE.GPL2
+** and LICENSE.GPL3 included in the packaging of this file.
+** Alternatively you may (at your option) use any later version
+** of the GNU General Public License if such license has been
+** publicly approved by Trolltech ASA (or its successors, if any)
+** and the KDE Free TQt Foundation.
+**
+** Please review the following information to ensure GNU General
+** Public Licensing requirements will be met:
+** http://trolltech.com/products/qt/licenses/licensing/opensource/.
+** If you are unsure which license is appropriate for your use, please
+** review the following information:
+** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
+** or contact the sales department at sales@trolltech.com.
+**
+** This file may be used under the terms of the Q Public License as
+** defined by Trolltech ASA and appearing in the file LICENSE.TQPL
+** included in the packaging of this file. Licensees holding valid TQt
+** Commercial licenses may use this file in accordance with the TQt
+** Commercial License Agreement provided with the Software.
+**
+** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
+** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted
+** herein.
+**
+**********************************************************************/
+
+#ifndef TQTABLE_H
+#define TQTABLE_H
+
+#ifndef TQT_H
+#include "tqscrollview.h"
+#include "tqpixmap.h"
+#include "tqptrvector.h"
+#include "tqheader.h"
+#include "tqmemarray.h"
+#include "tqptrlist.h"
+#include "tqguardedptr.h"
+#include "tqshared.h"
+#include "tqintdict.h"
+#include "tqstringlist.h"
+#endif // TQT_H
+
+
+#ifndef TQT_NO_TABLE
+
+#if !defined( TQT_MODULE_TABLE ) || defined( TQT_LICENSE_PROFESSIONAL ) || defined( TQT_INTERNAL_TABLE )
+#define TQM_EXPORT_TABLE
+#ifndef TQM_TEMPLATE_EXTERN_TABLE
+# define TQM_TEMPLATE_EXTERN_TABLE
+#endif
+#else
+#define TQM_EXPORT_TABLE TQ_EXPORT
+#define TQM_TEMPLATE_EXTERN_TABLE TQ_TEMPLATE_EXTERN
+#endif
+
+class TQTableHeader;
+class TQValidator;
+class TQTable;
+class TQPaintEvent;
+class TQTimer;
+class TQResizeEvent;
+class TQComboBox;
+class TQCheckBox;
+class TQDragObject;
+
+struct TQTablePrivate;
+struct TQTableHeaderPrivate;
+
+
+class TQM_EXPORT_TABLE TQTableSelection
+{
+public:
+ TQTableSelection();
+ TQTableSelection( int start_row, int start_col, int end_row, int end_col );
+ void init( int row, int col );
+ void expandTo( int row, int col );
+ bool operator==( const TQTableSelection &s ) const;
+ bool operator!=( const TQTableSelection &s ) const { return !(operator==(s)); }
+
+ int topRow() const { return tRow; }
+ int bottomRow() const { return bRow; }
+ int leftCol() const { return lCol; }
+ int rightCol() const { return rCol; }
+ int anchorRow() const { return aRow; }
+ int anchorCol() const { return aCol; }
+ int numRows() const;
+ int numCols() const;
+
+ bool isActive() const { return active; }
+ bool isEmpty() const { return numRows() == 0; }
+
+private:
+ uint active : 1;
+ uint inited : 1;
+ int tRow, lCol, bRow, rCol;
+ int aRow, aCol;
+};
+
+#define TQ_DEFINED_TQTABLE_SELECTION
+#include "tqwinexport.h"
+
+class TQM_EXPORT_TABLE TQTableItem : public TQt
+{
+ friend class TQTable;
+
+public:
+ enum EditType { Never, OnTyping, WhenCurrent, Always };
+
+ TQTableItem( TQTable *table, EditType et );
+ TQTableItem( TQTable *table, EditType et, const TQString &text );
+ TQTableItem( TQTable *table, EditType et, const TQString &text,
+ const TQPixmap &p );
+ virtual ~TQTableItem();
+
+ virtual TQPixmap pixmap() const;
+ virtual TQString text() const;
+ virtual void setPixmap( const TQPixmap &p );
+ virtual void setText( const TQString &t );
+ TQTable *table() const { return t; }
+
+ virtual int tqalignment() const;
+ virtual void setWordWrap( bool b );
+ bool wordWrap() const;
+
+ EditType editType() const;
+ virtual TQWidget *createEditor() const;
+ virtual void setContentFromEditor( TQWidget *w );
+ virtual void setReplaceable( bool );
+ bool isReplaceable() const;
+
+ virtual TQString key() const;
+ virtual TQSize tqsizeHint() const;
+
+ virtual void setSpan( int rs, int cs );
+ int rowSpan() const;
+ int colSpan() const;
+
+ virtual void setRow( int r );
+ virtual void setCol( int c );
+ int row() const;
+ int col() const;
+
+ virtual void paint( TQPainter *p, const TQColorGroup &cg,
+ const TQRect &cr, bool selected );
+
+ void updateEditor( int oldRow, int oldCol );
+
+ virtual void setEnabled( bool b );
+ bool isEnabled() const;
+
+ virtual int rtti() const;
+ static int RTTI;
+
+private:
+ TQString txt;
+ TQPixmap pix;
+ TQTable *t;
+ EditType edType;
+ uint wordwrap : 1;
+ uint tcha : 1;
+ uint enabled : 1;
+ int rw, cl;
+ int rowspan, colspan;
+#if (TQT_VERSION >= 0x040000)
+#error "Add a tqsetAlignment() function in 4.0 (but no d pointer)"
+#endif
+};
+
+#define TQ_DEFINED_TQTABLE_ITEM
+#include "tqwinexport.h"
+
+class TQM_EXPORT_TABLE TQComboTableItem : public TQTableItem
+{
+public:
+ TQComboTableItem( TQTable *table, const TQStringList &list, bool editable = FALSE );
+ ~TQComboTableItem();
+ virtual TQWidget *createEditor() const;
+ virtual void setContentFromEditor( TQWidget *w );
+ virtual void paint( TQPainter *p, const TQColorGroup &cg,
+ const TQRect &cr, bool selected );
+ virtual void setCurrentItem( int i );
+ virtual void setCurrentItem( const TQString &i );
+ int currentItem() const;
+ TQString currentText() const;
+ int count() const;
+#if !defined(TQ_NO_USING_KEYWORD)
+ using TQTableItem::text;
+#endif
+ TQString text( int i ) const;
+ virtual void setEditable( bool b );
+ bool isEditable() const;
+ virtual void setStringList( const TQStringList &l );
+
+ int rtti() const;
+ static int RTTI;
+
+ TQSize tqsizeHint() const;
+
+private:
+ TQComboBox *cb;
+ TQStringList entries;
+ int current;
+ bool edit;
+ static TQComboBox *fakeCombo;
+ static TQWidget *fakeComboWidget;
+ static int fakeRef;
+
+};
+
+class TQM_EXPORT_TABLE TQCheckTableItem : public TQTableItem
+{
+public:
+ TQCheckTableItem( TQTable *table, const TQString &txt );
+ void setText( const TQString &t );
+ virtual TQWidget *createEditor() const;
+ virtual void setContentFromEditor( TQWidget *w );
+ virtual void paint( TQPainter *p, const TQColorGroup &cg,
+ const TQRect &cr, bool selected );
+ virtual void setChecked( bool b );
+ bool isChecked() const;
+
+ int rtti() const;
+ static int RTTI;
+
+ TQSize tqsizeHint() const;
+
+private:
+ TQCheckBox *cb;
+ bool checked;
+
+};
+
+class TQM_EXPORT_TABLE TQTable : public TQScrollView
+{
+ Q_OBJECT
+ TQ_OBJECT
+ TQ_ENUMS( SelectionMode FocusStyle )
+ Q_PROPERTY( int numRows READ numRows WRITE setNumRows )
+ Q_PROPERTY( int numCols READ numCols WRITE setNumCols )
+ Q_PROPERTY( bool showGrid READ showGrid WRITE setShowGrid )
+ Q_PROPERTY( bool rowMovingEnabled READ rowMovingEnabled WRITE setRowMovingEnabled )
+ Q_PROPERTY( bool columnMovingEnabled READ columnMovingEnabled WRITE setColumnMovingEnabled )
+ Q_PROPERTY( bool readOnly READ isReadOnly WRITE setReadOnly )
+ Q_PROPERTY( bool sorting READ sorting WRITE setSorting )
+ Q_PROPERTY( SelectionMode selectionMode READ selectionMode WRITE setSelectionMode )
+ Q_PROPERTY( FocusStyle focusStyle READ focusStyle WRITE setFocusStyle )
+ Q_PROPERTY( int numSelections READ numSelections )
+
+ friend class TQTableHeader;
+ friend class TQComboTableItem;
+ friend class TQCheckTableItem;
+ friend class TQTableItem;
+
+public:
+ TQTable( TQWidget* tqparent=0, const char* name=0 );
+ TQTable( int numRows, int numCols,
+ TQWidget* tqparent=0, const char* name=0 );
+ ~TQTable();
+
+ TQHeader *horizontalHeader() const;
+ TQHeader *verticalHeader() const;
+
+ enum SelectionMode { Single, Multi, SingleRow, MultiRow, NoSelection };
+ virtual void setSelectionMode( SelectionMode mode );
+ SelectionMode selectionMode() const;
+
+ virtual void setItem( int row, int col, TQTableItem *item );
+ virtual void setText( int row, int col, const TQString &text );
+ virtual void setPixmap( int row, int col, const TQPixmap &pix );
+ virtual TQTableItem *item( int row, int col ) const;
+ virtual TQString text( int row, int col ) const;
+ virtual TQPixmap pixmap( int row, int col ) const;
+ virtual void clearCell( int row, int col );
+
+ virtual TQRect cellGeometry( int row, int col ) const;
+ virtual int columnWidth( int col ) const;
+ virtual int rowHeight( int row ) const;
+ virtual int columnPos( int col ) const;
+ virtual int rowPos( int row ) const;
+ virtual int columnAt( int x ) const;
+ virtual int rowAt( int y ) const;
+
+ virtual int numRows() const;
+ virtual int numCols() const;
+
+ void updateCell( int row, int col );
+
+ bool eventFilter( TQObject * o, TQEvent * );
+
+ int currentRow() const { return curRow; }
+ int currentColumn() const { return curCol; }
+ void ensureCellVisible( int row, int col );
+
+ bool isSelected( int row, int col ) const;
+ bool isRowSelected( int row, bool full = FALSE ) const;
+ bool isColumnSelected( int col, bool full = FALSE ) const;
+ int numSelections() const;
+ TQTableSelection selection( int num ) const;
+ virtual int addSelection( const TQTableSelection &s );
+ virtual void removeSelection( const TQTableSelection &s );
+ virtual void removeSelection( int num );
+ virtual int currentSelection() const;
+
+ void selectCells( int start_row, int start_col, int end_row, int end_col );
+ void selectRow( int row );
+ void selectColumn( int col );
+
+ bool showGrid() const;
+
+ bool columnMovingEnabled() const;
+ bool rowMovingEnabled() const;
+
+ virtual void sortColumn( int col, bool ascending = TRUE,
+ bool wholeRows = FALSE );
+ bool sorting() const;
+
+ virtual void takeItem( TQTableItem *i );
+
+ virtual void setCellWidget( int row, int col, TQWidget *e );
+ virtual TQWidget *cellWidget( int row, int col ) const;
+ virtual void clearCellWidget( int row, int col );
+
+ virtual TQRect cellRect( int row, int col ) const;
+
+ virtual void paintCell( TQPainter *p, int row, int col,
+ const TQRect &cr, bool selected );
+ virtual void paintCell( TQPainter *p, int row, int col,
+ const TQRect &cr, bool selected, const TQColorGroup &cg );
+ virtual void paintFocus( TQPainter *p, const TQRect &r );
+ TQSize tqsizeHint() const;
+
+ bool isReadOnly() const;
+ bool isRowReadOnly( int row ) const;
+ bool isColumnReadOnly( int col ) const;
+
+ void setEnabled( bool b );
+
+ void repaintSelections();
+
+ enum FocusStyle { FollowStyle, SpreadSheet };
+ virtual void setFocusStyle( FocusStyle fs );
+ FocusStyle focusStyle() const;
+
+ void updateHeaderStates();
+
+public Q_SLOTS:
+ virtual void setNumRows( int r );
+ virtual void setNumCols( int r );
+ virtual void setShowGrid( bool b );
+ virtual void hideRow( int row );
+ virtual void hideColumn( int col );
+ virtual void showRow( int row );
+ virtual void showColumn( int col );
+ bool isRowHidden( int row ) const;
+ bool isColumnHidden( int col ) const;
+
+ virtual void setColumnWidth( int col, int w );
+ virtual void setRowHeight( int row, int h );
+
+ virtual void adjustColumn( int col );
+ virtual void adjustRow( int row );
+
+ virtual void setColumnStretchable( int col, bool stretch );
+ virtual void setRowStretchable( int row, bool stretch );
+ bool isColumnStretchable( int col ) const;
+ bool isRowStretchable( int row ) const;
+ virtual void setSorting( bool b );
+ virtual void swapRows( int row1, int row2, bool swapHeader = FALSE );
+ virtual void swapColumns( int col1, int col2, bool swapHeader = FALSE );
+ virtual void swapCells( int row1, int col1, int row2, int col2 );
+
+ virtual void setLeftMargin( int m );
+ virtual void setTopMargin( int m );
+ virtual void setCurrentCell( int row, int col );
+ void clearSelection( bool tqrepaint = TRUE );
+ virtual void setColumnMovingEnabled( bool b );
+ virtual void setRowMovingEnabled( bool b );
+
+ virtual void setReadOnly( bool b );
+ virtual void setRowReadOnly( int row, bool ro );
+ virtual void setColumnReadOnly( int col, bool ro );
+
+ virtual void setDragEnabled( bool b );
+ bool dragEnabled() const;
+
+ virtual void insertRows( int row, int count = 1 );
+ virtual void insertColumns( int col, int count = 1 );
+ virtual void removeRow( int row );
+ virtual void removeRows( const TQMemArray<int> &rows );
+ virtual void removeColumn( int col );
+ virtual void removeColumns( const TQMemArray<int> &cols );
+
+ virtual void editCell( int row, int col, bool tqreplace = FALSE );
+
+ void setRowLabels( const TQStringList &labels );
+ void setColumnLabels( const TQStringList &labels );
+
+protected:
+ enum EditMode { NotEditing, Editing, Replacing };
+ void drawContents( TQPainter *p, int cx, int cy, int cw, int ch );
+ void contentsMousePressEvent( TQMouseEvent* );
+ void contentsMouseMoveEvent( TQMouseEvent* );
+ void contentsMouseDoubleClickEvent( TQMouseEvent* );
+ void contentsMouseReleaseEvent( TQMouseEvent* );
+ void contentsContextMenuEvent( TQContextMenuEvent * e );
+ void keyPressEvent( TQKeyEvent* );
+ void focusInEvent( TQFocusEvent* );
+ void focusOutEvent( TQFocusEvent* );
+ void viewportResizeEvent( TQResizeEvent * );
+ void showEvent( TQShowEvent *e );
+ void paintEvent( TQPaintEvent *e );
+ void setEditMode( EditMode mode, int row, int col );
+#ifndef TQT_NO_DRAGANDDROP
+ virtual void contentsDragEnterEvent( TQDragEnterEvent *e );
+ virtual void contentsDragMoveEvent( TQDragMoveEvent *e );
+ virtual void contentsDragLeaveEvent( TQDragLeaveEvent *e );
+ virtual void contentsDropEvent( TQDropEvent *e );
+ virtual TQDragObject *dragObject();
+ virtual void startDrag();
+#endif
+
+ virtual void paintEmptyArea( TQPainter *p, int cx, int cy, int cw, int ch );
+ virtual void activateNextCell();
+ virtual TQWidget *createEditor( int row, int col, bool initFromCell ) const;
+ virtual void setCellContentFromEditor( int row, int col );
+ virtual TQWidget *beginEdit( int row, int col, bool tqreplace );
+ virtual void endEdit( int row, int col, bool accept, bool tqreplace );
+
+ virtual void resizeData( int len );
+ virtual void insertWidget( int row, int col, TQWidget *w );
+ int indexOf( int row, int col ) const;
+
+ void windowActivationChange( bool );
+ bool isEditing() const;
+ EditMode editMode() const;
+ int currEditRow() const;
+ int currEditCol() const;
+
+protected Q_SLOTS:
+ virtual void columnWidthChanged( int col );
+ virtual void rowHeightChanged( int row );
+ virtual void columnIndexChanged( int section, int fromIndex, int toIndex );
+ virtual void rowIndexChanged( int section, int fromIndex, int toIndex );
+ virtual void columnClicked( int col );
+
+Q_SIGNALS:
+ void currentChanged( int row, int col );
+ void clicked( int row, int col, int button, const TQPoint &mousePos );
+ void doubleClicked( int row, int col, int button, const TQPoint &mousePos );
+ void pressed( int row, int col, int button, const TQPoint &mousePos );
+ void selectionChanged();
+ void valueChanged( int row, int col );
+ void contextMenuRequested( int row, int col, const TQPoint &pos );
+#ifndef TQT_NO_DRAGANDDROP
+ void dropped( TQDropEvent *e );
+#endif
+
+private Q_SLOTS:
+ void doAutoScroll();
+ void doValueChanged();
+ void updateGeometriesSlot();
+
+private:
+ void contentsMousePressEventEx( TQMouseEvent* );
+ void drawContents( TQPainter* );
+ void updateGeometries();
+ void repaintSelections( TQTableSelection *oldSelection,
+ TQTableSelection *newSelection,
+ bool updateVertical = TRUE,
+ bool updateHorizontal = TRUE );
+ TQRect rangeGeometry( int topRow, int leftCol,
+ int bottomRow, int rightCol, bool &optimize );
+ void fixRow( int &row, int y );
+ void fixCol( int &col, int x );
+
+ void init( int numRows, int numCols );
+ TQSize tableSize() const;
+ void repaintCell( int row, int col );
+ void contentsToViewport2( int x, int y, int& vx, int& vy );
+ TQPoint contentsToViewport2( const TQPoint &p );
+ void viewportToContents2( int vx, int vy, int& x, int& y );
+ TQPoint viewportToContents2( const TQPoint &p );
+
+ void updateRowWidgets( int row );
+ void updateColWidgets( int col );
+ bool isSelected( int row, int col, bool includeCurrent ) const;
+ void setCurrentCell( int row, int col, bool updateSelections, bool ensureVisible = FALSE );
+ void fixCell( int &row, int &col, int key );
+ void delayedUpdateGeometries();
+ struct TableWidget
+ {
+ TableWidget( TQWidget *w, int r, int c ) : wid( w ), row( r ), col ( c ) {}
+ TQWidget *wid;
+ int row, col;
+ };
+ void saveContents( TQPtrVector<TQTableItem> &tmp,
+ TQPtrVector<TableWidget> &tmp2 );
+ void updateHeaderAndResizeContents( TQTableHeader *header,
+ int num, int colRow,
+ int width, bool &updateBefore );
+ void restoreContents( TQPtrVector<TQTableItem> &tmp,
+ TQPtrVector<TableWidget> &tmp2 );
+ void finishContentsResze( bool updateBefore );
+
+private:
+ TQPtrVector<TQTableItem> contents;
+ TQPtrVector<TQWidget> widgets;
+ int curRow;
+ int curCol;
+ TQTableHeader *leftHeader, *topHeader;
+ EditMode edMode;
+ int editCol, editRow;
+ TQPtrList<TQTableSelection> selections;
+ TQTableSelection *currentSel;
+ TQTimer *autoScrollTimer;
+ int lastSortCol;
+ bool sGrid : 1;
+ bool mRows : 1;
+ bool mCols : 1;
+ bool asc : 1;
+ bool doSort : 1;
+ bool unused : 1;
+ bool readOnly : 1;
+ bool shouldClearSelection : 1;
+ bool dEnabled : 1;
+ bool context_menu : 1;
+ bool drawActiveSelection : 1;
+ bool was_visible : 1;
+ SelectionMode selMode;
+ int pressedRow, pressedCol;
+ TQTablePrivate *d;
+ TQIntDict<int> roRows;
+ TQIntDict<int> roCols;
+ int startDragRow;
+ int startDragCol;
+ TQPoint dragStartPos;
+ int oldCurrentRow, oldCurrentCol;
+ TQWidget *unused_topLeftCorner; //### remove in 4.0
+ FocusStyle focusStl;
+ TQSize unused_cachedSizeHint; // ### remove in 4.0
+
+#if defined(TQ_DISABLE_COPY)
+ TQTable( const TQTable & );
+ TQTable &operator=( const TQTable & );
+#endif
+};
+
+#define TQ_DEFINED_TQTABLE
+#include "tqwinexport.h"
+#endif // TQT_NO_TABLE
+#endif // TABLE_H