#include <gdk/gdk.h>#include <gtk/gtk.h>#include "common.h"Include dependency graph for dialog-eclipse.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.
Typedefs | |
| typedef _EclipseData | EclipseData |
| typedef _selDate | selDate |
Functions | |
| void | dialogEclipseFinder (AppData *app) |
Variables | |
| const char *const | eclipsePlanetTitles [] |
| const char *const | eclipseTitles [] |
| const char *const | eclipseTypeTitles [] |
|
|
Definition at line 35 of file dialog-eclipse.h. |
|
|
Definition at line 28 of file dialog-eclipse.h. |
|
|
Definition at line 39 of file dialog-eclipse.cpp. References _EclipseData::app, _EclipseData::body, _EclipseData::bSolar, buttonMake(), CELSPACING, _EclipseData::d1, _EclipseData::d2, _selDate::day, eclipse2Click(), eclipseBodySelect(), eclipseCompute(), eclipseDestroy(), eclipseGoto(), _EclipseData::eclipseList, _EclipseData::eclipseListStore, eclipsePlanetTitles, eclipseTitles, eclipseTypeSelect(), eclipseTypeTitles, listEclipseSelect(), _selDate::month, _EclipseData::sel, setButtonDateString(), showCalPopup(), _EclipseData::window, and _selDate::year. Referenced by actionEclipseFinder(). 00040 {
00041 EclipseData* ed = g_new0(EclipseData, 1);
00042 selDate* d1 = g_new0(selDate, 1);
00043 selDate* d2 = g_new0(selDate, 1);
00044 ed->d1 = d1;
00045 ed->d2 = d2;
00046 ed->app = app;
00047 ed->eclipseList = NULL;
00048 ed->eclipseListStore = NULL;
00049 ed->bSolar = TRUE;
00050 sprintf(ed->body, "%s", eclipsePlanetTitles[0]);
00051 ed->sel = NULL;
00052
00053 ed->window = GTK_DIALOG(gtk_dialog_new_with_buttons("Eclipse Finder",
00054 GTK_WINDOW(app->mainWindow),
00055 GTK_DIALOG_DESTROY_WITH_PARENT,
00056 GTK_STOCK_OK,
00057 GTK_RESPONSE_OK,
00058 NULL));
00059 gtk_window_set_modal(GTK_WINDOW(ed->window), FALSE);
00060
00061 GtkWidget *mainbox = gtk_vbox_new(FALSE, CELSPACING);
00062 gtk_container_set_border_width(GTK_CONTAINER(mainbox), CELSPACING);
00063 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(ed->window)->vbox), mainbox, TRUE, TRUE, 0);
00064
00065 GtkWidget *scrolled_win = gtk_scrolled_window_new (NULL, NULL);
00066
00067 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (scrolled_win),
00068 GTK_POLICY_AUTOMATIC,
00069 GTK_POLICY_ALWAYS);
00070 gtk_box_pack_start(GTK_BOX(mainbox), scrolled_win, TRUE, TRUE, 0);
00071
00072 /* Create listbox list.
00073 * Six invisible ints at the end to hold actual time.
00074 * This will save string parsing like in KDE version.
00075 * Last field holds pointer to selected Body. */
00076 ed->eclipseListStore = gtk_list_store_new(12,
00077 G_TYPE_STRING,
00078 G_TYPE_STRING,
00079 G_TYPE_STRING,
00080 G_TYPE_STRING,
00081 G_TYPE_STRING,
00082 G_TYPE_INT,
00083 G_TYPE_INT,
00084 G_TYPE_INT,
00085 G_TYPE_INT,
00086 G_TYPE_INT,
00087 G_TYPE_INT,
00088 G_TYPE_POINTER);
00089 ed->eclipseList = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ed->eclipseListStore));
00090
00091 gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(ed->eclipseList), TRUE);
00092 gtk_container_add(GTK_CONTAINER(scrolled_win), ed->eclipseList);
00093
00094 GtkCellRenderer *renderer;
00095 GtkTreeViewColumn *column;
00096
00097 /* Add the columns */
00098 for (int i=0; i<5; i++) {
00099 renderer = gtk_cell_renderer_text_new();
00100 column = gtk_tree_view_column_new_with_attributes (eclipseTitles[i], renderer, "text", i, NULL);
00101 gtk_tree_view_append_column(GTK_TREE_VIEW(ed->eclipseList), column);
00102 }
00103
00104 /* Set up callback for when an eclipse is selected */
00105 GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(ed->eclipseList));
00106 g_signal_connect(selection, "changed", G_CALLBACK(listEclipseSelect), ed);
00107
00108 /* From now on, it's the bottom-of-the-window controls */
00109 GtkWidget *label;
00110 GtkWidget *hbox;
00111
00112 /* -------------------------------- */
00113 hbox = gtk_hbox_new(FALSE, CELSPACING);
00114
00115 label = gtk_label_new("Find");
00116 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
00117
00118 GtkWidget* menuTypeBox = gtk_option_menu_new();
00119 gtk_box_pack_start(GTK_BOX(hbox), menuTypeBox, FALSE, FALSE, 0);
00120
00121 label = gtk_label_new("eclipse on");
00122 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
00123
00124 GtkWidget* menuBodyBox = gtk_option_menu_new();
00125 gtk_box_pack_start(GTK_BOX(hbox), menuBodyBox, FALSE, FALSE, 0);
00126
00127 gtk_box_pack_start(GTK_BOX(mainbox), hbox, FALSE, FALSE, 0);
00128 /* -------------------------------- */
00129 hbox = gtk_hbox_new(FALSE, CELSPACING);
00130
00131 label = gtk_label_new("From");
00132 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
00133
00134 /* Get current date */
00135 astro::Date datenow(app->simulation->getTime());
00136
00137 /* Set current time */
00138 ed->d1->year = datenow.year - 1;
00139 ed->d1->month = datenow.month;
00140 ed->d1->day = datenow.day;
00141
00142 /* Set time a year from now */
00143 ed->d2->year = ed->d1->year + 2;
00144 ed->d2->month = ed->d1->month;
00145 ed->d2->day = ed->d1->day;
00146
00147 GtkWidget* date1Button = gtk_toggle_button_new();
00148 setButtonDateString(GTK_TOGGLE_BUTTON(date1Button), ed->d1->year, ed->d1->month, ed->d1->day);
00149 g_object_set_data(G_OBJECT(date1Button), "eclipsedata", ed->d1);
00150 gtk_box_pack_start(GTK_BOX(hbox), date1Button, FALSE, FALSE, 0);
00151
00152 label = gtk_label_new("to");
00153 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
00154
00155 GtkWidget* date2Button = gtk_toggle_button_new();
00156 setButtonDateString(GTK_TOGGLE_BUTTON(date2Button), ed->d2->year, ed->d2->month, ed->d2->day);
00157 g_object_set_data(G_OBJECT(date2Button), "eclipsedata", ed->d2);
00158 gtk_box_pack_start(GTK_BOX(hbox), date2Button, FALSE, FALSE, 0);
00159
00160 gtk_box_pack_start(GTK_BOX(mainbox), hbox, FALSE, FALSE, 0);
00161 /* -------------------------------- */
00162
00163 /* Common Buttons */
00164 hbox = gtk_hbox_new(TRUE, CELSPACING);
00165 if (buttonMake(hbox, "Compute", (GtkSignalFunc)eclipseCompute, ed))
00166 return;
00167 if (buttonMake(hbox, "Set Date and Go to Planet", (GtkSignalFunc)eclipseGoto, ed))
00168 return;
00169 gtk_box_pack_start(GTK_BOX(mainbox), hbox, FALSE, FALSE, 0);
00170
00171 /* Set up the drop-down boxes */
00172 GtkWidget *item;
00173
00174 GtkWidget* menuType = gtk_menu_new();
00175 for (int i = 0; eclipseTypeTitles[i] != NULL; i++)
00176 {
00177 item = gtk_menu_item_new_with_label(eclipseTypeTitles[i]);
00178 gtk_menu_append(GTK_MENU(menuType), item);
00179 gtk_widget_show(item);
00180 }
00181 gtk_option_menu_set_menu(GTK_OPTION_MENU(menuTypeBox), menuType);
00182
00183 GtkWidget* menuBody = gtk_menu_new();
00184 for (int i = 0; eclipsePlanetTitles[i] != NULL; i++)
00185 {
00186 item = gtk_menu_item_new_with_label(eclipsePlanetTitles[i]);
00187 gtk_menu_append(GTK_MENU(menuBody), item);
00188 gtk_widget_show(item);
00189 }
00190 gtk_option_menu_set_menu(GTK_OPTION_MENU(menuBodyBox), menuBody);
00191
00192 /* Hook up all the signals */
00193 g_signal_connect(GTK_OBJECT(menuType), "selection-done", G_CALLBACK(eclipseTypeSelect), ed);
00194 g_signal_connect(GTK_OBJECT(menuBody), "selection-done", G_CALLBACK(eclipseBodySelect), ed);
00195
00196 /* Double-click handler */
00197 g_signal_connect(GTK_OBJECT(ed->eclipseList), "button-press-event", G_CALLBACK(eclipse2Click), ed);
00198
00199 g_signal_connect(GTK_OBJECT(date1Button), "toggled", G_CALLBACK(showCalPopup), ed);
00200 g_signal_connect(GTK_OBJECT(date2Button), "toggled", G_CALLBACK(showCalPopup), ed);
00201 g_signal_connect(ed->window, "response", G_CALLBACK(eclipseDestroy), ed);
00202
00203 gtk_widget_set_usize(GTK_WIDGET(ed->window), 400, 400); /* Absolute Size, urghhh */
00204 gtk_widget_show_all(GTK_WIDGET(ed->window));
00205 }
|
|
|
Initial value:
{
"Earth",
"Jupiter",
"Saturn",
"Uranus",
"Neptune",
"Pluto",
NULL
}
Definition at line 73 of file dialog-eclipse.h. Referenced by dialogEclipseFinder(), and eclipseBodySelect(). |
|
|
Initial value:
{
"Planet",
"Satellite",
"Date",
"Start",
"End",
NULL
}
Definition at line 56 of file dialog-eclipse.h. Referenced by dialogEclipseFinder(). |
|
|
Initial value:
{
"solar",
"moon",
NULL
}
Definition at line 66 of file dialog-eclipse.h. Referenced by dialogEclipseFinder(). |
1.4.1