author | ar <ar> | 2004-06-18 23:10:32 (UTC) |
---|---|---|
committer | ar <ar> | 2004-06-18 23:10:32 (UTC) |
commit | 48ec0fc077b7834c49c1af1b1279f943ef58de41 (patch) (unidiff) | |
tree | eb740524cb80edcbc6ac68739bb6fbf48355017b | |
parent | d45caef648bce4a73f6f847bc6e9aad125977deb (diff) | |
download | opie-48ec0fc077b7834c49c1af1b1279f943ef58de41.zip opie-48ec0fc077b7834c49c1af1b1279f943ef58de41.tar.gz opie-48ec0fc077b7834c49c1af1b1279f943ef58de41.tar.bz2 |
- BUGFIX: 0001292 - opie sheet not saving correctly
-rw-r--r-- | noncore/apps/opie-sheet/mainwindow.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/noncore/apps/opie-sheet/mainwindow.cpp b/noncore/apps/opie-sheet/mainwindow.cpp index bb85a24..7394623 100644 --- a/noncore/apps/opie-sheet/mainwindow.cpp +++ b/noncore/apps/opie-sheet/mainwindow.cpp | |||
@@ -1,1028 +1,1028 @@ | |||
1 | /* | 1 | /* |
2 | =. This file is part of the Opie Project | 2 | =. This file is part of the Opie Project |
3 | .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> | 3 | .=l. Copyright (C) 2004 Opie Developer Team <opie-devel@handhelds.org> |
4 | .>+-= | 4 | .>+-= |
5 | _;:, .> :=|. This program is free software; you can | 5 | _;:, .> :=|. This program is free software; you can |
6 | .> <`_, > . <= redistribute it and/or modify it under | 6 | .> <`_, > . <= redistribute it and/or modify it under |
7 | :`=1 )Y*s>-.-- : the terms of the GNU General Public | 7 | :`=1 )Y*s>-.-- : the terms of the GNU General Public |
8 | .="- .-=="i, .._ License as published by the Free Software | 8 | .="- .-=="i, .._ License as published by the Free Software |
9 | - . .-<_> .<> Foundation; either version 2 of the License, | 9 | - . .-<_> .<> Foundation; either version 2 of the License, |
10 | ._= =} : or (at your option) any later version. | 10 | ._= =} : or (at your option) any later version. |
11 | .%`+i> _;_. | 11 | .%`+i> _;_. |
12 | .i_,=:_. -<s. This program is distributed in the hope that | 12 | .i_,=:_. -<s. This program is distributed in the hope that |
13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | 13 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; |
14 | : .. .:, . . . without even the implied warranty of | 14 | : .. .:, . . . without even the implied warranty of |
15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | 15 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A |
16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU | 16 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU |
17 | ..}^=.= = ; Library General Public License for more | 17 | ..}^=.= = ; Library General Public License for more |
18 | ++= -. .` .: details. | 18 | ++= -. .` .: details. |
19 | : = ...= . :.=- | 19 | : = ...= . :.=- |
20 | -. .:....=;==+<; You should have received a copy of the GNU | 20 | -. .:....=;==+<; You should have received a copy of the GNU |
21 | -_. . . )=. = Library General Public License along with | 21 | -_. . . )=. = Library General Public License along with |
22 | -- :-=` this library; see the file COPYING.LIB. | 22 | -- :-=` this library; see the file COPYING.LIB. |
23 | If not, write to the Free Software Foundation, | 23 | If not, write to the Free Software Foundation, |
24 | Inc., 59 Temple Place - Suite 330, | 24 | Inc., 59 Temple Place - Suite 330, |
25 | Boston, MA 02111-1307, USA. | 25 | Boston, MA 02111-1307, USA. |
26 | 26 | ||
27 | */ | 27 | */ |
28 | 28 | ||
29 | /* | 29 | /* |
30 | * Opie Sheet (formerly Sheet/Qt) | 30 | * Opie Sheet (formerly Sheet/Qt) |
31 | * by Serdar Ozler <sozler@sitebest.com> | 31 | * by Serdar Ozler <sozler@sitebest.com> |
32 | */ | 32 | */ |
33 | 33 | ||
34 | #include "mainwindow.h" | 34 | #include "mainwindow.h" |
35 | 35 | ||
36 | /* OPIE */ | 36 | /* OPIE */ |
37 | #include <qpe/resource.h> | 37 | #include <qpe/resource.h> |
38 | #include <qpe/qpeapplication.h> | 38 | #include <qpe/qpeapplication.h> |
39 | 39 | ||
40 | /* QT */ | 40 | /* QT */ |
41 | #include <qmessagebox.h> | 41 | #include <qmessagebox.h> |
42 | #include <qradiobutton.h> | 42 | #include <qradiobutton.h> |
43 | 43 | ||
44 | /* STD */ | 44 | /* STD */ |
45 | #include "cellformat.h" | 45 | #include "cellformat.h" |
46 | #include "numberdlg.h" | 46 | #include "numberdlg.h" |
47 | #include "textdlg.h" | 47 | #include "textdlg.h" |
48 | #include "sortdlg.h" | 48 | #include "sortdlg.h" |
49 | #include "finddlg.h" | 49 | #include "finddlg.h" |
50 | 50 | ||
51 | #define DEFAULT_NUM_ROWS 300 | 51 | #define DEFAULT_NUM_ROWS 300 |
52 | #define DEFAULT_NUM_COLS (26*3) | 52 | #define DEFAULT_NUM_COLS (26*3) |
53 | #define DEFAULT_NUM_SHEETS 3 | 53 | #define DEFAULT_NUM_SHEETS 3 |
54 | 54 | ||
55 | MainWindow::MainWindow(QWidget *parent, const char* n, WFlags fl) | 55 | MainWindow::MainWindow(QWidget *parent, const char* n, WFlags fl) |
56 | :QMainWindow(parent, n, fl) | 56 | :QMainWindow(parent, n, fl) |
57 | { | 57 | { |
58 | // initialize variables | 58 | // initialize variables |
59 | documentModified=FALSE; | 59 | documentModified=FALSE; |
60 | 60 | ||
61 | // construct objects | 61 | // construct objects |
62 | currentDoc=0; | 62 | currentDoc=0; |
63 | fileSelector=new FileSelector("application/opie-sheet", this, QString::null); | 63 | fileSelector=new FileSelector("application/opie-sheet", this, QString::null); |
64 | ExcelSelector=new FileSelector("application/excel",this,QString::null,FALSE); | 64 | ExcelSelector=new FileSelector("application/excel",this,QString::null,FALSE); |
65 | connect(fileSelector, SIGNAL(closeMe()), this, SLOT(selectorHide())); | 65 | connect(fileSelector, SIGNAL(closeMe()), this, SLOT(selectorHide())); |
66 | connect(fileSelector, SIGNAL(newSelected(const DocLnk&)), this, SLOT(selectorFileNew(const DocLnk&))); | 66 | connect(fileSelector, SIGNAL(newSelected(const DocLnk&)), this, SLOT(selectorFileNew(const DocLnk&))); |
67 | connect(fileSelector, SIGNAL(fileSelected(const DocLnk&)), this, SLOT(selectorFileOpen(const DocLnk&))); | 67 | connect(fileSelector, SIGNAL(fileSelected(const DocLnk&)), this, SLOT(selectorFileOpen(const DocLnk&))); |
68 | connect(ExcelSelector,SIGNAL(fileSelected(const DocLnk&)),this,SLOT(slotImportExcel(const DocLnk&))); | 68 | connect(ExcelSelector,SIGNAL(fileSelected(const DocLnk&)),this,SLOT(slotImportExcel(const DocLnk&))); |
69 | connect(ExcelSelector,SIGNAL(closeMe()), this, SLOT(ExcelSelectorHide())); | 69 | connect(ExcelSelector,SIGNAL(closeMe()), this, SLOT(ExcelSelectorHide())); |
70 | 70 | ||
71 | listSheets.setAutoDelete(TRUE); | 71 | listSheets.setAutoDelete(TRUE); |
72 | 72 | ||
73 | initActions(); | 73 | initActions(); |
74 | initMenu(); | 74 | initMenu(); |
75 | initEditToolbar(); | 75 | initEditToolbar(); |
76 | initFunctionsToolbar(); | 76 | initFunctionsToolbar(); |
77 | initStandardToolbar(); | 77 | initStandardToolbar(); |
78 | initSheet(); | 78 | initSheet(); |
79 | 79 | ||
80 | // set window title | 80 | // set window title |
81 | setCaption(tr("Opie Sheet")); | 81 | setCaption(tr("Opie Sheet")); |
82 | 82 | ||
83 | // create sheets | 83 | // create sheets |
84 | selectorFileNew(DocLnk()); | 84 | selectorFileNew(DocLnk()); |
85 | } | 85 | } |
86 | 86 | ||
87 | MainWindow::~MainWindow() | 87 | MainWindow::~MainWindow() |
88 | { | 88 | { |
89 | if (currentDoc) delete currentDoc; | 89 | if (currentDoc) delete currentDoc; |
90 | } | 90 | } |
91 | 91 | ||
92 | void MainWindow::documentSave(DocLnk *lnkDoc) | 92 | void MainWindow::documentSave(DocLnk *lnkDoc) |
93 | { | 93 | { |
94 | FileManager fm; | 94 | FileManager fm; |
95 | QByteArray streamBuffer; | 95 | QByteArray streamBuffer; |
96 | QDataStream stream(streamBuffer, IO_WriteOnly); | 96 | QDataStream stream(streamBuffer, IO_WriteOnly); |
97 | 97 | ||
98 | typeSheet *currentSheet=findSheet(sheet->getName()); | 98 | typeSheet *currentSheet=findSheet(sheet->getName()); |
99 | if (!currentSheet) | 99 | if (!currentSheet) |
100 | { | 100 | { |
101 | QMessageBox::critical(this, tr("Error"), tr("Inconsistency error!")); | 101 | QMessageBox::critical(this, tr("Error"), tr("Inconsistency error!")); |
102 | return; | 102 | return; |
103 | } | 103 | } |
104 | sheet->copySheetData(¤tSheet->data); | 104 | sheet->copySheetData(¤tSheet->data); |
105 | stream.writeRawBytes("SQT100", 6); | 105 | stream.writeRawBytes("SQT100", 6); |
106 | stream << (Q_UINT32)listSheets.count(); | 106 | stream << (Q_UINT32)listSheets.count(); |
107 | for (typeSheet *tempSheet=listSheets.first(); tempSheet; tempSheet=listSheets.next()) | 107 | for (typeSheet *tempSheet=listSheets.first(); tempSheet; tempSheet=listSheets.next()) |
108 | { | 108 | { |
109 | stream << tempSheet->name << (Q_UINT32)tempSheet->data.count(); | 109 | stream << tempSheet->name << (Q_UINT32)tempSheet->data.count(); |
110 | for (typeCellData *tempCell=tempSheet->data.first(); tempCell; tempCell=tempSheet->data.next()) | 110 | for (typeCellData *tempCell=tempSheet->data.first(); tempCell; tempCell=tempSheet->data.next()) |
111 | stream << (Q_UINT32)tempCell->col << (Q_UINT32)tempCell->row << tempCell->borders.right << tempCell->borders.bottom << tempCell->background << (Q_UINT32)tempCell->alignment << tempCell->fontColor << tempCell->font << tempCell->data; | 111 | stream << (Q_UINT32)tempCell->col << (Q_UINT32)tempCell->row << tempCell->borders.right << tempCell->borders.bottom << tempCell->background << (Q_UINT32)tempCell->alignment << tempCell->fontColor << tempCell->font << tempCell->data; |
112 | } | 112 | } |
113 | 113 | ||
114 | lnkDoc->setType("application/opie-sheet"); | 114 | lnkDoc->setType("application/opie-sheet"); |
115 | if (!fm.saveFile(*lnkDoc, streamBuffer)) | 115 | if (!fm.saveFile(*lnkDoc, streamBuffer)) |
116 | { | 116 | { |
117 | QMessageBox::critical(this, tr("Error"), tr("File cannot be saved!")); | 117 | QMessageBox::critical(this, tr("Error"), tr("File cannot be saved!")); |
118 | return; | 118 | return; |
119 | } | 119 | } |
120 | documentModified=FALSE; | 120 | documentModified=FALSE; |
121 | } | 121 | } |
122 | 122 | ||
123 | void MainWindow::documentOpen(const DocLnk &lnkDoc) | 123 | void MainWindow::documentOpen(const DocLnk &lnkDoc) |
124 | { | 124 | { |
125 | FileManager fm; | 125 | FileManager fm; |
126 | QByteArray streamBuffer; | 126 | QByteArray streamBuffer; |
127 | if (!lnkDoc.isValid() || !fm.loadFile(lnkDoc, streamBuffer)) | 127 | if (!lnkDoc.isValid() || !fm.loadFile(lnkDoc, streamBuffer)) |
128 | { | 128 | { |
129 | QMessageBox::critical(this, tr("Error"), tr("File cannot be opened!")); | 129 | QMessageBox::critical(this, tr("Error"), tr("File cannot be opened!")); |
130 | documentModified=FALSE; | 130 | documentModified=FALSE; |
131 | selectorFileNew(DocLnk()); | 131 | selectorFileNew(DocLnk()); |
132 | return; | 132 | return; |
133 | } | 133 | } |
134 | QDataStream stream(streamBuffer, IO_ReadOnly); | 134 | QDataStream stream(streamBuffer, IO_ReadOnly); |
135 | 135 | ||
136 | Q_UINT32 countSheet, countCell, i, j, row, col, alignment; | 136 | Q_UINT32 countSheet, countCell, i, j, row, col, alignment; |
137 | typeSheet *newSheet; | 137 | typeSheet *newSheet; |
138 | typeCellData *newCell; | 138 | typeCellData *newCell; |
139 | 139 | ||
140 | char fileFormat[7]; | 140 | char fileFormat[7]; |
141 | stream.readRawBytes(fileFormat, 6); | 141 | stream.readRawBytes(fileFormat, 6); |
142 | fileFormat[6]=0; | 142 | fileFormat[6]=0; |
143 | if ((QString)fileFormat!="SQT100") | 143 | if ((QString)fileFormat!="SQT100") |
144 | { | 144 | { |
145 | QMessageBox::critical(this, tr("Error"), tr("Invalid file format!")); | 145 | QMessageBox::critical(this, tr("Error"), tr("Invalid file format!")); |
146 | documentModified=FALSE; | 146 | documentModified=FALSE; |
147 | selectorFileNew(DocLnk()); | 147 | selectorFileNew(DocLnk()); |
148 | return; | 148 | return; |
149 | } | 149 | } |
150 | 150 | ||
151 | stream >> countSheet; | 151 | stream >> countSheet; |
152 | for (i=0; i<countSheet; ++i) | 152 | for (i=0; i<countSheet; ++i) |
153 | { | 153 | { |
154 | newSheet=new typeSheet; | 154 | newSheet=new typeSheet; |
155 | newSheet->data.setAutoDelete(TRUE); | 155 | newSheet->data.setAutoDelete(TRUE); |
156 | stream >> newSheet->name >> countCell; | 156 | stream >> newSheet->name >> countCell; |
157 | comboSheets->insertItem(newSheet->name); | 157 | comboSheets->insertItem(newSheet->name); |
158 | 158 | ||
159 | for (j=0; j<countCell; ++j) | 159 | for (j=0; j<countCell; ++j) |
160 | { | 160 | { |
161 | newCell=new typeCellData; | 161 | newCell=new typeCellData; |
162 | stream >> col >> row >> newCell->borders.right >> newCell->borders.bottom >> newCell->background >> alignment >> newCell->fontColor >> newCell->font >> newCell->data; | 162 | stream >> col >> row >> newCell->borders.right >> newCell->borders.bottom >> newCell->background >> alignment >> newCell->fontColor >> newCell->font >> newCell->data; |
163 | newCell->col=col; | 163 | newCell->col=col; |
164 | newCell->row=row; | 164 | newCell->row=row; |
165 | newCell->alignment=(Qt::AlignmentFlags)alignment; | 165 | newCell->alignment=(Qt::AlignmentFlags)alignment; |
166 | newSheet->data.append(newCell); | 166 | newSheet->data.append(newCell); |
167 | } | 167 | } |
168 | listSheets.append(newSheet); | 168 | listSheets.append(newSheet); |
169 | 169 | ||
170 | if (i==0) | 170 | if (i==0) |
171 | { | 171 | { |
172 | sheet->setName(newSheet->name); | 172 | sheet->setName(newSheet->name); |
173 | sheet->setSheetData(&newSheet->data); | 173 | sheet->setSheetData(&newSheet->data); |
174 | } | 174 | } |
175 | } | 175 | } |
176 | } | 176 | } |
177 | 177 | ||
178 | int MainWindow::saveCurrentFile(bool ask) | 178 | int MainWindow::saveCurrentFile(bool ask) |
179 | { | 179 | { |
180 | if (ask) | 180 | if (ask) |
181 | { | 181 | { |
182 | int result=QMessageBox::information(this, tr("Save File"), tr("Do you want to save the current file?"), QMessageBox::Yes, QMessageBox::No, QMessageBox::Cancel); | 182 | int result=QMessageBox::information(this, tr("Save File"), tr("Do you want to save the current file?"), QMessageBox::Yes, QMessageBox::No, QMessageBox::Cancel); |
183 | if (result!=QMessageBox::Yes) return result; | 183 | if (result!=QMessageBox::Yes) return result; |
184 | } | 184 | } |
185 | 185 | ||
186 | if (!currentDoc->isValid()) | 186 | if (!currentDoc->isValid()) |
187 | { | 187 | { |
188 | TextDialog dialogText(this); | 188 | TextDialog dialogText(this); |
189 | if (dialogText.exec(tr("Save File"), tr("&File Name:"), tr("UnnamedFile"))!=QDialog::Accepted || dialogText.getValue().isEmpty()) return QMessageBox::Cancel; | 189 | if (dialogText.exec(tr("Save File"), tr("&File Name:"), tr("UnnamedFile"))!=QDialog::Accepted || dialogText.getValue().isEmpty()) return QMessageBox::Cancel; |
190 | 190 | ||
191 | currentDoc->setName(dialogText.getValue()); | 191 | currentDoc->setName(dialogText.getValue()); |
192 | currentDoc->setFile(QString::null); | 192 | currentDoc->setFile(QString::null); |
193 | currentDoc->setLinkFile(QString::null); | 193 | currentDoc->setLinkFile(QString::null); |
194 | } | 194 | } |
195 | 195 | ||
196 | documentSave(currentDoc); | 196 | documentSave(currentDoc); |
197 | return QMessageBox::Yes; | 197 | return QMessageBox::Yes; |
198 | } | 198 | } |
199 | 199 | ||
200 | void MainWindow::selectorFileNew(const DocLnk &lnkDoc) | 200 | void MainWindow::selectorFileNew(const DocLnk &lnkDoc) |
201 | { | 201 | { |
202 | selectorHide(); | 202 | selectorHide(); |
203 | 203 | ||
204 | if (documentModified && saveCurrentFile()==QMessageBox::Cancel) return; | 204 | if (documentModified && saveCurrentFile()==QMessageBox::Cancel) return; |
205 | if (currentDoc) delete currentDoc; | 205 | if (currentDoc) delete currentDoc; |
206 | currentDoc = new DocLnk(lnkDoc); | 206 | currentDoc = new DocLnk(lnkDoc); |
207 | editData->clear(); | 207 | editData->clear(); |
208 | listSheets.clear(); | 208 | listSheets.clear(); |
209 | comboSheets->clear(); | 209 | comboSheets->clear(); |
210 | 210 | ||
211 | typeSheet *newSheet=createNewSheet(); | 211 | typeSheet *newSheet=createNewSheet(); |
212 | newSheet->data.setAutoDelete(TRUE); | 212 | newSheet->data.setAutoDelete(TRUE); |
213 | sheet->setName(newSheet->name); | 213 | sheet->setName(newSheet->name); |
214 | sheet->setSheetData(&newSheet->data); | 214 | sheet->setSheetData(&newSheet->data); |
215 | for (int i=1; i<DEFAULT_NUM_SHEETS; ++i) | 215 | for (int i=1; i<DEFAULT_NUM_SHEETS; ++i) |
216 | createNewSheet(); | 216 | createNewSheet(); |
217 | documentModified=FALSE; | 217 | documentModified=FALSE; |
218 | } | 218 | } |
219 | 219 | ||
220 | void MainWindow::closeEvent(QCloseEvent *e) | 220 | void MainWindow::closeEvent(QCloseEvent *e) |
221 | { | 221 | { |
222 | if (documentModified && saveCurrentFile()==QMessageBox::Cancel) e->ignore(); | 222 | if (documentModified && saveCurrentFile()==QMessageBox::Cancel) e->ignore(); |
223 | else e->accept(); | 223 | else e->accept(); |
224 | } | 224 | } |
225 | 225 | ||
226 | void MainWindow::selectorFileOpen(const DocLnk &lnkDoc) | 226 | void MainWindow::selectorFileOpen(const DocLnk &lnkDoc) |
227 | { | 227 | { |
228 | selectorHide(); | 228 | selectorHide(); |
229 | 229 | ||
230 | if (documentModified && saveCurrentFile()==QMessageBox::Cancel) return; | 230 | if (documentModified && saveCurrentFile()==QMessageBox::Cancel) return; |
231 | if (currentDoc) delete currentDoc; | 231 | if (currentDoc) delete currentDoc; |
232 | currentDoc = new DocLnk(); | 232 | currentDoc = new DocLnk( lnkDoc ); |
233 | listSheets.clear(); | 233 | listSheets.clear(); |
234 | comboSheets->clear(); | 234 | comboSheets->clear(); |
235 | 235 | ||
236 | documentOpen(lnkDoc); | 236 | documentOpen(lnkDoc); |
237 | documentModified=FALSE; | 237 | documentModified=FALSE; |
238 | } | 238 | } |
239 | 239 | ||
240 | void MainWindow::selectorShow() | 240 | void MainWindow::selectorShow() |
241 | { | 241 | { |
242 | sheet->hide(); | 242 | sheet->hide(); |
243 | setCentralWidget(fileSelector); | 243 | setCentralWidget(fileSelector); |
244 | fileSelector->show(); | 244 | fileSelector->show(); |
245 | fileSelector->reread(); | 245 | fileSelector->reread(); |
246 | } | 246 | } |
247 | 247 | ||
248 | void MainWindow::selectorHide() | 248 | void MainWindow::selectorHide() |
249 | { | 249 | { |
250 | fileSelector->hide(); | 250 | fileSelector->hide(); |
251 | setCentralWidget(sheet); | 251 | setCentralWidget(sheet); |
252 | sheet->show(); | 252 | sheet->show(); |
253 | } | 253 | } |
254 | 254 | ||
255 | void MainWindow::slotFileNew() | 255 | void MainWindow::slotFileNew() |
256 | { | 256 | { |
257 | selectorFileNew(DocLnk()); | 257 | selectorFileNew(DocLnk()); |
258 | } | 258 | } |
259 | 259 | ||
260 | void MainWindow::slotFileOpen() | 260 | void MainWindow::slotFileOpen() |
261 | { | 261 | { |
262 | selectorShow(); | 262 | selectorShow(); |
263 | } | 263 | } |
264 | 264 | ||
265 | void MainWindow::slotImportExcelOpen() | 265 | void MainWindow::slotImportExcelOpen() |
266 | { | 266 | { |
267 | sheet->hide(); | 267 | sheet->hide(); |
268 | setCentralWidget(ExcelSelector); | 268 | setCentralWidget(ExcelSelector); |
269 | ExcelSelector->show(); | 269 | ExcelSelector->show(); |
270 | ExcelSelector->reread(); | 270 | ExcelSelector->reread(); |
271 | } | 271 | } |
272 | 272 | ||
273 | void MainWindow::ExcelSelectorHide() | 273 | void MainWindow::ExcelSelectorHide() |
274 | { | 274 | { |
275 | ExcelSelector->hide(); | 275 | ExcelSelector->hide(); |
276 | setCentralWidget(sheet); | 276 | setCentralWidget(sheet); |
277 | sheet->show(); | 277 | sheet->show(); |
278 | } | 278 | } |
279 | 279 | ||
280 | void MainWindow::slotFileSave() | 280 | void MainWindow::slotFileSave() |
281 | { | 281 | { |
282 | saveCurrentFile(FALSE); | 282 | saveCurrentFile(FALSE); |
283 | } | 283 | } |
284 | 284 | ||
285 | void MainWindow::setDocument(const QString &applnk_filename) | 285 | void MainWindow::setDocument(const QString &applnk_filename) |
286 | { | 286 | { |
287 | selectorFileOpen(DocLnk(applnk_filename)); | 287 | selectorFileOpen(DocLnk(applnk_filename)); |
288 | } | 288 | } |
289 | 289 | ||
290 | void MainWindow::initActions() | 290 | void MainWindow::initActions() |
291 | { | 291 | { |
292 | fileNew=new QAction(tr("New File"), Resource::loadPixmap( "new" ), tr("&New"), 0, this); | 292 | fileNew=new QAction(tr("New File"), Resource::loadPixmap( "new" ), tr("&New"), 0, this); |
293 | connect(fileNew, SIGNAL(activated()), this, SLOT(slotFileNew())); | 293 | connect(fileNew, SIGNAL(activated()), this, SLOT(slotFileNew())); |
294 | fileOpen=new QAction(tr("Open File"), Resource::loadPixmap( "fileopen" ), tr("&Open"), 0, this); | 294 | fileOpen=new QAction(tr("Open File"), Resource::loadPixmap( "fileopen" ), tr("&Open"), 0, this); |
295 | connect(fileOpen, SIGNAL(activated()), this, SLOT(slotFileOpen())); | 295 | connect(fileOpen, SIGNAL(activated()), this, SLOT(slotFileOpen())); |
296 | fileSave=new QAction(tr("Save File"),Resource::loadPixmap( "save" ), tr("&Save"), 0, this); | 296 | fileSave=new QAction(tr("Save File"),Resource::loadPixmap( "save" ), tr("&Save"), 0, this); |
297 | connect(fileSave, SIGNAL(activated()), this, SLOT(slotFileSave())); | 297 | connect(fileSave, SIGNAL(activated()), this, SLOT(slotFileSave())); |
298 | fileSaveAs=new QAction(tr("Save File As"), Resource::loadPixmap( "save" ), tr("Save &As"), 0, this); | 298 | fileSaveAs=new QAction(tr("Save File As"), Resource::loadPixmap( "save" ), tr("Save &As"), 0, this); |
299 | connect(fileSaveAs, SIGNAL(activated()), this, SLOT(slotFileSaveAs())); | 299 | connect(fileSaveAs, SIGNAL(activated()), this, SLOT(slotFileSaveAs())); |
300 | 300 | ||
301 | //fileQuit=new QAction(tr("Quit"), tr("&Quit"), 0, this); | 301 | //fileQuit=new QAction(tr("Quit"), tr("&Quit"), 0, this); |
302 | //connect(fileQuit, SIGNAL(activated()), this, SLOT(close())); | 302 | //connect(fileQuit, SIGNAL(activated()), this, SLOT(close())); |
303 | fileExcelImport=new QAction(tr("Import Excel file"),Resource::loadPixmap( "opie-sheet/excel16" ),tr("Import E&xcel file"),0,this); | 303 | fileExcelImport=new QAction(tr("Import Excel file"),Resource::loadPixmap( "opie-sheet/excel16" ),tr("Import E&xcel file"),0,this); |
304 | connect(fileExcelImport, SIGNAL(activated()), this, SLOT(slotImportExcelOpen())); | 304 | connect(fileExcelImport, SIGNAL(activated()), this, SLOT(slotImportExcelOpen())); |
305 | 305 | ||
306 | // helpGeneral=new QAction(tr("General Help"), QPixmap(help_general_xpm), tr("&General"), 0, this); | 306 | // helpGeneral=new QAction(tr("General Help"), QPixmap(help_general_xpm), tr("&General"), 0, this); |
307 | //connect(helpGeneral, SIGNAL(activated()), this, SLOT(slotHelpGeneral())); | 307 | //connect(helpGeneral, SIGNAL(activated()), this, SLOT(slotHelpGeneral())); |
308 | //helpAbout=new QAction(tr("About Opie Sheet"), tr("&About"), 0, this); | 308 | //helpAbout=new QAction(tr("About Opie Sheet"), tr("&About"), 0, this); |
309 | //connect(helpAbout, SIGNAL(activated()), this, SLOT(slotHelpAbout())); | 309 | //connect(helpAbout, SIGNAL(activated()), this, SLOT(slotHelpAbout())); |
310 | 310 | ||
311 | editAccept=new QAction(tr("Accept"),Resource::loadPixmap( "enter" ) , tr("&Accept"), 0, this); | 311 | editAccept=new QAction(tr("Accept"),Resource::loadPixmap( "enter" ) , tr("&Accept"), 0, this); |
312 | connect(editAccept, SIGNAL(activated()), this, SLOT(slotEditAccept())); | 312 | connect(editAccept, SIGNAL(activated()), this, SLOT(slotEditAccept())); |
313 | editCancel=new QAction(tr("Cancel"), Resource::loadPixmap( "close" ), tr("&Cancel"), 0, this); | 313 | editCancel=new QAction(tr("Cancel"), Resource::loadPixmap( "close" ), tr("&Cancel"), 0, this); |
314 | connect(editCancel, SIGNAL(activated()), this, SLOT(slotEditCancel())); | 314 | connect(editCancel, SIGNAL(activated()), this, SLOT(slotEditCancel())); |
315 | editCellSelect=new QAction(tr("Cell Selector"), Resource::loadPixmap( "opie-sheet/cell-select" ), tr("Cell &Selector"), 0, this); | 315 | editCellSelect=new QAction(tr("Cell Selector"), Resource::loadPixmap( "opie-sheet/cell-select" ), tr("Cell &Selector"), 0, this); |
316 | editCellSelect->setToggleAction(TRUE); | 316 | editCellSelect->setToggleAction(TRUE); |
317 | connect(editCellSelect, SIGNAL(toggled(bool)), this, SLOT(slotCellSelect(bool))); | 317 | connect(editCellSelect, SIGNAL(toggled(bool)), this, SLOT(slotCellSelect(bool))); |
318 | editCut=new QAction(tr("Cut Cells"), tr("Cu&t"), 0, this); | 318 | editCut=new QAction(tr("Cut Cells"), tr("Cu&t"), 0, this); |
319 | editCopy=new QAction(tr("Copy Cells"), tr("&Copy"), 0, this); | 319 | editCopy=new QAction(tr("Copy Cells"), tr("&Copy"), 0, this); |
320 | editPaste=new QAction(tr("Paste Cells"), tr("&Paste"), 0, this); | 320 | editPaste=new QAction(tr("Paste Cells"), tr("&Paste"), 0, this); |
321 | connect(editPaste, SIGNAL(activated()), this, SLOT(slotEditPaste())); | 321 | connect(editPaste, SIGNAL(activated()), this, SLOT(slotEditPaste())); |
322 | editPasteContents=new QAction(tr("Paste Contents"), tr("Paste Cont&ents"), 0, this); | 322 | editPasteContents=new QAction(tr("Paste Contents"), tr("Paste Cont&ents"), 0, this); |
323 | connect(editPasteContents, SIGNAL(activated()), this, SLOT(slotEditPasteContents())); | 323 | connect(editPasteContents, SIGNAL(activated()), this, SLOT(slotEditPasteContents())); |
324 | editClear=new QAction(tr("Clear Cells"), tr("C&lear"), 0, this); | 324 | editClear=new QAction(tr("Clear Cells"), tr("C&lear"), 0, this); |
325 | 325 | ||
326 | insertCells=new QAction(tr("Insert Cells"), tr("C&ells"), 0, this); | 326 | insertCells=new QAction(tr("Insert Cells"), tr("C&ells"), 0, this); |
327 | connect(insertCells, SIGNAL(activated()), this, SLOT(slotInsertCells())); | 327 | connect(insertCells, SIGNAL(activated()), this, SLOT(slotInsertCells())); |
328 | insertRows=new QAction(tr("Insert Rows"), tr("&Rows"), 0, this); | 328 | insertRows=new QAction(tr("Insert Rows"), tr("&Rows"), 0, this); |
329 | connect(insertRows, SIGNAL(activated()), this, SLOT(slotInsertRows())); | 329 | connect(insertRows, SIGNAL(activated()), this, SLOT(slotInsertRows())); |
330 | insertCols=new QAction(tr("Insert Columns"), tr("&Columns"), 0, this); | 330 | insertCols=new QAction(tr("Insert Columns"), tr("&Columns"), 0, this); |
331 | connect(insertCols, SIGNAL(activated()), this, SLOT(slotInsertCols())); | 331 | connect(insertCols, SIGNAL(activated()), this, SLOT(slotInsertCols())); |
332 | insertSheets=new QAction(tr("Add Sheets"), tr("&Sheets"), 0, this); | 332 | insertSheets=new QAction(tr("Add Sheets"), tr("&Sheets"), 0, this); |
333 | connect(insertSheets, SIGNAL(activated()), this, SLOT(slotInsertSheets())); | 333 | connect(insertSheets, SIGNAL(activated()), this, SLOT(slotInsertSheets())); |
334 | 334 | ||
335 | formatCells=new QAction(tr("Cells"), tr("&Cells"), 0, this); | 335 | formatCells=new QAction(tr("Cells"), tr("&Cells"), 0, this); |
336 | connect(formatCells, SIGNAL(activated()), this, SLOT(slotFormatCells())); | 336 | connect(formatCells, SIGNAL(activated()), this, SLOT(slotFormatCells())); |
337 | 337 | ||
338 | rowHeight=new QAction(tr("Row Height"), tr("H&eight"), 0, this); | 338 | rowHeight=new QAction(tr("Row Height"), tr("H&eight"), 0, this); |
339 | connect(rowHeight, SIGNAL(activated()), this, SLOT(slotRowHeight())); | 339 | connect(rowHeight, SIGNAL(activated()), this, SLOT(slotRowHeight())); |
340 | rowAdjust=new QAction(tr("Adjust Row"), tr("&Adjust"), 0, this); | 340 | rowAdjust=new QAction(tr("Adjust Row"), tr("&Adjust"), 0, this); |
341 | connect(rowAdjust, SIGNAL(activated()), this, SLOT(slotRowAdjust())); | 341 | connect(rowAdjust, SIGNAL(activated()), this, SLOT(slotRowAdjust())); |
342 | rowShow=new QAction(tr("Show Row"), tr("&Show"), 0, this); | 342 | rowShow=new QAction(tr("Show Row"), tr("&Show"), 0, this); |
343 | connect(rowShow, SIGNAL(activated()), this, SLOT(slotRowShow())); | 343 | connect(rowShow, SIGNAL(activated()), this, SLOT(slotRowShow())); |
344 | rowHide=new QAction(tr("Hide Row"), tr("&Hide"), 0, this); | 344 | rowHide=new QAction(tr("Hide Row"), tr("&Hide"), 0, this); |
345 | connect(rowHide, SIGNAL(activated()), this, SLOT(slotRowHide())); | 345 | connect(rowHide, SIGNAL(activated()), this, SLOT(slotRowHide())); |
346 | 346 | ||
347 | colWidth=new QAction(tr("Column Width"), tr("&Width"), 0, this); | 347 | colWidth=new QAction(tr("Column Width"), tr("&Width"), 0, this); |
348 | connect(colWidth, SIGNAL(activated()), this, SLOT(slotColumnWidth())); | 348 | connect(colWidth, SIGNAL(activated()), this, SLOT(slotColumnWidth())); |
349 | colAdjust=new QAction(tr("Adjust Column"), tr("&Adjust"), 0, this); | 349 | colAdjust=new QAction(tr("Adjust Column"), tr("&Adjust"), 0, this); |
350 | connect(colAdjust, SIGNAL(activated()), this, SLOT(slotColumnAdjust())); | 350 | connect(colAdjust, SIGNAL(activated()), this, SLOT(slotColumnAdjust())); |
351 | colShow=new QAction(tr("Show Column"), tr("&Show"), 0, this); | 351 | colShow=new QAction(tr("Show Column"), tr("&Show"), 0, this); |
352 | connect(colShow, SIGNAL(activated()), this, SLOT(slotColumnShow())); | 352 | connect(colShow, SIGNAL(activated()), this, SLOT(slotColumnShow())); |
353 | colHide=new QAction(tr("Hide Column"), tr("&Hide"), 0, this); | 353 | colHide=new QAction(tr("Hide Column"), tr("&Hide"), 0, this); |
354 | connect(colHide, SIGNAL(activated()), this, SLOT(slotColumnHide())); | 354 | connect(colHide, SIGNAL(activated()), this, SLOT(slotColumnHide())); |
355 | 355 | ||
356 | sheetRename=new QAction(tr("Rename Sheet"), tr("&Rename"), 0, this); | 356 | sheetRename=new QAction(tr("Rename Sheet"), tr("&Rename"), 0, this); |
357 | connect(sheetRename, SIGNAL(activated()), this, SLOT(slotSheetRename())); | 357 | connect(sheetRename, SIGNAL(activated()), this, SLOT(slotSheetRename())); |
358 | sheetRemove=new QAction(tr("Remove Sheet"), tr("R&emove"), 0, this); | 358 | sheetRemove=new QAction(tr("Remove Sheet"), tr("R&emove"), 0, this); |
359 | connect(sheetRemove, SIGNAL(activated()), this, SLOT(slotSheetRemove())); | 359 | connect(sheetRemove, SIGNAL(activated()), this, SLOT(slotSheetRemove())); |
360 | 360 | ||
361 | dataSort=new QAction(tr("Sort Data"), tr("&Sort"), 0, this); | 361 | dataSort=new QAction(tr("Sort Data"), tr("&Sort"), 0, this); |
362 | connect(dataSort, SIGNAL(activated()), this, SLOT(slotDataSort())); | 362 | connect(dataSort, SIGNAL(activated()), this, SLOT(slotDataSort())); |
363 | dataFindReplace=new QAction(tr("Find && Replace"), tr("&Find && Replace"), 0, this); | 363 | dataFindReplace=new QAction(tr("Find && Replace"), tr("&Find && Replace"), 0, this); |
364 | connect(dataFindReplace, SIGNAL(activated()), this, SLOT(slotDataFindReplace())); | 364 | connect(dataFindReplace, SIGNAL(activated()), this, SLOT(slotDataFindReplace())); |
365 | 365 | ||
366 | funcEqual=new QAction(tr("Equal To"), Resource::loadPixmap( "opie-sheet/func-equal" ), tr("&Equal To"), 0, this); | 366 | funcEqual=new QAction(tr("Equal To"), Resource::loadPixmap( "opie-sheet/func-equal" ), tr("&Equal To"), 0, this); |
367 | funcEqual->setToolTip("="); | 367 | funcEqual->setToolTip("="); |
368 | connect(funcEqual, SIGNAL(activated()), this, SLOT(slotFuncOutput())); | 368 | connect(funcEqual, SIGNAL(activated()), this, SLOT(slotFuncOutput())); |
369 | funcPlus=new QAction(tr("Addition"), Resource::loadPixmap( "opie-sheet/func-plus" ), tr("&Addition"), 0, this); | 369 | funcPlus=new QAction(tr("Addition"), Resource::loadPixmap( "opie-sheet/func-plus" ), tr("&Addition"), 0, this); |
370 | funcPlus->setToolTip("+"); | 370 | funcPlus->setToolTip("+"); |
371 | connect(funcPlus, SIGNAL(activated()), this, SLOT(slotFuncOutput())); | 371 | connect(funcPlus, SIGNAL(activated()), this, SLOT(slotFuncOutput())); |
372 | funcMinus=new QAction(tr("Subtraction"), Resource::loadPixmap( "opie-sheet/func-minus" ), tr("&Subtraction"), 0, this); | 372 | funcMinus=new QAction(tr("Subtraction"), Resource::loadPixmap( "opie-sheet/func-minus" ), tr("&Subtraction"), 0, this); |
373 | funcMinus->setToolTip("-"); | 373 | funcMinus->setToolTip("-"); |
374 | connect(funcMinus, SIGNAL(activated()), this, SLOT(slotFuncOutput())); | 374 | connect(funcMinus, SIGNAL(activated()), this, SLOT(slotFuncOutput())); |
375 | funcCross=new QAction(tr("Multiplication"), Resource::loadPixmap ("opie-sheet/func-cross" ), tr("&Multiplication"), 0, this); | 375 | funcCross=new QAction(tr("Multiplication"), Resource::loadPixmap ("opie-sheet/func-cross" ), tr("&Multiplication"), 0, this); |
376 | funcCross->setToolTip("*"); | 376 | funcCross->setToolTip("*"); |
377 | connect(funcCross, SIGNAL(activated()), this, SLOT(slotFuncOutput())); | 377 | connect(funcCross, SIGNAL(activated()), this, SLOT(slotFuncOutput())); |
378 | funcDivide=new QAction(tr("Division"), Resource::loadPixmap( "opie-sheet/func-divide" ), tr("&Division"), 0, this); | 378 | funcDivide=new QAction(tr("Division"), Resource::loadPixmap( "opie-sheet/func-divide" ), tr("&Division"), 0, this); |
379 | funcDivide->setToolTip("/"); | 379 | funcDivide->setToolTip("/"); |
380 | connect(funcDivide, SIGNAL(activated()), this, SLOT(slotFuncOutput())); | 380 | connect(funcDivide, SIGNAL(activated()), this, SLOT(slotFuncOutput())); |
381 | funcParanOpen=new QAction(tr("Open ParanthesistempCellData->row+row1, tempCellData->col+col1"), Resource::loadPixmap( "opie-sheet/func-paran-open" ), tr("&Open Paranthesis"), 0, this); | 381 | funcParanOpen=new QAction(tr("Open ParanthesistempCellData->row+row1, tempCellData->col+col1"), Resource::loadPixmap( "opie-sheet/func-paran-open" ), tr("&Open Paranthesis"), 0, this); |
382 | funcParanOpen->setToolTip("("); | 382 | funcParanOpen->setToolTip("("); |
383 | connect(funcParanOpen, SIGNAL(activated()), this, SLOT(slotFuncOutput())); | 383 | connect(funcParanOpen, SIGNAL(activated()), this, SLOT(slotFuncOutput())); |
384 | funcParanClose=new QAction(tr("Close Paranthesis"), Resource::loadPixmap( "opie-sheet/func-paran-close" ), tr("&Close Paranthesis"), 0, this); | 384 | funcParanClose=new QAction(tr("Close Paranthesis"), Resource::loadPixmap( "opie-sheet/func-paran-close" ), tr("&Close Paranthesis"), 0, this); |
385 | funcParanClose->setToolTip(")"); | 385 | funcParanClose->setToolTip(")"); |
386 | connect(funcParanClose, SIGNAL(activated()), this, SLOT(slotFuncOutput())); | 386 | connect(funcParanClose, SIGNAL(activated()), this, SLOT(slotFuncOutput())); |
387 | funcComma=new QAction(tr("Comma"), Resource::loadPixmap( "opie-sheet/func-comma" ), tr("&Comma"), 0, this); | 387 | funcComma=new QAction(tr("Comma"), Resource::loadPixmap( "opie-sheet/func-comma" ), tr("&Comma"), 0, this); |
388 | funcComma->setToolTip(","); | 388 | funcComma->setToolTip(","); |
389 | connect(funcComma, SIGNAL(activated()), this, SLOT(slotFuncOutput())); | 389 | connect(funcComma, SIGNAL(activated()), this, SLOT(slotFuncOutput())); |
390 | } | 390 | } |
391 | 391 | ||
392 | void MainWindow::initMenu() | 392 | void MainWindow::initMenu() |
393 | { | 393 | { |
394 | menu=new QMenuBar(this); | 394 | menu=new QMenuBar(this); |
395 | 395 | ||
396 | menuFile=new QPopupMenu; | 396 | menuFile=new QPopupMenu; |
397 | fileNew->addTo(menuFile); | 397 | fileNew->addTo(menuFile); |
398 | fileOpen->addTo(menuFile); | 398 | fileOpen->addTo(menuFile); |
399 | fileSave->addTo(menuFile); | 399 | fileSave->addTo(menuFile); |
400 | fileSaveAs->addTo(menuFile); | 400 | fileSaveAs->addTo(menuFile); |
401 | // menuFile->insertSeparator(); | 401 | // menuFile->insertSeparator(); |
402 | // fileQuit->addTo(menuFile); | 402 | // fileQuit->addTo(menuFile); |
403 | menuFile->insertSeparator(); | 403 | menuFile->insertSeparator(); |
404 | fileExcelImport->addTo(menuFile); | 404 | fileExcelImport->addTo(menuFile); |
405 | menu->insertItem(tr("&File"), menuFile); | 405 | menu->insertItem(tr("&File"), menuFile); |
406 | 406 | ||
407 | menuEdit=new QPopupMenu; | 407 | menuEdit=new QPopupMenu; |
408 | editAccept->addTo(menuEdit); | 408 | editAccept->addTo(menuEdit); |
409 | editCancel->addTo(menuEdit); | 409 | editCancel->addTo(menuEdit); |
410 | editCellSelect->addTo(menuEdit); | 410 | editCellSelect->addTo(menuEdit); |
411 | menuEdit->insertSeparator(); | 411 | menuEdit->insertSeparator(); |
412 | editCut->addTo(menuEdit); | 412 | editCut->addTo(menuEdit); |
413 | editCopy->addTo(menuEdit); | 413 | editCopy->addTo(menuEdit); |
414 | editPaste->addTo(menuEdit); | 414 | editPaste->addTo(menuEdit); |
415 | editPasteContents->addTo(menuEdit); | 415 | editPasteContents->addTo(menuEdit); |
416 | editClear->addTo(menuEdit); | 416 | editClear->addTo(menuEdit); |
417 | menu->insertItem(tr("&Edit"), menuEdit); | 417 | menu->insertItem(tr("&Edit"), menuEdit); |
418 | 418 | ||
419 | menuInsert=new QPopupMenu; | 419 | menuInsert=new QPopupMenu; |
420 | menu->insertItem(tr("&Insert"), menuInsert); | 420 | menu->insertItem(tr("&Insert"), menuInsert); |
421 | 421 | ||
422 | menuFormat=new QPopupMenu; | 422 | menuFormat=new QPopupMenu; |
423 | formatCells->addTo(menuFormat); | 423 | formatCells->addTo(menuFormat); |
424 | menu->insertItem(tr("&Format"), menuFormat); | 424 | menu->insertItem(tr("&Format"), menuFormat); |
425 | 425 | ||
426 | menuData=new QPopupMenu; | 426 | menuData=new QPopupMenu; |
427 | dataSort->addTo(menuData); | 427 | dataSort->addTo(menuData); |
428 | dataFindReplace->addTo(menuData); | 428 | dataFindReplace->addTo(menuData); |
429 | menu->insertItem(tr("&Data"), menuData); | 429 | menu->insertItem(tr("&Data"), menuData); |
430 | 430 | ||
431 | // menuHelp=new QPopupMenu; | 431 | // menuHelp=new QPopupMenu; |
432 | // helpGeneral->addTo(menuHelp); | 432 | // helpGeneral->addTo(menuHelp); |
433 | // helpAbout->addTo(menuHelp); | 433 | // helpAbout->addTo(menuHelp); |
434 | // menu->insertItem(tr("&Help"), menuHelp); | 434 | // menu->insertItem(tr("&Help"), menuHelp); |
435 | 435 | ||
436 | submenuRow=new QPopupMenu; | 436 | submenuRow=new QPopupMenu; |
437 | rowHeight->addTo(submenuRow); | 437 | rowHeight->addTo(submenuRow); |
438 | rowAdjust->addTo(submenuRow); | 438 | rowAdjust->addTo(submenuRow); |
439 | rowShow->addTo(submenuRow); | 439 | rowShow->addTo(submenuRow); |
440 | rowHide->addTo(submenuRow); | 440 | rowHide->addTo(submenuRow); |
441 | menuFormat->insertItem(tr("&Row"), submenuRow); | 441 | menuFormat->insertItem(tr("&Row"), submenuRow); |
442 | 442 | ||
443 | submenuCol=new QPopupMenu; | 443 | submenuCol=new QPopupMenu; |
444 | colWidth->addTo(submenuCol); | 444 | colWidth->addTo(submenuCol); |
445 | colAdjust->addTo(submenuCol); | 445 | colAdjust->addTo(submenuCol); |
446 | colShow->addTo(submenuCol); | 446 | colShow->addTo(submenuCol); |
447 | colHide->addTo(submenuCol); | 447 | colHide->addTo(submenuCol); |
448 | menuFormat->insertItem(tr("Colum&n"), submenuCol); | 448 | menuFormat->insertItem(tr("Colum&n"), submenuCol); |
449 | 449 | ||
450 | submenuSheet=new QPopupMenu; | 450 | submenuSheet=new QPopupMenu; |
451 | sheetRename->addTo(submenuSheet); | 451 | sheetRename->addTo(submenuSheet); |
452 | sheetRemove->addTo(submenuSheet); | 452 | sheetRemove->addTo(submenuSheet); |
453 | menuFormat->insertItem(tr("&Sheet"), submenuSheet); | 453 | menuFormat->insertItem(tr("&Sheet"), submenuSheet); |
454 | 454 | ||
455 | submenuFunc=new QPopupMenu; | 455 | submenuFunc=new QPopupMenu; |
456 | menuInsert->insertItem(tr("&Function"), submenuFunc); | 456 | menuInsert->insertItem(tr("&Function"), submenuFunc); |
457 | 457 | ||
458 | submenuFuncStd=new QPopupMenu; | 458 | submenuFuncStd=new QPopupMenu; |
459 | funcPlus->addTo(submenuFuncStd); | 459 | funcPlus->addTo(submenuFuncStd); |
460 | funcMinus->addTo(submenuFuncStd); | 460 | funcMinus->addTo(submenuFuncStd); |
461 | funcCross->addTo(submenuFuncStd); | 461 | funcCross->addTo(submenuFuncStd); |
462 | funcDivide->addTo(submenuFuncStd); | 462 | funcDivide->addTo(submenuFuncStd); |
463 | submenuFunc->insertItem(tr("&Simple"), submenuFuncStd); | 463 | submenuFunc->insertItem(tr("&Simple"), submenuFuncStd); |
464 | 464 | ||
465 | 465 | ||
466 | 466 | ||
467 | submenuFuncStandard=new QPopupMenu; | 467 | submenuFuncStandard=new QPopupMenu; |
468 | addFlyAction(tr("ABS(x)"), tr("ABS(x)"), "ABS(", submenuFuncStandard); | 468 | addFlyAction(tr("ABS(x)"), tr("ABS(x)"), "ABS(", submenuFuncStandard); |
469 | addFlyAction(tr("CEILING(x,acc)"), tr("CEILING(x,acc)"), "CEILING(", submenuFuncStandard); | 469 | addFlyAction(tr("CEILING(x,acc)"), tr("CEILING(x,acc)"), "CEILING(", submenuFuncStandard); |
470 | addFlyAction(tr("FACT(x)"), tr("FACT(x)"), "FACT(", submenuFuncStandard); | 470 | addFlyAction(tr("FACT(x)"), tr("FACT(x)"), "FACT(", submenuFuncStandard); |
471 | addFlyAction(tr("FLOOR(x,acc)"), tr("FLOOR(x,acc)"), "FLOOR(", submenuFuncStandard); | 471 | addFlyAction(tr("FLOOR(x,acc)"), tr("FLOOR(x,acc)"), "FLOOR(", submenuFuncStandard); |
472 | addFlyAction(tr("INT(x)"), tr("INT(x)"), "INT(", submenuFuncStandard); | 472 | addFlyAction(tr("INT(x)"), tr("INT(x)"), "INT(", submenuFuncStandard); |
473 | addFlyAction(tr("MOD(x,y)"), tr("MOD(x,y)"), "MOD(", submenuFuncStandard); | 473 | addFlyAction(tr("MOD(x,y)"), tr("MOD(x,y)"), "MOD(", submenuFuncStandard); |
474 | addFlyAction(tr("ROUND(x,digits)"), tr("ROUND(x,digits)"), "ROUND(", submenuFuncStandard); | 474 | addFlyAction(tr("ROUND(x,digits)"), tr("ROUND(x,digits)"), "ROUND(", submenuFuncStandard); |
475 | addFlyAction(tr("SIGN(x)"), tr("SIGN(x)"), "SIGN(", submenuFuncStandard); | 475 | addFlyAction(tr("SIGN(x)"), tr("SIGN(x)"), "SIGN(", submenuFuncStandard); |
476 | submenuFuncStandard->insertSeparator(); | 476 | submenuFuncStandard->insertSeparator(); |
477 | addFlyAction(tr("EXP(x)"), tr("EXP(x)"), "EXP(", submenuFuncStandard); | 477 | addFlyAction(tr("EXP(x)"), tr("EXP(x)"), "EXP(", submenuFuncStandard); |
478 | addFlyAction(tr("LN(x)"), tr("LN(x)"), "LN(", submenuFuncStandard); | 478 | addFlyAction(tr("LN(x)"), tr("LN(x)"), "LN(", submenuFuncStandard); |
479 | addFlyAction(tr("LOG(x,b)"), tr("LOG(x,b)"), "LOG(", submenuFuncStandard); | 479 | addFlyAction(tr("LOG(x,b)"), tr("LOG(x,b)"), "LOG(", submenuFuncStandard); |
480 | addFlyAction(tr("LOG10(x)"), tr("LOG10(x)"), "LOG10(", submenuFuncStandard); | 480 | addFlyAction(tr("LOG10(x)"), tr("LOG10(x)"), "LOG10(", submenuFuncStandard); |
481 | addFlyAction(tr("POWER(x,y)"), tr("POWER(x,y)"), "POWER(", submenuFuncStandard); | 481 | addFlyAction(tr("POWER(x,y)"), tr("POWER(x,y)"), "POWER(", submenuFuncStandard); |
482 | addFlyAction(tr("SQRT(x)"), tr("SQRT(x)"), "SQRT(", submenuFuncStandard); | 482 | addFlyAction(tr("SQRT(x)"), tr("SQRT(x)"), "SQRT(", submenuFuncStandard); |
483 | submenuFuncStandard->insertSeparator(); | 483 | submenuFuncStandard->insertSeparator(); |
484 | addFlyAction(tr("DEGREES(x)"), tr("DEGREES(x)"), "DEGREES(", submenuFuncStandard); | 484 | addFlyAction(tr("DEGREES(x)"), tr("DEGREES(x)"), "DEGREES(", submenuFuncStandard); |
485 | addFlyAction(tr("RADIANS(x)"), tr("RADIANS(x)"), "RADIANS(", submenuFuncStandard); | 485 | addFlyAction(tr("RADIANS(x)"), tr("RADIANS(x)"), "RADIANS(", submenuFuncStandard); |
486 | addFlyAction(tr("PI()"), tr("PI()"), "PI()", submenuFuncStandard); | 486 | addFlyAction(tr("PI()"), tr("PI()"), "PI()", submenuFuncStandard); |
487 | addFlyAction(tr("RAND()"), tr("RAND()"), "RAND(", submenuFuncStandard); | 487 | addFlyAction(tr("RAND()"), tr("RAND()"), "RAND(", submenuFuncStandard); |
488 | addFlyAction(tr("RANDBETWEEN(a,b)"), tr("RANDBETWEEN(a,b)"), "RANDBETWEEN(", submenuFuncStandard); | 488 | addFlyAction(tr("RANDBETWEEN(a,b)"), tr("RANDBETWEEN(a,b)"), "RANDBETWEEN(", submenuFuncStandard); |
489 | submenuFunc->insertItem(tr("S&tandard"), submenuFuncStandard); | 489 | submenuFunc->insertItem(tr("S&tandard"), submenuFuncStandard); |
490 | 490 | ||
491 | submenuFuncLogic=new QPopupMenu; | 491 | submenuFuncLogic=new QPopupMenu; |
492 | addFlyAction(tr("AND(x1,x2)"), tr("AND(x1,x2)"), "AND(", submenuFuncLogic); | 492 | addFlyAction(tr("AND(x1,x2)"), tr("AND(x1,x2)"), "AND(", submenuFuncLogic); |
493 | addFlyAction(tr("NOT(x)"), tr("NOT(x)"), "NOT(", submenuFuncLogic); | 493 | addFlyAction(tr("NOT(x)"), tr("NOT(x)"), "NOT(", submenuFuncLogic); |
494 | addFlyAction(tr("OR(x1,x2)"), tr("OR(x1,x2)"), "OR(", submenuFuncLogic); | 494 | addFlyAction(tr("OR(x1,x2)"), tr("OR(x1,x2)"), "OR(", submenuFuncLogic); |
495 | submenuFuncLogic->insertSeparator(); | 495 | submenuFuncLogic->insertSeparator(); |
496 | addFlyAction(tr("IF(compare,val1,val2)"), tr("IF(compare,val1,val2)"), "IF(", submenuFuncLogic); | 496 | addFlyAction(tr("IF(compare,val1,val2)"), tr("IF(compare,val1,val2)"), "IF(", submenuFuncLogic); |
497 | addFlyAction(tr("INDEX(range,index)"),tr("INDEX(range,index)"), "INDEX(", submenuFuncLogic); | 497 | addFlyAction(tr("INDEX(range,index)"),tr("INDEX(range,index)"), "INDEX(", submenuFuncLogic); |
498 | addFlyAction(tr("ISBLANK(x)"), tr("ISBLANK(x)"), "ISBLANK(", submenuFuncLogic); | 498 | addFlyAction(tr("ISBLANK(x)"), tr("ISBLANK(x)"), "ISBLANK(", submenuFuncLogic); |
499 | addFlyAction(tr("ISNUMBER(x)"), tr("ISNUMBER(x)"), "ISNUMBER(", submenuFuncLogic); | 499 | addFlyAction(tr("ISNUMBER(x)"), tr("ISNUMBER(x)"), "ISNUMBER(", submenuFuncLogic); |
500 | addFlyAction(tr("EVEN(x)"), tr("EVEN(x)"), "EVEN(", submenuFuncLogic); | 500 | addFlyAction(tr("EVEN(x)"), tr("EVEN(x)"), "EVEN(", submenuFuncLogic); |
501 | addFlyAction(tr("ISEVEN(x)"), tr("ISEVEN(x)"), "ISEVEN(", submenuFuncLogic); | 501 | addFlyAction(tr("ISEVEN(x)"), tr("ISEVEN(x)"), "ISEVEN(", submenuFuncLogic); |
502 | addFlyAction(tr("ODD(x)"), tr("ODD(x)"), "ODD(", submenuFuncLogic); | 502 | addFlyAction(tr("ODD(x)"), tr("ODD(x)"), "ODD(", submenuFuncLogic); |
503 | addFlyAction(tr("ISODD(x)"), tr("ISODD(x)"), "ISODD(", submenuFuncLogic); | 503 | addFlyAction(tr("ISODD(x)"), tr("ISODD(x)"), "ISODD(", submenuFuncLogic); |
504 | submenuFunc->insertItem(tr("Logical-&Information"), submenuFuncLogic); | 504 | submenuFunc->insertItem(tr("Logical-&Information"), submenuFuncLogic); |
505 | 505 | ||
506 | submenuFuncTrig=new QPopupMenu; | 506 | submenuFuncTrig=new QPopupMenu; |
507 | addFlyAction(tr("SIN(x)"), tr("SIN(x)"), "SIN(", submenuFuncTrig); | 507 | addFlyAction(tr("SIN(x)"), tr("SIN(x)"), "SIN(", submenuFuncTrig); |
508 | addFlyAction(tr("COS(x)"), tr("COS(x)"), "COS(", submenuFuncTrig); | 508 | addFlyAction(tr("COS(x)"), tr("COS(x)"), "COS(", submenuFuncTrig); |
509 | addFlyAction(tr("TAN(x)"), tr("TAN(x)"), "TAN(", submenuFuncTrig); | 509 | addFlyAction(tr("TAN(x)"), tr("TAN(x)"), "TAN(", submenuFuncTrig); |
510 | addFlyAction(tr("ASIN(x)"), tr("ASIN(x)"), "ASIN(", submenuFuncTrig); | 510 | addFlyAction(tr("ASIN(x)"), tr("ASIN(x)"), "ASIN(", submenuFuncTrig); |
511 | addFlyAction(tr("ACOS(x)"), tr("ACOS(x)"), "ACOS(", submenuFuncTrig); | 511 | addFlyAction(tr("ACOS(x)"), tr("ACOS(x)"), "ACOS(", submenuFuncTrig); |
512 | addFlyAction(tr("ATAN(x)"), tr("ATAN(x)"), "ATAN(", submenuFuncTrig); | 512 | addFlyAction(tr("ATAN(x)"), tr("ATAN(x)"), "ATAN(", submenuFuncTrig); |
513 | addFlyAction(tr("ATAN2(x,y)"), tr("ATAN2(x,y)"), "ATAN2(", submenuFuncTrig); | 513 | addFlyAction(tr("ATAN2(x,y)"), tr("ATAN2(x,y)"), "ATAN2(", submenuFuncTrig); |
514 | submenuFuncTrig->insertSeparator(); | 514 | submenuFuncTrig->insertSeparator(); |
515 | addFlyAction(tr("SINH(x)"), tr("SINH(x)"), "SINH(", submenuFuncTrig); | 515 | addFlyAction(tr("SINH(x)"), tr("SINH(x)"), "SINH(", submenuFuncTrig); |
516 | addFlyAction(tr("COSH(x)"), tr("COSH(x)"), "COSH(", submenuFuncTrig); | 516 | addFlyAction(tr("COSH(x)"), tr("COSH(x)"), "COSH(", submenuFuncTrig); |
517 | addFlyAction(tr("TANH(x)"), tr("TANH(x)"), "TANH(", submenuFuncTrig); | 517 | addFlyAction(tr("TANH(x)"), tr("TANH(x)"), "TANH(", submenuFuncTrig); |
518 | addFlyAction(tr("ACOSH(x)"), tr("ACOSH(x)"), "ACOSH(", submenuFuncTrig); | 518 | addFlyAction(tr("ACOSH(x)"), tr("ACOSH(x)"), "ACOSH(", submenuFuncTrig); |
519 | addFlyAction(tr("ASINH(x)"), tr("ASINH(x)"), "ASINH(", submenuFuncTrig); | 519 | addFlyAction(tr("ASINH(x)"), tr("ASINH(x)"), "ASINH(", submenuFuncTrig); |
520 | addFlyAction(tr("ATANH(x)"), tr("ATANH(x)"), "ATANH(", submenuFuncTrig); | 520 | addFlyAction(tr("ATANH(x)"), tr("ATANH(x)"), "ATANH(", submenuFuncTrig); |
521 | submenuFunc->insertItem(tr("&Trigonometric"), submenuFuncTrig); | 521 | submenuFunc->insertItem(tr("&Trigonometric"), submenuFuncTrig); |
522 | 522 | ||
523 | submenuFuncString=new QPopupMenu; | 523 | submenuFuncString=new QPopupMenu; |
524 | addFlyAction(tr("LEN(s)"), tr("LEN(s)"), "LEN(",submenuFuncString); | 524 | addFlyAction(tr("LEN(s)"), tr("LEN(s)"), "LEN(",submenuFuncString); |
525 | addFlyAction(tr("LEFT(s,num)"), tr("LEFT(s,num)"), "LEFT(",submenuFuncString); | 525 | addFlyAction(tr("LEFT(s,num)"), tr("LEFT(s,num)"), "LEFT(",submenuFuncString); |
526 | addFlyAction(tr("RIGHT(s,num)"), tr("RIGHT(s,num)"), "RIGHT(",submenuFuncString); | 526 | addFlyAction(tr("RIGHT(s,num)"), tr("RIGHT(s,num)"), "RIGHT(",submenuFuncString); |
527 | addFlyAction(tr("MID(s,pos,len)"), tr("MID(s,pos,len)"), "MID(",submenuFuncString); | 527 | addFlyAction(tr("MID(s,pos,len)"), tr("MID(s,pos,len)"), "MID(",submenuFuncString); |
528 | submenuFuncString->insertSeparator(); | 528 | submenuFuncString->insertSeparator(); |
529 | addFlyAction(tr("CONCATENATE(s1,s2..)"), tr("CONCATENATE(s1,s2..)"), "CONCATENATE(",submenuFuncString); | 529 | addFlyAction(tr("CONCATENATE(s1,s2..)"), tr("CONCATENATE(s1,s2..)"), "CONCATENATE(",submenuFuncString); |
530 | addFlyAction(tr("EXACT(s1,s2)"), tr("EXACT(s1,s2)"), "EXACT(",submenuFuncString); | 530 | addFlyAction(tr("EXACT(s1,s2)"), tr("EXACT(s1,s2)"), "EXACT(",submenuFuncString); |
531 | addFlyAction(tr("FIND(what,where,pos)"), | 531 | addFlyAction(tr("FIND(what,where,pos)"), |
532 | tr("FIND(what,where,pos)"), "FIND(",submenuFuncString); | 532 | tr("FIND(what,where,pos)"), "FIND(",submenuFuncString); |
533 | addFlyAction(tr("REPLACE(s,pos,len,ns)"), tr("REPLACE(s,pos,len,ns)"), "REPLACE(",submenuFuncString); | 533 | addFlyAction(tr("REPLACE(s,pos,len,ns)"), tr("REPLACE(s,pos,len,ns)"), "REPLACE(",submenuFuncString); |
534 | addFlyAction(tr("REPT(s,n)"), tr("REPT(s,n)"), "REPT(",submenuFuncString); | 534 | addFlyAction(tr("REPT(s,n)"), tr("REPT(s,n)"), "REPT(",submenuFuncString); |
535 | submenuFuncString->insertSeparator(); | 535 | submenuFuncString->insertSeparator(); |
536 | addFlyAction(tr("UPPER(s)"), tr("UPPER(s)"), "UPPER(",submenuFuncString); | 536 | addFlyAction(tr("UPPER(s)"), tr("UPPER(s)"), "UPPER(",submenuFuncString); |
537 | addFlyAction(tr("LOWER(s)"), tr("LOWER(s)"), "LOWER(",submenuFuncString); | 537 | addFlyAction(tr("LOWER(s)"), tr("LOWER(s)"), "LOWER(",submenuFuncString); |
538 | submenuFunc->insertItem(tr("&Strings"), submenuFuncString); | 538 | submenuFunc->insertItem(tr("&Strings"), submenuFuncString); |
539 | 539 | ||
540 | submenuFuncStat=new QPopupMenu; | 540 | submenuFuncStat=new QPopupMenu; |
541 | addFlyAction(tr("AVERAGE(range)"), tr("AVERAGE(range)"), "AVERAGE(",submenuFuncStat); | 541 | addFlyAction(tr("AVERAGE(range)"), tr("AVERAGE(range)"), "AVERAGE(",submenuFuncStat); |
542 | addFlyAction(tr("COUNT(range)"), tr("COUNT(range)"), "COUNT(",submenuFuncStat); | 542 | addFlyAction(tr("COUNT(range)"), tr("COUNT(range)"), "COUNT(",submenuFuncStat); |
543 | addFlyAction(tr("COUNTIF(range,eqls)"), tr("COUNTIF(range,eqls)"), "COUNTIF(",submenuFuncStat); | 543 | addFlyAction(tr("COUNTIF(range,eqls)"), tr("COUNTIF(range,eqls)"), "COUNTIF(",submenuFuncStat); |
544 | addFlyAction(tr("MAX(range)"), tr("MAX(range)"), "MAX(",submenuFuncStat); | 544 | addFlyAction(tr("MAX(range)"), tr("MAX(range)"), "MAX(",submenuFuncStat); |
545 | addFlyAction(tr("MIN(range)"), tr("MIN(range)"), "MIN(",submenuFuncStat); | 545 | addFlyAction(tr("MIN(range)"), tr("MIN(range)"), "MIN(",submenuFuncStat); |
546 | addFlyAction(tr("SUM(range)"), tr("SUM(range)"), "SUM(",submenuFuncStat); | 546 | addFlyAction(tr("SUM(range)"), tr("SUM(range)"), "SUM(",submenuFuncStat); |
547 | addFlyAction(tr("SUMSQ(range)"), tr("SUMSQ(range)"), "SUMSQ(",submenuFuncStat); | 547 | addFlyAction(tr("SUMSQ(range)"), tr("SUMSQ(range)"), "SUMSQ(",submenuFuncStat); |
548 | submenuFuncStat->insertSeparator(); | 548 | submenuFuncStat->insertSeparator(); |
549 | addFlyAction(tr("AVERAGE(range)"), tr("AVERAGE(range)"), "AVERAGE(",submenuFuncStat); | 549 | addFlyAction(tr("AVERAGE(range)"), tr("AVERAGE(range)"), "AVERAGE(",submenuFuncStat); |
550 | addFlyAction(tr("VAR(range)"), tr("VAR(range)"), "VAR(",submenuFuncStat); | 550 | addFlyAction(tr("VAR(range)"), tr("VAR(range)"), "VAR(",submenuFuncStat); |
551 | addFlyAction(tr("VARP(range)"), tr("VARP(range)"), "VARP(",submenuFuncStat); | 551 | addFlyAction(tr("VARP(range)"), tr("VARP(range)"), "VARP(",submenuFuncStat); |
552 | addFlyAction(tr("STDEV(range)"), tr("STDEV(range)"), "STDEV(",submenuFuncStat); | 552 | addFlyAction(tr("STDEV(range)"), tr("STDEV(range)"), "STDEV(",submenuFuncStat); |
553 | addFlyAction(tr("STDEVP(range)"), tr("STDEVP(range)"), "STDEVP(",submenuFuncStat); | 553 | addFlyAction(tr("STDEVP(range)"), tr("STDEVP(range)"), "STDEVP(",submenuFuncStat); |
554 | addFlyAction(tr("SKEW(range)"), tr("SKEW(range)"), "SKEW(",submenuFuncStat); | 554 | addFlyAction(tr("SKEW(range)"), tr("SKEW(range)"), "SKEW(",submenuFuncStat); |
555 | addFlyAction(tr("KURT(range)"), tr("KURT(range)"), "KURT(",submenuFuncStat); | 555 | addFlyAction(tr("KURT(range)"), tr("KURT(range)"), "KURT(",submenuFuncStat); |
556 | submenuFunc->insertItem(tr("Sta&tistical"), submenuFuncStat); | 556 | submenuFunc->insertItem(tr("Sta&tistical"), submenuFuncStat); |
557 | 557 | ||
558 | submenuFuncScientific=new QPopupMenu; | 558 | submenuFuncScientific=new QPopupMenu; |
559 | addFlyAction(tr("BESSELI(x,n)"), tr("BESSELI(x,n)"), "BESSELI(",submenuFuncScientific); | 559 | addFlyAction(tr("BESSELI(x,n)"), tr("BESSELI(x,n)"), "BESSELI(",submenuFuncScientific); |
560 | addFlyAction(tr("BESSELJ(x,n)"), tr("BESSELJ(x,n)"), "BESSELJ(",submenuFuncScientific); | 560 | addFlyAction(tr("BESSELJ(x,n)"), tr("BESSELJ(x,n)"), "BESSELJ(",submenuFuncScientific); |
561 | addFlyAction(tr("BESSELK(x,n)"), tr("BESSELK(x,n)"), "BESSELK(",submenuFuncScientific); | 561 | addFlyAction(tr("BESSELK(x,n)"), tr("BESSELK(x,n)"), "BESSELK(",submenuFuncScientific); |
562 | addFlyAction(tr("BESSELY(x,n)"), tr("BESSELY(x,n)"), "BESSELY(",submenuFuncScientific); | 562 | addFlyAction(tr("BESSELY(x,n)"), tr("BESSELY(x,n)"), "BESSELY(",submenuFuncScientific); |
563 | submenuFuncScientific->insertSeparator(); | 563 | submenuFuncScientific->insertSeparator(); |
564 | addFlyAction(tr("BETAI(x,a,b)"), tr("BETAI(x,a,b)"), "BETAI(",submenuFuncScientific); | 564 | addFlyAction(tr("BETAI(x,a,b)"), tr("BETAI(x,a,b)"), "BETAI(",submenuFuncScientific); |
565 | addFlyAction(tr("ERF(a,b)"), tr("ERF(a,b)"), "ERF(",submenuFuncScientific); | 565 | addFlyAction(tr("ERF(a,b)"), tr("ERF(a,b)"), "ERF(",submenuFuncScientific); |
566 | addFlyAction(tr("ERFC(a,b)"), tr("ERFC(a,b)"), "ERFC(",submenuFuncScientific); | 566 | addFlyAction(tr("ERFC(a,b)"), tr("ERFC(a,b)"), "ERFC(",submenuFuncScientific); |
567 | addFlyAction(tr("GAMMALN(x)"), tr("GAMMALN(x)"), "GAMMALN(",submenuFuncScientific); | 567 | addFlyAction(tr("GAMMALN(x)"), tr("GAMMALN(x)"), "GAMMALN(",submenuFuncScientific); |
568 | addFlyAction(tr("GAMMAP(x,a)"), tr("GAMMAP(x,a)"), "GAMMAP(",submenuFuncScientific); | 568 | addFlyAction(tr("GAMMAP(x,a)"), tr("GAMMAP(x,a)"), "GAMMAP(",submenuFuncScientific); |
569 | addFlyAction(tr("GAMMAQ(x,a)"), tr("GAMMAQ(x,a)"), "GAMMAQ(",submenuFuncScientific); | 569 | addFlyAction(tr("GAMMAQ(x,a)"), tr("GAMMAQ(x,a)"), "GAMMAQ(",submenuFuncScientific); |
570 | submenuFunc->insertItem(tr("Scienti&fic"), submenuFuncScientific); | 570 | submenuFunc->insertItem(tr("Scienti&fic"), submenuFuncScientific); |
571 | 571 | ||
572 | submenuFuncDistr=new QPopupMenu; | 572 | submenuFuncDistr=new QPopupMenu; |
573 | addFlyAction(tr("BETADIST(z,a,b,Q?)"), tr("BETADIST(z,a,b,Q?)"), "BETADIST(",submenuFuncDistr); | 573 | addFlyAction(tr("BETADIST(z,a,b,Q?)"), tr("BETADIST(z,a,b,Q?)"), "BETADIST(",submenuFuncDistr); |
574 | addFlyAction(tr("CHI2DIST(x,n,Q?)"), tr("CHI2DIST(x,n,Q?)"), "CHI2DIST(",submenuFuncDistr); | 574 | addFlyAction(tr("CHI2DIST(x,n,Q?)"), tr("CHI2DIST(x,n,Q?)"), "CHI2DIST(",submenuFuncDistr); |
575 | addFlyAction(tr("CHIDIST(x,n,Q?)"), tr("CHIDIST(x,n,Q?)"), "CHIDIST(",submenuFuncDistr); | 575 | addFlyAction(tr("CHIDIST(x,n,Q?)"), tr("CHIDIST(x,n,Q?)"), "CHIDIST(",submenuFuncDistr); |
576 | addFlyAction(tr("FDIST(z,deg1,deg2,Q?)"), tr("FDIST(z,deg1,deg2,Q?)"), "FDIST(",submenuFuncDistr); | 576 | addFlyAction(tr("FDIST(z,deg1,deg2,Q?)"), tr("FDIST(z,deg1,deg2,Q?)"), "FDIST(",submenuFuncDistr); |
577 | addFlyAction(tr("GAMMADIST(x,a,b,Q?)"), tr("GAMMADIST(x,a,b,Q?)"), "GAMMADIST(",submenuFuncDistr); | 577 | addFlyAction(tr("GAMMADIST(x,a,b,Q?)"), tr("GAMMADIST(x,a,b,Q?)"), "GAMMADIST(",submenuFuncDistr); |
578 | addFlyAction(tr("NORMALDIST(x,m,s,Q?)"), tr("NORMALDIST(x,m,s,Q?)"), "NORMALDIST(",submenuFuncDistr); | 578 | addFlyAction(tr("NORMALDIST(x,m,s,Q?)"), tr("NORMALDIST(x,m,s,Q?)"), "NORMALDIST(",submenuFuncDistr); |
579 | addFlyAction(tr("PHI(x,Q?)"), tr("PHI(x,Q?)"), "PHI(",submenuFuncDistr); | 579 | addFlyAction(tr("PHI(x,Q?)"), tr("PHI(x,Q?)"), "PHI(",submenuFuncDistr); |
580 | addFlyAction(tr("POISSON(x,n,Q?)"), tr("POISSON(x,n,Q?)"), "POISSON(",submenuFuncDistr); | 580 | addFlyAction(tr("POISSON(x,n,Q?)"), tr("POISSON(x,n,Q?)"), "POISSON(",submenuFuncDistr); |
581 | submenuFunc->insertItem(tr("&Distributions"), submenuFuncDistr); | 581 | submenuFunc->insertItem(tr("&Distributions"), submenuFuncDistr); |
582 | 582 | ||
583 | 583 | ||
584 | 584 | ||
585 | menuInsert->insertSeparator(); | 585 | menuInsert->insertSeparator(); |
586 | insertCells->addTo(menuInsert); | 586 | insertCells->addTo(menuInsert); |
587 | insertRows->addTo(menuInsert); | 587 | insertRows->addTo(menuInsert); |
588 | insertCols->addTo(menuInsert); | 588 | insertCols->addTo(menuInsert); |
589 | insertSheets->addTo(menuInsert); | 589 | insertSheets->addTo(menuInsert); |
590 | } | 590 | } |
591 | 591 | ||
592 | void MainWindow::initStandardToolbar() | 592 | void MainWindow::initStandardToolbar() |
593 | { | 593 | { |
594 | toolbarStandard=new QToolBar(this); | 594 | toolbarStandard=new QToolBar(this); |
595 | toolbarStandard->setHorizontalStretchable(TRUE); | 595 | toolbarStandard->setHorizontalStretchable(TRUE); |
596 | moveToolBar(toolbarStandard, Top); | 596 | moveToolBar(toolbarStandard, Top); |
597 | 597 | ||
598 | fileNew->addTo(toolbarStandard); | 598 | fileNew->addTo(toolbarStandard); |
599 | fileOpen->addTo(toolbarStandard); | 599 | fileOpen->addTo(toolbarStandard); |
600 | fileSave->addTo(toolbarStandard); | 600 | fileSave->addTo(toolbarStandard); |
601 | 601 | ||
602 | comboSheets=new QComboBox(toolbarStandard); | 602 | comboSheets=new QComboBox(toolbarStandard); |
603 | toolbarStandard->setStretchableWidget(comboSheets); | 603 | toolbarStandard->setStretchableWidget(comboSheets); |
604 | connect(comboSheets, SIGNAL(activated(const QString&)), this, SLOT(slotSheetChanged(const QString&))); | 604 | connect(comboSheets, SIGNAL(activated(const QString&)), this, SLOT(slotSheetChanged(const QString&))); |
605 | } | 605 | } |
606 | 606 | ||
607 | void MainWindow::initFunctionsToolbar() | 607 | void MainWindow::initFunctionsToolbar() |
608 | { | 608 | { |
609 | toolbarFunctions=new QToolBar(this); | 609 | toolbarFunctions=new QToolBar(this); |
610 | toolbarFunctions->setHorizontalStretchable(TRUE); | 610 | toolbarFunctions->setHorizontalStretchable(TRUE); |
611 | moveToolBar(toolbarFunctions, Bottom); | 611 | moveToolBar(toolbarFunctions, Bottom); |
612 | 612 | ||
613 | funcEqual->addTo(toolbarFunctions); | 613 | funcEqual->addTo(toolbarFunctions); |
614 | funcPlus->addTo(toolbarFunctions); | 614 | funcPlus->addTo(toolbarFunctions); |
615 | funcMinus->addTo(toolbarFunctions); | 615 | funcMinus->addTo(toolbarFunctions); |
616 | funcCross->addTo(toolbarFunctions); | 616 | funcCross->addTo(toolbarFunctions); |
617 | funcDivide->addTo(toolbarFunctions); | 617 | funcDivide->addTo(toolbarFunctions); |
618 | funcParanOpen->addTo(toolbarFunctions); | 618 | funcParanOpen->addTo(toolbarFunctions); |
619 | funcParanClose->addTo(toolbarFunctions); | 619 | funcParanClose->addTo(toolbarFunctions); |
620 | funcComma->addTo(toolbarFunctions); | 620 | funcComma->addTo(toolbarFunctions); |
621 | 621 | ||
622 | toolFunction=new QToolButton(toolbarFunctions); | 622 | toolFunction=new QToolButton(toolbarFunctions); |
623 | toolFunction->setPixmap(Resource::loadPixmap( "opie-sheet/func-func" )); | 623 | toolFunction->setPixmap(Resource::loadPixmap( "opie-sheet/func-func" )); |
624 | toolFunction->setTextLabel(tr("Functions")); | 624 | toolFunction->setTextLabel(tr("Functions")); |
625 | toolFunction->setPopup(submenuFunc); | 625 | toolFunction->setPopup(submenuFunc); |
626 | toolFunction->setPopupDelay(0); | 626 | toolFunction->setPopupDelay(0); |
627 | } | 627 | } |
628 | 628 | ||
629 | void MainWindow::initEditToolbar() | 629 | void MainWindow::initEditToolbar() |
630 | { | 630 | { |
631 | toolbarEdit=new QToolBar(this); | 631 | toolbarEdit=new QToolBar(this); |
632 | toolbarEdit->setHorizontalStretchable(TRUE); | 632 | toolbarEdit->setHorizontalStretchable(TRUE); |
633 | moveToolBar(toolbarEdit, Bottom); | 633 | moveToolBar(toolbarEdit, Bottom); |
634 | 634 | ||
635 | editAccept->addTo(toolbarEdit); | 635 | editAccept->addTo(toolbarEdit); |
636 | editCancel->addTo(toolbarEdit); | 636 | editCancel->addTo(toolbarEdit); |
637 | 637 | ||
638 | editData=new QLineEdit(toolbarEdit); | 638 | editData=new QLineEdit(toolbarEdit); |
639 | toolbarEdit->setStretchableWidget(editData); | 639 | toolbarEdit->setStretchableWidget(editData); |
640 | connect(editData, SIGNAL(returnPressed()), this, SLOT(slotEditAccept())); | 640 | connect(editData, SIGNAL(returnPressed()), this, SLOT(slotEditAccept())); |
641 | 641 | ||
642 | editCellSelect->addTo(toolbarEdit); | 642 | editCellSelect->addTo(toolbarEdit); |
643 | } | 643 | } |
644 | 644 | ||
645 | void MainWindow::slotHelpAbout() | 645 | void MainWindow::slotHelpAbout() |
646 | { | 646 | { |
647 | QDialog dialogAbout(this, 0, TRUE); | 647 | QDialog dialogAbout(this, 0, TRUE); |
648 | dialogAbout.resize(width()-40, height()-80); | 648 | dialogAbout.resize(width()-40, height()-80); |
649 | dialogAbout.setCaption(tr("About Opie Sheet")); | 649 | dialogAbout.setCaption(tr("About Opie Sheet")); |
650 | 650 | ||
651 | QLabel label(tr("Opie Sheet\nSpreadsheet Software for Opie\nQWDC Beta Winner (as Sheet/Qt)\n\nDeveloped by: Serdar Ozler\nRelease 1.0.2\nRelease Date: October 08, 2002\n\nThis product is licensed under GPL. It is freely distributable. If you want to get the latest version and also the source code, please visit the web site.\n\nhttp://qtopia.sitebest.com"), &dialogAbout); | 651 | QLabel label(tr("Opie Sheet\nSpreadsheet Software for Opie\nQWDC Beta Winner (as Sheet/Qt)\n\nDeveloped by: Serdar Ozler\nRelease 1.0.2\nRelease Date: October 08, 2002\n\nThis product is licensed under GPL. It is freely distributable. If you want to get the latest version and also the source code, please visit the web site.\n\nhttp://qtopia.sitebest.com"), &dialogAbout); |
652 | label.setGeometry(dialogAbout.rect()); | 652 | label.setGeometry(dialogAbout.rect()); |
653 | label.setAlignment(Qt::AlignCenter | Qt::WordBreak); | 653 | label.setAlignment(Qt::AlignCenter | Qt::WordBreak); |
654 | 654 | ||
655 | dialogAbout.exec(); | 655 | dialogAbout.exec(); |
656 | } | 656 | } |
657 | 657 | ||
658 | void MainWindow::initSheet() | 658 | void MainWindow::initSheet() |
659 | { | 659 | { |
660 | sheet=new Sheet(DEFAULT_NUM_ROWS, DEFAULT_NUM_COLS, this); | 660 | sheet=new Sheet(DEFAULT_NUM_ROWS, DEFAULT_NUM_COLS, this); |
661 | setCentralWidget(sheet); | 661 | setCentralWidget(sheet); |
662 | 662 | ||
663 | connect(sheet, SIGNAL(currentDataChanged(const QString&)), editData, SLOT(setText(const QString&))); | 663 | connect(sheet, SIGNAL(currentDataChanged(const QString&)), editData, SLOT(setText(const QString&))); |
664 | connect(sheet, SIGNAL(cellClicked(const QString&)), this, SLOT(slotCellClicked(const QString&))); | 664 | connect(sheet, SIGNAL(cellClicked(const QString&)), this, SLOT(slotCellClicked(const QString&))); |
665 | connect(sheet, SIGNAL(sheetModified()), this, SLOT(slotDocModified())); | 665 | connect(sheet, SIGNAL(sheetModified()), this, SLOT(slotDocModified())); |
666 | 666 | ||
667 | connect(editCut, SIGNAL(activated()), sheet, SLOT(editCut())); | 667 | connect(editCut, SIGNAL(activated()), sheet, SLOT(editCut())); |
668 | connect(editCopy, SIGNAL(activated()), sheet, SLOT(editCopy())); | 668 | connect(editCopy, SIGNAL(activated()), sheet, SLOT(editCopy())); |
669 | connect(editClear, SIGNAL(activated()), sheet, SLOT(editClear())); | 669 | connect(editClear, SIGNAL(activated()), sheet, SLOT(editClear())); |
670 | } | 670 | } |
671 | 671 | ||
672 | void MainWindow::slotEditAccept() | 672 | void MainWindow::slotEditAccept() |
673 | { | 673 | { |
674 | sheet->setData(editData->text()); | 674 | sheet->setData(editData->text()); |
675 | } | 675 | } |
676 | 676 | ||
677 | void MainWindow::slotEditCancel() | 677 | void MainWindow::slotEditCancel() |
678 | { | 678 | { |
679 | editData->setText(sheet->getData()); | 679 | editData->setText(sheet->getData()); |
680 | } | 680 | } |
681 | 681 | ||
682 | void MainWindow::slotCellSelect(bool lock) | 682 | void MainWindow::slotCellSelect(bool lock) |
683 | { | 683 | { |
684 | sheet->lockClicks(lock); | 684 | sheet->lockClicks(lock); |
685 | } | 685 | } |
686 | 686 | ||
687 | void MainWindow::addToData(const QString &data) | 687 | void MainWindow::addToData(const QString &data) |
688 | { | 688 | { |
689 | editData->setText(editData->text().insert(editData->cursorPosition(), data)); | 689 | editData->setText(editData->text().insert(editData->cursorPosition(), data)); |
690 | } | 690 | } |
691 | 691 | ||
692 | void MainWindow::slotFuncOutput() | 692 | void MainWindow::slotFuncOutput() |
693 | { | 693 | { |
694 | if (sender()->isA("QAction")) | 694 | if (sender()->isA("QAction")) |
695 | addToData(((QAction *)sender())->toolTip()); | 695 | addToData(((QAction *)sender())->toolTip()); |
696 | } | 696 | } |
697 | 697 | ||
698 | void MainWindow::slotInsertRows() | 698 | void MainWindow::slotInsertRows() |
699 | { | 699 | { |
700 | NumberDialog dialogNumber(this); | 700 | NumberDialog dialogNumber(this); |
701 | if (dialogNumber.exec(tr("Insert Rows"), tr("&Number of rows:"))==QDialog::Accepted) | 701 | if (dialogNumber.exec(tr("Insert Rows"), tr("&Number of rows:"))==QDialog::Accepted) |
702 | sheet->insertRows(dialogNumber.getValue()); | 702 | sheet->insertRows(dialogNumber.getValue()); |
703 | } | 703 | } |
704 | 704 | ||
705 | void MainWindow::slotInsertCols() | 705 | void MainWindow::slotInsertCols() |
706 | { | 706 | { |
707 | NumberDialog dialogNumber(this); | 707 | NumberDialog dialogNumber(this); |
708 | if (dialogNumber.exec(tr("Insert Columns"), tr("&Number of columns:"))==QDialog::Accepted) | 708 | if (dialogNumber.exec(tr("Insert Columns"), tr("&Number of columns:"))==QDialog::Accepted) |
709 | sheet->insertColumns(dialogNumber.getValue()); | 709 | sheet->insertColumns(dialogNumber.getValue()); |
710 | } | 710 | } |
711 | 711 | ||
712 | void MainWindow::slotInsertSheets() | 712 | void MainWindow::slotInsertSheets() |
713 | { | 713 | { |
714 | NumberDialog dialogNumber(this); | 714 | NumberDialog dialogNumber(this); |
715 | if (dialogNumber.exec(tr("Add Sheets"), tr("&Number of sheets:"))==QDialog::Accepted) | 715 | if (dialogNumber.exec(tr("Add Sheets"), tr("&Number of sheets:"))==QDialog::Accepted) |
716 | for (int i=dialogNumber.getValue(); i>0; --i) createNewSheet(); | 716 | for (int i=dialogNumber.getValue(); i>0; --i) createNewSheet(); |
717 | } | 717 | } |
718 | 718 | ||
719 | void MainWindow::slotCellClicked(const QString &cell) | 719 | void MainWindow::slotCellClicked(const QString &cell) |
720 | { | 720 | { |
721 | editCellSelect->setOn(FALSE); | 721 | editCellSelect->setOn(FALSE); |
722 | addToData(cell); | 722 | addToData(cell); |
723 | } | 723 | } |
724 | 724 | ||
725 | typeSheet *MainWindow::createNewSheet() | 725 | typeSheet *MainWindow::createNewSheet() |
726 | { | 726 | { |
727 | typeSheet *newSheet=new typeSheet; | 727 | typeSheet *newSheet=new typeSheet; |
728 | int currentNo=1, tempNo=0; | 728 | int currentNo=1, tempNo=0; |
729 | bool ok; | 729 | bool ok; |
730 | 730 | ||
731 | for (typeSheet *tempSheet=listSheets.first(); tempSheet; tempSheet=listSheets.next()) | 731 | for (typeSheet *tempSheet=listSheets.first(); tempSheet; tempSheet=listSheets.next()) |
732 | if (tempSheet->name.startsWith(tr("Sheet")) && (tempNo=tempSheet->name.mid(tr("Sheet").length()).toInt(&ok))>=currentNo && ok) | 732 | if (tempSheet->name.startsWith(tr("Sheet")) && (tempNo=tempSheet->name.mid(tr("Sheet").length()).toInt(&ok))>=currentNo && ok) |
733 | currentNo=tempNo+1; | 733 | currentNo=tempNo+1; |
734 | 734 | ||
735 | newSheet->name=tr("Sheet")+QString::number(currentNo); | 735 | newSheet->name=tr("Sheet")+QString::number(currentNo); |
736 | newSheet->data.setAutoDelete(TRUE); | 736 | newSheet->data.setAutoDelete(TRUE); |
737 | 737 | ||
738 | comboSheets->insertItem(newSheet->name); | 738 | comboSheets->insertItem(newSheet->name); |
739 | listSheets.append(newSheet); | 739 | listSheets.append(newSheet); |
740 | return newSheet; | 740 | return newSheet; |
741 | } | 741 | } |
742 | 742 | ||
743 | typeSheet *MainWindow::findSheet(const QString &name) | 743 | typeSheet *MainWindow::findSheet(const QString &name) |
744 | { | 744 | { |
745 | for (typeSheet *tempSheet=listSheets.first(); tempSheet; tempSheet=listSheets.next()) | 745 | for (typeSheet *tempSheet=listSheets.first(); tempSheet; tempSheet=listSheets.next()) |
746 | if (tempSheet->name==name) | 746 | if (tempSheet->name==name) |
747 | return tempSheet; | 747 | return tempSheet; |
748 | return NULL; | 748 | return NULL; |
749 | } | 749 | } |
750 | 750 | ||
751 | void MainWindow::slotSheetChanged(const QString &name) | 751 | void MainWindow::slotSheetChanged(const QString &name) |
752 | { | 752 | { |
753 | sheet->copySheetData(&findSheet(sheet->getName())->data); | 753 | sheet->copySheetData(&findSheet(sheet->getName())->data); |
754 | sheet->setName(name); | 754 | sheet->setName(name); |
755 | sheet->setSheetData(&findSheet(name)->data); | 755 | sheet->setSheetData(&findSheet(name)->data); |
756 | sheet->ReCalc(); | 756 | sheet->ReCalc(); |
757 | } | 757 | } |
758 | 758 | ||
759 | void MainWindow::addFlyAction(const QString &text, const QString &menuText, const QString &tip, QWidget *w) | 759 | void MainWindow::addFlyAction(const QString &text, const QString &menuText, const QString &tip, QWidget *w) |
760 | { | 760 | { |
761 | QAction *action=new QAction(text, menuText, 0, this); | 761 | QAction *action=new QAction(text, menuText, 0, this); |
762 | action->setToolTip(tip); | 762 | action->setToolTip(tip); |
763 | connect(action, SIGNAL(activated()), this, SLOT(slotFuncOutput())); | 763 | connect(action, SIGNAL(activated()), this, SLOT(slotFuncOutput())); |
764 | action->addTo(w); | 764 | action->addTo(w); |
765 | } | 765 | } |
766 | 766 | ||
767 | void MainWindow::slotFormatCells() | 767 | void MainWindow::slotFormatCells() |
768 | { | 768 | { |
769 | CellFormat dialogCellFormat(this); | 769 | CellFormat dialogCellFormat(this); |
770 | QPEApplication::showDialog( &dialogCellFormat ); | 770 | QPEApplication::showDialog( &dialogCellFormat ); |
771 | dialogCellFormat.exec(sheet); | 771 | dialogCellFormat.exec(sheet); |
772 | } | 772 | } |
773 | 773 | ||
774 | void MainWindow::slotEditPaste() | 774 | void MainWindow::slotEditPaste() |
775 | { | 775 | { |
776 | sheet->editPaste(); | 776 | sheet->editPaste(); |
777 | } | 777 | } |
778 | 778 | ||
779 | void MainWindow::slotEditPasteContents() | 779 | void MainWindow::slotEditPasteContents() |
780 | { | 780 | { |
781 | sheet->editPaste(TRUE); | 781 | sheet->editPaste(TRUE); |
782 | } | 782 | } |
783 | 783 | ||
784 | void MainWindow::slotRowHeight() | 784 | void MainWindow::slotRowHeight() |
785 | { | 785 | { |
786 | int row1, row2, col1, col2; | 786 | int row1, row2, col1, col2; |
787 | sheet->getSelection(&row1, &col1, &row2, &col2); | 787 | sheet->getSelection(&row1, &col1, &row2, &col2); |
788 | 788 | ||
789 | NumberDialog dialogNumber(this); | 789 | NumberDialog dialogNumber(this); |
790 | if (dialogNumber.exec(tr("Row Height"), tr("&Height of each row:"), sheet->rowHeight(row1))==QDialog::Accepted) | 790 | if (dialogNumber.exec(tr("Row Height"), tr("&Height of each row:"), sheet->rowHeight(row1))==QDialog::Accepted) |
791 | { | 791 | { |
792 | int newHeight=dialogNumber.getValue(), row; | 792 | int newHeight=dialogNumber.getValue(), row; |
793 | for (row=row1; row<=row2; ++row) | 793 | for (row=row1; row<=row2; ++row) |
794 | sheet->setRowHeight(row, newHeight); | 794 | sheet->setRowHeight(row, newHeight); |
795 | } | 795 | } |
796 | } | 796 | } |
797 | 797 | ||
798 | void MainWindow::slotRowAdjust() | 798 | void MainWindow::slotRowAdjust() |
799 | { | 799 | { |
800 | int row1, row2, col1, col2; | 800 | int row1, row2, col1, col2; |
801 | sheet->getSelection(&row1, &col1, &row2, &col2); | 801 | sheet->getSelection(&row1, &col1, &row2, &col2); |
802 | 802 | ||
803 | for (int row=row1; row<=row2; ++row) | 803 | for (int row=row1; row<=row2; ++row) |
804 | sheet->adjustRow(row); | 804 | sheet->adjustRow(row); |
805 | } | 805 | } |
806 | 806 | ||
807 | void MainWindow::slotRowShow() | 807 | void MainWindow::slotRowShow() |
808 | { | 808 | { |
809 | int row1, row2, col1, col2; | 809 | int row1, row2, col1, col2; |
810 | sheet->getSelection(&row1, &col1, &row2, &col2); | 810 | sheet->getSelection(&row1, &col1, &row2, &col2); |
811 | 811 | ||
812 | for (int row=row1; row<=row2; ++row) | 812 | for (int row=row1; row<=row2; ++row) |
813 | sheet->showRow(row); | 813 | sheet->showRow(row); |
814 | } | 814 | } |
815 | 815 | ||
816 | void MainWindow::slotRowHide() | 816 | void MainWindow::slotRowHide() |
817 | { | 817 | { |
818 | int row1, row2, col1, col2; | 818 | int row1, row2, col1, col2; |
819 | sheet->getSelection(&row1, &col1, &row2, &col2); | 819 | sheet->getSelection(&row1, &col1, &row2, &col2); |
820 | 820 | ||
821 | for (int row=row1; row<=row2; ++row) | 821 | for (int row=row1; row<=row2; ++row) |
822 | sheet->hideRow(row); | 822 | sheet->hideRow(row); |
823 | } | 823 | } |
824 | 824 | ||
825 | void MainWindow::slotColumnWidth() | 825 | void MainWindow::slotColumnWidth() |
826 | { | 826 | { |
827 | int row1, row2, col1, col2; | 827 | int row1, row2, col1, col2; |
828 | sheet->getSelection(&row1, &col1, &row2, &col2); | 828 | sheet->getSelection(&row1, &col1, &row2, &col2); |
829 | 829 | ||
830 | NumberDialog dialogNumber(this); | 830 | NumberDialog dialogNumber(this); |
831 | if (dialogNumber.exec(tr("Column Width"), tr("&Width of each column:"), sheet->columnWidth(col1))==QDialog::Accepted) | 831 | if (dialogNumber.exec(tr("Column Width"), tr("&Width of each column:"), sheet->columnWidth(col1))==QDialog::Accepted) |
832 | { | 832 | { |
833 | int newWidth=dialogNumber.getValue(), col; | 833 | int newWidth=dialogNumber.getValue(), col; |
834 | for (col=col1; col<=col2; ++col) | 834 | for (col=col1; col<=col2; ++col) |
835 | sheet->setColumnWidth(col, newWidth); | 835 | sheet->setColumnWidth(col, newWidth); |
836 | } | 836 | } |
837 | } | 837 | } |
838 | 838 | ||
839 | void MainWindow::slotColumnAdjust() | 839 | void MainWindow::slotColumnAdjust() |
840 | { | 840 | { |
841 | int row1, row2, col1, col2; | 841 | int row1, row2, col1, col2; |
842 | sheet->getSelection(&row1, &col1, &row2, &col2); | 842 | sheet->getSelection(&row1, &col1, &row2, &col2); |
843 | 843 | ||
844 | for (int col=col1; col<=col2; ++col) | 844 | for (int col=col1; col<=col2; ++col) |
845 | sheet->adjustColumn(col); | 845 | sheet->adjustColumn(col); |
846 | } | 846 | } |
847 | 847 | ||
848 | void MainWindow::slotColumnShow() | 848 | void MainWindow::slotColumnShow() |
849 | { | 849 | { |
850 | int row1, row2, col1, col2; | 850 | int row1, row2, col1, col2; |
851 | sheet->getSelection(&row1, &col1, &row2, &col2); | 851 | sheet->getSelection(&row1, &col1, &row2, &col2); |
852 | 852 | ||
853 | for (int col=col1; col<=col2; ++col) | 853 | for (int col=col1; col<=col2; ++col) |
854 | sheet->showColumn(col); | 854 | sheet->showColumn(col); |
855 | } | 855 | } |
856 | 856 | ||
857 | void MainWindow::slotColumnHide() | 857 | void MainWindow::slotColumnHide() |
858 | { | 858 | { |
859 | int row1, row2, col1, col2; | 859 | int row1, row2, col1, col2; |
860 | sheet->getSelection(&row1, &col1, &row2, &col2); | 860 | sheet->getSelection(&row1, &col1, &row2, &col2); |
861 | 861 | ||
862 | for (int col=col1; col<=col2; ++col) | 862 | for (int col=col1; col<=col2; ++col) |
863 | sheet->hideColumn(col); | 863 | sheet->hideColumn(col); |
864 | } | 864 | } |
865 | 865 | ||
866 | void MainWindow::slotFileSaveAs() | 866 | void MainWindow::slotFileSaveAs() |
867 | { | 867 | { |
868 | TextDialog dialogText(this); | 868 | TextDialog dialogText(this); |
869 | if (dialogText.exec(tr("Save File As"), tr("&File Name:"), currentDoc->name())!=QDialog::Accepted || dialogText.getValue().isEmpty()) return; | 869 | if (dialogText.exec(tr("Save File As"), tr("&File Name:"), currentDoc->name())!=QDialog::Accepted || dialogText.getValue().isEmpty()) return; |
870 | 870 | ||
871 | currentDoc->setName(dialogText.getValue()); | 871 | currentDoc->setName(dialogText.getValue()); |
872 | currentDoc->setFile(QString::null); | 872 | currentDoc->setFile(QString::null); |
873 | currentDoc->setLinkFile(QString::null); | 873 | currentDoc->setLinkFile(QString::null); |
874 | documentSave(currentDoc); | 874 | documentSave(currentDoc); |
875 | } | 875 | } |
876 | 876 | ||
877 | void MainWindow::slotImportExcel(const DocLnk &lnkDoc) | 877 | void MainWindow::slotImportExcel(const DocLnk &lnkDoc) |
878 | { | 878 | { |
879 | ExcelBook file1; | 879 | ExcelBook file1; |
880 | file1.ParseBook((char *)lnkDoc.file().ascii()); | 880 | file1.ParseBook((char *)lnkDoc.file().ascii()); |
881 | int NumOfSheets=file1.Sheets.count(); | 881 | int NumOfSheets=file1.Sheets.count(); |
882 | printf("OpieSheet::NumberOfSheets:%d\r\n",NumOfSheets); | 882 | printf("OpieSheet::NumberOfSheets:%d\r\n",NumOfSheets); |
883 | if (documentModified && saveCurrentFile()==QMessageBox::Cancel) return; | 883 | if (documentModified && saveCurrentFile()==QMessageBox::Cancel) return; |
884 | if (currentDoc) delete currentDoc; | 884 | if (currentDoc) delete currentDoc; |
885 | currentDoc = new DocLnk(); | 885 | currentDoc = new DocLnk(); |
886 | listSheets.clear(); | 886 | listSheets.clear(); |
887 | comboSheets->clear(); | 887 | comboSheets->clear(); |
888 | int w1,r,c; | 888 | int w1,r,c; |
889 | ExcelSheet* sh1; | 889 | ExcelSheet* sh1; |
890 | typeSheet* newSheet; | 890 | typeSheet* newSheet; |
891 | QString* str; | 891 | QString* str; |
892 | typeCellData* newCell; | 892 | typeCellData* newCell; |
893 | for(w1=1;w1<=NumOfSheets;w1++) | 893 | for(w1=1;w1<=NumOfSheets;w1++) |
894 | { | 894 | { |
895 | sh1=file1.Sheets[w1-1]; | 895 | sh1=file1.Sheets[w1-1]; |
896 | printf("OpieSheet:newSheet:%x,r=%d,c=%d\r\n",sh1,sh1->rows,sh1->cols); | 896 | printf("OpieSheet:newSheet:%x,r=%d,c=%d\r\n",sh1,sh1->rows,sh1->cols); |
897 | newSheet=new typeSheet; | 897 | newSheet=new typeSheet; |
898 | newSheet->data.setAutoDelete(TRUE); | 898 | newSheet->data.setAutoDelete(TRUE); |
899 | newSheet->name=sh1->name; | 899 | newSheet->name=sh1->name; |
900 | printf("OpieSheet:Sheetname:%s\r\n",sh1->name.ascii()); | 900 | printf("OpieSheet:Sheetname:%s\r\n",sh1->name.ascii()); |
901 | comboSheets->insertItem(newSheet->name); | 901 | comboSheets->insertItem(newSheet->name); |
902 | for(r=1; r <= sh1->rows; r++) | 902 | for(r=1; r <= sh1->rows; r++) |
903 | { | 903 | { |
904 | for(c=1;c <= sh1->cols; c++) | 904 | for(c=1;c <= sh1->cols; c++) |
905 | { | 905 | { |
906 | str=file1.CellDataString(sh1,r-1,c-1); | 906 | str=file1.CellDataString(sh1,r-1,c-1); |
907 | if(str!=NULL && r<DEFAULT_NUM_ROWS && c<DEFAULT_NUM_COLS) | 907 | if(str!=NULL && r<DEFAULT_NUM_ROWS && c<DEFAULT_NUM_COLS) |
908 | { | 908 | { |
909 | newCell=new typeCellData; | 909 | newCell=new typeCellData; |
910 | newCell->row=r-1; | 910 | newCell->row=r-1; |
911 | newCell->col=c-1; | 911 | newCell->col=c-1; |
912 | if(str!=NULL) newCell->data=QString(*str); else newCell->data=QString(""); | 912 | if(str!=NULL) newCell->data=QString(*str); else newCell->data=QString(""); |
913 | newCell->background=QBrush(Qt::white, Qt::SolidPattern); | 913 | newCell->background=QBrush(Qt::white, Qt::SolidPattern); |
914 | newCell->alignment=(Qt::AlignmentFlags)(Qt::AlignLeft | Qt::AlignTop); | 914 | newCell->alignment=(Qt::AlignmentFlags)(Qt::AlignLeft | Qt::AlignTop); |
915 | newCell->fontColor=Qt::black; | 915 | newCell->fontColor=Qt::black; |
916 | newCell->font=font(); | 916 | newCell->font=font(); |
917 | newCell->borders.right=QPen(Qt::gray, 1, Qt::SolidLine); | 917 | newCell->borders.right=QPen(Qt::gray, 1, Qt::SolidLine); |
918 | newCell->borders.bottom=QPen(Qt::gray, 1, Qt::SolidLine); | 918 | newCell->borders.bottom=QPen(Qt::gray, 1, Qt::SolidLine); |
919 | newSheet->data.append(newCell); | 919 | newSheet->data.append(newCell); |
920 | //there is no format parsing at the moment or style parsing | 920 | //there is no format parsing at the moment or style parsing |
921 | //printf("OpieSheetNumber:row=%d,col=%d,val=%s\r\n",r,c,str->latin1()); | 921 | //printf("OpieSheetNumber:row=%d,col=%d,val=%s\r\n",r,c,str->latin1()); |
922 | }; | 922 | }; |
923 | }; | 923 | }; |
924 | }; | 924 | }; |
925 | listSheets.append(newSheet); | 925 | listSheets.append(newSheet); |
926 | if (w1==1)//if i==0 link sheet1 with sheetview | 926 | if (w1==1)//if i==0 link sheet1 with sheetview |
927 | { | 927 | { |
928 | sheet->setName(newSheet->name); | 928 | sheet->setName(newSheet->name); |
929 | sheet->setSheetData(&newSheet->data); | 929 | sheet->setSheetData(&newSheet->data); |
930 | sheet->ReCalc(); | 930 | sheet->ReCalc(); |
931 | }; | 931 | }; |
932 | 932 | ||
933 | }; | 933 | }; |
934 | file1.CloseFile(); | 934 | file1.CloseFile(); |
935 | printf("Excel FILE read OK\r\n"); | 935 | printf("Excel FILE read OK\r\n"); |
936 | documentModified=TRUE; | 936 | documentModified=TRUE; |
937 | 937 | ||
938 | 938 | ||
939 | } | 939 | } |
940 | 940 | ||
941 | void MainWindow::slotSheetRename() | 941 | void MainWindow::slotSheetRename() |
942 | { | 942 | { |
943 | TextDialog dialogText(this); | 943 | TextDialog dialogText(this); |
944 | if (dialogText.exec(tr("Rename Sheet"), tr("&Sheet Name:"), sheet->getName())!=QDialog::Accepted || dialogText.getValue().isEmpty()) return; | 944 | if (dialogText.exec(tr("Rename Sheet"), tr("&Sheet Name:"), sheet->getName())!=QDialog::Accepted || dialogText.getValue().isEmpty()) return; |
945 | QString newName=dialogText.getValue(); | 945 | QString newName=dialogText.getValue(); |
946 | 946 | ||
947 | typeSheet *tempSheet=findSheet(newName); | 947 | typeSheet *tempSheet=findSheet(newName); |
948 | if (tempSheet) | 948 | if (tempSheet) |
949 | { | 949 | { |
950 | QMessageBox::critical(this, tr("Error"), tr("There is already a sheet named '"+newName+'\'')); | 950 | QMessageBox::critical(this, tr("Error"), tr("There is already a sheet named '"+newName+'\'')); |
951 | return; | 951 | return; |
952 | } | 952 | } |
953 | 953 | ||
954 | tempSheet=findSheet(sheet->getName()); | 954 | tempSheet=findSheet(sheet->getName()); |
955 | for (int i=0; i<comboSheets->count(); ++i) | 955 | for (int i=0; i<comboSheets->count(); ++i) |
956 | if (comboSheets->text(i)==tempSheet->name) | 956 | if (comboSheets->text(i)==tempSheet->name) |
957 | { | 957 | { |
958 | comboSheets->changeItem(newName, i); | 958 | comboSheets->changeItem(newName, i); |
959 | break; | 959 | break; |
960 | } | 960 | } |
961 | tempSheet->name=newName; | 961 | tempSheet->name=newName; |
962 | sheet->setName(newName); | 962 | sheet->setName(newName); |
963 | } | 963 | } |
964 | 964 | ||
965 | void MainWindow::slotSheetRemove() | 965 | void MainWindow::slotSheetRemove() |
966 | { | 966 | { |
967 | if (comboSheets->count()<2) | 967 | if (comboSheets->count()<2) |
968 | { | 968 | { |
969 | QMessageBox::warning(this, tr("Error"), tr("There is only one sheet!")); | 969 | QMessageBox::warning(this, tr("Error"), tr("There is only one sheet!")); |
970 | return; | 970 | return; |
971 | } | 971 | } |
972 | if (QMessageBox::information(this, tr("Remove Sheet"), tr("Are you sure?"), QMessageBox::Yes, QMessageBox::No)==QMessageBox::Yes) | 972 | if (QMessageBox::information(this, tr("Remove Sheet"), tr("Are you sure?"), QMessageBox::Yes, QMessageBox::No)==QMessageBox::Yes) |
973 | { | 973 | { |
974 | typeSheet *tempSheet=findSheet(sheet->getName()); | 974 | typeSheet *tempSheet=findSheet(sheet->getName()); |
975 | for (int i=0; i<comboSheets->count(); ++i) | 975 | for (int i=0; i<comboSheets->count(); ++i) |
976 | if (comboSheets->text(i)==tempSheet->name) | 976 | if (comboSheets->text(i)==tempSheet->name) |
977 | { | 977 | { |
978 | comboSheets->removeItem(i); | 978 | comboSheets->removeItem(i); |
979 | break; | 979 | break; |
980 | } | 980 | } |
981 | comboSheets->setCurrentItem(0); | 981 | comboSheets->setCurrentItem(0); |
982 | slotSheetChanged(comboSheets->currentText()); | 982 | slotSheetChanged(comboSheets->currentText()); |
983 | listSheets.remove(tempSheet); | 983 | listSheets.remove(tempSheet); |
984 | } | 984 | } |
985 | } | 985 | } |
986 | 986 | ||
987 | void MainWindow::slotDataSort() | 987 | void MainWindow::slotDataSort() |
988 | { | 988 | { |
989 | SortDialog dialogSort(this); | 989 | SortDialog dialogSort(this); |
990 | QPEApplication::showDialog( &dialogSort ); | 990 | QPEApplication::showDialog( &dialogSort ); |
991 | dialogSort.exec(sheet); | 991 | dialogSort.exec(sheet); |
992 | } | 992 | } |
993 | 993 | ||
994 | void MainWindow::slotDocModified() | 994 | void MainWindow::slotDocModified() |
995 | { | 995 | { |
996 | documentModified=TRUE; | 996 | documentModified=TRUE; |
997 | } | 997 | } |
998 | 998 | ||
999 | void MainWindow::slotInsertCells() | 999 | void MainWindow::slotInsertCells() |
1000 | { | 1000 | { |
1001 | QDialog dialogInsert(this, 0, TRUE); | 1001 | QDialog dialogInsert(this, 0, TRUE); |
1002 | dialogInsert.resize(180, 130); | 1002 | dialogInsert.resize(180, 130); |
1003 | dialogInsert.setCaption(tr("Insert Cells")); | 1003 | dialogInsert.setCaption(tr("Insert Cells")); |
1004 | 1004 | ||
1005 | QVButtonGroup *group=new QVButtonGroup(tr("&Type"), &dialogInsert); | 1005 | QVButtonGroup *group=new QVButtonGroup(tr("&Type"), &dialogInsert); |
1006 | group->setGeometry(10, 10, 160, 110); | 1006 | group->setGeometry(10, 10, 160, 110); |
1007 | QRadioButton *radio=new QRadioButton(tr("Shift cells &down"), group); | 1007 | QRadioButton *radio=new QRadioButton(tr("Shift cells &down"), group); |
1008 | radio=new QRadioButton(tr("Shift cells &right"), group); | 1008 | radio=new QRadioButton(tr("Shift cells &right"), group); |
1009 | radio=new QRadioButton(tr("Entire ro&w"), group); | 1009 | radio=new QRadioButton(tr("Entire ro&w"), group); |
1010 | radio=new QRadioButton(tr("Entire &column"), group); | 1010 | radio=new QRadioButton(tr("Entire &column"), group); |
1011 | group->setButton(0); | 1011 | group->setButton(0); |
1012 | 1012 | ||
1013 | if (dialogInsert.exec()==QDialog::Accepted) | 1013 | if (dialogInsert.exec()==QDialog::Accepted) |
1014 | switch (group->id(group->selected())) | 1014 | switch (group->id(group->selected())) |
1015 | { | 1015 | { |
1016 | case 0: sheet->insertRows(1, FALSE); break; | 1016 | case 0: sheet->insertRows(1, FALSE); break; |
1017 | case 1: sheet->insertColumns(1, FALSE); break; | 1017 | case 1: sheet->insertColumns(1, FALSE); break; |
1018 | case 2: sheet->insertRows(1, TRUE); break; | 1018 | case 2: sheet->insertRows(1, TRUE); break; |
1019 | case 3: sheet->insertColumns(1, TRUE); break; | 1019 | case 3: sheet->insertColumns(1, TRUE); break; |
1020 | } | 1020 | } |
1021 | } | 1021 | } |
1022 | 1022 | ||
1023 | void MainWindow::slotDataFindReplace() | 1023 | void MainWindow::slotDataFindReplace() |
1024 | { | 1024 | { |
1025 | FindDialog dialogFind(this); | 1025 | FindDialog dialogFind(this); |
1026 | QPEApplication::showDialog( &dialogFind ); | 1026 | QPEApplication::showDialog( &dialogFind ); |
1027 | dialogFind.exec(sheet); | 1027 | dialogFind.exec(sheet); |
1028 | } | 1028 | } |