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

dialog-star.h File Reference

#include <gtk/gtk.h>
#include <celengine/starbrowser.h>
#include "common.h"

Include dependency graph for dialog-star.h:

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

Go to the source code of this file.

Defines

#define MAXLISTSTARS   500
#define MINLISTSTARS   10

Typedefs

typedef _sbData sbData

Functions

void dialogStarBrowser (AppData *app)

Variables

static const char *const sbRadioLabels []
static const char *const sbTitles []


Define Documentation

#define MAXLISTSTARS   500
 

Definition at line 23 of file dialog-star.h.

Referenced by dialogStarBrowser(), and listStarEntryChange().

#define MINLISTSTARS   10
 

Definition at line 22 of file dialog-star.h.

Referenced by dialogStarBrowser(), and listStarEntryChange().


Typedef Documentation

typedef struct _sbData sbData
 

Definition at line 31 of file dialog-star.h.


Function Documentation

void dialogStarBrowser AppData app  ) 
 

Definition at line 43 of file dialog-star.cpp.

References actionCenterSelection(), actionGotoSelection(), _sbData::app, _sbData::browser, buttonMake(), CELSPACING, _sbData::entry, listStarEntryChange(), listStarSelect(), listStarSliderChange(), makeRadioItems(), MAXLISTSTARS, MINLISTSTARS, _sbData::numListStars, radioClicked(), refreshBrowser(), _sbData::scale, StarBrowser::setSimulation(), _AppData::simulation, starDestroy(), and _sbData::starListStore.

Referenced by actionStarBrowser().

00044 {
00045         sbData* sb = g_new0(sbData, 1);
00046         sb->app = app;
00047         sb->numListStars = 100;
00048         
00049         GtkWidget *browser = gtk_dialog_new_with_buttons("Star System Browser",
00050                                                          GTK_WINDOW(app->mainWindow),
00051                                                          GTK_DIALOG_DESTROY_WITH_PARENT,
00052                                                          GTK_STOCK_OK, GTK_RESPONSE_OK,
00053                                                          NULL);
00054         app->simulation->setSelection(Selection((Star *) NULL));
00055  
00056         /* Star System Browser */
00057         GtkWidget *mainbox = gtk_vbox_new(FALSE, CELSPACING);
00058         gtk_container_set_border_width(GTK_CONTAINER(mainbox), CELSPACING);
00059         gtk_box_pack_start(GTK_BOX(GTK_DIALOG(browser)->vbox), mainbox, TRUE, TRUE, 0);
00060 
00061         GtkWidget *scrolled_win = gtk_scrolled_window_new (NULL, NULL);
00062 
00063         gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (scrolled_win),
00064                                        GTK_POLICY_AUTOMATIC,
00065                                        GTK_POLICY_ALWAYS);
00066         gtk_box_pack_start(GTK_BOX(mainbox), scrolled_win, TRUE, TRUE, 0);
00067 
00068         /* Create listbox list */
00069         sb->starListStore = gtk_list_store_new(6,
00070                                                G_TYPE_STRING,
00071                                                G_TYPE_STRING,
00072                                                G_TYPE_STRING,
00073                                                G_TYPE_STRING,
00074                                                G_TYPE_STRING,
00075                                                G_TYPE_POINTER);
00076         GtkWidget *starList = gtk_tree_view_new_with_model(GTK_TREE_MODEL(sb->starListStore));
00077 
00078         gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(starList), TRUE);
00079         gtk_container_add(GTK_CONTAINER(scrolled_win), starList);
00080 
00081         GtkCellRenderer *renderer;
00082         GtkTreeViewColumn *column;
00083 
00084         /* Add the columns */
00085         for (int i=0; i<5; i++) {
00086                 renderer = gtk_cell_renderer_text_new();
00087                 column = gtk_tree_view_column_new_with_attributes (sbTitles[i], renderer, "text", i, NULL);
00088                 if (i > 0 && i < 4) {
00089                         /* Right align */
00090                         gtk_tree_view_column_set_alignment(column, 1.0);
00091                         g_object_set(G_OBJECT(renderer), "xalign", 1.0, NULL);
00092                 }
00093                 gtk_tree_view_append_column(GTK_TREE_VIEW(starList), column);
00094         }
00095 
00096         /* Initialize the star browser */
00097         sb->browser.setSimulation(sb->app->simulation);
00098 
00099         /* Set up callback for when a star is selected */
00100         GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(starList));
00101         g_signal_connect(selection, "changed", G_CALLBACK(listStarSelect), app);
00102 
00103         /* From now on, it's the bottom-of-the-window controls */
00104         GtkWidget *frame = gtk_frame_new("Star Search Criteria");
00105         gtk_box_pack_start(GTK_BOX(mainbox), frame, FALSE, FALSE, 0);
00106 
00107         GtkWidget *hbox = gtk_hbox_new(FALSE, CELSPACING);
00108         gtk_container_set_border_width(GTK_CONTAINER(hbox), CELSPACING);
00109         gtk_container_add(GTK_CONTAINER(frame), hbox);
00110 
00111         /* List viewing preference settings */
00112         GtkWidget *vbox = gtk_vbox_new(FALSE, 0);
00113         GtkWidget *hbox2 = gtk_hbox_new(FALSE, CELSPACING);
00114         GtkWidget *label = gtk_label_new("Maximum Stars Displayed in List");
00115         gtk_box_pack_start(GTK_BOX(hbox2), label, TRUE, FALSE, 0);
00116         sb->entry = gtk_entry_new_with_max_length(3);
00117         gtk_entry_set_width_chars(GTK_ENTRY(sb->entry), 5);
00118         gtk_box_pack_start(GTK_BOX(hbox2), sb->entry, TRUE, FALSE, 0);
00119         gtk_box_pack_start(GTK_BOX(vbox), hbox2, TRUE, FALSE, 0);
00120         sb->scale = gtk_hscale_new_with_range(MINLISTSTARS, MAXLISTSTARS, 1);
00121         gtk_scale_set_draw_value(GTK_SCALE(sb->scale), FALSE);
00122         gtk_range_set_update_policy(GTK_RANGE(sb->scale), GTK_UPDATE_DISCONTINUOUS);
00123         g_signal_connect(sb->scale, "value-changed", G_CALLBACK(listStarSliderChange), sb);
00124         g_signal_connect(sb->entry, "focus-out-event", G_CALLBACK(listStarEntryChange), sb);
00125         gtk_box_pack_start(GTK_BOX(vbox), sb->scale, TRUE, FALSE, 0);
00126         gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, FALSE, 0);
00127 
00128         /* Set initial Star Value */
00129         gtk_range_set_value(GTK_RANGE(sb->scale), sb->numListStars);
00130         if (sb->numListStars == MINLISTSTARS)
00131         {
00132                 /* Force update manually (scale won't trigger event) */
00133                 listStarEntryChange(GTK_ENTRY(sb->entry), NULL, sb);
00134                 refreshBrowser(NULL, sb);
00135         }
00136 
00137         /* Radio Buttons */
00138         vbox = gtk_vbox_new(TRUE, 0);
00139         makeRadioItems(sbRadioLabels, vbox, GTK_SIGNAL_FUNC(radioClicked), NULL, sb);
00140         gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0);
00141 
00142         /* Common Buttons */
00143         hbox = gtk_hbox_new(TRUE, CELSPACING);
00144         if (buttonMake(hbox, "Center", (GtkSignalFunc)actionCenterSelection, app))
00145                 return;
00146         if (buttonMake(hbox, "Go To", (GtkSignalFunc)actionGotoSelection, app))
00147                 return;
00148         if (buttonMake(hbox, "Refresh", (GtkSignalFunc)refreshBrowser, sb))
00149                 return;
00150         gtk_box_pack_start(GTK_BOX(mainbox), hbox, FALSE, FALSE, 0);
00151 
00152         g_signal_connect(browser, "response", G_CALLBACK(starDestroy), browser);
00153         
00154         gtk_widget_set_usize(browser, 500, 400); /* Absolute Size, urghhh */
00155         gtk_widget_show_all(browser);
00156 }


Variable Documentation

const char* const sbRadioLabels[] [static]
 

Initial value:

{
        "Nearest",
        "Brightest (App.)",
        "Brightest (Abs.)",
        "With Planets",
        NULL
}

Definition at line 51 of file dialog-star.h.

const char* const sbTitles[] [static]
 

Initial value:

{
        "Name",
        "Distance(LY)",
        "App. Mag",
        "Abs. Mag",
        "Type"
}

Definition at line 42 of file dialog-star.h.


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