forked from qt-creator/qt-creator
		
	
		
			
				
	
	
		
			376 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			376 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/**************************************************************************
 | 
						|
**
 | 
						|
** This file is part of Qt Creator
 | 
						|
**
 | 
						|
** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
 | 
						|
**
 | 
						|
** Contact: Nokia Corporation (qt-info@nokia.com)
 | 
						|
**
 | 
						|
** Commercial Usage
 | 
						|
**
 | 
						|
** Licensees holding valid Qt Commercial licenses may use this file in
 | 
						|
** accordance with the Qt Commercial License Agreement provided with the
 | 
						|
** Software or, alternatively, in accordance with the terms contained in
 | 
						|
** a written agreement between you and Nokia.
 | 
						|
**
 | 
						|
** GNU Lesser General Public License Usage
 | 
						|
**
 | 
						|
** Alternatively, this file may be used under the terms of the GNU Lesser
 | 
						|
** General Public License version 2.1 as published by the Free Software
 | 
						|
** Foundation and appearing in the file LICENSE.LGPL included in the
 | 
						|
** packaging of this file.  Please review the following information to
 | 
						|
** ensure the GNU Lesser General Public License version 2.1 requirements
 | 
						|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 | 
						|
**
 | 
						|
** If you are unsure which license is appropriate for your use, please
 | 
						|
** contact the sales department at http://www.qtsoftware.com/contact.
 | 
						|
**
 | 
						|
**************************************************************************/
 | 
						|
 | 
						|
//  This script file demos the scripting features
 | 
						|
//  of Qt Creator.
 | 
						|
//  Choose "Run" from the context menu.
 | 
						|
 | 
						|
function introspect(o, indent)
 | 
						|
{
 | 
						|
    core.messageManager.printToOutputPane(indent + "+++++++++++++ Class " + o);
 | 
						|
    for (i in o)  {
 | 
						|
        var member = o[i];
 | 
						|
        var t = typeof member;
 | 
						|
       core.messageManager.printToOutputPane(indent + typeof o[i] + " " + i);
 | 
						|
       if (t == "object")
 | 
						|
         introspect(i,  indent + "  ");
 | 
						|
   }
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
function introspectToString(o)
 | 
						|
{
 | 
						|
    var rc = "";
 | 
						|
    for (i in o)  {
 | 
						|
        rc = rc + " " + typeof o[i] + " " + i;
 | 
						|
   }
 | 
						|
   return rc;
 | 
						|
}
 | 
						|
 | 
						|
function demoInputDialogs()
 | 
						|
{
 | 
						|
    var t = getText(core.mainWindow, "Input dialogs", "text", "default");
 | 
						|
    if (t == null)
 | 
						|
        return;
 | 
						|
 | 
						|
    core.messageManager.printToOutputPane("Input :" +t);
 | 
						|
    var i = getInteger(core.mainWindow, "Input dialogs", "integer", 42, 0, 1000);
 | 
						|
    if (i == null)
 | 
						|
        return;
 | 
						|
 | 
						|
    core.messageManager.printToOutputPane("Input :" +i);
 | 
						|
    var d = getDouble(core.mainWindow, "Input dialogs", "double", 42.0, 0.0, 1000.0);
 | 
						|
    if (d == null)
 | 
						|
        return;
 | 
						|
    core.messageManager.printToOutputPane("Input :" +d);
 | 
						|
}
 | 
						|
 | 
						|
function demoFileDialogs()
 | 
						|
{
 | 
						|
    var f = getOpenFileName(core.mainWindow, "Choose file", "", "All files (*.*)");
 | 
						|
    if (f == null)
 | 
						|
        return;
 | 
						|
 | 
						|
    core.messageManager.printToOutputPane("File:" + f);
 | 
						|
 | 
						|
    f = getOpenFileNames(core.mainWindow, "Choose files", "", "All files (*.*)");
 | 
						|
 | 
						|
    if (f == null)
 | 
						|
        return;
 | 
						|
 | 
						|
    core.messageManager.printToOutputPane("Files:" + f);
 | 
						|
 | 
						|
    f = getSaveFileName(core.mainWindow, "Choose file to write to", "", "All files (*.*)");
 | 
						|
 | 
						|
    if (f == null)
 | 
						|
        return;
 | 
						|
 | 
						|
    core.messageManager.printToOutputPane("File:" + f);
 | 
						|
 | 
						|
    f = getExistingDirectory(core.mainWindow, "Choose directory", "");
 | 
						|
 | 
						|
    if (f == null)
 | 
						|
        return;
 | 
						|
 | 
						|
    core.messageManager.printToOutputPane("Directory:" + f);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
function demoMessageBoxes()
 | 
						|
{
 | 
						|
    critical(core.mainWindow, "Critical", "critical");
 | 
						|
    warning(core.mainWindow, "warning", "warning");
 | 
						|
    information(core.mainWindow, "information", "information");
 | 
						|
    var a = yesNoQuestion(core.mainWindow, "Question", "question");
 | 
						|
    core.messageManager.printToOutputPane("Answer:" +a);
 | 
						|
}
 | 
						|
 | 
						|
function demoWizard()
 | 
						|
{
 | 
						|
    var filters = new Array("ProjectExplorer.WizardType.Project", "QtCreator::WizardType::File");
 | 
						|
    core.showNewItemDialog(filters);
 | 
						|
}
 | 
						|
 | 
						|
function demoWidgets()
 | 
						|
{
 | 
						|
    core.mainWindow.windowTitle = "Accessing MainWindow";
 | 
						|
    core.statusBar.showMessage("Accessing StatusBar", 0);
 | 
						|
}
 | 
						|
 | 
						|
function demoIntrospect()
 | 
						|
{
 | 
						|
    // Not perfect yet
 | 
						|
    introspect(core, "");
 | 
						|
}
 | 
						|
 | 
						|
function demoFileManager()
 | 
						|
{
 | 
						|
    core.messageManager.printToOutputPane("Recent files:" + core.fileManager.recentFiles);
 | 
						|
    var name = getText(core.mainWindow, "Input file name", "name", "");
 | 
						|
 | 
						|
    if (core.fileManager.isFileManaged(name) == 0) {
 | 
						|
        core.messageManager.printToOutputPane(name + " is not managed.");
 | 
						|
        return;
 | 
						|
    }
 | 
						|
 | 
						|
    var mf = core.fileManager.managedFiles(name);
 | 
						|
    var s = mf.length;
 | 
						|
    core.messageManager.printToOutputPane(s + " managed files match " + name);
 | 
						|
    for (var i = 0; i < mf.length; i++) {
 | 
						|
        core.messageManager.printToOutputPane(mf[i].fileName);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
function printEditor(e, indent)
 | 
						|
{
 | 
						|
    var m = indent + "Editor " + e.displayName + ", " + e.kind ;
 | 
						|
    var f = e.file;
 | 
						|
    m = m + " (" + f.fileName + ")";
 | 
						|
    core.messageManager.printToOutputPane(m);
 | 
						|
}
 | 
						|
 | 
						|
function printEditorList(header, l, indent)
 | 
						|
{
 | 
						|
    core.messageManager.printToOutputPane(header + " (" + l.length + ")");
 | 
						|
    for (var i = 0; i < l.length; i++) {
 | 
						|
        printEditor(l[i],"  ");
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
function printEditorGroup(g)
 | 
						|
{
 | 
						|
    var m = "Editor Group: " + g.editorCount + " editor(s)";
 | 
						|
    core.messageManager.printToOutputPane(m);
 | 
						|
    printEditorList("Editors of the group", g.editors);
 | 
						|
    var ce = g.currentEditor;
 | 
						|
    if (ce == null) {
 | 
						|
        core.messageManager.printToOutputPane("No current editor in group");
 | 
						|
    } else {
 | 
						|
        printEditor(ce, "  ");
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
function demoEditorManager()
 | 
						|
{
 | 
						|
    var og = core.editorManager.editorGroups;
 | 
						|
    core.messageManager.printToOutputPane("Editor groups " + og.length);
 | 
						|
    for (var i = 0; i < og.length; i++) {
 | 
						|
        printEditorGroup(og[i]);
 | 
						|
    }
 | 
						|
 | 
						|
    printEditorList("Opened editors", core.editorManager.openedEditors);
 | 
						|
 | 
						|
    var ce = core.editorManager.currentEditor;
 | 
						|
    if (ce == null) {
 | 
						|
        core.messageManager.printToOutputPane("No current editor");
 | 
						|
        return;
 | 
						|
    }
 | 
						|
 | 
						|
    core.messageManager.printToOutputPane("Current editor");
 | 
						|
    printEditor(ce, "");
 | 
						|
 | 
						|
    var f = getOpenFileName(core.mainWindow, "Choose file to open", "", "All files (*.*)");
 | 
						|
    if (f  == null)
 | 
						|
        return;
 | 
						|
 | 
						|
    printEditor(core.editorManager.openEditor(f, ""), "");
 | 
						|
//    printEditor(core.editorManager.newFile("Text", "title", "contents"));
 | 
						|
//    var dup = ce.duplicate(core.mainWindow);
 | 
						|
}
 | 
						|
 | 
						|
function demoDebugger()
 | 
						|
{
 | 
						|
    var state = gdbdebugger.status;
 | 
						|
    core.messageManager.printToOutputPane("State " + state);
 | 
						|
    // TODO: Start debugger on demand?
 | 
						|
    if (state != 0)
 | 
						|
        gdbdebugger.sendCommand("help");
 | 
						|
}
 | 
						|
 | 
						|
// -- ProjectExplorer
 | 
						|
function printProjectItem(pi, indent, recursively)
 | 
						|
{
 | 
						|
    var m = indent + "ProjectItem " + pi.kind + " " + pi.name;
 | 
						|
    core.messageManager.printToOutputPane(m);
 | 
						|
    if (recursively != 0) {
 | 
						|
        var rIndent = indent + "    ";
 | 
						|
        var c =  projectExplorer.childrenOf(pi);
 | 
						|
        for (var i = 0; i < c.length; i++) {
 | 
						|
            printProjectItem(c[i], rIndent, 1);
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
function printSession(s, indent)
 | 
						|
{
 | 
						|
    core.messageManager.printToOutputPane(indent + "Session " + s.name + " startup project " + s.startupProject);
 | 
						|
    var p = s.projects;
 | 
						|
    var pIndent = indent + "    ";
 | 
						|
    for (var i = 0; i < p.length; i++) {
 | 
						|
        printProjectItem(p[i], pIndent, 1);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
function demoProjectExplorer()
 | 
						|
{
 | 
						|
    core.messageManager.printToOutputPane("ProjectExplorer");
 | 
						|
    projectExplorer.buildManager.showOutputWindow(1);
 | 
						|
    projectExplorer.buildManager.addMessage("Build manager message");
 | 
						|
    projectExplorer.applicationOutputWindow.clear();
 | 
						|
    projectExplorer.applicationOutputWindow.appendOutput("Hi, there! .. This the projectExplorer demo");
 | 
						|
 | 
						|
    var ci = projectExplorer.currentItem;
 | 
						|
    if (ci != null) {
 | 
						|
        core.messageManager.printToOutputPane("Current Item");
 | 
						|
        printProjectItem(ci, "    ", 0);
 | 
						|
    } else {
 | 
						|
        core.messageManager.printToOutputPane("No current Item");
 | 
						|
    }
 | 
						|
    var cp = projectExplorer.currentProject;
 | 
						|
    if (cp != null) {
 | 
						|
        core.messageManager.printToOutputPane("Current Project");
 | 
						|
        printProjectItem(cp, "    ", 0);
 | 
						|
    } else {
 | 
						|
        core.messageManager.printToOutputPane("No current Project");
 | 
						|
    }
 | 
						|
 | 
						|
    var cs = projectExplorer.session;
 | 
						|
    if (cs != null) {
 | 
						|
        core.messageManager.printToOutputPane("Current Session");
 | 
						|
        printSession(cs, "    ");
 | 
						|
        // Ask to build
 | 
						|
        var p = projectExplorer.needsBuild(cs.projects[0]);
 | 
						|
        for (var i = 0; i < p.length; i++) {
 | 
						|
            if (yesNoQuestion(core.mainWindow, "Rebuild", "Do you want to rebuild " + p[i].name + "?") != 65536) {
 | 
						|
                if (p[i].supportsProjectCommand(2)) {
 | 
						|
                    p[i].executeProjectCommand(2);
 | 
						|
                } else {
 | 
						|
                    core.messageManager.printToOutputPane("Build not supported.");
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
    } else {
 | 
						|
        core.messageManager.printToOutputPane("No current Session");
 | 
						|
        var a = yesNoQuestion(core.mainWindow, "Open Session", "Do you want to open a session?");
 | 
						|
        if (a != 65536) {
 | 
						|
            var f = getOpenFileNames(core.mainWindow, "Choose a session", "", "All projects (*.qws *.pro)");
 | 
						|
            if (f == null)
 | 
						|
                return;
 | 
						|
            var o = projectExplorer.openProject(f);
 | 
						|
            return;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    if (yesNoQuestion(core.mainWindow, "Build manager", "Do you want run a command using build mananger?") !=  65536) {
 | 
						|
        var cmd = new BuildManagerCommand("ls", "-l");
 | 
						|
        var cmds =new Array(cmd);
 | 
						|
        core.messageManager.printToOutputPane("Let build mananger run a command " + cmds + "  (see compile window)");
 | 
						|
        projectExplorer.buildManager.start(cmds);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
// --------------- MAIN
 | 
						|
 | 
						|
var features = new Array("Input dialogs",
 | 
						|
                         "File dialogs",
 | 
						|
                         "Messages",
 | 
						|
                         "Project Explorer",
 | 
						|
                         "Message Manager",
 | 
						|
                         "Wizard",
 | 
						|
                         "Editor manager",
 | 
						|
                         "File manager",
 | 
						|
                         "Introspect",
 | 
						|
                         "Widgets magic",
 | 
						|
                         "Debugger");
 | 
						|
 | 
						|
core.messageManager.printToOutputPane(" +++ demo.js " + Date());
 | 
						|
 | 
						|
while (1) {
 | 
						|
    var f = getItem(core.mainWindow, "Choose a demo",  "Available demos", features, 0);
 | 
						|
    if (f == null)
 | 
						|
       return;
 | 
						|
 | 
						|
    while (1) {
 | 
						|
        if (f == features[0]) {
 | 
						|
            demoInputDialogs();
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        if (f == features[1]) {
 | 
						|
            demoFileDialogs();
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        if (f == features[2]) {
 | 
						|
            demoMessageBoxes();
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        if (f == features[3]) {
 | 
						|
            demoProjectExplorer();
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        if (f == features[4]) {
 | 
						|
            core.messageManager.printToOutputPane("Hi there!",1);
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        if (f == features[5]) {
 | 
						|
            demoWizard();
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        if (f == features[6]) {
 | 
						|
            demoEditorManager();
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        if (f == features[7]) {
 | 
						|
            demoFileManager();
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        if (f == features[8]) {
 | 
						|
            demoIntrospect();
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        if (f == features[9]) {
 | 
						|
            demoWidgets();
 | 
						|
            break;
 | 
						|
        }
 | 
						|
 | 
						|
        if (f == features[10]) {
 | 
						|
            demoDebugger();
 | 
						|
            break;
 | 
						|
        }
 | 
						|
        break;
 | 
						|
    }
 | 
						|
}
 |