Exemplo n.º 1
0
void ApplicationManager::setFileSystem(const char *fileSystem) {
	std::vector<std::string> result;
	pystring::split(fileSystem, result, "|");

//	gvfs_setZipFiles(result[0].c_str(), result[1].c_str(), result[2].c_str());

	for (size_t i = 3; i < result.size(); i += 4) {
		gvfs_addFile(result[i].c_str(), atoi(result[i + 1].c_str()),
				atoi(result[i + 2].c_str()), atoi(result[i + 3].c_str()));
		glog_v("%s %d %d %d", result[i].c_str(), atoi(result[i + 1].c_str()),
				atoi(result[i + 2].c_str()), atoi(result[i + 3].c_str()));
	}

	setDocumentsDirectory(internalDir_.c_str());
	setTemporaryDirectory(cacheDir_.c_str());
}
Exemplo n.º 2
0
void g_setProperty(const char* what, const char* arg) {

    QString argGet = QString::fromUtf8(arg);
    int arg1 = 0;
    int arg2 = 0;
    int arg3 = 0;
    QString argString = "";

    if ( g_checkStringProperty(true,what)) {
        argString = argGet;
        argString.replace("\\","\\\\");
    } else {
        QStringList arrayArg = argGet.split("|",QString::KeepEmptyParts);
        arg1 = arrayArg.at(0).toInt();
        arg2 = arrayArg.at(1).toInt();
        arg3 = arrayArg.at(2).toInt();
    }



    /*------------------------------------------------------------------*/
    if (strcmp(what, "cursor") == 0)
    {
        QStringList acceptedValue;
        acceptedValue << "arrow" << "upArrow" << "cross" << "wait" << "IBeam";
        acceptedValue << "sizeVer" << "sizeHor" << "sizeBDiag" << "sizeFDiag" << "sizeAll";
        acceptedValue << "blank" << "splitV" << "splitH" << "pointingHand" << "forbidden";
        acceptedValue << "whatsThis" << "busy" << "openHand" << "closedHand" << "dragCopy";
        acceptedValue << "dragMove" << "dragLink";
        // value of cursor also taken from index of the text, do not change the list

        if (acceptedValue.contains(argString)) {
            arg1 = acceptedValue.indexOf(argString);
            MainWindow::getInstance()->setCursor((Qt::CursorShape) arg1);
        } else {
            QString info = "Accepted value for ";
            info.append(what);
            info.append(" :");
            MainWindow::getInstance()->printToOutput(info.toStdString().c_str());
            for( int i=0; i<acceptedValue.size(); ++i ) {
                MainWindow::getInstance()->printToOutput( QString("- ").append(acceptedValue.at(i)).toStdString().c_str() );
            }
        }


        /*------------------------------------------------------------------*/
    } else if (strcmp(what, "windowPosition") == 0)
    {
        MainWindow::getInstance()->move(arg1,arg2);

        /*------------------------------------------------------------------*/
    } else if (strcmp(what, "windowSize") == 0)
    {
        MainWindow::getInstance()->resizeWindow(arg1,arg2);


        /*------------------------------------------------------------------*/
    } else if (strcmp(what, "minimumSize") == 0)
    {
        MainWindow::getInstance()->setMinimumSize(QSize(arg1,arg2));

        /*------------------------------------------------------------------*/
    } else if (strcmp(what, "maximumSize") == 0)
    {
        MainWindow::getInstance()->setMaximumSize(QSize(arg1,arg2));

        /*------------------------------------------------------------------*/
    } else if (strcmp(what, "windowColor") == 0)
    {
        if (arg1 > 255) {
            arg1 = 255;
        }
        else if(arg1 < 0) {
            arg1 = 255;
        }
        if (arg2 > 255) {
            arg2 = 255;
        }
        else if(arg2 < 0) {
            arg2 = 255;
        }
        if (arg3 > 255) {
            arg3 = 255;
        }
        else if(arg3 < 0) {
            arg3 = 255;
        }
        QPalette palette;
        QColor backgroundColor = QColor(arg1, arg2, arg3);
        palette.setColor(QPalette::Window, backgroundColor);
        MainWindow::getInstance()->setPalette(palette);

        /*------------------------------------------------------------------*/
    } else if (strcmp(what, "windowTitle") == 0)
    {
        MainWindow::getInstance()->setWindowTitle(argString);

        /*------------------------------------------------------------------*/
    } else if (strcmp(what, "windowModel") == 0)
    {
        QStringList acceptedValue;
        acceptedValue << "reset" << "stayOnTop" << "stayOnBottom" << "frameless" << "noTitleBar";
        acceptedValue << "noButton" << "onlyMinimize" << "onlyMaximize" << "onlyClose" << "noMinimize";
        acceptedValue << "noMaximize" << "noClose" << "helpButton";

        if (acceptedValue.contains(argString)) {
            Qt::WindowFlags flags = MainWindow::getInstance()->windowFlags();

            if (argString == "reset") {
                flags = Qt::Window;
            } else if (argString == "stayOnTop") {
                flags |= Qt::WindowStaysOnTopHint;
            } else if (argString == "stayOnBottom") {
                flags |= Qt::WindowStaysOnBottomHint;
            } else if (argString == "frameless") {
                flags |= Qt::FramelessWindowHint;
            } else if (argString == "noTitleBar") {
                flags = Qt::Window;
                flags |= Qt::CustomizeWindowHint;
            } else if (argString == "noButton") {
                flags = Qt::Window;
                flags |= Qt::WindowTitleHint;
            } else if (argString == "noClose") {
                flags = Qt::Window;
                flags |= Qt::WindowMinimizeButtonHint;
            } else if (argString == "onlyMaximize") {
                flags = Qt::Window;
                flags |= Qt::WindowMaximizeButtonHint;
            } else if (argString == "onlyClose") {
                flags = Qt::Window;
                flags |= Qt::WindowCloseButtonHint;
            } else if (argString == "noMinimize") {
                flags = Qt::Window;
                flags |= Qt::WindowMaximizeButtonHint;
                flags |= Qt::WindowCloseButtonHint;
            } else if (argString == "noMaximize") {
                flags = Qt::Window;
                flags |= Qt::WindowMinimizeButtonHint;
                flags |= Qt::WindowCloseButtonHint;
            } else if (argString == "noClose") {
                flags = Qt::Window;
                flags |= Qt::WindowMinimizeButtonHint;
                flags |= Qt::WindowMaximizeButtonHint;
            } else if (argString == "helpButton") {
                flags = Qt::Window;
                flags |= Qt::WindowContextHelpButtonHint;
                flags |= Qt::WindowCloseButtonHint;
            }

            MainWindow::getInstance()->setWindowFlags(flags);
            if (MainWindow::getInstance()->fullScreen()) {
                MainWindow::getInstance()->showFullScreen();
            } else {
                MainWindow::getInstance()->showNormal();
            }

        } else {

            QString info = "Accepted value for ";
            info.append(what);
            info.append(" :");
            MainWindow::getInstance()->printToOutput(info.toStdString().c_str());
            for( int i=0; i<acceptedValue.size(); ++i ) {
                MainWindow::getInstance()->printToOutput( QString("- ").append(acceptedValue.at(i)).toStdString().c_str() );
            }
        }

        /*------------------------------------------------------------------*/
    } else if (strcmp(what, "cursorPosition") == 0)
    {
        QCursor::setPos(arg1,arg2);


        /*------------------------------------------------------------------*/
    } else if (strcmp(what, "clipboard") == 0)
    {
        QClipboard *clipboard = QApplication::clipboard();
        clipboard->setText(argString);

        /*------------------------------------------------------------------*/
    } else if (strcmp(what, "mkDir") == 0)
    {
        QStringList argSplit = argString.split("|",QString::KeepEmptyParts);
        if(argSplit.size() == 1) {

            MainWindow::getInstance()->printToOutput("[[Usage Example]]");
            MainWindow::getInstance()->printToOutput("application:set(\"mkDir\",application:get(\"directory\",\"executable\")..\"|dirName\")");
        } else {
            QDir dirPath = QDir::temp();
            dirPath.setPath(argSplit.at(0));
            dirPath.mkdir(argSplit.at(1));
        }

        /*------------------------------------------------------------------*/
    } else if (strcmp(what, "documentDirectory") == 0)
    {
        setDocumentsDirectory(argString.toStdString().c_str());
        /*------------------------------------------------------------------*/
    } else if (strcmp(what, "temporaryDirectory") == 0)
    {
        setTemporaryDirectory(argString.toStdString().c_str());

    } else {

        // feel free to change this list
        QStringList acceptedWhat;
        acceptedWhat << "windowPosition(x,y)";
        acceptedWhat << "windowSize(w,h)";
        acceptedWhat << "minimumSize(w,h)";
        acceptedWhat << "maximumSize(w,h)";
        acceptedWhat << "windowColor(r,g,b)";
        acceptedWhat << "windowTitle(text)";
        acceptedWhat << "windowModel(type//help)";
        acceptedWhat << "cursor(type//help)";
        acceptedWhat << "cursorPosition(x,y)";
        acceptedWhat << "clipboard(text)";
        acceptedWhat << "mkdir(path|dirName//help)";
        acceptedWhat << "documentDirectory(path)";
        acceptedWhat << "temporaryDirectory(path)";

        MainWindow::getInstance()->printToOutput("Accepted value for Desktop's application:set()");
        for( int i=0; i<acceptedWhat.size(); ++i ) {
            MainWindow::getInstance()->printToOutput( QString("- ").append(acceptedWhat.at(i)).toStdString().c_str() );
        }
    }
}
Exemplo n.º 3
0
void ApplicationManager::play(const char *gapp) {
	FILE *fd=fopen(gapp,"rb");
	if (!fd) return; //No file/not openable
	fseek(fd,0,SEEK_END);
	long pksz=ftell(fd);
	if (pksz < 16)
		return; //Invalid file size
	struct {
		uint32_t flistOffset;
		uint32_t version;
		char signature[8];
	} PACKED tlr;
	fseek(fd,pksz - 16,SEEK_SET);
	fread(&tlr,1,16,fd);
	tlr.version = BIGENDIAN4(tlr.version);
	tlr.flistOffset = BIGENDIAN4(tlr.flistOffset);
	if ((!strncmp(tlr.signature, "GiDeRoS", 7)) && (tlr.version == 0)) {
		glog_v("GAPP-ARCH: %s", gapp);
		gvfs_setZipFile(gapp);
		char *buffer = (char *) malloc(pksz - tlr.flistOffset);
		fseek(fd,tlr.flistOffset,SEEK_SET);
		fread(buffer, 1,pksz - tlr.flistOffset,fd);
		int offset = 0;
		while (offset < (pksz - tlr.flistOffset)) {
			int plen = strlen(buffer + offset);
			if (!plen)
				break; //End of list
			uint32_t foffset=PBULONG(buffer + offset + plen + 1);
			uint32_t fsize=PBULONG(buffer + offset + plen + 1+sizeof(uint32_t));
			const char *norm = gpath_normalizeArchivePath(buffer + offset);
			gvfs_addFile(norm, 0, foffset, fsize);
			//glog_d("GAPP-FILE: %s,%d,%d", norm, foffset, fsize);
			offset += (plen + 1 + 2 * sizeof(uint32_t));
		}
		free(buffer);
	} else
		glog_w("GAPP: Invalid signature/version");
	fclose(fd);

	if (running_ == true) {
		Event event(Event::APPLICATION_EXIT);
		GStatus status;
		application_->broadcastEvent(&event, &status);
		running_ = false;
	}

	std::string gappfile=gapp;
	std::string projectName=gappfile.substr(0,gappfile.find_last_of('.')-1);


	const char* documentsDirectory;
	const char* temporaryDirectory;

	std::string dir = "/";

	std::string documents = dir + "documents"+appPath;
	std::string temporary = dir + "temporary";
	_mkdir(documents.c_str());
	_mkdir(temporary.c_str());

	glog_v("documents: %s", documents.c_str());
	glog_v("temporary: %s", temporary.c_str());

	mkdir(documents.c_str(), 0755);
	mkdir(temporary.c_str(), 0755);

	setDocumentsDirectory(documents.c_str());
	setTemporaryDirectory(temporary.c_str());
	setResourceDirectory("");

	loadProperties();
	loadLuaFiles();
}