settings/src/iLiadLanguageScreen.h File Reference

settings -Language Selection Screen More...

#include <liberdm/display.h>

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

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)


Detailed Description

settings -Language Selection Screen

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 Documentation

#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

#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.


Function Documentation

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 }

Here is the call graph for this function:

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 }

Here is the call graph for this function:


Generated on Sun Dec 14 17:17:14 2008 by  doxygen 1.5.6