#include <liberdm/display.h>

Go to the source code of this file.
Classes | |
| struct | gtkLanguage_t |
Defines | |
| #define | LANGUAGE_SCREEN_WIDTH SCREEN_WIDTH |
| #define | LANGUAGE_SCREEN_HEIGHT SCREEN_HEIGHT |
| #define | LANGUAGE_SCREEN_SPACING 24 |
| #define | LANGUAGE_BUTTON_WIDTH 640 |
| #define | LANGUAGE_BUTTON_HEIGHT 44 |
| #define | LANGUAGE_SCREEN_PADDING_TOP 10 |
| #define | LANGUAGE_SCREEN_PADDING_BOTTOM 10 |
| #define | LANGUAGE_SCREEN_PADDING_LEFT (LANGUAGE_SCREEN_WIDTH - LANGUAGE_BUTTON_WIDTH) / 2 |
| #define | LANGUAGE_SCREEN_PADDING_RIGHT LANGUAGE_SCREEN_PADDING_LEFT |
| #define | LANGUAGE_MAX_BUTTON_NUMBER |
Functions | |
| GtkWidget * | iLiad_language_screen_create (void) |
| void | iLiad_language_screen_display_data (void) |
Copyright (C) 2005-2008 iRex Technologies B.V. All rights reserved.
Providing GUI to let users select language. Notes: This screen is not one page of gtk_notebook.
Definition in file iLiadLanguageScreen.h.
| #define LANGUAGE_BUTTON_HEIGHT 44 |
Definition at line 47 of file iLiadLanguageScreen.h.
| #define LANGUAGE_BUTTON_WIDTH 640 |
Definition at line 46 of file iLiadLanguageScreen.h.
| #define LANGUAGE_MAX_BUTTON_NUMBER |
Value:
( (LANGUAGE_SCREEN_HEIGHT \ -LANGUAGE_SCREEN_PADDING_TOP \ - LANGUAGE_SCREEN_PADDING_BOTTOM \ + LANGUAGE_SCREEN_SPACING) \ / (LANGUAGE_BUTTON_HEIGHT + LANGUAGE_SCREEN_SPACING) )
Definition at line 54 of file iLiadLanguageScreen.h.
| #define LANGUAGE_SCREEN_HEIGHT SCREEN_HEIGHT |
Definition at line 42 of file iLiadLanguageScreen.h.
| #define LANGUAGE_SCREEN_PADDING_BOTTOM 10 |
Definition at line 50 of file iLiadLanguageScreen.h.
| #define LANGUAGE_SCREEN_PADDING_LEFT (LANGUAGE_SCREEN_WIDTH - LANGUAGE_BUTTON_WIDTH) / 2 |
Definition at line 51 of file iLiadLanguageScreen.h.
| #define LANGUAGE_SCREEN_PADDING_RIGHT LANGUAGE_SCREEN_PADDING_LEFT |
Definition at line 52 of file iLiadLanguageScreen.h.
| #define LANGUAGE_SCREEN_PADDING_TOP 10 |
Definition at line 49 of file iLiadLanguageScreen.h.
| #define LANGUAGE_SCREEN_SPACING 24 |
Definition at line 44 of file iLiadLanguageScreen.h.
| #define LANGUAGE_SCREEN_WIDTH SCREEN_WIDTH |
Definition at line 41 of file iLiadLanguageScreen.h.
| GtkWidget* iLiad_language_screen_create | ( | void | ) |
Definition at line 75 of file iLiadLanguageScreen.c.
00076 { 00077 GtkWidget* window; 00078 GtkWidget* background; 00079 GtkWidget* alignment; 00080 GtkWidget* vbox; 00081 GtkWidget* button; 00082 GtkWidget* selection; 00083 gint i, nbuttons; 00084 GtkToggleButton* button_tbl[LANGUAGE_MAX_BUTTON_NUMBER + 1]; 00085 gint paddingTop, paddingBottom; 00086 00087 g_locale_installed_num = find_installed_locales(&g_locale_installed_tbl); 00088 // calculate how many buttons to be created 00089 nbuttons = ( (g_locale_installed_num <= LANGUAGE_MAX_BUTTON_NUMBER) 00090 ? g_locale_installed_num : LANGUAGE_MAX_BUTTON_NUMBER); 00091 00092 // window 00093 window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 00094 gtk_window_set_title(GTK_WINDOW(window), PACKAGE " " VERSION); 00095 gtk_window_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); 00096 gtk_container_set_border_width(GTK_CONTAINER(window), 0); 00097 gtk_widget_set_size_request(GTK_WIDGET(window), SCREEN_WIDTH, SCREEN_HEIGHT); 00098 gtk_window_set_modal(GTK_WINDOW(window), TRUE); 00099 gtk_window_set_resizable(GTK_WINDOW(window), FALSE); 00100 gtk_window_fullscreen(GTK_WINDOW(window)); 00101 g_select_language.window = window; 00102 00103 // background 00104 background = gtk_event_box_new(); 00105 gtk_widget_set_name(background, "language_background"); 00106 gtk_widget_set_size_request(background, LANGUAGE_SCREEN_WIDTH, LANGUAGE_SCREEN_HEIGHT); 00107 gtk_container_add(GTK_CONTAINER(window), background); 00108 00109 // alignment 00110 alignment = gtk_alignment_new(0, 0, 0, 0); 00111 // calculate top padding and bottom padding 00112 paddingTop = (LANGUAGE_SCREEN_HEIGHT + LANGUAGE_SCREEN_SPACING 00113 - (LANGUAGE_BUTTON_HEIGHT + LANGUAGE_SCREEN_SPACING) * nbuttons) / 2; 00114 paddingBottom = paddingTop; 00115 ST_LOGPRINTF("top padding = %d, bottom padding = %d", paddingTop, paddingBottom); 00116 gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 00117 paddingTop, paddingBottom, 00118 LANGUAGE_SCREEN_PADDING_LEFT, LANGUAGE_SCREEN_PADDING_RIGHT); 00119 gtk_container_add(GTK_CONTAINER(background), alignment); 00120 00121 // vbox 00122 vbox = gtk_vbox_new(FALSE, LANGUAGE_SCREEN_SPACING); 00123 gtk_container_add(GTK_CONTAINER(alignment), vbox); 00124 00125 // button 00126 ST_LOGPRINTF("Creating %d buttons.", nbuttons); 00127 00128 for (i = 0 ; i < nbuttons ; i++) 00129 { 00130 button = ergtk_toggle_button_new_with_label( g_locale_installed_tbl[i].long_name ); 00131 button_tbl[i] = GTK_TOGGLE_BUTTON(button); 00132 gtk_widget_set_size_request(button, LANGUAGE_BUTTON_WIDTH, LANGUAGE_BUTTON_HEIGHT); 00133 gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0); 00134 g_signal_connect(G_OBJECT(button), "button_press_event", 00135 G_CALLBACK(on_language_button_press), button); 00136 } 00137 button_tbl[i] = NULL; 00138 00139 // selection 00140 selection = ergtk_selection_group_new(button_tbl); 00141 ergtk_selection_group_set_details(ERGTK_SELECTION_GROUP(selection), 0, 1); 00142 g_select_language.selection = selection; 00143 00144 // signal handlers 00145 g_signal_connect(G_OBJECT(background), "expose-event", G_CALLBACK(on_language_expose), NULL); 00146 g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(on_language_destroy), &g_select_language); 00147 g_signal_connect(G_OBJECT(window), "key-press-event", G_CALLBACK(on_language_key_press), &g_select_language); 00148 00149 g_signal_connect(G_OBJECT(selection), "selection-update", 00150 G_CALLBACK(on_language_selection_update), &g_select_language); 00151 00152 gtk_widget_show_all(background); 00153 00154 // return 00155 return window; 00156 }

| void iLiad_language_screen_display_data | ( | void | ) |
Definition at line 158 of file iLiadLanguageScreen.c.
00159 { 00160 gint i; 00161 const char* locale; 00162 00163 ST_LOGPRINTF("entry"); 00164 00165 // get the current language setting 00166 locale = iLiad_language_data_get(); 00167 00168 // get the index of button 00169 for (i = 0 ; i < g_locale_installed_num ; i++) 00170 { 00171 if (strcmp(locale, g_locale_installed_tbl[i].code) == 0) 00172 { 00173 // found 00174 break; // exit for 00175 } 00176 } 00177 00178 if (i == g_locale_installed_num) 00179 { 00180 // not found 00181 ST_WARNPRINTF("Locale [%s] not installed.", locale); 00182 } 00183 else 00184 { 00185 // found 00186 GtkToggleButton* button = NULL; 00187 ST_LANGUAGEPRINTF("%s %s", locale, g_locale_installed_tbl[i].name); 00188 button = ergtk_selection_group_get_button((erGtkSelectionGroup*)g_select_language.selection, i); 00189 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE); 00190 gtk_widget_grab_focus(GTK_WIDGET(button)); 00191 } 00192 }

1.5.6