simplescripteditor.cpp
author insilmaril
Tue, 06 Mar 2007 19:37:39 +0000
changeset 434 c585be63ec69
parent 432 f867269ab8a1
child 438 eae9abe70d7c
permissions -rw-r--r--
1.8.69 Some more scripting functionality (for testing)
     1 #include "simplescripteditor.h"
     2 
     3 
     4 #include <QFileDialog>
     5 #include <QMessageBox>
     6 #include <QTextStream>
     7 
     8 
     9 extern QString vymName;
    10 
    11 SimpleScriptEditor::SimpleScriptEditor (QWidget *parent):QDialog(parent)
    12 {
    13 	ui.setupUi (this);
    14 
    15 	connect ( ui.loadButton, SIGNAL (clicked() ), this, SLOT (loadScriptClicked() ));
    16 	connect ( ui.saveButton, SIGNAL (clicked() ), this, SLOT (saveScriptClicked() ));
    17 	connect ( ui.runButton,  SIGNAL (clicked() ), this, SLOT (runScriptClicked() ));
    18 
    19 
    20 	// Initialize Editor
    21 	QFont font;
    22 	font.setFamily("Courier");
    23 	font.setFixedPitch(true);
    24 	font.setPointSize(10);
    25 	ui.editor->setFont(font);
    26 
    27 	highlighter = new Highlighter(ui.editor->document());
    28 }
    29 
    30 void SimpleScriptEditor::saveScript()
    31 {
    32 	QFile f( filename );
    33 	if ( !f.open( QIODevice::WriteOnly ) ) 
    34 	{
    35 		return;
    36 	}
    37 
    38 	QTextStream t( &f );
    39 	t << ui.editor->text();
    40 	f.close();
    41 }
    42 
    43 void SimpleScriptEditor::setScript(const QString &s)
    44 {
    45 	ui.editor->setText(s);
    46 }
    47 
    48 void SimpleScriptEditor::saveScriptClicked()
    49 {
    50 	QString fn = QFileDialog::getSaveFileName( 
    51 		this, 
    52 		QString (vymName + " - " +tr("Save script")),
    53 		QString (),
    54 		"VYM script (HTML) (*.vys);;All files (*)",
    55 		0,
    56 		QFileDialog::DontConfirmOverwrite);
    57 		
    58     if ( !fn.isEmpty() ) 
    59 	{
    60 		QFile file (fn);
    61 		if (file.exists())
    62 		{
    63 			QMessageBox mb( vymName,
    64 				tr("The file %1\nexists already.\nDo you want to overwrite it?","dialog 'save as'").arg(fn),
    65 			QMessageBox::Warning,
    66 			QMessageBox::Yes | QMessageBox::Default,
    67 			QMessageBox::Cancel | QMessageBox::Escape,
    68 			Qt::NoButton );
    69 			mb.setButtonText( QMessageBox::Yes, tr("Overwrite") );
    70 			mb.setButtonText( QMessageBox::No, tr("Cancel"));
    71 			switch( mb.exec() ) 
    72 			{
    73 				case QMessageBox::Yes:
    74 					// save 
    75 					filename = fn;
    76 					saveScript();
    77 					return;
    78 				case QMessageBox::Cancel:
    79 					// do nothing
    80 					return;
    81 			}
    82 		} 
    83 		filename=fn;
    84 		saveScript();
    85     }
    86 }
    87 
    88 void SimpleScriptEditor::loadScriptClicked()
    89 {
    90 	QFileDialog *fd=new QFileDialog( this);
    91 	QStringList types;
    92 	types<< "VYM scripts (*.vys)" <<
    93 	        "All         (*)" ;
    94 	fd->setFilters (types);
    95 	fd->setDirectory (QDir().current());
    96 	fd->setCaption (vymName + " - " + tr("Load script"));
    97 	fd->show();
    98 	QString fn;
    99 	if ( fd->exec() == QDialog::Accepted )
   100 		fn = fd->selectedFile();
   101 
   102 	if ( !fn.isEmpty() )
   103 	{
   104 		QFile f( fn );
   105 		if ( !f.open( QIODevice::ReadOnly ) )
   106 		{
   107 			QMessageBox::warning(0, 
   108 				tr("Error"),
   109 				tr("Couldn't open %1.\n").arg(fn));
   110 			return;
   111 		}	
   112 
   113 		QTextStream ts( &f );
   114 		ui.editor->setText( ts.read() );
   115 		f.close();
   116 	}
   117 }
   118 
   119 void SimpleScriptEditor::runScriptClicked()
   120 {
   121 	emit runScript (ui.editor->text() );
   122 }