kword

KWDocStruct.h

00001 /* This file is part of the KDE project
00002    Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org>
00003 
00004    This library is free software; you can redistribute it and/or
00005    modify it under the terms of the GNU Library General Public
00006    License as published by the Free Software Foundation; either
00007    version 2 of the License, or (at your option) any later version.
00008 
00009    This library is distributed in the hope that it will be useful,
00010    but WITHOUT ANY WARRANTY; without even the implied warranty of
00011    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012    Library General Public License for more details.
00013 
00014    You should have received a copy of the GNU Library General Public License
00015    along with this library; see the file COPYING.LIB.  If not, write to
00016    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00017  * Boston, MA 02110-1301, USA.
00018 */
00019 
00020 #ifndef docstruct_h
00021 #define docstruct_h
00022 
00023 #include <klistview.h>
00024 #include <qwidget.h>
00025 
00026 class KWDocument;
00027 class KWFormulaFrameSet;
00028 class KWPictureFrameSet;
00029 class KWPartFrameSet;
00030 class KWGUI;
00031 class QWidget;
00032 class QVBoxLayout;
00033 class KWFrame;
00034 class KWFrameSet;
00035 class KWTextParag;
00036 
00037 /******************************************************************/
00038 /* Class: KWOrderedFrameSet                                       */
00039 /******************************************************************/
00040 
00042 class KWOrderedFrameSet
00043 {
00044 public:
00045     KWOrderedFrameSet(KWFrameSet* fs);
00046     KWOrderedFrameSet();    // default constructor
00047     bool operator<( KWOrderedFrameSet ofs);
00048     KWFrameSet* frameSet() { return m_frameset; }
00049 
00050 private:
00051     KWFrameSet* m_frameset;
00052 };
00053 
00054 class KWDocListViewItem : public KListViewItem
00055 {
00056 public:
00057     enum ItemType {
00058         IT_BASE = FT_BASE,
00059         IT_TEXT = FT_TEXT,
00060         IT_PICTURE = FT_PICTURE,
00061         IT_PART = FT_PART,
00062         IT_FORMULA = FT_FORMULA,
00063         IT_CLIPART = FT_CLIPART,
00064         IT_TABLE = FT_TABLE,
00065         IT_ROOT = 11,
00066         IT_TEXTFRAME = 12,
00067         IT_PARAG = 13
00068     };
00069 
00070     KWDocListViewItem(QListViewItem *_parent, const QString &_text);
00071     KWDocListViewItem(QListViewItem *_parent, QListViewItem *_after, const QString &_text);
00072     KWDocListViewItem(QListView *_parent, const QString &_text);
00073     virtual ItemType itemType() { return IT_BASE; }
00074     virtual void selectItem() {}
00075     virtual void editItem() {}
00076     virtual void deleteItem() {}
00077     virtual void editProperties() {}
00078     virtual void speakItem() {}
00079     virtual void contextMenu(QListViewItem *, const QPoint &, int) {}
00080 
00081 protected:
00082     KWDocument* doc();
00083     KWGUI* gui();
00084     void deleteAllChildren();
00085 };
00086 
00087 /******************************************************************/
00088 /* Class: KWDocStructParagItem                                    */
00089 /******************************************************************/
00090 
00091 class KWDocStructParagItem : public KWDocListViewItem
00092 {
00093 public:
00094     KWDocStructParagItem(QListViewItem* parent, const QString& text, KWTextParag* parag);
00095     KWDocStructParagItem(QListViewItem* parent, QListViewItem* after, const QString& text, KWTextParag* parag);
00096     virtual ItemType itemType() { return IT_PARAG; }
00097     virtual void selectItem();
00098     virtual void editItem();
00099     virtual void deleteItem();
00100     virtual void editProperties();
00101     virtual void speakItem();
00102     virtual void contextMenu(QListViewItem* item, const QPoint& p, int);
00103 
00104     KWTextParag* parag() const { return m_parag; }
00105 
00106 protected:
00107     KWTextParag* m_parag;
00108 };
00109 
00110 /******************************************************************/
00111 /* Class: KWDocStructTextFrameItem                                */
00112 /******************************************************************/
00113 
00114 class KWDocStructTextFrameItem : public KWDocListViewItem
00115 {
00116 public:
00117     KWDocStructTextFrameItem(QListViewItem* parent, const QString& text,
00118         KWTextFrameSet* frameset, KWFrame* frame );
00119     KWDocStructTextFrameItem(QListViewItem* parent, QListViewItem* after, const QString& text,
00120         KWTextFrameSet* frameset, KWFrame* frame );
00121     virtual int ItemType() { return IT_TEXTFRAME; }
00122     virtual void selectItem();
00123     virtual void editItem();
00124     virtual void deleteItem();
00125     virtual void editProperties();
00126     virtual void speakItem();
00127     virtual void contextMenu(QListViewItem* item, const QPoint& p, int);
00128 
00129     KWFrame* frame() const { return m_frame; }
00130     KWTextFrameSet* frameSet() const { return m_frameset; };
00131     void setupTextParags();
00132     KWDocStructParagItem* findTextParagItem(const KWTextParag* parag);
00133 
00134 protected:
00135     KWFrame* m_frame;
00136     KWTextFrameSet* m_frameset;
00137 };
00138 
00139 
00140 /******************************************************************/
00141 /* Class: KWDocStructTextFrameSetItem                                 */
00142 /******************************************************************/
00143 
00144 class KWDocStructTextFrameSetItem : public KWDocListViewItem
00145 {
00146 public:
00147     KWDocStructTextFrameSetItem(QListViewItem* parent, const QString& text, KWTextFrameSet* frameset);
00148     KWDocStructTextFrameSetItem(QListViewItem* parent, QListViewItem* after, const QString& text,
00149         KWTextFrameSet* frameset );
00150     virtual int ItemType() { return IT_TEXT; }
00151     virtual void selectItem();
00152     virtual void editItem();
00153     virtual void deleteItem();
00154     virtual void editProperties();
00155     virtual void speakItem();
00156     virtual void contextMenu(QListViewItem* item, const QPoint& p, int);
00157 
00158     KWTextFrameSet* frameSet() const { return m_frameset; };
00159     void setupTextFrames();
00160     KWDocStructTextFrameItem* findTextFrameItem(const KWFrame* frame);
00161 
00162 protected:
00163     KWTextFrameSet* m_frameset;
00164 
00165 };
00166 
00167 /******************************************************************/
00168 /* Class: KWDocStructTableItem                                    */
00169 /******************************************************************/
00170 
00171 class KWDocStructTableItem : public KWDocListViewItem
00172 {
00173 public:
00174     KWDocStructTableItem(QListViewItem* parent, const QString& text, KWTableFrameSet* table );
00175     KWDocStructTableItem(QListViewItem* parent, QListViewItem* after, const QString& text,
00176         KWTableFrameSet* table );
00177     virtual int ItemType() { return IT_TABLE; }
00178     virtual void selectItem();
00179     virtual void editItem();
00180     virtual void deleteItem();
00181     virtual void editProperties();
00182     virtual void speakItem();
00183     virtual void contextMenu(QListViewItem* item, const QPoint& p, int);
00184 
00185     KWTableFrameSet* table() const { return m_table; };
00186     void setupCells();
00187     KWDocStructTextFrameItem* findCellItem(const KWTextFrameSet* cell);
00188 
00189 protected:
00190     KWTableFrameSet* m_table;
00191 };
00192 
00193 /******************************************************************/
00194 /* Class: KWDocStructFormulaItem                                  */
00195 /******************************************************************/
00196 
00197 class KWDocStructFormulaItem : public KWDocListViewItem
00198 {
00199 public:
00200     KWDocStructFormulaItem(QListViewItem* parent, const QString& text, KWFormulaFrameSet* form);
00201     virtual int ItemType() { return IT_FORMULA; }
00202     virtual void selectItem();
00203     virtual void editItem();
00204     virtual void deleteItem();
00205     virtual void editProperties();
00206     virtual void speakItem();
00207     virtual void contextMenu(QListViewItem* item, const QPoint& p, int);
00208 
00209 protected:
00210     KWFormulaFrameSet* m_form;
00211 };
00212 
00213 
00214 /******************************************************************/
00215 /* Class: KWDocStructPictureItem                                  */
00216 /******************************************************************/
00217 
00218 class KWDocStructPictureItem : public KWDocListViewItem
00219 {
00220 public:
00221     KWDocStructPictureItem(QListViewItem* parent, const QString& text, KWPictureFrameSet* pic);
00222     virtual int ItemType() { return IT_PICTURE; }
00223     virtual void selectItem();
00224     virtual void editItem();
00225     virtual void deleteItem();
00226     virtual void editProperties();
00227     virtual void contextMenu(QListViewItem* item, const QPoint& p, int);
00228 
00229 protected:
00230     KWPictureFrameSet* m_pic;
00231 };
00232 
00233 /******************************************************************/
00234 /* Class: KWDocStructPartItem                                     */
00235 /******************************************************************/
00236 
00237 class KWDocStructPartItem : public KWDocListViewItem
00238 {
00239 public:
00240     KWDocStructPartItem(QListViewItem* parent, const QString& text, KWPartFrameSet* part);
00241     virtual int ItemType() { return IT_PART; }
00242     virtual void selectItem();
00243     virtual void editItem();
00244     virtual void deleteItem();
00245     virtual void editProperties();
00246     virtual void contextMenu(QListViewItem* item, const QPoint& p, int);
00247 
00248 protected:
00249     KWPartFrameSet* m_part;
00250 };
00251 
00252 /******************************************************************/
00253 /* Class: KWDocStructRootItem                                     */
00254 /******************************************************************/
00255 
00256 class KWDocStructRootItem : public KWDocListViewItem
00257 {
00258 public:
00259     KWDocStructRootItem(QListView* parent, const QString& text, TypeStructDocItem type);
00260 
00261     virtual int ItemType() { return IT_ROOT; }
00262     void setupArrangement();
00263     void setupTextFrameSets();
00264     void setupTables();
00265     void setupPictures();
00266     void setupEmbedded();
00267     void setupFormulaFrames();
00268     virtual void setOpen(bool o);
00269 
00270 protected:
00271     KWDocStructTextFrameSetItem* findTextFrameSetItem(const KWFrameSet* frameset);
00272     KWDocStructTableItem* findTableItem(const KWFrameSet* frameset);
00273 
00274     TypeStructDocItem m_type;
00275 
00276 };
00277 
00278 /******************************************************************/
00279 /* Class: KWDocStructTree                                         */
00280 /******************************************************************/
00281 
00282 class KWDocStructTree : public KListView
00283 {
00284     Q_OBJECT
00285 
00286 public:
00287     KWDocStructTree( QWidget* parent, KWDocument* doc, KWGUI* gui );
00288     ~KWDocStructTree();
00289 
00290     void setup();
00291     void refreshTree(int _type);
00292     QSize minimumSizeHint() const {
00293         return QSize( 0, 0 );
00294     }
00295     void selectItem();
00296     void editItem();
00297     void deleteItem();
00298     void editProperties();
00299     void speakItem();
00300 
00301     KWDocument* doc() { return m_doc; };
00302     KWGUI* gui() { return m_gui; };
00303 
00304 public slots:
00305     void slotContextMenu(KListView* l, QListViewItem* i, const QPoint& p);
00306     void slotRightButtonClicked(QListViewItem*, const QPoint&, int);
00307     void slotDoubleClicked(QListViewItem* item);
00308     void slotReturnPressed(QListViewItem* item);
00309 
00310 protected:
00311     KWDocument* m_doc;
00312     KWGUI* m_gui;
00313 
00314     KWDocStructRootItem *arrangement, *tables, *pictures, *textfrms, *embedded, *formulafrms;
00315 };
00316 
00317 /******************************************************************/
00318 /* Class: KWDocStruct                                             */
00319 /******************************************************************/
00320 
00321 class KWDocStruct : public QWidget
00322 {
00323     Q_OBJECT
00324 
00325 public:
00326     KWDocStruct( QWidget* parent, KWDocument* doc, KWGUI* gui );
00327     void selectItem();
00328     void editItem();
00329     void deleteItem();
00330     void editProperties();
00331     void speakItem();
00334     void refreshTree(int _type);
00336     void setFocusHere();
00337 
00338 public slots:
00340     void refreshEntireTree();
00341 
00342 protected:
00343     KWDocStructTree* m_tree;
00344     QVBoxLayout* m_layout;
00345 
00346     virtual void paintEvent(QPaintEvent* ev);
00347 
00348     KWDocument* m_doc;
00349     KWGUI* m_gui;
00350     int dirtyTreeTypes;
00351 };
00352 
00353 #endif
KDE Home | KDE Accessibility Home | Description of Access Keys