Пример #1
0
ProjectData_struct*ProjLoad_loadProjectDataFromSavedProject(const char* projectName)
{
    String plistPath = savedProjectsFolder + '/' + projectName + "/project.plist";
    void* plistDict = ProjLoad_loadAllocatedPlist(plistPath);
    if(plistDict==NULL)
    {
        showSimpleMessageBox("Error loading ProjectData", (String)"Problem occured loading project.plist from saved project " + projectName);
        return NULL;
    }
    ProjectData_struct*projData = ProjLoad_loadProjectDataFromNSDictionary(plistDict);
    if(projData==NULL)
    {
        id_release(plistDict);
        return NULL;
    }
    String settingsPath = savedProjectsFolder + '/' + projectName + "/settings.plist";
    void* settingsPlist = ProjLoad_loadAllocatedPlist(settingsPath);
    if(settingsPlist!=NULL)
    {
        ProjectSettings_struct* projSettings = ProjLoad_loadProjectSettingsFromNSDictionary(settingsPlist);
        if(projSettings!=NULL)
        {
            ((ProjectData*)projData->data)->getProjectSettings() = *((ProjectSettings*)projSettings->data);
            String sdk = ProjectSettings_getSDK(projSettings);
            if(!Global_checkSDKFolderValid(sdk))
            {
                ((ProjectData*)projData->data)->getProjectSettings().setSDK(GlobalPreferences_getDefaultSDK());
            }
        }
        ProjectSettings_destroyInstance(projSettings);
        id_release(settingsPlist);
    }

    ProjectData_setFolderName(projData, projectName);

    FileTools::createDirectory(savedProjectsFolder+'/'+projectName+"/src");
    FileTools::createDirectory(savedProjectsFolder+'/'+projectName+"/res");
    FileTools::createDirectory(savedProjectsFolder+'/'+projectName+"/ext");
    FileTools::createDirectory(savedProjectsFolder+'/'+projectName+"/bin");
    FileTools::createDirectory(savedProjectsFolder+'/'+projectName+"/bin/build");
    FileTools::createDirectory(savedProjectsFolder+'/'+projectName+"/bin/release");

    String buildInfoPath = savedProjectsFolder + '/' + projectName + "/bin/build/buildinfo.plist";
    void* buildInfoPlist = ProjLoad_loadAllocatedPlist(buildInfoPath);
    if(buildInfoPlist!=NULL)
    {
        ProjectBuildInfo_struct* projBuildInfo = ProjLoad_loadProjectBuildInfoFromNSDictionary(buildInfoPlist);
        if(projBuildInfo!=NULL)
        {
            ((ProjectData*)projData->data)->getProjectBuildInfo() = *((ProjectBuildInfo*)projBuildInfo->data);
        }
        ProjectBuildInfo_destroyInstance(projBuildInfo);
        id_release(buildInfoPlist);
    }

    id_release(plistDict);
    return projData;
}
Пример #2
0
bool GlobalPreferences_load()
{
	String settingsPath = (String)getenv("HOME") + "/Library/Preferences/" + bundleID + ".plist";
	void*dict = ProjLoad_loadAllocatedPlist(settingsPath);
	if(dict!=NULL)
	{
		void* sdk = NSDictionary_objectForKey(dict, "DefaultSDK");
		if(sdk!=NULL)
		{
			defaultSDK = NSString_UTF8String(sdk);
			//make sure sdk is valid
			if(!Global_checkSDKFolderValid(defaultSDK))
			{
				defaultSDK = "";
			}
		}
		
		void* editorFont = NSDictionary_objectForKey(dict, "EditorFont");
		if(editorFont!=NULL)
		{
			codeEditorFont = NSString_UTF8String(editorFont);
			//TODO check and make sure font is valid
		}
		
		void* editorFontSize = NSDictionary_objectForKey(dict, "EditorFontSize");
		if(editorFontSize!=NULL)
		{
			codeEditorFontSize = NSNumber_intValue(editorFontSize);
			if(codeEditorFontSize < CODEEDITOR_MINFONTSIZE)
			{
				codeEditorFontSize = CODEEDITOR_MINFONTSIZE;
			}
			else if(codeEditorFontSize > CODEEDITOR_MAXFONTSIZE)
			{
				codeEditorFontSize = CODEEDITOR_MAXFONTSIZE;
			}
		}
		
		void* installedAppsArray = NSDictionary_objectForKey(dict, "InstalledApps");
		if(installedAppsArray!=NULL)
		{
			installedApps.clear();
			for(unsigned int i=0; i<NSArray_count(installedAppsArray); i++)
			{
				void*appName = NSArray_objectAtIndex(installedAppsArray, i);
				installedApps.add(NSString_UTF8String(appName));
			}
		}
		
		bool resave = false;
		void* latestVersion = NSDictionary_objectForKey(dict, "LatestVersion");
		if(latestVersion!=NULL)
		{
			double version = NSNumber_doubleValue(latestVersion);
			if(version!=currentVersion)
			{
				resave = true;
				showSimpleMessageBox("miniCode", versionMessage);
			}
		}
		else
		{
			resave = true;
			showSimpleMessageBox("miniCode", versionMessage);
		}
		
		id_release(dict);
		if(resave)
		{
			return GlobalPreferences_save();
		}
		return true;
	}
	else
	{
		showSimpleMessageBox("miniCode", versionMessage);
		return GlobalPreferences_save();
	}
	return false;
}