56
60
//! The argument \c data is only updated if the dialog is accepted.
57
IpeDialogCreateText::IpeDialogCreateText(QWidget* parent, QString caption,
58
QString label, QString &data)
59
: IpeDlgCreateText(parent, "dlgcreatetext", true), iData(data)
61
/*! This dialog will include the combobox for the text style. */
62
IpeDialogCreateText::IpeDialogCreateText(QWidget* /*parent*/, QString caption,
63
QString label, QString &data,
64
const IpeStyleSheet *sheet,
67
: QDialog(), iData(data), iCurrentStyle(&style), iCurrentSize(&size)
70
sheet->AllNames(IpeAttribute::ETextStyle, iStyles);
71
// make sure "default" is entry number 0
72
for (IpeAttributeSeq::iterator it = iStyles.begin();
73
it != iStyles.end(); ++it) {
74
IpeString s = sheet->Repository()->String(*it);
82
for (IpeAttributeSeq::const_iterator it = iStyles.begin();
83
it != iStyles.end(); ++it) {
84
IpeString s = sheet->Repository()->String(*it);
85
iStyle->addItem(QIpe(s));
86
if (*it == *iCurrentStyle)
87
iStyle->setCurrentIndex(iStyle->count() - 1);
89
sheet->AllNames(IpeAttribute::ETextSize, iSizes);
90
for (IpeAttributeSeq::const_iterator it = iSizes.begin();
91
it != iSizes.end(); ++it) {
92
IpeString s = sheet->Repository()->String(*it);
93
iSize->addItem(QIpe(s));
94
if (*it == *iCurrentSize)
95
iSize->setCurrentIndex(iSize->count() - 1);
99
//! The argument \c data is only updated if the dialog is accepted.
100
/*! This dialog will not include the text style selection or the text size. */
101
IpeDialogCreateText::IpeDialogCreateText(QWidget* /*parent*/, QString caption,
102
QString label, QString &data)
103
: QDialog(), iData(data), iCurrentStyle(0), iCurrentSize(0)
105
init(caption, label);
110
void IpeDialogCreateText::init(const QString &caption, const QString &label)
113
setWindowTitle(caption);
114
connect(buttonOk, SIGNAL(clicked()), this, SLOT(UpdateData()));
62
115
iLabel->setText(label);
63
iEditor->setText(iData);
116
QTextDocument *doc = new QTextDocument(iEditor);
117
QTextCharFormat format;
118
// format.setBackground(Qt::yellow);
119
format.setFont(editorFont);
120
QTextCursor cursor(doc);
121
cursor.setBlockCharFormat(format);
122
cursor.insertFragment(QTextDocumentFragment::fromPlainText(iData));
123
iEditor->setDocument(doc);
124
iEditor->setTextCursor(cursor);
64
125
iEditor->setFocus();
66
iEditor->setFont(SPreferences::Static()->iTextFont);
70
128
void IpeDialogCreateText::UpdateData()
72
iData = iEditor->text();
130
iData = iEditor->toPlainText();
132
if (iStyle->currentIndex() == 0)
133
*iCurrentStyle = IpeAttribute(); // null style
135
*iCurrentStyle = iStyles[iStyle->currentIndex()];
138
*iCurrentSize = iSizes[iSize->currentIndex()];
75
void IpeDialogCreateText::FlushLeft()
141
void IpeDialogCreateText::SetEditorFont(const QString &font)
77
QString s = iEditor->text().stripWhiteSpace();
78
iEditor->setText("\\begin{flushleft}\n" + s + "\n\\end{flushleft}\n");
143
if (!font.isEmpty()) {
144
editorFont.fromString(font);
146
editorFont = QApplication::font();
149
QFont IpeDialogCreateText::editorFont;
81
151
// --------------------------------------------------------------------
83
153
/*! \class CreateText
96
166
void IpeCreateText::New(QMouseEvent *, IpeCanvas *canvas,
97
167
IpeOverlayServices *services, TMode mode,
98
IpeRect *rect, const char *init)
100
170
IpeVector pos = canvas->Pos();
104
IpeDialogCreateText *dialog =
105
new IpeDialogCreateText(canvas, QObject::tr("Create text object"),
107
QObject::tr("Enter formula (LaTeX source)") :
108
QObject::tr("Enter text (LaTeX source)")), text);
172
IpeAttribute currentStyle;
173
IpeAttribute currentSize;
174
IpeDialogCreateText *dialog = 0;
175
if (rect && mode == EMinipage) {
177
IpeDialogCreateText(canvas, QObject::tr("Create text object"),
178
QObject::tr("Enter text (LaTeX source)"), text,
179
services->OvSvcStyleSheet(),
180
currentStyle, currentSize);
183
IpeDialogCreateText(canvas, QObject::tr("Create text object"),
185
QObject::tr("Enter formula (LaTeX source)") :
186
QObject::tr("Enter text (LaTeX source)")), text);
110
189
if (dialog->exec() == QDialog::Accepted) {
111
text = text.stripWhiteSpace();
190
text = text.trimmed();
112
191
if (!text.isEmpty()) {
113
192
IpeString data = IpeQ(text);
114
193
if (mode == EMath)
115
194
data = IpeString("$") + data + "$";
117
if (rect && mode == EMinipage)
196
if (rect && mode == EMinipage) {
118
197
obj = new IpeText(services->OvSvcAttributes(),
119
198
data, rect->TopLeft(),
120
199
IpeText::ETextbox, rect->Width());
200
obj->SetStyle(currentStyle);
201
obj->SetSize(currentSize);
122
203
obj = new IpeText(services->OvSvcAttributes(),
123
204
data, pos, IpeText::ELabel);
125
205
services->OvSvcAddObject(obj);
126
206
canvas->Update();
131
bool IpeCreateText::Edit(IpeText *obj, const IpeStyleSheet *)
211
bool IpeCreateText::Edit(IpeText *obj, const IpeStyleSheet *sheet)
134
214
text = QIpe(obj->Text());
135
IpeDialogCreateText *dialog =
136
new IpeDialogCreateText(0, QObject::tr("Edit text object"),
137
QObject::tr("Edit LaTeX source"), text);
215
IpeDialogCreateText *dialog = 0;
216
IpeAttribute style = obj->Style();
217
IpeAttribute size = obj->Size();
218
if (obj->IsMiniPage()) {
219
dialog = new IpeDialogCreateText(0, QObject::tr("Edit text object"),
220
QObject::tr("Edit LaTeX source"), text,
223
dialog = new IpeDialogCreateText(0, QObject::tr("Edit text object"),
224
QObject::tr("Edit LaTeX source"), text);
138
225
if (dialog->exec() == QDialog::Accepted) {
139
text = text.stripWhiteSpace();
226
text = text.trimmed();
140
227
if (!text.isEmpty()) {
141
228
obj->SetText(IpeQ(text));
229
obj->SetStyle(style);
177
268
IpeDialogCreateText *dialog =
178
269
new IpeDialogCreateText(iCanvas, QObject::tr("Create text object"),
179
QObject::tr("Enter LaTeX source"), text);
270
QObject::tr("Enter LaTeX source"), text,
271
iServices->OvSvcStyleSheet(), style, size);
180
272
if (dialog->exec() == QDialog::Accepted) {
181
text = text.stripWhiteSpace();
273
text = text.trimmed();
182
274
if (!text.isEmpty()) {
183
275
IpeText *obj = new IpeText(iServices->OvSvcAttributes(),
184
276
IpeQ(text), iV[0], IpeText::EMinipage, wid);
277
obj->SetStyle(style);
185
279
iServices->OvSvcAddObject(obj);