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