Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

dialog-eclipse.h File Reference

#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 []


Typedef Documentation

typedef struct _EclipseData EclipseData
 

Definition at line 35 of file dialog-eclipse.h.

typedef struct _selDate selDate
 

Definition at line 28 of file dialog-eclipse.h.


Function Documentation

void dialogEclipseFinder AppData app  ) 
 

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 }


Variable Documentation

const char* const eclipsePlanetTitles[]
 

Initial value:

{
        "Earth",
        "Jupiter",
        "Saturn",
        "Uranus",
        "Neptune",
        "Pluto",
        NULL
}

Definition at line 73 of file dialog-eclipse.h.

Referenced by dialogEclipseFinder(), and eclipseBodySelect().

const char* const eclipseTitles[]
 

Initial value:

{
        "Planet",
        "Satellite",
        "Date",
        "Start",
        "End",
        NULL
}

Definition at line 56 of file dialog-eclipse.h.

Referenced by dialogEclipseFinder().

const char* const eclipseTypeTitles[]
 

Initial value:

{
        "solar",
        "moon",
        NULL
}

Definition at line 66 of file dialog-eclipse.h.

Referenced by dialogEclipseFinder().


Generated on Sat Jan 14 22:31:50 2006 for Celestia by  doxygen 1.4.1