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

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

?? dialog-goto.cpp

?? celestia源代碼
?? CPP
字號:
/* *  Celestia GTK+ Front-End *  Copyright (C) 2005 Pat Suwalski <pat@suwalski.net> * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  $Id: dialog-goto.cpp,v 1.1 2005/12/06 03:19:35 suwalski Exp $ */#include <gtk/gtk.h>#include <celengine/selection.h>#include <celengine/simulation.h>#include <celmath/vecmath.h>#include "dialog-goto.h"#include "common.h"/* Declarations: Callbacks */static int changeGotoUnits(GtkButton* w, gpointer choice);static void responseGotoObject(GtkDialog* w, gint response, gotoObjectData* d);/* Declarations: Helpers */static gboolean GetEntryFloat(GtkWidget* w, float& f);static void GotoObject(gotoObjectData* gotoObjectDlg);/* ENTRY: Navigation->Goto Object */void dialogGotoObject(AppData* app){	gotoObjectData *data = g_new0(gotoObjectData, 1);	data->app = app;	data->dialog = gtk_dialog_new_with_buttons("Goto Object",	                                           GTK_WINDOW(app->mainWindow),	                                           GTK_DIALOG_DESTROY_WITH_PARENT,	                                           "Go To",	                                           GTK_RESPONSE_OK,	                                           GTK_STOCK_CLOSE,	                                           GTK_RESPONSE_CLOSE,	                                           NULL);	data->nameEntry = gtk_entry_new();	data->latEntry = gtk_entry_new();	data->longEntry = gtk_entry_new();	data->distEntry = gtk_entry_new();	if (data->dialog == NULL ||	    data->nameEntry == NULL ||	    data->latEntry == NULL ||	    data->longEntry == NULL ||	    data->distEntry == NULL)	{		/* Potential memory leak here ... */		return;	}	/* Set up the values (from windows cpp file) */	double distance, longitude, latitude;	app->simulation->getSelectionLongLat(distance, longitude, latitude);	/* Display information in format appropriate for object */	if (app->simulation->getSelection().body() != NULL)	{		char temp[20];		distance = distance - (double) app->simulation->getSelection().body()->getRadius();		sprintf(temp, "%.1f", (float)distance);		gtk_entry_set_text(GTK_ENTRY(data->distEntry), temp);		sprintf(temp, "%.5f", (float)longitude);		gtk_entry_set_text(GTK_ENTRY(data->longEntry), temp);		sprintf(temp, "%.5f", (float)latitude);		gtk_entry_set_text(GTK_ENTRY(data->latEntry), temp);		gtk_entry_set_text(GTK_ENTRY(data->nameEntry), (char*) app->simulation->getSelection().body()->getName().c_str());	}	GtkWidget* vbox = gtk_vbox_new(TRUE, CELSPACING);	gtk_container_set_border_width(GTK_CONTAINER(vbox), CELSPACING);	gtk_box_pack_start(GTK_BOX(GTK_DIALOG(data->dialog)->vbox), vbox, TRUE, TRUE, 0);	GtkWidget* align = NULL;	GtkWidget* hbox = NULL;	GtkWidget* label = NULL;	/* Object name label and entry */	align = gtk_alignment_new(1, 0, 0, 0);	hbox = gtk_hbox_new(FALSE, CELSPACING);	label = gtk_label_new("Object name:");	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0);	gtk_box_pack_start(GTK_BOX(hbox), data->nameEntry, FALSE, TRUE, 0);	gtk_container_add(GTK_CONTAINER(align), hbox);	gtk_box_pack_start(GTK_BOX(vbox), align, FALSE, TRUE, 0);	/* Latitude and longitude */	align = gtk_alignment_new(1, 0, 0, 0);	hbox = gtk_hbox_new(FALSE, CELSPACING);	label = gtk_label_new("Latitude:");	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0);	gtk_box_pack_start(GTK_BOX(hbox), data->latEntry, FALSE, TRUE, 0);	gtk_container_add(GTK_CONTAINER(align), hbox);	gtk_box_pack_start(GTK_BOX(vbox), align, FALSE, TRUE, 0);	align = gtk_alignment_new(1, 0, 0, 0);	hbox = gtk_hbox_new(FALSE, CELSPACING);	label = gtk_label_new("Longitude:");	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0);	gtk_box_pack_start(GTK_BOX(hbox), data->longEntry, FALSE, TRUE, 0);	gtk_container_add(GTK_CONTAINER(align), hbox);	gtk_box_pack_start(GTK_BOX(vbox), align, FALSE, TRUE, 0);	/* Distance */	align = gtk_alignment_new(1, 0, 0, 0);	hbox = gtk_hbox_new(FALSE, CELSPACING);	label = gtk_label_new("Distance:");	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0);	gtk_box_pack_start(GTK_BOX(hbox), data->distEntry, FALSE, TRUE, 0);	gtk_container_add(GTK_CONTAINER(align), hbox);	gtk_box_pack_start(GTK_BOX(vbox), align, FALSE, TRUE, 0);	/* Distance Options */	data->units = 0;	hbox = gtk_hbox_new(FALSE, CELSPACING);	makeRadioItems(unitLabels, hbox, GTK_SIGNAL_FUNC(changeGotoUnits), NULL, data);	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);		g_signal_connect(data->dialog, "response",	                 G_CALLBACK(responseGotoObject), data);		gtk_widget_show_all(data->dialog);}/* CALLBACK: for km|radii|au in Goto Object dialog */static int changeGotoUnits(GtkButton* w, gpointer choice){	gotoObjectData* data = (gotoObjectData *)g_object_get_data(G_OBJECT(w), "data");	gint selection = GPOINTER_TO_INT(choice);	data->units = selection;		return TRUE;}/* CALLBACK: response from this dialog. * Need this because gtk_dialog_run produces a modal window. */static void responseGotoObject(GtkDialog* w, gint response, gotoObjectData* d){	switch (response) {		case GTK_RESPONSE_OK:			GotoObject(d);			break;		case GTK_RESPONSE_CLOSE:			gtk_widget_destroy(GTK_WIDGET(w));			g_free(d);	}}/* HELPER: Get the float value from one of the GtkEntrys */static gboolean GetEntryFloat(GtkWidget* w, float& f){	GtkEntry* entry = GTK_ENTRY(w);	bool tmp;	if (entry == NULL)		return false;	gchar* text = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);	f = 0.0;	if (text == NULL)		return false;	tmp = sscanf(text, " %f", &f) == 1;	g_free(text);	return tmp;}/* HELPER: Goes to the object specified by gotoObjectData */static void GotoObject(gotoObjectData* gotoObjectDlg){	const gchar* objectName = gtk_entry_get_text(GTK_ENTRY(gotoObjectDlg->nameEntry));		if (objectName != NULL)	{		Simulation* simulation = gotoObjectDlg->app->simulation;		Selection sel = simulation->findObjectFromPath(objectName);				if (!sel.empty())		{			simulation->setSelection(sel);			simulation->follow();			float distance = (float) (sel.radius() * 5.0f);			if (GetEntryFloat(gotoObjectDlg->distEntry, distance))			{				/* Adjust for km (0), radii (1), au (2) */				if (gotoObjectDlg->units == 2)					distance = astro::AUtoKilometers(distance);				else if (gotoObjectDlg->units == 1)					distance = distance * (float) sel.radius();				distance += (float) sel.radius();			}			distance = astro::kilometersToLightYears(distance);			float longitude, latitude;			if (GetEntryFloat(gotoObjectDlg->latEntry, latitude) &&			    GetEntryFloat(gotoObjectDlg->longEntry, longitude))			{				simulation->gotoSelectionLongLat(5.0,				                                 distance,				                                 degToRad(longitude),				                                 degToRad(latitude),				                                 Vec3f(0, 1, 0));			}			else			{				simulation->gotoSelection(5.0,				                          distance,				                          Vec3f(0, 1, 0),				                          astro::ObserverLocal);			}		}	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本大道av伊人久久综合| 成人av电影在线网| 亚洲福利一二三区| 中文字幕在线不卡一区| 久久久久久一二三区| 久久综合九色综合欧美亚洲| 日韩欧美亚洲一区二区| 欧美一区二区三区喷汁尤物| 51久久夜色精品国产麻豆| 欧美日韩国产首页在线观看| 欧美三级在线播放| 欧美日韩三级一区二区| 欧美一区二区三区视频在线| 欧美草草影院在线视频| 久久免费精品国产久精品久久久久| 精品国产乱码久久久久久久久 | 欧美男女性生活在线直播观看| 欧美亚州韩日在线看免费版国语版| 欧美在线观看一区二区| 制服丝袜在线91| 日韩欧美一级二级三级久久久| 精品日韩av一区二区| 久久婷婷国产综合精品青草| 中文字幕乱码久久午夜不卡 | 午夜精品在线看| 老司机一区二区| 国产成人在线免费观看| 色婷婷av一区二区三区软件| 91精品国产欧美一区二区18| 欧美精品一区二区不卡| 日韩一区日韩二区| 午夜精品在线看| 国产精品资源网站| 91视频一区二区| 日韩精品一区二区三区老鸭窝| 久久久高清一区二区三区| 亚洲女同女同女同女同女同69| 亚洲bdsm女犯bdsm网站| 国产98色在线|日韩| 欧美剧情片在线观看| 26uuu精品一区二区在线观看| 亚洲天堂免费看| 久久国内精品视频| 91精品福利视频| 精品国产免费一区二区三区香蕉| 国产精品毛片a∨一区二区三区 | 欧美成人一区二区三区| 中文字幕综合网| 蜜桃在线一区二区三区| 91色|porny| 26uuu另类欧美亚洲曰本| 天天av天天翘天天综合网| 成人一级黄色片| 日韩一区二区免费电影| 亚洲精品国久久99热| 国产永久精品大片wwwapp | 久久福利资源站| 欧美日韩视频在线第一区| 亚洲视频一区二区在线| 激情综合一区二区三区| 56国语精品自产拍在线观看| 亚洲精品国产一区二区精华液| 高清成人免费视频| 久久色在线视频| 麻豆一区二区三区| 欧美乱妇一区二区三区不卡视频| 亚洲精品你懂的| 99精品国产视频| 国产精品久久久久三级| 福利电影一区二区| 久久久www免费人成精品| 精品一区二区在线播放| 91精品国产欧美一区二区成人| 一区二区三区精品在线观看| 99久久精品国产麻豆演员表| 欧美国产成人精品| 粉嫩av一区二区三区在线播放| 精品国产亚洲在线| 国产专区综合网| 久久久久综合网| 成人精品在线视频观看| 国产精品免费久久| 成人av综合在线| 国产精品国产三级国产普通话99 | 欧美日韩和欧美的一区二区| 亚洲自拍偷拍图区| 欧美美女一区二区在线观看| 日韩精品1区2区3区| 日韩午夜激情免费电影| 精品一二三四区| 久久精品亚洲乱码伦伦中文| 成人精品免费视频| 亚洲精选视频在线| 欧美系列一区二区| 久久国产精品一区二区| 国产亚洲精品福利| 91原创在线视频| 亚洲高清免费视频| 日韩一区二区三区视频在线 | 欧美在线免费观看视频| 日韩成人一级片| 精品国产免费久久| 波多野结衣中文字幕一区| 亚洲三级免费观看| 欧美一区午夜精品| 国产成人8x视频一区二区| 国产精品国产三级国产三级人妇 | 亚洲欧美偷拍三级| 日韩天堂在线观看| 国产福利一区二区三区视频| 亚洲精品菠萝久久久久久久| 欧美美女视频在线观看| 国产a级毛片一区| 亚洲线精品一区二区三区八戒| 欧美乱妇一区二区三区不卡视频| 国产麻豆一精品一av一免费| 亚洲视频图片小说| 久久亚洲综合色一区二区三区| 99re热视频这里只精品| 免费不卡在线观看| 亚洲欧洲成人自拍| 欧美成人综合网站| 在线观看一区日韩| 国产99一区视频免费 | 久久九九国产精品| 7777精品伊人久久久大香线蕉| 国产成人自拍网| 日韩**一区毛片| 亚洲视频免费看| 欧美激情一区在线| 欧美一区二区三区公司| 91老司机福利 在线| 国内精品伊人久久久久av影院| 亚洲综合av网| 亚洲欧美偷拍三级| 国产精品青草久久| 久久精品亚洲精品国产欧美kt∨| 欧美高清激情brazzers| 色综合久久中文字幕| 成人av电影在线| 国产精品18久久久久久久网站| 偷拍一区二区三区| 亚洲午夜激情av| 亚洲激情综合网| 亚洲精品乱码久久久久久| 中文字幕在线一区免费| 国产日产欧美一区| 欧美va在线播放| 欧美性大战久久| 一区二区激情视频| 国产喂奶挤奶一区二区三区| 久久亚洲综合色| 亚洲人成网站精品片在线观看| 一区二区三区不卡在线观看 | 国产一区在线看| 久久99精品一区二区三区三区| 日韩精品视频网站| 秋霞电影一区二区| 日韩中文字幕区一区有砖一区| 一个色在线综合| 亚洲一区二区三区四区中文字幕| 中文字幕一区不卡| 国产精品福利电影一区二区三区四区| 国产精品欧美综合在线| 国产精品美女久久久久久久久久久| 国产欧美日韩在线看| 国产精品免费久久| 亚洲精品老司机| 日韩av在线播放中文字幕| 蜜桃在线一区二区三区| 国产在线乱码一区二区三区| 国产精品一二三四五| av亚洲精华国产精华精| 91成人看片片| 欧美成人精品3d动漫h| 国产嫩草影院久久久久| 一区二区三区不卡视频| 日韩电影在线一区二区| 国产二区国产一区在线观看| 99久久99久久久精品齐齐| 在线播放91灌醉迷j高跟美女| 日韩欧美你懂的| 亚洲欧洲日本在线| 欧美a级一区二区| 99国产一区二区三精品乱码| 欧美精品在线观看播放| 久久精品亚洲一区二区三区浴池| 亚洲视频一区二区在线| 伦理电影国产精品| 91丨九色丨蝌蚪丨老版| 精品欧美黑人一区二区三区| 亚洲欧洲日韩综合一区二区| 日本欧美在线看| 色av成人天堂桃色av| 精品动漫一区二区三区在线观看| 国产精品视频九色porn| 亚洲精品日韩一| 国产精品一区二区果冻传媒| 国产超碰在线一区| 欧美一区二区三区免费|