History

Merge branch 'master' of https://github.com/worklist/hifi into 19507

stojce committed 12 years ago

Commit 04c149e2 parents e5a66dd 0d0784e30 files · +669 −391Browse files

Showing the changes to interface/src/Application.cpp (1 of 30 files). Show all

Unified · Split

interface/src/Application.cpp+55−29
@@ -28,6 +28,7 @@ · 27 unmodified lines
2828 #include <QDesktopWidget>
2929 #include <QCheckBox>
3030 #include <QImage>
31+#include <QInputDialog>
3132 #include <QKeyEvent>
3233 #include <QMainWindow>
3334 #include <QMenuBar>
@@ -250,7 +251,7 @@ Application::Application(int& argc, char** argv, timeval &startup_time) : · 216 unmodified lines
250251 QMetaObject::invokeMethod(&accountManager, "checkAndSignalForAccessToken", Qt::QueuedConnection);
251252
252253 _settings = new QSettings(this);
253−
254+
254255 // Check to see if the user passed in a command line option for loading a local
255256 // Voxel File.
256257 _voxelsFilename = getCmdOption(argc, constArgv, "-i");
@@ -329,9 +330,20 @@ Application::Application(int& argc, char** argv, timeval &startup_time) : · 72 unmodified lines
329330
330331 LocalVoxelsList::getInstance()->addPersistantTree(DOMAIN_TREE_NAME, _voxels.getTree());
331332 LocalVoxelsList::getInstance()->addPersistantTree(CLIPBOARD_TREE_NAME, &_clipboard);
332−
333− // do this as late as possible so that all required subsystems are inialized
334− loadScripts();
333+
334+ // check first run...
335+ QVariant firstRunValue = _settings->value("firstRun",QVariant(true));
336+ if (firstRunValue.isValid() && firstRunValue.toBool()) {
337+ qDebug() << "This is a first run...";
338+ // clear the scripts, and set out script to our default scripts
339+ clearScriptsBeforeRunning();
340+ loadScript("http://public.highfidelity.io/scripts/defaultScripts.js");
341+
342+ _settings->setValue("firstRun",QVariant(false));
343+ } else {
344+ // do this as late as possible so that all required subsystems are inialized
345+ loadScripts();
346+ }
335347 }
336348
337349 Application::~Application() {
@@ -3453,6 +3465,13 @@ void Application::loadScripts() { · 3115 unmodified lines
34533465 settings->endArray();
34543466 }
34553467
3468+void Application::clearScriptsBeforeRunning() {
3469+ // clears all scripts from the settings
3470+ QSettings* settings = new QSettings(this);
3471+ settings->beginWriteArray("Settings");
3472+ settings->endArray();
3473+}
3474+
34563475 void Application::saveScripts() {
34573476 // saves all current running scripts
34583477 QSettings* settings = new QSettings(this);
@@ -3508,35 +3527,17 @@ void Application::cleanupScriptMenuItem(const QString& scriptMenuName) { · 49 unmodified lines
35083527 Menu::getInstance()->removeAction(Menu::getInstance()->getActiveScriptsMenu(), scriptMenuName);
35093528 }
35103529
3511−void Application::loadScript(const QString& fileNameString) {
3512− QByteArray fileNameAscii = fileNameString.toLocal8Bit();
3513− const char* fileName = fileNameAscii.data();
3514−
3515− std::ifstream file(fileName, std::ios::in|std::ios::binary|std::ios::ate);
3516− if(!file.is_open()) {
3517− qDebug("Error loading file %s", fileName);
3518− return;
3519− }
3520− qDebug("Loading file %s...", fileName);
3521− _activeScripts.append(fileNameString);
3522−
3523− // get file length....
3524− unsigned long fileLength = file.tellg();
3525− file.seekg( 0, std::ios::beg );
3526−
3527− // read the entire file into a buffer, WHAT!? Why not.
3528− char* entireFile = new char[fileLength+1];
3529− file.read((char*)entireFile, fileLength);
3530− file.close();
3531−
3532− entireFile[fileLength] = 0;// null terminate
3533− QString script(entireFile);
3534− delete[] entireFile;
3530+void Application::loadScript(const QString& scriptName) {
35353531
35363532 // start the script on a new thread...
35373533 bool wantMenuItems = true; // tells the ScriptEngine object to add menu items for itself
3534+ ScriptEngine* scriptEngine = new ScriptEngine(QUrl(scriptName), wantMenuItems, &_controllerScriptingInterface);
35383535
3539− ScriptEngine* scriptEngine = new ScriptEngine(script, wantMenuItems, fileName, &_controllerScriptingInterface);
3536+ if (!scriptEngine->hasScript()) {
3537+ qDebug() << "Application::loadScript(), script failed to load...";
3538+ return;
3539+ }
3540+ _activeScripts.append(scriptName);
35403541
35413542 // add a stop menu item
35423543 Menu::getInstance()->addActionToQMenuAndActionHash(Menu::getInstance()->getActiveScriptsMenu(),
@@ -3599,6 +3600,31 @@ void Application::loadDialog() { · 56 unmodified lines
35993600 loadScript(fileNameString);
36003601 }
36013602
3603+void Application::loadScriptURLDialog() {
3604+
3605+ QInputDialog scriptURLDialog(Application::getInstance()->getWindow());
3606+ scriptURLDialog.setWindowTitle("Open and Run Script URL");
3607+ scriptURLDialog.setLabelText("Script:");
3608+ scriptURLDialog.setWindowFlags(Qt::Sheet);
3609+ const float DIALOG_RATIO_OF_WINDOW = 0.30f;
3610+ scriptURLDialog.resize(scriptURLDialog.parentWidget()->size().width() * DIALOG_RATIO_OF_WINDOW,
3611+ scriptURLDialog.size().height());
3612+
3613+ int dialogReturn = scriptURLDialog.exec();
3614+ QString newScript;
3615+ if (dialogReturn == QDialog::Accepted) {
3616+ if (scriptURLDialog.textValue().size() > 0) {
3617+ // the user input a new hostname, use that
3618+ newScript = scriptURLDialog.textValue();
3619+ }
3620+ loadScript(newScript);
3621+ }
3622+
3623+ sendFakeEnterEvent();
3624+}
3625+
3626+
3627+
36023628 void Application::toggleLogDialog() {
36033629 if (! _logDialog) {
36043630 _logDialog = new LogDialog(_glWidget, getLogger());

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t