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