Subversion Repositories Scribus

Rev

Rev 4133 | Rev 4135 | 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 QValueList< QGuardedPtr<PageItem> > SelectionList;
26
 
3937 cbradney 27
class SCRIBUS_API Selection : public QObject
3903 cbradney 28
{
29
        Q_OBJECT
30
        public:
4133 cbradney 31
                Selection(QObject*);
32
                Selection(QObject*, bool);
4130 cbradney 33
                Selection(const Selection&);
34
                Selection& operator=( const Selection &a );
3903 cbradney 35
                ~Selection();
36
 
37
                void setDoc(ScribusDoc*);
38
 
4133 cbradney 39
                bool connectItemToGUI();
3903 cbradney 40
                /**
41
                 * Disconnect all items from the GUI slots.
42
                 * This should not really be necessary if all things are going ok
43
                 * except for within the clearAll function.
44
                 * @return
45
                 */
46
                bool disconnectAllItemsFromGUI();
3936 cbradney 47
                /**
48
                 * @brief Add an item to the selection.
49
                 * If its added to the GUISelection listNumber and its item 0, its connected to the GUI too
50
                 * @param item Item to add
51
                 * @param listNumber List to add the item to
52
                 * @return If the item was added
53
                 */
4133 cbradney 54
                bool addItem(PageItem *item);
3936 cbradney 55
                /**
56
                 * @brief Prepend an item to the selection.
57
                 * If its added to the GUISelection listNumber and its item 0, its connected to the GUI too
58
                 * @param item Item to add
59
                 * @param listNumber List to add the item to
60
                 * @return If the item was added
61
                 */
4133 cbradney 62
                bool prependItem(PageItem *item);
3936 cbradney 63
                /**
64
                 * Unused
65
                 * @return
66
                 */
3903 cbradney 67
                bool addGroup();
3936 cbradney 68
                /**
69
                 * Remove an item from list listNumber
70
                 * @param item
71
                 * @param listNumber List to remove the item from
72
                 * @return
73
                 */
4133 cbradney 74
                bool removeItem(PageItem *item);
3936 cbradney 75
                /**
76
                 * Remove the first item from the list
77
                 * @param listNumber List to remove the item
78
                 * @return If the remove was successful
79
                 */
4133 cbradney 80
                bool removeFirst();
3936 cbradney 81
                /**
82
                 * Unused
83
                 * @return
84
                 */
3903 cbradney 85
                bool removeGroup();
3936 cbradney 86
                /**
87
                 * Remove an item from list listNumber and return a pointer to it
88
                 * @param itemIndex Index of the item in the list
89
                 * @param listNumber List to remove the item from
90
                 * @return Item
91
                 */
4133 cbradney 92
                PageItem* takeItem(uint itemIndex);
3936 cbradney 93
                /**
94
                 * Find an item from list listNumber and return an index to it
95
                 * @param item Item pointer to find in the list
96
                 * @param listNumber List to find th item in
97
                 * @return Item
98
                 */
4134 cbradney 99
                int findItem(PageItem *item) const { return m_SelList.findIndex(item); }
3936 cbradney 100
                /**
101
                 * Return the count of a list
102
                 * @param listNumber List to count
103
                 * @return
104
                 */
4134 cbradney 105
                uint count() const { return m_SelList.count(); }
3936 cbradney 106
                /**
3939 cbradney 107
                 * Check if the list specified is empty.
108
                 * @param listNumber List to check empty state
109
                 * @return
3936 cbradney 110
                 */
4134 cbradney 111
                bool isEmpty() const { return (m_SelList.count()==0); }
3936 cbradney 112
                /**
113
                 * Clear a list
114
                 * @param listNumber List to clear
115
                 * @return
116
                 */
4133 cbradney 117
                bool clear();
3903 cbradney 118
                /**
3936 cbradney 119
                 * See if the first selected item is "me", usually called from an item object with "this".
3903 cbradney 120
                 * @param item
121
                 * @return
122
                 */
4134 cbradney 123
                bool primarySelectionIs(const PageItem* item) const { return (!m_SelList.isEmpty() && (item==m_SelList.first())); }
4133 cbradney 124
                PageItem *itemAt(int index=0);
125
                QStringList getSelectedItemsByName();
126
                bool isMultipleSelection() const { return m_hasGroupSelection; }
127
                bool isGUISelection() const { return m_isGUISelection; }
128
                void setIsGUISelection(bool guiSelection) { m_isGUISelection=guiSelection; }
3903 cbradney 129
 
130
        protected:
4133 cbradney 131
                SelectionList m_SelList;
132
                bool m_hasGroupSelection;
133
                bool m_isGUISelection;
4049 cbradney 134
 
135
        signals:
4130 cbradney 136
                void selectionIsMultiple(bool);
3903 cbradney 137
};
138
 
139
#endif