annotate examples/mainwindows/sdi/mainwindow.d @ 282:256ab6cb8e85

Signals look-up andNew syntax for connect. The old one will not work from now on. This will allow for the signals overload. Although changes are done for both D1 and D2 versions, D1 won't work because of compiler bugs. I am tired of waiting for fixes.
author eldar
date Fri, 16 Oct 2009 02:43:59 +0000
parents 5df570e79cfc
children 7a3c43424dca
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
269
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
1 /****************************************************************************
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
2 **
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
4 ** Contact: Nokia Corporation (qt-info@nokia.com)
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
5 **
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
6 ** This file is part of the examples of the Qt Toolkit.
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
7 **
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
8 ** $QT_BEGIN_LICENSE:LGPL$
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
9 ** Commercial Usage
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
10 ** Licensees holding valid Qt Commercial licenses may use this file in
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
11 ** accordance with the Qt Commercial License Agreement provided with the
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
12 ** Software or, alternatively, in accordance with the terms contained in
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
13 ** a written agreement between you and Nokia.
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
14 **
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
15 ** GNU Lesser General Public License Usage
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
16 ** Alternatively, this file may be used under the terms of the GNU Lesser
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
17 ** General Public License version 2.1 as published by the Free Software
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
18 ** Foundation and appearing in the file LICENSE.LGPL included in the
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
19 ** packaging of this file. Please review the following information to
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
20 ** ensure the GNU Lesser General Public License version 2.1 requirements
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
21 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
22 **
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
23 ** In addition, as a special exception, Nokia gives you certain
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
24 ** additional rights. These rights are described in the Nokia Qt LGPL
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
26 ** package.
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
27 **
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
28 ** GNU General Public License Usage
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
29 ** Alternatively, this file may be used under the terms of the GNU
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
30 ** General Public License version 3.0 as published by the Free Software
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
31 ** Foundation and appearing in the file LICENSE.GPL included in the
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
32 ** packaging of this file. Please review the following information to
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
33 ** ensure the GNU General Public License version 3.0 requirements will be
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
34 ** met: http://www.gnu.org/copyleft/gpl.html.
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
35 **
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
36 ** If you are unsure which license is appropriate for your use, please
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
37 ** contact the sales department at http://www.qtsoftware.com/contact.
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
38 ** $QT_END_LICENSE$
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
39 **
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
40 ****************************************************************************/
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
41
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
42 /****************************************************************************
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
43 **
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
44 ** Translated from Qt/C++ to QtD/D by Jason Addison
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
45 ** Date: 2009 09 13
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
46 ** Contact: jraddison@gmail.com
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
47 **
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
48 ****************************************************************************/
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
49
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
50
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
51 import qt.gui.QMainWindow;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
52 import qt.gui.QAction;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
53 import qt.gui.QMenu;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
54 import qt.gui.QTextEdit;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
55 import qt.gui.QFileDialog;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
56 import qt.gui.QMessageBox;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
57 import qt.core.QSettings;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
58 import qt.core.QTextStream;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
59
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
60 version(Tango)
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
61 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
62 import tango.text.Util;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
63 import Int = tango.text.convert.Integer;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
64 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
65 else
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
66 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
67 import std.string;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
68 import std.conv;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
69 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
70 class MainWindow : public QMainWindow
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
71 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
72 // Q_OBJECT
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
73
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
74 public:
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
75 this()
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
76 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
77 init();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
78 setCurrentFile("");
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
79 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
80
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
81 this(string fileName)
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
82 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
83 init();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
84 loadFile(fileName);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
85 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
86
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
87 protected:
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
88
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
89 void closeEvent(QCloseEvent event)
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
90 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
91 if (maybeSave()) {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
92 writeSettings();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
93 event.accept();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
94 } else {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
95 event.ignore();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
96 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
97 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
98
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
99 private: // slots
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
100
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
101 void newFile()
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
102 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
103 MainWindow other = new MainWindow;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
104 other.move(x() + 40, y() + 40);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
105 other.show();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
106 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
107
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
108 void open()
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
109 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
110 scope fileName = QFileDialog.getOpenFileName(this);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
111 if (fileName) {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
112 MainWindow existing = findMainWindow(fileName);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
113 if (existing) {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
114 existing.show();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
115 existing.raise();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
116 existing.activateWindow();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
117 return;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
118 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
119 if (isUntitled && textEdit.document().isEmpty()
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
120 && !isWindowModified()) {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
121 loadFile(fileName);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
122 } else {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
123 MainWindow other = new MainWindow(fileName);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
124 if (other.isUntitled) {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
125 delete other;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
126 return;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
127 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
128 other.move(x() + 40, y() + 40);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
129 other.show();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
130 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
131 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
132 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
133
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
134 bool save()
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
135 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
136 if (isUntitled) {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
137 return saveAs();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
138 } else {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
139 return saveFile(curFile);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
140 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
141 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
142
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
143 bool saveAs()
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
144 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
145 string fileName = QFileDialog.getSaveFileName(this, tr("Save As"),
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
146 curFile);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
147 if (!fileName)
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
148 return false;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
149
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
150 return saveFile(fileName);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
151 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
152
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
153 void about()
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
154 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
155 QMessageBox.about(this, tr("About SDI"),
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
156 tr("The <b>SDI</b> example demonstrates how to write single " ~
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
157 "document interface applications using Qt."));
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
158 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
159
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
160 void documentWasModified()
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
161 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
162 setWindowModified(true);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
163 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
164
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
165 private:
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
166
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
167 void init()
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
168 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
169 setAttribute(Qt.WA_DeleteOnClose);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
170
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
171 isUntitled = true;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
172
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
173 textEdit = new QTextEdit;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
174 setCentralWidget(textEdit);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
175
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
176 createActions();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
177 createMenus();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
178 createToolBars();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
179 createStatusBar();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
180
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
181 readSettings();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
182
282
256ab6cb8e85 Signals look-up andNew syntax for connect. The old one will not work from now on. This will allow for the signals overload. Although changes are done for both D1 and D2 versions, D1 won't work because of compiler bugs. I am tired of waiting for fixes.
eldar
parents: 278
diff changeset
183 connect!("contentsChanged")(textEdit.document(), &this.documentWasModified);
269
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
184
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
185 setUnifiedTitleAndToolBarOnMac(true);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
186 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
187
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
188 void createActions()
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
189 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
190 newAct = new QAction(new QIcon(":/images/new.png"), tr("&New"), this);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
191 newAct.setShortcuts(QKeySequence.New);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
192 newAct.setStatusTip(tr("Create a new file"));
282
256ab6cb8e85 Signals look-up andNew syntax for connect. The old one will not work from now on. This will allow for the signals overload. Although changes are done for both D1 and D2 versions, D1 won't work because of compiler bugs. I am tired of waiting for fixes.
eldar
parents: 278
diff changeset
193 connect!("triggered")(newAct, &this.newFile);
269
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
194
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
195 openAct = new QAction(new QIcon(":/images/open.png"), tr("&Open..."), this);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
196 openAct.setShortcuts(QKeySequence.Open);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
197 openAct.setStatusTip(tr("Open an existing file"));
282
256ab6cb8e85 Signals look-up andNew syntax for connect. The old one will not work from now on. This will allow for the signals overload. Although changes are done for both D1 and D2 versions, D1 won't work because of compiler bugs. I am tired of waiting for fixes.
eldar
parents: 278
diff changeset
198 connect!("triggered")(openAct, &this.open);
269
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
199
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
200 saveAct = new QAction(new QIcon(":/images/save.png"), tr("&Save"), this);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
201 saveAct.setShortcuts(QKeySequence.Save);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
202 saveAct.setStatusTip(tr("Save the document to disk"));
282
256ab6cb8e85 Signals look-up andNew syntax for connect. The old one will not work from now on. This will allow for the signals overload. Although changes are done for both D1 and D2 versions, D1 won't work because of compiler bugs. I am tired of waiting for fixes.
eldar
parents: 278
diff changeset
203 connect!("triggered")(saveAct, &this.save);
269
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
204
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
205 saveAsAct = new QAction(tr("Save &As..."), this);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
206 saveAsAct.setShortcuts(QKeySequence.SaveAs);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
207 saveAsAct.setStatusTip(tr("Save the document under a new name"));
282
256ab6cb8e85 Signals look-up andNew syntax for connect. The old one will not work from now on. This will allow for the signals overload. Although changes are done for both D1 and D2 versions, D1 won't work because of compiler bugs. I am tired of waiting for fixes.
eldar
parents: 278
diff changeset
208 connect!("triggered")(saveAsAct, &this.saveAs);
269
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
209
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
210 closeAct = new QAction(tr("&Close"), this);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
211 closeAct.setShortcut(tr("Ctrl+W"));
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
212 closeAct.setStatusTip(tr("Close this window"));
282
256ab6cb8e85 Signals look-up andNew syntax for connect. The old one will not work from now on. This will allow for the signals overload. Although changes are done for both D1 and D2 versions, D1 won't work because of compiler bugs. I am tired of waiting for fixes.
eldar
parents: 278
diff changeset
213 connect!("triggered")(closeAct, &this.close);
269
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
214
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
215 exitAct = new QAction(tr("E&xit"), this);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
216 exitAct.setShortcut(tr("Ctrl+Q"));
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
217 exitAct.setStatusTip(tr("Exit the application"));
282
256ab6cb8e85 Signals look-up andNew syntax for connect. The old one will not work from now on. This will allow for the signals overload. Although changes are done for both D1 and D2 versions, D1 won't work because of compiler bugs. I am tired of waiting for fixes.
eldar
parents: 278
diff changeset
218 connect!("triggered")(exitAct, &QApplication.closeAllWindows);
269
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
219
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
220 cutAct = new QAction(new QIcon(":/images/cut.png"), tr("Cu&t"), this);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
221 cutAct.setShortcuts(QKeySequence.Cut);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
222 cutAct.setStatusTip(tr("Cut the current selection's contents to the " ~
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
223 "clipboard"));
282
256ab6cb8e85 Signals look-up andNew syntax for connect. The old one will not work from now on. This will allow for the signals overload. Although changes are done for both D1 and D2 versions, D1 won't work because of compiler bugs. I am tired of waiting for fixes.
eldar
parents: 278
diff changeset
224 connect!("triggered")(cutAct, &textEdit.cut);
269
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
225
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
226 copyAct = new QAction(new QIcon(":/images/copy.png"), tr("&Copy"), this);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
227 copyAct.setShortcuts(QKeySequence.Copy);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
228 copyAct.setStatusTip(tr("Copy the current selection's contents to the " ~
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
229 "clipboard"));
282
256ab6cb8e85 Signals look-up andNew syntax for connect. The old one will not work from now on. This will allow for the signals overload. Although changes are done for both D1 and D2 versions, D1 won't work because of compiler bugs. I am tired of waiting for fixes.
eldar
parents: 278
diff changeset
230 connect!("triggered")(copyAct, &textEdit.copy);
269
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
231
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
232 pasteAct = new QAction(new QIcon(":/images/paste.png"), tr("&Paste"), this);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
233 pasteAct.setShortcuts(QKeySequence.Paste);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
234 pasteAct.setStatusTip(tr("Paste the clipboard's contents into the current " ~
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
235 "selection"));
282
256ab6cb8e85 Signals look-up andNew syntax for connect. The old one will not work from now on. This will allow for the signals overload. Although changes are done for both D1 and D2 versions, D1 won't work because of compiler bugs. I am tired of waiting for fixes.
eldar
parents: 278
diff changeset
236 connect!("triggered")(pasteAct, &textEdit.paste);
269
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
237
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
238 aboutAct = new QAction(tr("&About"), this);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
239 aboutAct.setStatusTip(tr("Show the application's About box"));
282
256ab6cb8e85 Signals look-up andNew syntax for connect. The old one will not work from now on. This will allow for the signals overload. Although changes are done for both D1 and D2 versions, D1 won't work because of compiler bugs. I am tired of waiting for fixes.
eldar
parents: 278
diff changeset
240 connect!("triggered")(aboutAct, &this.about);
269
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
241
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
242 aboutQtAct = new QAction(tr("About &Qt"), this);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
243 aboutQtAct.setStatusTip(tr("Show the Qt library's About box"));
282
256ab6cb8e85 Signals look-up andNew syntax for connect. The old one will not work from now on. This will allow for the signals overload. Although changes are done for both D1 and D2 versions, D1 won't work because of compiler bugs. I am tired of waiting for fixes.
eldar
parents: 278
diff changeset
244 connect!("triggered")(aboutQtAct, &QApplication.aboutQt);
269
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
245
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
246 cutAct.setEnabled(false);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
247 copyAct.setEnabled(false);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
248
282
256ab6cb8e85 Signals look-up andNew syntax for connect. The old one will not work from now on. This will allow for the signals overload. Although changes are done for both D1 and D2 versions, D1 won't work because of compiler bugs. I am tired of waiting for fixes.
eldar
parents: 278
diff changeset
249 connect!("copyAvailable")(textEdit, &cutAct.setEnabled);
256ab6cb8e85 Signals look-up andNew syntax for connect. The old one will not work from now on. This will allow for the signals overload. Although changes are done for both D1 and D2 versions, D1 won't work because of compiler bugs. I am tired of waiting for fixes.
eldar
parents: 278
diff changeset
250 connect!("copyAvailable")(textEdit, &copyAct.setEnabled);
269
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
251 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
252
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
253 void createMenus()
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
254 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
255 fileMenu = menuBar.addMenu(tr("&File"));
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
256 fileMenu.addAction(newAct);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
257 fileMenu.addAction(openAct);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
258 fileMenu.addAction(saveAct);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
259 fileMenu.addAction(saveAsAct);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
260 fileMenu.addSeparator();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
261 fileMenu.addAction(closeAct);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
262 fileMenu.addAction(exitAct);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
263
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
264 editMenu = menuBar.addMenu(tr("&Edit"));
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
265 editMenu.addAction(cutAct);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
266 editMenu.addAction(copyAct);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
267 editMenu.addAction(pasteAct);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
268
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
269 menuBar().addSeparator();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
270
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
271 helpMenu = menuBar.addMenu(tr("&Help"));
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
272 helpMenu.addAction(aboutAct);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
273 helpMenu.addAction(aboutQtAct);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
274 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
275
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
276 void createToolBars()
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
277 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
278 fileToolBar = addToolBar(tr("File"));
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
279 fileToolBar.addAction(newAct);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
280 fileToolBar.addAction(openAct);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
281 fileToolBar.addAction(saveAct);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
282
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
283 editToolBar = addToolBar(tr("Edit"));
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
284 editToolBar.addAction(cutAct);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
285 editToolBar.addAction(copyAct);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
286 editToolBar.addAction(pasteAct);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
287 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
288
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
289 void createStatusBar()
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
290 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
291 statusBar.showMessage(tr("Ready"));
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
292 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
293
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
294 void readSettings()
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
295 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
296 scope QSettings settings = new QSettings("Trolltech", "SDI Example");
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
297 scope QPoint pos = settings.value("pos", new QVariant(QPoint(200, 200))).toPoint();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
298 scope QSize size = settings.value("size", new QVariant(QSize(400, 400))).toSize();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
299 move(pos);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
300 resize(size);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
301 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
302
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
303 void writeSettings()
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
304 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
305 QSettings settings = new QSettings("Trolltech", "SDI Example");
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
306 settings.setValue("pos", new QVariant(pos()));
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
307 settings.setValue("size", new QVariant(size()));
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
308 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
309
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
310 bool maybeSave()
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
311 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
312 if (textEdit.document().isModified()) {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
313 QMessageBox.StandardButton ret;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
314 ret = QMessageBox.warning(this, tr("SDI"),
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
315 tr("The document has been modified.\n" ~
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
316 "Do you want to save your changes?"),
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
317 QMessageBox.Save | QMessageBox.Discard
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
318 | QMessageBox.Cancel);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
319 if (ret == QMessageBox.Save)
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
320 return save();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
321 else if (ret == QMessageBox.Cancel)
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
322 return false;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
323 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
324 return true;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
325 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
326
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
327 void loadFile(string fileName)
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
328 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
329 scope file = new QFile(fileName);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
330 if (!file.open(QFile.ReadOnly | QFile.Text)) {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
331 QMessageBox.warning(this, tr("SDI"),
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
332 tr("Cannot read file " ~
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
333 fileName ~ ":\n" ~
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
334 file.errorString ~ "."));
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
335 return;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
336 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
337
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
338 scope inStream = new QTextStream(file);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
339 QApplication.setOverrideCursor(new QCursor(Qt.WaitCursor));
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
340 textEdit.setPlainText(inStream.readAll());
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
341 QApplication.restoreOverrideCursor();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
342
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
343 setCurrentFile(fileName);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
344 statusBar.showMessage(tr("File loaded"), 2000);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
345 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
346
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
347 bool saveFile(string fileName)
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
348 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
349 scope file = new QFile(fileName);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
350 if (!file.open(QFile.WriteOnly | QFile.Text)) {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
351 QMessageBox.warning(this, tr("SDI"),
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
352 tr("Cannot write file " ~
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
353 fileName ~ ":\n" ~
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
354 file.errorString ~ "."));
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
355 return false;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
356 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
357
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
358 scope outStream = new QTextStream(file);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
359 QApplication.setOverrideCursor(new QCursor(Qt.WaitCursor));
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
360 outStream.writeString(textEdit.toPlainText());
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
361 QApplication.restoreOverrideCursor();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
362
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
363 setCurrentFile(fileName);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
364 statusBar.showMessage("Saved '" ~ fileName ~ "'", 2000);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
365 return true;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
366 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
367
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
368 void setCurrentFile(string fileName)
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
369 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
370 static int sequenceNumber = 1;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
371
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
372 isUntitled = fileName == null;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
373 if (isUntitled) {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
374 version(Tango)
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
375 curFile = tr("document" ~ Int.toString(sequenceNumber++) ~ ".txt");
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
376 else
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
377 curFile = tr("document" ~ to!(string)(sequenceNumber++) ~ ".txt");
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
378 } else {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
379 scope qfi = new QFileInfo(fileName);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
380 curFile = qfi.canonicalFilePath;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
381 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
382
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
383 textEdit.document().setModified(false);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
384 setWindowModified(false);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
385
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
386 setWindowTitle(strippedName(curFile) ~ "[*] - " ~ tr("SDI"));
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
387 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
388
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
389 string strippedName(string fullFileName)
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
390 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
391 scope qfi = new QFileInfo(fullFileName);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
392 return qfi.fileName();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
393 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
394
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
395 MainWindow findMainWindow(string fileName)
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
396 {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
397 scope qfi = new QFileInfo(fileName);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
398 string canonicalFilePath = qfi.canonicalFilePath();
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
399
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
400 foreach (QWidget widget; QApplication.topLevelWidgets) {
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
401 MainWindow mainWin = cast(MainWindow)(widget);
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
402 if (mainWin && mainWin.curFile == canonicalFilePath)
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
403 return mainWin;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
404 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
405 return null;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
406 }
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
407
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
408 QTextEdit textEdit;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
409 string curFile;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
410 bool isUntitled;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
411
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
412 QMenu fileMenu;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
413 QMenu editMenu;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
414 QMenu helpMenu;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
415 QToolBar fileToolBar;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
416 QToolBar editToolBar;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
417
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
418 QAction newAct;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
419 QAction openAct;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
420 QAction saveAct;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
421 QAction saveAsAct;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
422 QAction closeAct;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
423 QAction exitAct;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
424 QAction cutAct;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
425 QAction copyAct;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
426 QAction pasteAct;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
427 QAction aboutAct;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
428 QAction aboutQtAct;
cc9080066035 sdi example added. Thanks to jaddison.
eldar
parents:
diff changeset
429 };