1 /*
2 Copyright (C) 2011 Andres Cabrera
3 mantaraya36@gmail.com
4
5 This file is part of CsoundQt.
6
7 CsoundQt is free software; you can redistribute it
8 and/or modify it under the terms of the GNU Lesser General Public
9 License as published by the Free Software Foundation; either
10 version 2.1 of the License, or (at your option) any later version.
11
12 CsoundQt is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU Lesser General Public License for more details.
16
17 You should have received a copy of the GNU Lesser General Public
18 License along with Csound; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
20 02111-1307 USA
21 */
22
23 #include "scoreeditor.h"
24 #include <QHBoxLayout>
25
ScoreEditor(QWidget * parent)26 ScoreEditor::ScoreEditor(QWidget *parent) :
27 QWidget(parent)
28 {
29 m_textEditor = new TextEditor(this);
30 m_textEditor->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
31 m_sheet = new EventSheet(this);
32 m_textEditor->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
33 setMode(1); // Text view by default
34 setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
35
36 connect(m_sheet, SIGNAL(modified()), this, SLOT(modified()));
37 connect(m_textEditor, SIGNAL(textChanged()), this, SLOT(modified()));
38 QHBoxLayout *layout = new QHBoxLayout;
39 layout->setContentsMargins (5,5,5,5);
40 layout->addWidget(m_textEditor);
41 layout->addWidget(m_sheet);
42
43 setLayout(layout);
44 }
45
setMode(int mode)46 void ScoreEditor::setMode(int mode)
47 {
48 m_mode = mode;
49 switch (m_mode) {
50 case 0:
51 m_textEditor->show();
52 m_sheet->hide();
53 this->setFocusProxy(m_textEditor);
54 break;
55 case 1:
56 m_sheet->show();
57 m_textEditor->hide();
58 this->setFocusProxy(m_sheet);
59 break;
60 default:
61 break;
62 }
63 }
64
setPlainText(QString text)65 void ScoreEditor::setPlainText(QString text)
66 {
67 switch (m_mode) {
68 case 0:
69 m_textEditor->setPlainText(text);
70 break;
71 case 1:
72 m_sheet->clear();
73 m_sheet->setFromText(text);
74 break;
75 default:
76 break;
77 }
78 }
79
setFontPointSize(float size)80 void ScoreEditor::setFontPointSize(float size)
81 {
82 m_textEditor->setFontPointSize(size);
83 }
84
setTabStopWidth(int width)85 void ScoreEditor::setTabStopWidth(int width)
86 {
87 m_textEditor->setTabStopWidth(width);
88 }
89
setLineWrapMode(QTextEdit::LineWrapMode mode)90 void ScoreEditor::setLineWrapMode(QTextEdit::LineWrapMode mode)
91 {
92 m_textEditor->setLineWrapMode(mode);
93 }
94
getPlainText()95 QString ScoreEditor::getPlainText()
96 {
97 QString text;
98 switch (m_mode) {
99 case 0:
100 text = m_textEditor->toPlainText();
101 break;
102 case 1:
103 text = m_sheet->getPlainText();
104 break;
105 default:
106 break;
107 }
108 return text;
109 }
110
getSelection()111 QString ScoreEditor::getSelection()
112 {
113 QString text;
114 switch (m_mode) {
115 case 0:
116 text = m_textEditor->textCursor().selectedText();
117 break;
118 case 1:
119 text = m_sheet->getPlainText();
120 break;
121 default:
122 break;
123 }
124 return text;
125 }
126
clearUndoRedoStacks()127 void ScoreEditor::clearUndoRedoStacks()
128 {
129 // TODO implement
130 }
131
modified()132 void ScoreEditor::modified()
133 {
134 emit textChanged();
135 }
136
cut()137 void ScoreEditor::cut()
138 {
139 switch (m_mode) {
140 case 0:
141 m_textEditor->cut();
142 break;
143 case 1:
144 m_sheet->cut();
145 break;
146 default:
147 break;
148 }
149 }
150
copy()151 void ScoreEditor::copy()
152 {
153 switch (m_mode) {
154 case 0:
155 m_textEditor->copy();
156 break;
157 case 1:
158 m_sheet->copy();
159 break;
160 default:
161 break;
162 }
163 }
164
paste()165 void ScoreEditor::paste()
166 {
167 switch (m_mode) {
168 case 0:
169 m_textEditor->paste();
170 break;
171 case 1:
172 m_sheet->paste();
173 break;
174 default:
175 break;
176 }
177 }
178
undo()179 void ScoreEditor::undo()
180 {
181 switch (m_mode) {
182 case 0:
183 m_textEditor->undo();
184 break;
185 case 1:
186 m_sheet->undo();
187 break;
188 default:
189 break;
190 }
191 }
192
redo()193 void ScoreEditor::redo()
194 {
195 switch (m_mode) {
196 case 0:
197 m_textEditor->redo();
198 break;
199 case 1:
200 m_sheet->redo();
201 break;
202 default:
203 break;
204 }
205 }
206