Skip to content

Commit 4a2ce4a

Browse files
committed
remove line with macro type from macro editor
macro type is now defined by radio buttons alone. todo so type is now part of user macro and exported Json.
1 parent f190909 commit 4a2ce4a

File tree

4 files changed

+89
-66
lines changed

4 files changed

+89
-66
lines changed

src/usermacro.cpp

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,21 @@ void Macro::setTypedTag(const QString &m_tag)
200200
tag=parseTypedTag(m_tag,type);
201201
}
202202

203+
QString Macro::getTag()
204+
{
205+
return tag;
206+
}
207+
208+
void Macro::setTag(const QString &ntag)
209+
{
210+
tag=ntag;
211+
}
212+
213+
void Macro::setType(const Macro::Type &ntype)
214+
{
215+
type=ntype;
216+
}
217+
203218
QString Macro::parseTypedTag(QString typedTag, Macro::Type &retType)
204219
{
205220
if (typedTag.startsWith("%SCRIPT\n")) {
@@ -250,9 +265,9 @@ bool Macro::save(const QString &fileName) const {
250265
return false;
251266

252267
QJsonObject dd;
253-
dd.insert("formatVersion",1);
268+
dd.insert("formatVersion",2);
254269
dd.insert("name",name);
255-
QString tag= typedTag();
270+
dd.insert("type", ( type==Script ? "Script" : ( type==Environment ? "Environment" : "Snippet" ) ) );
256271
dd.insert("tag",QJsonArray::fromStringList(tag.split("\n")));
257272
dd.insert("description",QJsonArray::fromStringList(description.split("\n")));
258273
dd.insert("abbrev",abbrev);
@@ -316,8 +331,25 @@ bool Macro::loadFromText(const QString &text)
316331

317332
// distrbute data on internal structure
318333
Macro::Type typ;
319-
QString typedTag=parseTypedTag(rawData.value("tag"),typ);
320-
init(rawData.value("name"),typ,typedTag,rawData.value("abbrev"),rawData.value("trigger"));
334+
QString tag;
335+
switch(dd.value("formatVersion").toInt()) {
336+
case 1:
337+
tag = parseTypedTag(rawData.value("tag"),typ);
338+
rawData.insert("formatVersion","2");
339+
qDebug() << QString("Macro %1 with version 1 migrated as type %2.").arg(rawData.value("name"), ( typ==Script ? "Script" : ( typ==Environment ? "Environment" : "Snippet" ) ));
340+
break;
341+
case 2: {
342+
QString qtype = rawData.value("type");
343+
typ = ( qtype=="Script" ? Script : ( qtype=="Environment" ? Environment : Snippet ) );
344+
tag = rawData.value("tag");
345+
break;
346+
}
347+
default:
348+
qDebug() << QString("Trying to import macro %1 with unknown version %2 as type Snippet. Type maybe wrong.").arg(rawData.value("name")).arg(dd.value("formatVersion").toInt());
349+
typ = Snippet;
350+
tag = rawData.value("tag");
351+
}
352+
init(rawData.value("name"),typ,tag,rawData.value("abbrev"),rawData.value("trigger"));
321353
m_shortcut=rawData.value("shortcut");
322354
menu=rawData.value("menu");
323355
description=rawData.value("description");

src/usermacro.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,14 @@ class Macro
4141

4242
bool isEmpty() const;
4343

44+
QString getTag();
45+
void setTag(const QString &ntag);
4446
void setShortcut(const QString &sc);
4547
void setTrigger(const QString &newTrigger);
4648

4749
QString typedTag() const;
48-
void setTypedTag(const QString &m_tag);
50+
void setTypedTag(const QString &m_tag);
51+
void setType(const Macro::Type &ntype);
4952
static QString parseTypedTag(QString typedTag, Macro::Type &retType);
5053

5154
void parseTriggerLanguage(QLanguageFactory *langFactory);

src/usermenudialog.cpp

Lines changed: 45 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ UserMenuDialog::UserMenuDialog(QWidget *parent, QString name, QLanguageFactory
5454
connect(ui.pbImport,SIGNAL(clicked()), SLOT(importMacro()));
5555
connect(ui.pbBrowse,SIGNAL(clicked()), SLOT(browseMacrosOnRepository()));
5656

57-
connect(ui.radioButtonNormal, SIGNAL(clicked()), SLOT(changeTypeToNormal()));
58-
connect(ui.radioButtonEnvironment, SIGNAL(clicked()), SLOT(changeTypeToEnvironment()));
59-
connect(ui.radioButtonScript, SIGNAL(clicked()), SLOT(changeTypeToScript()));
57+
connect(ui.radioButtonNormal, SIGNAL(clicked()), SLOT(changeType()));
58+
connect(ui.radioButtonEnvironment, SIGNAL(clicked()), SLOT(changeType()));
59+
connect(ui.radioButtonScript, SIGNAL(clicked()), SLOT(changeType()));
6060

6161
//editor options
6262
ui.tagEdit->setLayout(new QVBoxLayout());
@@ -127,7 +127,6 @@ UserMenuDialog::UserMenuDialog(QWidget *parent, QString name, QLanguageFactory
127127

128128
codeedit->editor()->clearFocus();
129129
ui.pbBrowse->setFocus();
130-
131130
}
132131

133132
UserMenuDialog::~UserMenuDialog()
@@ -292,27 +291,31 @@ void UserMenuDialog::change(QTreeWidgetItem *current,QTreeWidgetItem *previous)
292291
if (m.description != ui.teDescription->toPlainText())
293292
ui.teDescription->setPlainText(m.description);
294293

295-
if (codeedit->editor()->text() != m.typedTag()) {
296-
codeedit->editor()->setText(m.typedTag(), false);
297-
setLanguageFromText();
294+
if (codeedit->editor()->text() != m.getTag()) {
295+
codeedit->editor()->setText(m.getTag(), false);
296+
setLanguageFromType(current);
298297
codeedit->editor()->setFlag(QEditor::CursorOn,false);
299298
codeedit->editor()->repaintCursor();
300299
}
301300
}
302301
}
303302

304-
void UserMenuDialog::setLanguageFromText(void)
303+
void UserMenuDialog::setLanguageFromType(QTreeWidgetItem *current)
305304
{
306-
QString line = codeedit->editor()->text(0);
307-
if (line == "%SCRIPT") {
308-
languages->setLanguage(codeedit->editor(), ".qs");
309-
ui.radioButtonScript->setChecked(true);
310-
} else if (line.startsWith("%") && !line.startsWith("%%")) {
311-
languages->setLanguage(codeedit->editor(), "");
312-
ui.radioButtonEnvironment->setChecked(true);
313-
} else {
314-
languages->setLanguage(codeedit->editor(), "(La)TeX Macro");
315-
ui.radioButtonNormal->setChecked(true);
305+
if (current==nullptr) return;
306+
QVariant v = current->data(0,Qt::UserRole);
307+
if(v.isValid()){
308+
Macro m = v.value<Macro>();
309+
if (m.type==Macro::Script) {
310+
languages->setLanguage(codeedit->editor(), ".qs");
311+
ui.radioButtonScript->setChecked(true);
312+
} else if (m.type==Macro::Environment) {
313+
languages->setLanguage(codeedit->editor(), "Plain text");
314+
ui.radioButtonEnvironment->setChecked(true);
315+
} else {
316+
languages->setLanguage(codeedit->editor(), "(La)TeX Macro");
317+
ui.radioButtonNormal->setChecked(true);
318+
}
316319
}
317320
}
318321

@@ -322,7 +325,7 @@ void UserMenuDialog::slotOk()
322325
}
323326
void UserMenuDialog::slotExecMacro()
324327
{
325-
QTreeWidgetItem *item=ui.treeWidget->currentItem();
328+
QTreeWidgetItem *item = ui.treeWidget->currentItem();
326329
if (item==nullptr) return;
327330
QVariant v = item->data(0,Qt::UserRole);
328331
if (v.isValid()){
@@ -481,52 +484,39 @@ void UserMenuDialog::browseMacrosOnRepository(){
481484
}
482485
}
483486

484-
void UserMenuDialog::changeTypeToNormal()
485-
{
486-
QString cur = codeedit->editor()->text();
487-
languages->setLanguage(codeedit->editor(), "(La)TeX Macro");
488-
if (cur.startsWith("%SCRIPT\n")) codeedit->editor()->setText(cur.mid(8), false);
489-
else if (cur.startsWith("%") && !cur.startsWith("%%")) codeedit->editor()->setText(cur.mid(1), false);
490-
codeedit->editor()->setFlag(QEditor::CursorOn,false);
491-
codeedit->editor()->repaintCursor();
492-
}
493-
494-
void UserMenuDialog::changeTypeToEnvironment()
495-
{
496-
QString cur = codeedit->editor()->text();
497-
languages->setLanguage(codeedit->editor(), "");
498-
if (cur.startsWith("%SCRIPT\n")) {
499-
codeedit->editor()->setText("%" + cur.mid(8), false);
500-
} else {
501-
if (cur.startsWith("%") && !cur.startsWith("%%")) return;
502-
while (cur.startsWith("%%")) cur = cur.remove(0, 2);
503-
if (!cur.startsWith("%")) cur = "%" + cur;
504-
codeedit->editor()->setText(cur, false);
505-
}
506-
codeedit->editor()->setFlag(QEditor::CursorOn,false);
507-
codeedit->editor()->repaintCursor();
508-
}
509-
510-
void UserMenuDialog::changeTypeToScript()
487+
void UserMenuDialog::changeType()
511488
{
512-
QString cur = codeedit->editor()->text();
513-
languages->setLanguage(codeedit->editor(), ".qs");
514-
if (cur.startsWith("%SCRIPT\n")) return;
515-
if (cur.startsWith("%") && !cur.startsWith("%%")) cur = cur.mid(1);
516-
codeedit->editor()->setText("%SCRIPT\n" + cur, false);
517-
codeedit->editor()->setFlag(QEditor::CursorOn,false);
518-
codeedit->editor()->repaintCursor();
489+
QTreeWidgetItem *item = ui.treeWidget->currentItem();
490+
if (item==nullptr) return;
491+
QVariant v = item->data(0,Qt::UserRole);
492+
if (v.isValid()){
493+
Macro m = v.value<Macro>();
494+
if (ui.radioButtonNormal->isChecked()) {
495+
m.setType(Macro::Snippet);
496+
languages->setLanguage(codeedit->editor(), "(La)TeX Macro");
497+
}
498+
else if (ui.radioButtonEnvironment->isChecked()) {
499+
m.setType(Macro::Environment);
500+
languages->setLanguage(codeedit->editor(), "Plain text");
501+
}
502+
else if (ui.radioButtonScript->isChecked()) {
503+
m.setType(Macro::Script);
504+
languages->setLanguage(codeedit->editor(), ".qs");
505+
}
506+
item->setData(0,Qt::UserRole,QVariant::fromValue(m));
507+
codeedit->editor()->setFlag(QEditor::CursorOn,false);
508+
codeedit->editor()->repaintCursor();
509+
}
519510
}
520511

521512
void UserMenuDialog::textChanged()
522513
{
523-
setLanguageFromText();
524514
QTreeWidgetItem *item=ui.treeWidget->currentItem();
525515
if(item==nullptr) return;
526516
QVariant v=item->data(0,Qt::UserRole);
527517
if(v.isValid()){
528518
Macro m=v.value<Macro>();
529-
m.setTypedTag(codeedit->editor()->text());
519+
m.setTag(codeedit->editor()->text());
530520
item->setData(0,Qt::UserRole,QVariant::fromValue(m));
531521
}
532522
}

src/usermenudialog.h

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class UserMenuDialog : public QDialog
3838
bool getLineWrap();
3939

4040
private:
41-
void setLanguageFromText(void);
41+
void setLanguageFromType(QTreeWidgetItem *current);
4242
QTreeWidgetItem* findCreateFolder(const QString &menu);
4343
QTreeWidgetItem* findCreateFolder(QTreeWidgetItem *parent, QStringList folders);
4444

@@ -53,12 +53,12 @@ class UserMenuDialog : public QDialog
5353
void execMacro(const Macro &macro);
5454

5555
private slots:
56-
void change(QTreeWidgetItem *current,QTreeWidgetItem *previous);
56+
void change(QTreeWidgetItem *current,QTreeWidgetItem *previous);
5757
void slotOk();
5858
void slotExecMacro();
5959
void slotAdd();
6060
void slotRemove();
61-
void slotAddFolder();
61+
void slotAddFolder();
6262
void slotMoveUp();
6363
void slotMoveDown();
6464
void importMacro();
@@ -72,9 +72,7 @@ private slots:
7272
void abbrevChanged();
7373
void triggerChanged();
7474
void showTooltip();
75-
void changeTypeToNormal();
76-
void changeTypeToEnvironment();
77-
void changeTypeToScript();
75+
void changeType();
7876
};
7977

8078
#endif // USERMENUDIALOG_H

0 commit comments

Comments
 (0)