亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? actions.cpp

?? celestia源代碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
{	setLabelMode(app, Renderer::SpacecraftLabels, gtk_toggle_action_get_active(action));}void actionLabelStars(GtkToggleAction* action, AppData* app){	setLabelMode(app, Renderer::StarLabels, gtk_toggle_action_get_active(action));}/* Script opening helper called by actionOpenScript() */static void openScript(const char* filename, AppData* app){	/* Modified From Win32 HandleOpenScript */	if (filename)	{		/* If you got here, a path and file has been specified.		 * filename contains full path to specified file. */		ContentType type = DetermineFileType(filename);		if (type == Content_CelestiaScript)		{			app->core->runScript(filename);		}		else if (type == Content_CelestiaLegacyScript)		{			ifstream scriptfile(filename);			if (!scriptfile.good())			{				GtkWidget* errBox = gtk_message_dialog_new(GTK_WINDOW(app->mainWindow),				                                           GTK_DIALOG_DESTROY_WITH_PARENT,				                                           GTK_MESSAGE_ERROR,				                                           GTK_BUTTONS_OK,				                                           "Error opening script file.");				gtk_dialog_run(GTK_DIALOG(errBox));				gtk_widget_destroy(errBox);			}			else			{				CommandParser parser(scriptfile);				CommandSequence* script = parser.parse();				if (script == NULL)				{					const vector<string>* errors = parser.getErrors();					const char* errorMsg = "";					if (errors->size() > 0)						errorMsg = (*errors)[0].c_str();					GtkWidget* errBox = gtk_message_dialog_new(GTK_WINDOW(app->mainWindow),					                                           GTK_DIALOG_DESTROY_WITH_PARENT,					                                           GTK_MESSAGE_ERROR,					                                           GTK_BUTTONS_OK, "%s",					                                           errorMsg);					gtk_dialog_run(GTK_DIALOG(errBox));					gtk_widget_destroy(errBox);				}				else				{					/* Cancel any running script */					app->core->cancelScript();					app->core->runScript(script);				}			}		}		else		{			GtkWidget* errBox = gtk_message_dialog_new(GTK_WINDOW(app->mainWindow),			                                           GTK_DIALOG_DESTROY_WITH_PARENT,			                                           GTK_MESSAGE_ERROR,			                                           GTK_BUTTONS_OK,			                                           "Bad File Type. Use *.(cel|celx|clx).");			gtk_dialog_run(GTK_DIALOG(errBox));			gtk_widget_destroy(errBox);		}	}}/* Image capturing helper called by actionCaptureImage() */static void captureImage(const char* filename, AppData* app){	/* Get the dimensions of the current viewport */	int viewport[4];	glGetIntegerv(GL_VIEWPORT, viewport);	bool success = false;	ContentType type = DetermineFileType(filename);	if (type == Content_Unknown)	{		GtkWidget* errBox = gtk_message_dialog_new(GTK_WINDOW(app->mainWindow),		                                           GTK_DIALOG_DESTROY_WITH_PARENT,		                                           GTK_MESSAGE_ERROR,		                                           GTK_BUTTONS_OK,		                                           "Unable to determine image file type from name, please use a name ending in '.jpg' or '.png'.");		gtk_dialog_run(GTK_DIALOG(errBox));		gtk_widget_destroy(errBox);		return;	}	else if (type == Content_JPEG)	{		success = CaptureGLBufferToJPEG(filename,		                                viewport[0], viewport[1],		                                viewport[2], viewport[3]);	}	else if (type == Content_PNG)	{		success = CaptureGLBufferToPNG(filename,		                               viewport[0], viewport[1],		                               viewport[2], viewport[3]);	}	else	{		GtkWidget* errBox = gtk_message_dialog_new(GTK_WINDOW(app->mainWindow),		                                           GTK_DIALOG_DESTROY_WITH_PARENT,		                                           GTK_MESSAGE_ERROR,		                                           GTK_BUTTONS_OK,		                                           "Currently screen capturing to only JPEG or PNG files is supported.");		gtk_dialog_run(GTK_DIALOG(errBox));		gtk_widget_destroy(errBox);		return;	}	if (!success)	{		GtkWidget* errBox = gtk_message_dialog_new(GTK_WINDOW(app->mainWindow),		                                           GTK_DIALOG_DESTROY_WITH_PARENT,		                                           GTK_MESSAGE_ERROR,		                                           GTK_BUTTONS_OK,		                                           "Error writing captured image.");		gtk_dialog_run(GTK_DIALOG(errBox));		gtk_widget_destroy(errBox);	}}/* Runs a dialog that displays text; should be replaced at some point with   a more elegant solution. */static void textInfoDialog(const char *txt, const char *title, AppData* app){	/* I would use a gnome_message_box dialog for this, except they don't seem	 * to notice that the texts are so big that they create huge windows, and	 * would work better with a scrolled window. Deon */	GtkWidget* dialog = gtk_dialog_new_with_buttons(title,	                                                GTK_WINDOW(app->mainWindow),	                                                GTK_DIALOG_DESTROY_WITH_PARENT,	                                                GTK_STOCK_OK, GTK_RESPONSE_OK,	                                                NULL);	GtkWidget* scrolled_window = gtk_scrolled_window_new (NULL, NULL);	gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), scrolled_window, TRUE, TRUE, 0);	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (scrolled_window),	                               GTK_POLICY_AUTOMATIC,	                               GTK_POLICY_AUTOMATIC);	gtk_widget_show(scrolled_window);	GtkWidget *text = gtk_label_new(txt);	gtk_widget_modify_font(text, pango_font_description_from_string("mono"));	gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_window), GTK_WIDGET(text));	gtk_widget_show(text);		gtk_window_set_default_size(GTK_WINDOW(dialog), 600, 400); /* Absolute Size, urghhh */	gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);	gtk_dialog_run(GTK_DIALOG(dialog));	gtk_widget_destroy(dialog);}/* Calculates and sets the render-flag int */static void setRenderFlag(AppData* a, int flag, gboolean state){	int rf = (a->renderer->getRenderFlags() & ~flag) | (state ? flag : 0);	a->renderer->setRenderFlags(rf);		#ifdef GNOME	/* Update GConf */	gcSetRenderFlag(flag, state, a->client);	#endif /* GNOME */}/* Calculates and sets the orbit-mask int */static void setOrbitMask(AppData* a, int mask, gboolean state){	int om = (a->renderer->getOrbitMask() & ~mask) | (state ? mask : 0);	a->renderer->setOrbitMask(om);		#ifdef GNOME	/* Update GConf */	gcSetOrbitMask(mask, state, a->client);	#endif /* GNOME */}/* Calculates and sets the label-mode int */static void setLabelMode(AppData* a, int mode, gboolean state){	int lm = (a->renderer->getLabelMode() & ~mode) | (state ? mode : 0);	a->renderer->setLabelMode(lm);		#ifdef GNOME	/* Update GConf */	gcSetLabelMode(mode, state, a->client);	#endif /* GNOME */}/* Synchronizes the Label Actions with the state of the core */void resyncLabelActions(AppData* app){	GtkAction* action;	const char* actionName;		/* Simply for readability */	int f = app->renderer->getLabelMode();		for (int i = Renderer::StarLabels; i <= Renderer::I18nConstellationLabels; i *= 2)	{		switch (i)		{			case Renderer::StarLabels: actionName = "LabelStars"; break;			case Renderer::PlanetLabels: actionName = "LabelPlanets"; break;			case Renderer::MoonLabels: actionName = "LabelMoons"; break;			case Renderer::ConstellationLabels: actionName = "LabelConstellations"; break;			case Renderer::GalaxyLabels: actionName = "LabelGalaxies"; break;			case Renderer::AsteroidLabels: actionName = "LabelAsteroids"; break;			case Renderer::SpacecraftLabels: actionName = "LabelSpacecraft"; break;			case Renderer::LocationLabels: actionName = "LabelLocations"; break;			case Renderer::CometLabels: actionName = "LabelComets"; break;			case Renderer::NebulaLabels: actionName = "LabelNebulae"; break;			case Renderer::OpenClusterLabels: actionName = "LabelOpenClusters"; break;			case Renderer::I18nConstellationLabels: /* Not used yet */			default: actionName = NULL;		}				if (actionName != NULL)		{			/* Get the action */			action = gtk_action_group_get_action(app->agLabel, actionName);						/* The current i anded with the labelMode gives state of flag */			gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), (i & f));		}	}}/* Synchronizes the Render Actions with the state of the core */void resyncRenderActions(AppData* app){	GtkAction* action;	const char* actionName;		/* Simply for readability */	int rf = app->renderer->getRenderFlags();		/* Unlike the other interfaces, which go through each menu item and set	 * the corresponding renderFlag, we go the other way and set the menu	 * based on the renderFlag. Last one is ShowOpenClusters. */		for (int i = Renderer::ShowStars; i <= Renderer::ShowOpenClusters; i *= 2)	{		switch (i)		{			case Renderer::ShowStars: actionName = "RenderStars"; break;			case Renderer::ShowPlanets: actionName = "RenderPlanets"; break;			case Renderer::ShowGalaxies: actionName = "RenderGalaxies"; break;			case Renderer::ShowDiagrams: actionName = "RenderConstellations"; break;			case Renderer::ShowCloudMaps: actionName = "RenderClouds"; break;			case Renderer::ShowOrbits: actionName = "RenderOrbits"; break;			case Renderer::ShowCelestialSphere: actionName = "RenderCelestialGrid"; break;			case Renderer::ShowNightMaps: actionName = "RenderNightLights"; break;			case Renderer::ShowAtmospheres: actionName = "RenderAtmospheres"; break;			case Renderer::ShowSmoothLines: actionName = "RenderAA"; break;			case Renderer::ShowEclipseShadows: actionName = "RenderEclipseShadows"; break;			case Renderer::ShowStarsAsPoints: actionName = NULL; break; /* Deprecated */			case Renderer::ShowRingShadows: actionName = "RenderRingShadows"; break;			case Renderer::ShowBoundaries: actionName = "RenderConstellationBoundaries"; break;			case Renderer::ShowAutoMag: actionName = "RenderAutoMagnitude"; break;			case Renderer::ShowCometTails: actionName = "RenderCometTails"; break;			case Renderer::ShowMarkers: actionName = "RenderMarkers"; break;			case Renderer::ShowPartialTrajectories: actionName = NULL; break; /* Not useful yet */			case Renderer::ShowNebulae: actionName = "RenderNebulae"; break;			case Renderer::ShowOpenClusters: actionName = "RenderOpenClusters"; break;			default: actionName = NULL;		}				if (actionName != NULL)		{			/* Get the action */			action = gtk_action_group_get_action(app->agRender, actionName);						/* The current i anded with the renderFlags gives state of flag */			gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), (i & rf));		}	}}/* Synchronizes the Orbit Actions with the state of the core */void resyncOrbitActions(AppData* app){	GtkAction* action;	const char* actionName;		/* Simply for readability */	int om = app->renderer->getOrbitMask();		for (int i = Body::Planet; i <= Body::Spacecraft; i *= 2)	{		switch (i)		{			case Body::Planet: actionName = "OrbitPlanets"; break;			case Body::Moon: actionName = "OrbitMoons"; break;			case Body::Asteroid: actionName = "OrbitAsteroids"; break;			case Body::Comet: actionName = "OrbitComets"; break;			case Body::Spacecraft: actionName = "OrbitSpacecraft"; break;			default: actionName = NULL;		}				if (actionName != NULL)		{			/* Get the action */			action = gtk_action_group_get_action(app->agOrbit, actionName);						/* The current i anded with the orbitMask gives state of flag */			gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), (i & om));		}	}}/* Synchronizes the Verbosity Actions with the state of the core */void resyncVerbosityActions(AppData* app){	GtkAction* action;	const char* actionName;		switch (app->core->getHudDetail())	{		case 0: actionName = "HudNone"; break;		case 1: actionName = "HudTerse"; break;		case 2: actionName = "HudVerbose"; break;		default: return;	}		/* Get the action, set the widget */	action = gtk_action_group_get_action(app->agVerbosity, actionName);	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), TRUE);}/* Synchronizes the TimeZone Action with the state of the core */void resyncTimeZoneAction(AppData* app){	/* Get the action, set the widget */	GtkAction* action = gtk_action_group_get_action(app->agMain, "TimeLocal");	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), app->showLocalTime);}/* Synchronizes the Ambient Light Actions with the state of the core */void resyncAmbientActions(AppData* app){	GtkAction* action;	float ambient = app->renderer->getAmbientLightLevel();		/* Try to be smart about being close to the value of a float */	if (ambient > amLevels[0] && ambient < (amLevels[1] / 2.0))		action = gtk_action_group_get_action(app->agAmbient, "AmbientNone");		else if (ambient < amLevels[1] + ((amLevels[2] - amLevels[1]) / 2.0))		action = gtk_action_group_get_action(app->agAmbient, "AmbientLow");		else		action = gtk_action_group_get_action(app->agAmbient, "AmbientMedium");		gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), TRUE);		#ifdef GNOME	/* The action callback only occurs when one of the None/Low/Medium barriers	 * is surpassed, so an update is forced. */	gconf_client_set_float(app->client, "/apps/celestia/ambientLight", ambient, NULL);	#endif}/* Synchronizes the Verbosity Actions with the state of the core */void resyncStarStyleActions(AppData* app){	GtkAction* action;	const char* actionName;		switch (app->renderer->getStarStyle())	{		case Renderer::FuzzyPointStars: actionName = "StarsFuzzy"; break;		case Renderer::PointStars: actionName = "StarsPoints"; break;		case Renderer::ScaledDiscStars: actionName = "StarsDiscs"; break;		default: return;	}		/* Get the action, set the widget */	action = gtk_action_group_get_action(app->agStarStyle, actionName);	gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), TRUE);}/* Placeholder for when galaxy brightness is added as an action */void resyncGalaxyGainActions(AppData* app){	float gain = Galaxy::getLightGain();		#ifdef GNOME	gconf_client_set_float(app->client, "/apps/celestia/galaxyLightGain", gain, NULL);	#endif}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品免费日韩av| 国产视频一区二区在线| 一区二区高清视频在线观看| 成人激情电影免费在线观看| 精品伦理精品一区| 久久99精品久久久久久动态图| 欧美美女bb生活片| 亚洲r级在线视频| 欧美色综合久久| 在线免费观看不卡av| 欧美精品日日鲁夜夜添| 亚洲午夜一区二区三区| 在线中文字幕一区二区| 中文字幕一区二区在线播放| 成人一级片在线观看| 久久你懂得1024| 日本不卡高清视频| 日韩欧美你懂的| 狠狠网亚洲精品| 久久精品在这里| 成人av手机在线观看| 久久精品在这里| 成人免费毛片片v| 久久久www成人免费无遮挡大片| 国产精品一二三在| 综合自拍亚洲综合图不卡区| 高清视频一区二区| 国产精品乱人伦| 极品少妇一区二区三区精品视频| 精品国内片67194| 国产成人在线视频网站| 亚洲婷婷在线视频| 欧美精品久久一区二区三区| 国产制服丝袜一区| 一区二区三区**美女毛片| 777xxx欧美| 亚洲综合丁香婷婷六月香| 欧美一级xxx| 成人免费av资源| 久久精品国产成人一区二区三区| 国产欧美日韩亚州综合| 国产精品白丝jk黑袜喷水| 亚洲人xxxx| 欧美一级黄色大片| 99久久夜色精品国产网站| 婷婷成人激情在线网| 久久久99免费| 欧美日韩一区二区三区不卡| 久久久国产精品麻豆| 日韩精品一卡二卡三卡四卡无卡| 久久亚洲二区三区| 在线中文字幕不卡| 国产一二三精品| 亚洲欧美日韩系列| 欧美一二区视频| 伊人婷婷欧美激情| 日本久久一区二区| 亚洲国产精品综合小说图片区| 91精品国产高清一区二区三区蜜臀 | 国产精品日韩成人| 欧美一区二区三区视频| 99精品视频在线观看| 精品一区精品二区高清| 亚洲午夜电影在线观看| 国产精品网站在线| 日韩一区二区中文字幕| 91国偷自产一区二区使用方法| 久久精品国产精品亚洲精品| 亚洲精品免费电影| 国产精品女人毛片| 欧美精品一区二区三区久久久| 欧美系列亚洲系列| 99视频国产精品| 成人影视亚洲图片在线| 麻豆一区二区在线| 亚洲欧美日韩国产中文在线| 欧美日韩精品综合在线| 91一区二区三区在线观看| 久久精品99久久久| 亚洲国产日产av| 亚洲精品第1页| 欧美极品美女视频| 日韩欧美aaaaaa| 欧美巨大另类极品videosbest | 欧美精品一区视频| 欧美视频一区在线| 激情小说欧美图片| 日韩激情视频网站| 一二三区精品视频| 国产精品久久久久一区二区三区 | 99久久久久久99| 成人美女视频在线看| 懂色av一区二区三区蜜臀 | 久久人人爽人人爽| 久久精品在这里| 国产精品福利一区二区三区| 国产精品看片你懂得 | 欧美亚洲动漫另类| 欧美日韩视频专区在线播放| 欧美日韩一二三| 91精品国产综合久久久久久久| 欧美日韩亚洲高清一区二区| 欧美日韩日日骚| 日本精品视频一区二区| 成人av资源站| 成人丝袜高跟foot| 国产a精品视频| 色婷婷狠狠综合| 成人av高清在线| 91美女在线观看| 欧美在线制服丝袜| 日韩一级完整毛片| 国产亚洲精品免费| 中文一区二区完整视频在线观看| 久久精品视频在线看| 成人欧美一区二区三区白人| 亚洲高清免费观看高清完整版在线观看 | 国产精品久久久久久久久搜平片 | 69精品人人人人| 日韩一区二区免费高清| 久久精品一区二区三区不卡牛牛| 国产精品免费久久久久| 久久精品视频免费| 一区在线播放视频| 午夜精品福利一区二区蜜股av| 日韩极品在线观看| 亚洲成人tv网| 亚洲国产综合在线| 一级特黄大欧美久久久| 午夜精品久久久久影视| 久久成人麻豆午夜电影| 99这里都是精品| 欧美一卡二卡三卡| 国产精品福利一区| 日韩激情一区二区| 不卡电影一区二区三区| 9191成人精品久久| 国产欧美一区二区三区在线看蜜臀| 亚洲桃色在线一区| 老司机一区二区| 97精品电影院| 欧美电影精品一区二区| 国产精品久久国产精麻豆99网站| 一区2区3区在线看| 韩国v欧美v日本v亚洲v| 在线亚洲欧美专区二区| 国产欧美日韩久久| 日韩福利电影在线| 色综合天天综合狠狠| 久久久精品综合| 欧美aaaaa成人免费观看视频| 91视视频在线观看入口直接观看www | 欧美日韩在线播放三区四区| 欧美大尺度电影在线| 日韩理论片网站| 精东粉嫩av免费一区二区三区| 国产精品一二三四| 日韩亚洲欧美中文三级| 国产精品视频线看| 亚洲高清免费在线| 国产91精品免费| 色婷婷国产精品综合在线观看| 久久亚洲私人国产精品va媚药| 欧美国产综合色视频| 国模娜娜一区二区三区| 一本一本大道香蕉久在线精品| 精品国产乱码久久| 石原莉奈在线亚洲三区| 欧美少妇bbb| 亚洲精品免费看| av成人免费在线| 国产偷v国产偷v亚洲高清| 国内精品自线一区二区三区视频| 99久久久久久| 国产喷白浆一区二区三区| 国产自产视频一区二区三区| 欧美成人一级视频| 久久www免费人成看片高清| 国产福利视频一区二区三区| 日韩精品一区二区三区中文精品| 亚洲人精品午夜| 色域天天综合网| 一个色在线综合| 欧美日韩国产精选| 日韩精品五月天| 国产一区二区在线视频| 美女脱光内衣内裤视频久久影院| 一区二区高清免费观看影视大全| 国产精品毛片高清在线完整版| 亚洲国产视频直播| 欧美精品 日韩| 欧美日韩你懂得| 欧美日韩国产一级片| 欧美三片在线视频观看| 欧美视频精品在线观看| 欧美tk丨vk视频| 亚洲在线视频网站| 91丨porny丨国产| 亚洲综合一区二区| 欧美日韩国产精品成人|