void MainWindow::on_action_setingResource_triggered() { QString path = QFileDialog::getExistingDirectory(this, tr("Seting Image"), ConfigFile::getInstance()->getResourcesPath()); if(path.isEmpty() == false){ setResourcePath(path); } }
void MainWindow::loadIni() { QString path = QDir::tempPath() + "/" + "game.ini"; QFile file(path); if(file.open(QFile::ReadWrite|QFile::Text)) { setResourcePath(file.readAll().data()); file.close(); } }
ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) : QFrame(parent), m_iconProvider(m_resIconSize), m_itemIconSize(24, 24), m_resIconSize(24, 24), m_itemsView(new QDeclarativeView(this)), m_resourcesView(new Internal::ItemLibraryTreeView(this)), m_filterFlag(QtBasic) { setWindowTitle(tr("Library", "Title of library view")); /* create Items view and its model */ m_itemsView->setAttribute(Qt::WA_OpaquePaintEvent); m_itemsView->setAttribute(Qt::WA_NoSystemBackground); m_itemsView->setAcceptDrops(false); m_itemsView->setFocusPolicy(Qt::ClickFocus); m_itemsView->setResizeMode(QDeclarativeView::SizeRootObjectToView); m_itemLibraryModel = new Internal::ItemLibraryModel(QDeclarativeEnginePrivate::getScriptEngine(m_itemsView->engine()), this); m_itemLibraryModel->setItemIconSize(m_itemIconSize); QDeclarativeContext *rootContext = m_itemsView->rootContext(); rootContext->setContextProperty(QLatin1String("itemLibraryModel"), m_itemLibraryModel.data()); rootContext->setContextProperty(QLatin1String("itemLibraryIconWidth"), m_itemIconSize.width()); rootContext->setContextProperty(QLatin1String("itemLibraryIconHeight"), m_itemIconSize.height()); QColor highlightColor = palette().highlight().color(); if (0.5*highlightColor.saturationF()+0.75-highlightColor.valueF() < 0) highlightColor.setHsvF(highlightColor.hsvHueF(),0.1 + highlightColor.saturationF()*2.0, highlightColor.valueF()); m_itemsView->rootContext()->setContextProperty(QLatin1String("highlightColor"), highlightColor); // loading the qml has to come after all needed context properties are set m_itemsView->setSource(QUrl("qrc:/ItemLibrary/qml/ItemsView.qml")); QDeclarativeItem *rootItem = qobject_cast<QDeclarativeItem*>(m_itemsView->rootObject()); connect(rootItem, SIGNAL(itemSelected(int)), this, SLOT(showItemInfo(int))); connect(rootItem, SIGNAL(itemDragged(int)), this, SLOT(startDragAndDrop(int))); connect(this, SIGNAL(scrollItemsView(QVariant)), rootItem, SLOT(scrollView(QVariant))); connect(this, SIGNAL(resetItemsView()), rootItem, SLOT(resetView())); /* create Resources view and its model */ m_resourcesFileSystemModel = new QFileSystemModel(this); m_resourcesFileSystemModel->setIconProvider(&m_iconProvider); m_resourcesView->setModel(m_resourcesFileSystemModel.data()); m_resourcesView->setIconSize(m_resIconSize); /* create image provider for loading item icons */ m_itemsView->engine()->addImageProvider(QLatin1String("qmldesigner_itemlibrary"), new Internal::ItemLibraryImageProvider); /* other widgets */ QTabBar *tabBar = new QTabBar(this); tabBar->addTab(tr("Items", "Title of library items view")); tabBar->addTab(tr("Resources", "Title of library resources view")); tabBar->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); m_lineEdit = new Utils::FilterLineEdit(this); m_lineEdit->setObjectName(QLatin1String("itemLibrarySearchInput")); m_lineEdit->setPlaceholderText(tr("<Filter>", "Library search input hint text")); m_lineEdit->setDragEnabled(false); m_lineEdit->setMinimumWidth(75); m_lineEdit->setTextMargins(0, 0, 20, 0); QWidget *lineEditFrame = new QWidget(this); lineEditFrame->setObjectName(QLatin1String("itemLibrarySearchInputFrame")); QGridLayout *lineEditLayout = new QGridLayout(lineEditFrame); lineEditLayout->setMargin(2); lineEditLayout->setSpacing(0); lineEditLayout->addItem(new QSpacerItem(5, 3, QSizePolicy::Fixed, QSizePolicy::Fixed), 0, 0, 1, 3); lineEditLayout->addItem(new QSpacerItem(5, 5, QSizePolicy::Fixed, QSizePolicy::Fixed), 1, 0); lineEditLayout->addWidget(m_lineEdit.data(), 1, 1, 1, 1); lineEditLayout->addItem(new QSpacerItem(5, 5, QSizePolicy::Fixed, QSizePolicy::Fixed), 1, 2); connect(m_lineEdit.data(), SIGNAL(filterChanged(QString)), this, SLOT(setSearchFilter(QString))); m_stackedWidget = new QStackedWidget(this); m_stackedWidget->addWidget(m_itemsView.data()); m_stackedWidget->addWidget(m_resourcesView.data()); connect(tabBar, SIGNAL(currentChanged(int)), m_stackedWidget.data(), SLOT(setCurrentIndex(int))); connect(tabBar, SIGNAL(currentChanged(int)), this, SLOT(updateSearch())); QWidget *spacer = new QWidget(this); spacer->setObjectName(QLatin1String("itemLibrarySearchInputSpacer")); spacer->setFixedHeight(4); QGridLayout *layout = new QGridLayout(this); layout->setContentsMargins(0, 0, 0, 0); layout->setSpacing(0); layout->addWidget(tabBar, 0, 0, 1, 1); layout->addWidget(spacer, 1, 0); layout->addWidget(lineEditFrame, 2, 0, 1, 1); layout->addWidget(m_stackedWidget.data(), 3, 0, 1, 1); setResourcePath(QDir::currentPath()); setSearchFilter(QString()); /* style sheets */ setStyleSheet(QLatin1String(Utils::FileReader::fetchQrc(":/qmldesigner/stylesheet.css"))); m_resourcesView->setStyleSheet( QLatin1String(Utils::FileReader::fetchQrc(":/qmldesigner/scrollbar.css"))); }
ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) : QFrame(parent), m_itemIconSize(24, 24), m_resIconSize(24, 24), m_iconProvider(m_resIconSize), m_itemsView(new QQuickView()), m_resourcesView(new ItemLibraryTreeView(this)), m_filterFlag(QtBasic) { ItemLibraryModel::registerQmlTypes(); setWindowTitle(tr("Library", "Title of library view")); /* create Items view and its model */ m_itemsView->setResizeMode(QQuickView::SizeRootObjectToView); m_itemLibraryModel = new ItemLibraryModel(this); QQmlContext *rootContext = m_itemsView->rootContext(); rootContext->setContextProperty(QStringLiteral("itemLibraryModel"), m_itemLibraryModel.data()); rootContext->setContextProperty(QStringLiteral("itemLibraryIconWidth"), m_itemIconSize.width()); rootContext->setContextProperty(QStringLiteral("itemLibraryIconHeight"), m_itemIconSize.height()); rootContext->setContextProperty(QStringLiteral("rootView"), this); m_itemsView->rootContext()->setContextProperty(QStringLiteral("highlightColor"), Utils::StyleHelper::notTooBrightHighlightColor()); /* create Resources view and its model */ m_resourcesFileSystemModel = new QFileSystemModel(this); m_resourcesFileSystemModel->setIconProvider(&m_iconProvider); m_resourcesView->setModel(m_resourcesFileSystemModel.data()); m_resourcesView->setIconSize(m_resIconSize); /* create image provider for loading item icons */ m_itemsView->engine()->addImageProvider(QStringLiteral("qmldesigner_itemlibrary"), new Internal::ItemLibraryImageProvider); /* other widgets */ QTabBar *tabBar = new QTabBar(this); tabBar->addTab(tr("QML Types", "Title of library QML types view")); tabBar->addTab(tr("Resources", "Title of library resources view")); tabBar->addTab(tr("Imports", "Title of library imports view")); tabBar->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); connect(tabBar, SIGNAL(currentChanged(int)), this, SLOT(setCurrentIndexOfStackedWidget(int))); connect(tabBar, SIGNAL(currentChanged(int)), this, SLOT(updateSearch())); m_filterLineEdit = new Utils::FancyLineEdit(this); m_filterLineEdit->setObjectName(QStringLiteral("itemLibrarySearchInput")); m_filterLineEdit->setPlaceholderText(tr("<Filter>", "Library search input hint text")); m_filterLineEdit->setDragEnabled(false); m_filterLineEdit->setMinimumWidth(75); m_filterLineEdit->setTextMargins(0, 0, 20, 0); m_filterLineEdit->setFiltering(true); QWidget *lineEditFrame = new QWidget(this); lineEditFrame->setObjectName(QStringLiteral("itemLibrarySearchInputFrame")); QGridLayout *lineEditLayout = new QGridLayout(lineEditFrame); lineEditLayout->setMargin(2); lineEditLayout->setSpacing(0); lineEditLayout->addItem(new QSpacerItem(5, 3, QSizePolicy::Fixed, QSizePolicy::Fixed), 0, 0, 1, 3); lineEditLayout->addItem(new QSpacerItem(5, 5, QSizePolicy::Fixed, QSizePolicy::Fixed), 1, 0); lineEditLayout->addWidget(m_filterLineEdit.data(), 1, 1, 1, 1); lineEditLayout->addItem(new QSpacerItem(5, 5, QSizePolicy::Fixed, QSizePolicy::Fixed), 1, 2); connect(m_filterLineEdit.data(), SIGNAL(filterChanged(QString)), this, SLOT(setSearchFilter(QString))); QWidget *container = createWindowContainer(m_itemsView.data()); m_stackedWidget = new QStackedWidget(this); m_stackedWidget->addWidget(container); m_stackedWidget->addWidget(m_resourcesView.data()); QWidget *spacer = new QWidget(this); spacer->setObjectName(QStringLiteral("itemLibrarySearchInputSpacer")); spacer->setFixedHeight(4); QGridLayout *layout = new QGridLayout(this); layout->setContentsMargins(0, 0, 0, 0); layout->setSpacing(0); layout->addWidget(tabBar, 0, 0, 1, 1); layout->addWidget(spacer, 1, 0); layout->addWidget(lineEditFrame, 2, 0, 1, 1); layout->addWidget(m_stackedWidget.data(), 3, 0, 1, 1); setResourcePath(QDir::currentPath()); setSearchFilter(QString()); /* style sheets */ setStyleSheet(QString::fromUtf8(Utils::FileReader::fetchQrc(":/qmldesigner/stylesheet.css"))); m_resourcesView->setStyleSheet(QString::fromUtf8(Utils::FileReader::fetchQrc(":/qmldesigner/scrollbar.css"))); m_qmlSourceUpdateShortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_F5), this); connect(m_qmlSourceUpdateShortcut, SIGNAL(activated()), this, SLOT(reloadQmlSource())); // init the first load of the QML UI elements reloadQmlSource(); }
static int py2app_main(int argc, char * const *argv, char * const *envp) { CFArrayRef pyLocations; CFStringRef pyLocation; CFStringRef mainScript; CFStringRef pythonInterpreter; char *resource_path; char buf[PATH_MAX]; char c_pythonInterpreter[PATH_MAX]; char c_mainScript[PATH_MAX]; char **argv_new; struct stat sb; void *py_dylib; int rval; FILE *mainScriptFile; char* curenv = NULL; char* curlocale = NULL; if (getenv("PYTHONOPTIMIZE") != NULL) { unsetenv("PYTHONOPTIMIZE"); } if (getenv("PYTHONDEBUG") != NULL) { unsetenv("PYTHONDEBUG"); } if (getenv("PYTHONDONTWRITEBYTECODE") != NULL) { unsetenv("PYTHONDONTWRITEBYTECODE"); } if (getenv("PYTHONIOENCODING") != NULL) { unsetenv("PYTHONIOENCODING"); } if (getenv("PYTHONDUMPREFS") != NULL) { unsetenv("PYTHONDUMPREFS"); } if (getenv("PYTHONMALLOCSTATS") != NULL) { unsetenv("PYTHONMALLOCSTATS"); } /* Ensure that the interpreter won't try to write bytecode files * Two reasons: * - Apps are often read-only for users * - Writing byte-code will be blocked by the sandbox * when running a sandboxed application. */ setenv("PYTHONDONTWRITEBYTECODE", "1", 1); #ifndef PY2APP_SECONDARY /* * Force stdout/stderr to be unbuffered, needed when using the ASL * output redirection because Python 3's IO library won't use * line buffering with that. */ setenv("PYTHONUNBUFFERED", "1", 1); #endif if (!py2app_getApplicationName()) return report_error(ERR_NONAME); pyLocations = (CFArrayRef)py2app_getKey("PyRuntimeLocations"); if (!pyLocations) return report_error(ERR_PYRUNTIMELOCATIONS); pyLocation = py2app_findPyLocation(pyLocations); if (!pyLocation) return report_error(ERR_NOPYTHONRUNTIME); setExecutablePath(); setResourcePath(); /* check for ':' in path, not compatible with Python due to Py_GetPath */ /* XXX: Could work-around by creating something in /tmp I guess */ resource_path = getenv("RESOURCEPATH"); if ((resource_path == NULL) || (strchr(resource_path, ':') != NULL)) { return report_error(ERR_COLONPATH); } py2app_setPythonPath(); setenv("ARGVZERO", argv[0], 1); /* Clear unwanted environment variable that could be set * by a PyObjC bundle in a parent process. Not clearing causes * problems in PyObjC. */ if (getenv("PYOBJC_BUNDLE_ADDRESS") != NULL) { unsetenv("PYOBJC_BUNDLE_ADDRESS"); } snprintf(buf, sizeof(buf)-1, "PYOBJC_BUNDLE_ADDRESS%ld", (long)getpid()); if (getenv(buf) != NULL) { unsetenv(buf); } mainScript = getMainScript(); if (!mainScript) return report_error(ERR_NOPYTHONSCRIPT); pythonInterpreter = getPythonInterpreter(pyLocation); py2app_CFStringGetCString( pythonInterpreter, c_pythonInterpreter, sizeof(c_pythonInterpreter), kCFStringEncodingUTF8); py2app_CFRelease(pythonInterpreter); if (lstat(c_pythonInterpreter, &sb) == 0) { if (!((sb.st_mode & S_IFLNK) == S_IFLNK)) { setenv("PYTHONHOME", resource_path, 1); } } py2app_CFStringGetCString(pyLocation, buf, sizeof(buf), kCFStringEncodingUTF8); py_dylib = dlopen(buf, RTLD_LAZY); if (!py_dylib) return report_linkEdit_error(); #define LOOKUP(NAME) \ NAME ## Ptr py2app_ ## NAME = (NAME ## Ptr)dlsym(py_dylib, #NAME); \ if (!py2app_ ## NAME) { \ return report_linkEdit_error(); \ } #define OPT_LOOKUP(NAME) \ NAME ## Ptr py2app_ ## NAME = (NAME ## Ptr)dlsym(py_dylib, #NAME); LOOKUP(Py_SetProgramName); LOOKUP(Py_Initialize); LOOKUP(PyRun_SimpleFile); LOOKUP(Py_Finalize); LOOKUP(PySys_GetObject); LOOKUP(PySys_SetArgv); LOOKUP(PyObject_GetAttrString); LOOKUP(Py_BuildValue); #if 0 OPT_LOOKUP(Py_SetPath); #endif OPT_LOOKUP(_Py_DecodeUTF8_surrogateescape); LOOKUP(PySys_SetObject); int isPy3K = dlsym(py_dylib, "PyBytes_FromString") != NULL; #undef OPT_LOOKUP #undef LOOKUP if (isPy3K) { /* * When apps are started from the Finder (or anywhere * except from the terminal), the LANG and LC_* variables * aren't set in the environment. This confuses Py_Initialize * when it tries to import the codec for UTF-8, * therefore explicitly set the locale. * * Also set the LC_CTYPE environment variable because Py_Initialize * resets the locale information using the environment :-( */ curlocale = setlocale(LC_ALL, NULL); if (curlocale != NULL) { curlocale = strdup(curlocale); if (curlocale == NULL) { (void)report_error("cannot save locale information"); return -1; } } setlocale(LC_ALL, "en_US.UTF-8"); curenv = getenv("LC_CTYPE"); if (curenv == NULL) { setenv("LC_CTYPE", "en_US.UTF-8", 1); } wchar_t w_pythonInterpreter[PATH_MAX+1]; mbstowcs(w_pythonInterpreter, c_pythonInterpreter, PATH_MAX+1); py2app_Py_SetProgramName((char*)w_pythonInterpreter); } else { py2app_Py_SetProgramName(c_pythonInterpreter); } py2app_Py_Initialize(); /* * Reset the environment and locale information */ if (isPy3K) { if (curenv == NULL) { unsetenv("LC_CTYPE"); } setlocale(LC_CTYPE, curlocale); free(curlocale); } py2app_CFStringGetCString( mainScript, c_mainScript, sizeof(c_mainScript), kCFStringEncodingUTF8); py2app_CFRelease(mainScript); if (isPy3K) { int i; argv_new = alloca((argc+1) * sizeof(wchar_t)); argv_new[argc] = NULL; argv_new[0] = (char*)py2app__Py_DecodeUTF8_surrogateescape(c_mainScript, strlen(c_mainScript)); for (i = 1; i < argc; i++) { argv_new[i] = (char*)py2app__Py_DecodeUTF8_surrogateescape(argv[i], strlen(argv[i])); } } else { argv_new = alloca((argc + 1) * sizeof(char *)); argv_new[argc] = NULL; argv_new[0] = c_mainScript; memcpy(&argv_new[1], &argv[1], (argc - 1) * sizeof(char *)); } py2app_PySys_SetArgv(argc, argv_new); mainScriptFile = fopen(c_mainScript, "r"); rval = py2app_PyRun_SimpleFile(mainScriptFile, c_mainScript); fclose(mainScriptFile); if (rval) { rval = report_script_error(ERR_PYTHONEXCEPTION); } py2app_Py_Finalize(); return rval; }
ResourceWeb::ResourceWeb(const QString &url, QWidget *parent) :QWidget(parent) { Logger::getInstance()->writeToFile("ResourceWeb::ResourceWeb"); setResourcePath(url); setAttribute(Qt::WA_DeleteOnClose); }