1 #include "scripteditor.h"
3 #include <QDebug> //FIXME-3 testing
10 #include "mainwindow.h"
12 #include "slideitem.h"
13 #include "slidemodel.h"
16 extern QString vymName;
17 extern QList <Command*> modelCommands;
18 extern QDir lastMapDir;
20 extern Main *mainWindow;
21 extern Options options;
23 ScriptEditor::ScriptEditor (QWidget *parent):QWidget(parent)
27 //connect ( ui.openButton, SIGNAL (clicked() ), this, SLOT (openClicked() ));
28 connect ( ui.saveSlideButton, SIGNAL (clicked() ), this, SLOT (saveSlide() ));
29 //connect ( ui.saveAsButton, SIGNAL (clicked() ), this, SLOT (saveAsClicked() ));
30 connect ( ui.runButton, SIGNAL (clicked() ), this, SLOT (runClicked() ));
31 connect ( ui.macroRunButton, SIGNAL (clicked() ), this, SLOT (runClicked() ));
32 connect ( ui.macroLoadButton, SIGNAL (pressed()), this, SLOT (loadMacroClicked() ) );
33 connect ( ui.macroSaveButton, SIGNAL (pressed()), this, SLOT (saveMacroClicked() ) );
40 font.setFamily("Courier");
41 font.setFixedPitch(true);
42 font.setPointSize(12);
43 ui.editor->setFont(font);
45 ui.modeTabWidget->setTabText(0,tr("Slide","Mode in scriptEditor"));
46 ui.modeTabWidget->setTabText(1,tr("Macro","Mode in scriptEditor"));
48 ui.keyCombo->insertItem(0, QString("---") );
50 // Init function key selection
51 for (int i=0; i<24; i++)
54 if (i>11) prefix="Shift +";
56 ui.keyCombo->insertItem(i, QString("%1 F%2").arg(prefix).arg(n) );
59 highlighter = new Highlighter(ui.editor->document());
61 foreach (Command *c, modelCommands)
62 list.append (c->getName() );
63 highlighter->addKeywords (list);
65 QAction *a = new QAction( tr( "Save","ScriptEditor" ), ui.editor);
66 a->setShortcut (Qt::CTRL + Qt::Key_S );
67 a->setShortcutContext (Qt::WidgetWithChildrenShortcut);
69 connect( a, SIGNAL( triggered() ), this, SLOT( saveSlide() ) );
72 void ScriptEditor::setScriptFile(const QString &fn)
75 if ( !f.open( QFile::ReadOnly|QFile::Text ) )
77 QString error (QObject::tr("Error"));
78 QString msg (QObject::tr("Couldn't open \"%1\"\n%2.").arg(fn).arg(f.errorString()));
79 if (options.isOn("batch"))
80 qWarning ()<<error+": "+msg;
82 QMessageBox::warning(0, error,msg);
87 ui.editor->setText (in.readAll());
91 void ScriptEditor::saveFile()
94 if ( !f.open( QIODevice::WriteOnly ) )
96 QMessageBox::warning(0, QObject::tr("Error"),QObject::tr("Couldn't save \"%1\"").arg(filename));
102 t << ui.editor->toPlainText();
106 void ScriptEditor::saveSlide()
108 VymModel *vm=mainWindow->getModel(vymModelID);
111 QMessageBox::warning(0,tr("Warning"),tr("Couldn't get model to save script into slide!"));
114 SlideItem *si=vm->getSlideModel()->findSlideID(slideID);
117 QMessageBox::warning(0,tr("Warning"),tr("Couldn't find slide to save script into slide!"));
120 si->setInScript(ui.editor->toPlainText());
123 void ScriptEditor::setSlideScript(uint model_id, uint slide_id,const QString &s)
128 ui.editor->setText(s);
131 void ScriptEditor::saveClicked()
133 if (filename.isEmpty() )
139 void ScriptEditor::saveAsClicked()
141 QString fn = QFileDialog::getSaveFileName(
143 QString (vymName + " - " +tr("Save script")),
145 "VYM script (*.vys);;All files (*)",
147 QFileDialog::DontConfirmOverwrite);
154 QMessageBox mb( vymName,
155 tr("The file %1\nexists already.\nDo you want to overwrite it?","dialog 'save as'").arg(fn),
156 QMessageBox::Warning,
157 QMessageBox::Yes | QMessageBox::Default,
158 QMessageBox::Cancel | QMessageBox::Escape,
160 mb.setButtonText( QMessageBox::Yes, tr("Overwrite") );
161 mb.setButtonText( QMessageBox::No, tr("Cancel"));
164 case QMessageBox::Yes:
169 case QMessageBox::Cancel:
179 void ScriptEditor::openClicked()
181 QString filter("VYM scripts (*.vys);;All (*)");
182 QString fn=QFileDialog::getOpenFileName(
184 vymName+" - " + tr("Load script"),
191 if ( !f.open( QIODevice::ReadOnly ) )
193 QMessageBox::warning(0,
195 tr("Couldn't open %1.\n").arg(filename));
199 QTextStream ts( &f );
200 ts.setCodec("UTF-8");
201 ui.editor->setText( ts.readAll() );
203 lastMapDir.setPath(fn.left(fn.lastIndexOf ("/")) );
207 void ScriptEditor::runClicked()
209 emit runScript (ui.editor->toPlainText() );
212 void ScriptEditor::loadMacroClicked()
214 QString m=macros.getMacro (ui.keyCombo->currentIndex()+1);
216 ui.editor->setText (m);
218 void ScriptEditor::saveMacroClicked()
220 filename=macros.getPath(ui.keyCombo->currentIndex());