Subversion Repositories Scribus

Rev

Rev 3937 | Rev 3939 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3903 cbradney 1
/***************************************************************************
2
        copyright            : (C) 2005 by Craig Bradney
3
        email                : cbradney@zip.com.au
4
***************************************************************************/
5
 
6
/***************************************************************************
7
*                                                                         *
8
*   This program is free software; you can redistribute it and/or modify  *
9
*   it under the terms of the GNU General Public License as published by  *
10
*   the Free Software Foundation; either version 2 of the License, or     *
11
*   (at your option) any later version.                                   *
12
*                                                                         *
13
***************************************************************************/
14
#ifndef SELECTION_H
15
#define SELECTION_H
16
 
17
#include <qguardedptr.h>
18
#include <qobject.h>
19
#include <qmap.h>
20
#include <qvaluevector.h>
21
 
22
#include "pageitem.h"
3938 cbradney 23
#include "scribusapi.h"
3903 cbradney 24
 
25
typedef enum {
26
        GUISelection=0,
27
        NonGUISelection=1,
28
        Delete=2,
3934 cbradney 29
        CustomStart=10,
30
        TempStart=100
3903 cbradney 31
} SelectionListType;
32
 
33
typedef QValueList< QGuardedPtr<PageItem> > SelectionList;
34
typedef QMap<int, SelectionList > ListOfSelections;
35
typedef QMap<int, bool> ListBool;
36
 
3937 cbradney 37
class SCRIBUS_API Selection : public QObject
3903 cbradney 38
{
39
        Q_OBJECT
40
        public:
41
                Selection();
42
                ~Selection();
43
 
44
                void setDoc(ScribusDoc*);
45
 
46
                QPtrList<PageItem>* requestList();
3934 cbradney 47
                int backupToTempList(int listNumber);
48
                bool restoreFromTempList(int listNumber, int fromTempListNumber);
49
 
50
 
3903 cbradney 51
                bool connectItemToGUI(int listNumber);
52
                /**
53
                 * Disconnect all items from the GUI slots.
54
                 * This should not really be necessary if all things are going ok
55
                 * except for within the clearAll function.
56
                 * @return
57
                 */
58
                bool disconnectAllItemsFromGUI();
3936 cbradney 59
                /**
60
                 * @brief Add an item to the selection.
61
                 * If its added to the GUISelection listNumber and its item 0, its connected to the GUI too
62
                 * @param item Item to add
63
                 * @param listNumber List to add the item to
64
                 * @return If the item was added
65
                 */
3903 cbradney 66
                bool addItem(PageItem *item, int listNumber=GUISelection);
3936 cbradney 67
                /**
68
                 * @brief Prepend an item to the selection.
69
                 * If its added to the GUISelection listNumber and its item 0, its connected to the GUI too
70
                 * @param item Item to add
71
                 * @param listNumber List to add the item to
72
                 * @return If the item was added
73
                 */
3934 cbradney 74
                bool prependItem(PageItem *item, int listNumber=GUISelection);
3936 cbradney 75
                /**
76
                 * Unused
77
                 * @return
78
                 */
3903 cbradney 79
                bool addGroup();
3936 cbradney 80
                /**
81
                 * Remove an item from list listNumber
82
                 * @param item
83
                 * @param listNumber List to remove the item from
84
                 * @return
85
                 */
3903 cbradney 86
                bool removeItem(PageItem *item, int listNumber=GUISelection);
3936 cbradney 87
                /**
88
                 * Remove the first item from the list
89
                 * @param listNumber List to remove the item
90
                 * @return If the remove was successful
91
                 */
3934 cbradney 92
                bool removeFirst(int listNumber=GUISelection);
3936 cbradney 93
                /**
94
                 * Unused
95
                 * @return
96
                 */
3903 cbradney 97
                bool removeGroup();
3936 cbradney 98
                /**
99
                 * Remove an item from list listNumber and return a pointer to it
100
                 * @param itemIndex Index of the item in the list
101
                 * @param listNumber List to remove the item from
102
                 * @return Item
103
                 */
3934 cbradney 104
                PageItem* takeItem(int itemIndex, int listNumber=GUISelection);
3936 cbradney 105
                /**
106
                 * Find an item from list listNumber and return an index to it
107
                 * @param item Item pointer to find in the list
108
                 * @param listNumber List to find th item in
109
                 * @return Item
110
                 */
3934 cbradney 111
                const int findItem(PageItem *item, int listNumber=GUISelection);
3936 cbradney 112
                /**
113
                 * Return the count of a list
114
                 * @param listNumber List to count
115
                 * @return
116
                 */
3934 cbradney 117
                uint count(int listNumber=GUISelection);
3936 cbradney 118
                /**
119
                 *
120
                 * @param listNumber List to empty
121
                 * @return
122
                 */
3934 cbradney 123
                bool isEmpty(int listNumber=GUISelection);
3936 cbradney 124
                /**
125
                 * Clear a list
126
                 * @param listNumber List to clear
127
                 * @return
128
                 */
3903 cbradney 129
                bool clear(int listNumber=GUISelection);
130
                void clearAll();
131
                /**
3936 cbradney 132
                 * See if the first selected item is "me", usually called from an item object with "this".
3903 cbradney 133
                 * @param item
134
                 * @return
135
                 */
3934 cbradney 136
                const bool primarySelectionIsMyself(const PageItem* item, int listNumber=GUISelection);
3903 cbradney 137
                PageItem *itemAt(int index=0, int listNumber=GUISelection);
3934 cbradney 138
                QStringList getSelectedItemsByName(int listNumber=GUISelection);
3903 cbradney 139
 
140
        protected:
141
                ScribusDoc* m_Doc;
142
                ListOfSelections sellists;
143
                ListBool hasGroupSelection;
3934 cbradney 144
                int nextTemp;
3903 cbradney 145
};
146
 
147
#endif