00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00028 #include <liberdm/display.h>
00029 
00030 #include "connectionMgrLog.h"
00031 #include "gtkSettingItem.h"
00032 
00033 
00034 
00035 static void gtk_settingitem_class_init(GtkSettingItemClass * klass);
00036 static void gtk_settingitem_init(GtkSettingItem * settingitem);
00037 
00038 
00039 GtkWidget *gtk_settingitem_new(gchar * headerlabel)
00040 {
00041     GtkSettingItem *settingItem;
00042 
00043     settingItem = (GtkSettingItem*)g_object_new(GTK_SETTINGITEM_TYPE, NULL);
00044 
00045     
00046 
00047     if (headerlabel)
00048     {
00049         CN_LOGPRINTF("headerlabel %s", headerlabel);
00050         gtk_label_set_text(GTK_LABEL(settingItem->headerlabel), 
00051                            headerlabel);
00052     }
00053     return GTK_WIDGET(settingItem);
00054 }
00055 
00056 
00057 GType gtk_settingitem_get_type(void)
00058 {
00059     static GType settingitem_type = 0;
00060 
00061     if (!settingitem_type)
00062     {
00063         static const GTypeInfo settingitem_info = {
00064             sizeof(GtkSettingItemClass),
00065             NULL,               
00066             NULL,               
00067             (GClassInitFunc) gtk_settingitem_class_init,
00068             NULL,               
00069             NULL,               
00070             sizeof(GtkSettingItem),
00071             0,                  
00072             (GInstanceInitFunc) gtk_settingitem_init,
00073         };
00074 
00075         settingitem_type = g_type_register_static(GTK_TYPE_EVENT_BOX, 
00076                                                   "SettingItem", 
00077                                                   &settingitem_info, 
00078                                                   0);
00079     }
00080     return settingitem_type;
00081 }
00082 
00083 
00084 static void gtk_settingitem_class_init(GtkSettingItemClass * klass)
00085 {
00086     
00087 }
00088 
00089 
00090 
00091 
00092 
00093 
00094 
00095 
00096 
00097 
00098 
00099 static void gtk_settingitem_init(GtkSettingItem * settingitem)
00100 {
00101     GtkWidget *vbox;
00102     GtkWidget *header_background;
00103 
00104     
00105     gtk_widget_set_name(GTK_WIDGET(settingitem), "settingitem_background");
00106 
00107     
00108     vbox = gtk_vbox_new(FALSE, SETTINGITEM_ITEM_SPACING);
00109     gtk_container_add(GTK_CONTAINER(settingitem), vbox);
00110 
00111     
00112     header_background = gtk_event_box_new();
00113     gtk_widget_set_size_request(GTK_WIDGET(header_background), 
00114             SETTING_TITLE_MIN_WIDTH, SETTING_TITLE_MIN_HEIGHT);
00115     gtk_widget_set_name(GTK_WIDGET(header_background), 
00116             "settingitem_headerbackground");
00117     gtk_box_pack_start(GTK_BOX(vbox), header_background, FALSE, FALSE, 0);
00118 
00119     
00120     settingitem->headerlabel = gtk_label_new("");
00121     gtk_widget_set_name(GTK_WIDGET(settingitem->headerlabel), 
00122                         "settingitem_header");
00123     gtk_misc_set_alignment(GTK_MISC(settingitem->headerlabel), 0.03, 0.5);
00124     gtk_label_set_ellipsize(GTK_LABEL(settingitem->headerlabel), 
00125                             PANGO_ELLIPSIZE_END);
00126     gtk_label_set_justify(GTK_LABEL(settingitem->headerlabel), 
00127                           GTK_JUSTIFY_LEFT);
00128     gtk_container_add(GTK_CONTAINER(header_background), 
00129                       settingitem->headerlabel);
00130 
00131     
00132     settingitem->infolabel = gtk_label_new("");
00133     gtk_widget_set_size_request(GTK_WIDGET(settingitem->infolabel), 
00134                                 (-1), SETTING_INFO_MIN_HEIGHT);
00135     gtk_widget_set_name(GTK_WIDGET(settingitem->infolabel), 
00136                         "settingitem_infotext");
00137     gtk_misc_set_alignment(GTK_MISC(settingitem->infolabel), 0.03, 0.5);
00138     gtk_label_set_ellipsize(GTK_LABEL(settingitem->infolabel), 
00139                             PANGO_ELLIPSIZE_END);
00140     gtk_label_set_justify(GTK_LABEL(settingitem->infolabel), 
00141                           GTK_JUSTIFY_LEFT);
00142     gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(settingitem->infolabel), 
00143                        FALSE, FALSE, 0);
00144 
00145     
00146     settingitem->clientArea = gtk_event_box_new();
00147     gtk_widget_set_name(GTK_WIDGET(settingitem->clientArea), 
00148                         "settingitem_clientArea_background");
00149     gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(settingitem->clientArea), 
00150                        TRUE, TRUE, 0);
00151 
00152     gtk_widget_show_all(vbox);
00153 
00154     
00155     gtk_widget_hide(settingitem->infolabel);
00156 
00157 
00158 }
00159 
00160 
00161 void gtk_settingitem_set_info_text(GtkSettingItem *settingitem, 
00162                                    gchar *infotext)
00163 {
00164     g_return_if_fail(IS_GTK_SETTINGITEM(settingitem));
00165 
00166     if (infotext)
00167     {
00168         CN_LOGPRINTF("infolabel %s", infotext);
00169         gtk_label_set_text(GTK_LABEL(settingitem->infolabel), infotext);
00170         gtk_widget_show(settingitem->infolabel);
00171     }
00172 }
00173 
00174 
00175 void gtk_settingitem_set_header_text(GtkSettingItem * settingitem, 
00176                                      gchar * headertext)
00177 {
00178     g_return_if_fail(IS_GTK_SETTINGITEM(settingitem));
00179 
00180     if (headertext)
00181     {
00182         CN_LOGPRINTF("headerlabel %s", headertext);
00183         gtk_label_set_text(GTK_LABEL(settingitem->headerlabel), headertext);
00184     }
00185 }
00186 
00187 
00188 void gtk_settingitem_add_details(GtkSettingItem * settingitem, 
00189                                  GtkWidget * details)
00190 {
00191     g_return_if_fail(IS_GTK_SETTINGITEM(settingitem));
00192 
00193     if (details)
00194     {
00195         CN_LOGPRINTF("add 0x%x", (int)details);
00196         gtk_container_add(GTK_CONTAINER(settingitem->clientArea), details);
00197     }
00198 }
00199