diff --git a/data/glade/vcard_information_window.glade b/data/glade/vcard_information_window.glade index 036945e5b..17685e322 100644 --- a/data/glade/vcard_information_window.glade +++ b/data/glade/vcard_information_window.glade @@ -1,2768 +1,1597 @@ - - - + + + - - - 12 - Contact Information - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - True - False - True - False - False - GDK_WINDOW_TYPE_HINT_NORMAL - GDK_GRAVITY_NORTH_WEST - True - False - - - - - - True - False - 12 - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - True - GTK_POS_TOP - False - False - - - - 12 - True - False - 6 - - - - True - False - 12 - - - - True - 5 - 2 - False - 6 - 12 - - - - True - Jabber ID: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - Resource: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - Status: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - fill - - - - - - - True - Client: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 3 - 4 - fill - - - - - - - True - OS: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 4 - 5 - fill - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 0 - 1 - - - - - - - True - False - False - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - - - 1 - 2 - 1 - 2 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 3 - 4 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - True - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 4 - 5 - - - - - - - True - True - False - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - - - 1 - 2 - 2 - 3 - fill - fill - - - - - 0 - True - True - - - - - - True - False - 6 - - - - True - User avatar: - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - None - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - False - False - - - - - True - 0.5 - 0 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Configured avatar: - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - True - - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - - True - True - Click to force avatar - True - GTK_RELIEF_NORMAL - True - - - - 0 - False - False - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - True - False - 0 - - - - 6 - True - 1 - 4 - False - 6 - 12 - - - - True - False - False - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - - - 1 - 2 - 0 - 1 - - - - - - - True - False - False - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - - - 3 - 4 - 0 - 1 - - - - - - - True - Subscription: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - Ask: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 0 - 1 - fill - - - - - - - - - True - More - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - True - - - - - False - True - - - - - - True - Contact - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - 12 - True - 6 - 4 - False - 6 - 12 - - - - True - True - False - 0 - - - - 6 - True - 3 - 4 - False - 6 - 12 - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 0 - 1 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 3 - 4 - 0 - 1 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 1 - 2 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 2 - 3 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 3 - 4 - 2 - 3 - - - - - - - True - Family: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - Middle: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - Prefix: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - fill - - - - - - - True - Given: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 0 - 1 - fill - - - - - - - True - Suffix: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 2 - 3 - fill - - - - - - - - - True - Full Name - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - 4 - 1 - 2 - - - - - - - True - True - False - 0 - - - - 6 - True - 3 - 4 - False - 5 - 5 - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 0 - 1 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 3 - 4 - 0 - 1 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 1 - 2 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 3 - 4 - 1 - 2 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 2 - 3 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 3 - 4 - 2 - 3 - - - - - - - True - Street: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - City: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - State: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - fill - - - - - - - True - Extra Address: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 0 - 1 - fill - - - - - - - True - Postal Code: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 1 - 2 - fill - - - - - - - True - Country: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 2 - 3 - fill - - - - - - - - - True - Address - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - 4 - 2 - 3 - - - - - - - True - Homepage: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 3 - 4 - - - - - - - - True - Name: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - Nickname: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 0 - 1 - fill - - - - - - - True - Phone No.: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 5 - 6 - fill - - - - - - - True - Format: YYYY-MM-DD - True - False - - - - True - Birthday: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - - - 2 - 3 - 5 - 6 - fill - - - - - - - True - E-Mail: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 4 - 5 - fill - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 3 - 4 - 0 - 1 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 0 - 1 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 4 - 4 - 5 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 5 - 6 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 3 - 4 - 5 - 6 - - - - - - False - True - - - - - - True - Personal Info - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - 12 - True - 5 - 4 - False - 6 - 12 - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 0 - 1 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 3 - 4 - 0 - 1 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 1 - 2 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 3 - 4 - 1 - 2 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 4 - 3 - 4 - - - - - - - True - True - False - 0 - - - - 6 - True - 3 - 4 - False - 5 - 5 - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 0 - 1 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 3 - 4 - 0 - 1 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 1 - 2 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 3 - 4 - 1 - 2 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 2 - 3 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 3 - 4 - 2 - 3 - - - - - - - True - Street: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - City: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - State: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - fill - - - - - - - True - Extra Address: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 0 - 1 - fill - - - - - - - True - Postal Code: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 1 - 2 - fill - - - - - - - True - Country: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 2 - 3 - fill - - - - - - - - - True - Address - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - 4 - 2 - 3 - - - - - - - True - True - - False - False - GTK_JUSTIFY_LEFT - False - True - 0 - 0 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 1 - 2 - 4 - 5 - - - - - - - True - Company: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - Position: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - Department: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 0 - 1 - fill - - - - - - - True - Role: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 1 - 2 - fill - - - - - - - True - E-Mail: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 3 - 4 - fill - - - - - - - True - Phone No.: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 4 - 5 - fill - - - - - - False - True - - - - - - True - Work - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - 6 - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - 70 - True - True - False - False - True - GTK_JUSTIFY_LEFT - GTK_WRAP_WORD - False - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - False - True - - - - - - True - About - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - 6 - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - 70 - True - True - True - False - True - GTK_JUSTIFY_LEFT - GTK_WRAP_WORD - True - 0 - 0 - 0 - 0 - 0 - 0 - - - - - - False - True - - - - - - True - Comments - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - 0 - True - True - - - - - - True - False - 0 - - - - True - GTK_PROGRESS_LEFT_TO_RIGHT - 0 - 0.10000000149 - PANGO_ELLIPSIZE_NONE - - - 0 - False - False - - - - - - True - GTK_BUTTONBOX_END - 0 - - - - True - True - True - gtk-close - True - GTK_RELIEF_NORMAL - True - - - - - - 0 - True - True - - - - - 0 - True - True - - - - - - + + 12 + Contact Information + + + + + True + 12 + + + True + True + 0 + True + + + False + False + + + + + True + + + True + 12 + 6 + + + True + 12 + + + True + 5 + 2 + 12 + 6 + + + True + + + True + True + 0 + 0 + 5 + 5 + True + + + + + 1 + 2 + 2 + 3 + GTK_FILL + GTK_FILL + + + + + True + True + 0 + 0 + 5 + 5 + True + True + + + 1 + 2 + 4 + 5 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 1 + 2 + 3 + 4 + + + + + + True + False + + + True + True + 0 + 0 + 5 + 5 + True + + + + + 1 + 2 + 1 + 2 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 1 + 2 + + + + + + True + 0 + 0 + OS: + + + 4 + 5 + GTK_FILL + + + + + + True + 0 + 0 + Client: + + + 3 + 4 + GTK_FILL + + + + + + True + 0 + 0 + Status: + + + 2 + 3 + GTK_FILL + + + + + + True + 0 + 0 + Resource: + + + 1 + 2 + GTK_FILL + + + + + + True + 0 + 0 + Jabber ID: + + + GTK_FILL + + + + + + + + True + 6 + + + True + User avatar: + + + False + False + + + + + True + None + + + False + False + 1 + + + + + True + False + + + + True + 0 + gtk-missing-image + + + + + False + False + 2 + + + + + True + Configured avatar: + + + False + False + 3 + + + + + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True + gtk-missing-image + + + False + False + 4 + + + + + 1 + + + + + + + True + True + + + True + 6 + 1 + 4 + 12 + 6 + + + True + 0 + 0 + Ask: + + + 2 + 3 + GTK_FILL + + + + + + True + 0 + 0 + Subscription: + + + GTK_FILL + + + + + + True + False + + + True + 0 + 0 + 5 + 5 + + + + + 3 + 4 + + + + + + True + False + + + True + 0 + 0 + 5 + 5 + + + + + 1 + 2 + + + + + + + + True + 0 + 0 + More + + + label_item + + + + + 1 + + + + + False + + + + + True + 0 + 0 + Contact + + + tab + False + False + + + + + True + 12 + 6 + 4 + 12 + 6 + + + + + + + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 3 + 4 + 5 + 6 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 1 + 2 + 5 + 6 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 1 + 4 + 4 + 5 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 1 + 2 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 3 + 4 + + + + + + True + 0 + E-Mail: + + + 4 + 5 + GTK_FILL + + + + + + True + Format: YYYY-MM-DD + + + True + 0 + 0 + Birthday: + + + + + 2 + 3 + 5 + 6 + GTK_FILL + + + + + + True + 0 + 0 + Phone No.: + + + 5 + 6 + GTK_FILL + + + + + + True + 0 + 0 + Nickname: + + + 2 + 3 + GTK_FILL + + + + + + True + 0 + 0 + Name: + + + GTK_FILL + + + + + + True + 0 + 0 + Homepage: + + + 3 + 4 + + + + + + + True + True + + + True + 6 + 3 + 4 + 5 + 5 + + + True + 0 + 0 + Country: + + + 2 + 3 + 2 + 3 + GTK_FILL + + + + + + True + 0 + 0 + Postal Code: + + + 2 + 3 + 1 + 2 + GTK_FILL + + + + + + True + 0 + 0 + Extra Address: + + + 2 + 3 + GTK_FILL + + + + + + True + 0 + 0 + State: + + + 2 + 3 + GTK_FILL + + + + + + True + 0 + 0 + City: + + + 1 + 2 + GTK_FILL + + + + + + True + 0 + 0 + Street: + + + GTK_FILL + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 3 + 4 + 2 + 3 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 1 + 2 + 2 + 3 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 3 + 4 + 1 + 2 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 1 + 2 + 1 + 2 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 3 + 4 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 1 + 2 + + + + + + + + True + 0 + 0 + Address + + + label_item + + + + + 4 + 2 + 3 + + + + + + True + True + + + True + 6 + 3 + 4 + 12 + 6 + + + + + + + + + True + 0 + 0 + Suffix: + + + 2 + 3 + 2 + 3 + GTK_FILL + + + + + + True + 0 + 0 + Given: + + + 2 + 3 + GTK_FILL + + + + + + True + 0 + 0 + Prefix: + + + 2 + 3 + GTK_FILL + + + + + + True + 0 + 0 + Middle: + + + 1 + 2 + GTK_FILL + + + + + + True + 0 + 0 + Family: + + + GTK_FILL + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 3 + 4 + 2 + 3 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 1 + 2 + 2 + 3 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 1 + 2 + 1 + 2 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 3 + 4 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 1 + 2 + + + + + + + + True + 0 + 0 + Full Name + + + label_item + + + + + 4 + 1 + 2 + + + + + + 1 + False + + + + + True + 0 + 0 + Personal Info + + + tab + 1 + False + False + + + + + True + 12 + 5 + 4 + 12 + 6 + + + + + + + + + True + 0 + 0 + Phone No.: + + + 4 + 5 + GTK_FILL + + + + + + True + 0 + 0 + E-Mail: + + + 3 + 4 + GTK_FILL + + + + + + True + 0 + 0 + Role: + + + 2 + 3 + 1 + 2 + GTK_FILL + + + + + + True + 0 + 0 + Department: + + + 2 + 3 + GTK_FILL + + + + + + True + 0 + 0 + Position: + + + 1 + 2 + GTK_FILL + + + + + + True + 0 + 0 + Company: + + + GTK_FILL + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 1 + 2 + 4 + 5 + + + + + + True + True + + + True + 6 + 3 + 4 + 5 + 5 + + + True + 0 + 0 + Country: + + + 2 + 3 + 2 + 3 + GTK_FILL + + + + + + True + 0 + 0 + Postal Code: + + + 2 + 3 + 1 + 2 + GTK_FILL + + + + + + True + 0 + 0 + Extra Address: + + + 2 + 3 + GTK_FILL + + + + + + True + 0 + 0 + State: + + + 2 + 3 + GTK_FILL + + + + + + True + 0 + 0 + City: + + + 1 + 2 + GTK_FILL + + + + + + True + 0 + 0 + Street: + + + GTK_FILL + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 3 + 4 + 2 + 3 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 1 + 2 + 2 + 3 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 3 + 4 + 1 + 2 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 1 + 2 + 1 + 2 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 3 + 4 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 1 + 2 + + + + + + + + True + 0 + 0 + Address + + + label_item + + + + + 4 + 2 + 3 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 1 + 4 + 3 + 4 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 3 + 4 + 1 + 2 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 1 + 2 + 1 + 2 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 3 + 4 + + + + + + True + True + 0 + 0 + 5 + 5 + True + + + 1 + 2 + + + + + + 2 + False + + + + + True + 0 + 0 + Work + + + tab + 2 + False + False + + + + + True + True + 6 + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + + + 70 + True + True + False + GTK_WRAP_WORD + False + + + + + 3 + False + + + + + True + 0 + 0 + About + + + tab + 3 + False + False + + + + + True + True + 6 + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + + + 70 + True + True + GTK_WRAP_WORD + + + + + 4 + False + + + + + True + Comments + + + tab + 4 + False + False + + + + + 1 + + + + + True + + + True + 0.10000000149 + + + False + False + + + + + True + GTK_BUTTONBOX_END + + + True + True + True + gtk-close + True + 0 + + + + + + 1 + + + + + 2 + + + + + diff --git a/src/dialogs.py b/src/dialogs.py index 915f50827..f7bfe2cb9 100644 --- a/src/dialogs.py +++ b/src/dialogs.py @@ -2705,7 +2705,10 @@ class ImageChooserDialog(FileChooserDialog): path_to_file = gtkgui_helpers.decode_filechooser_file_paths( (path_to_file,))[0] if os.path.exists(path_to_file): - callback(widget, path_to_file) + if isinstance(callback, tuple): + callback[0](widget, path_to_file, *callback[1:]) + else: + callback(widget, path_to_file) try: if os.name == 'nt': @@ -2765,12 +2768,19 @@ class AvatarChooserDialog(ImageChooserDialog): ImageChooserDialog.__init__(self, path_to_file, on_response_ok, on_response_cancel) button = gtk.Button(None, gtk.STOCK_CLEAR) + self.response_clear = on_response_clear if on_response_clear: - button.connect('clicked', on_response_clear) + button.connect('clicked', self.on_clear) button.show_all() self.action_area.pack_start(button) self.action_area.reorder_child(button, 0) + def on_clear(self, widget): + if isinstance(self.response_clear, tuple): + self.response_clear[0](widget, *self.response_clear[1:]) + else: + self.response_clear(widget) + class AddSpecialNotificationDialog: def __init__(self, jid): '''jid is the jid for which we want to add special notification diff --git a/src/roster_window.py b/src/roster_window.py index b7e92cc81..306ca7f65 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -1830,6 +1830,63 @@ class RosterWindow: keys_str += jid + ' ' + keys[jid] + ' ' gajim.config.set_per('accounts', account, 'attached_gpg_keys', keys_str) + def update_avatar_in_gui(self, jid, account): + # Update roster + self.draw_avatar(jid, account) + # Update chat window + if gajim.interface.msg_win_mgr.has_window(jid, account): + win = gajim.interface.msg_win_mgr.get_window(jid, account) + ctrl = win.get_control(jid, account) + if win and ctrl.type_id != message_control.TYPE_GC: + ctrl.show_avatar() + + def on_set_custom_avatar_activate(self, widget, contact, account): + def on_ok(widget, path_to_file): + filesize = os.path.getsize(path_to_file) # in bytes + invalid_file = False + msg = '' + if os.path.isfile(path_to_file): + stat = os.stat(path_to_file) + if stat[6] == 0: + invalid_file = True + msg = _('File is empty') + else: + invalid_file = True + msg = _('File does not exist') + if invalid_file: + dialogs.ErrorDialog(_('Could not load image'), msg) + return + try: + pixbuf = gtk.gdk.pixbuf_new_from_file(path_to_file) + if filesize > 16384: # 16 kb + # get the image at 'notification size' + # and hope that user did not specify in ACE crazy size + pixbuf = gtkgui_helpers.get_scaled_pixbuf(pixbuf, 'tooltip') + except gobject.GError, msg: # unknown format + # msg should be string, not object instance + msg = str(msg) + dialogs.ErrorDialog(_('Could not load image'), msg) + return + puny_jid = helpers.sanitize_filename(contact.jid) + path_to_file = os.path.join(gajim.AVATAR_PATH, puny_jid) + '_local.png' + pixbuf.save(path_to_file, 'png') + dlg.destroy() + self.update_avatar_in_gui(contact.jid, account) + + def on_clear(widget): + dlg.destroy() + # Delete file: + puny_jid = helpers.sanitize_filename(contact.jid) + path_to_file = os.path.join(gajim.AVATAR_PATH, puny_jid) + '_local.png' + try: + os.remove(path_to_file) + except OSError: + gajim.log.debug('Cannot remove %s' % path_to_file) + self.update_avatar_in_gui(contact.jid, account) + + dlg = dialogs.AvatarChooserDialog(on_response_ok = on_ok, + on_response_clear = on_clear) + def on_edit_groups(self, widget, list_): dlg = dialogs.EditGroupsDialog(list_) dlg.run() @@ -1962,7 +2019,7 @@ class RosterWindow: account) if _('Not in Roster') not in contact.groups: - #contact is in normal group + # contact is in normal group edit_groups_menuitem.set_no_show_all(False) assign_openpgp_key_menuitem.set_no_show_all(False) edit_groups_menuitem.connect('activate', self.on_edit_groups, [( @@ -2025,6 +2082,7 @@ class RosterWindow: send_file_menuitem = xml.get_widget('send_file_menuitem') assign_openpgp_key_menuitem = xml.get_widget( 'assign_openpgp_key_menuitem') + set_custom_avatar_menuitem = xml.get_widget('set_custom_avatar_menuitem') add_special_notification_menuitem = xml.get_widget( 'add_special_notification_menuitem') execute_command_menuitem = xml.get_widget( @@ -2211,7 +2269,7 @@ class RosterWindow: account) if _('Not in Roster') not in contact.groups: - #contact is in normal group + # contact is in normal group edit_groups_menuitem.set_no_show_all(False) assign_openpgp_key_menuitem.set_no_show_all(False) add_to_roster_menuitem.hide() @@ -2256,6 +2314,8 @@ class RosterWindow: add_to_roster_menuitem.connect('activate', self.on_add_to_roster, contact, account) + set_custom_avatar_menuitem.connect('activate', + self.on_set_custom_avatar_activate, contact, account) # Remove many items when it's self contact row if our_jid: menuitem = xml.get_widget('manage_contact') diff --git a/src/vcard.py b/src/vcard.py index 6a348070c..e24366087 100644 --- a/src/vcard.py +++ b/src/vcard.py @@ -71,27 +71,17 @@ class VcardWindow: self.account = account self.gc_contact = gc_contact - self.xml.get_widget('no_user_avatar_label').set_no_show_all(True) - self.xml.get_widget('no_user_avatar_label').hide() - self.xml.get_widget('PHOTO_image').set_no_show_all(True) - self.xml.get_widget('PHOTO_image').hide() - image = gtk.Image() - self.photo_button = self.xml.get_widget('PHOTO_button') - self.photo_button.set_image(image) - self.nophoto_button = self.xml.get_widget('NOPHOTO_button') puny_jid = helpers.sanitize_filename(contact.jid) local_avatar_basepath = os.path.join(gajim.AVATAR_PATH, puny_jid) + \ '_local' for extension in ('.png', '.jpeg'): local_avatar_path = local_avatar_basepath + extension if os.path.isfile(local_avatar_path): + image = self.xml.get_widget('custom_avatar_image') image.set_from_file(local_avatar_path) - self.nophoto_button.set_no_show_all(True) - self.nophoto_button.hide() + image.show() + self.xml.get_widget('custom_avatar_label').show() break - else: - self.photo_button.set_no_show_all(True) - self.photo_button.hide() self.avatar_mime_type = None self.avatar_encoded = None self.vcard_arrived = False @@ -124,94 +114,6 @@ class VcardWindow: if win and ctrl.type_id != message_control.TYPE_GC: ctrl.show_avatar() - def on_NOPHOTO_button_clicked(self, button): - def on_ok(widget, path_to_file): - filesize = os.path.getsize(path_to_file) # in bytes - invalid_file = False - msg = '' - if os.path.isfile(path_to_file): - stat = os.stat(path_to_file) - if stat[6] == 0: - invalid_file = True - msg = _('File is empty') - else: - invalid_file = True - msg = _('File does not exist') - if invalid_file: - dialogs.ErrorDialog(_('Could not load image'), msg) - return - try: - pixbuf = gtk.gdk.pixbuf_new_from_file(path_to_file) - if filesize > 16384: # 16 kb - # get the image at 'notification size' - # and hope that user did not specify in ACE crazy size - pixbuf = gtkgui_helpers.get_scaled_pixbuf(pixbuf, 'tooltip') - except gobject.GError, msg: # unknown format - # msg should be string, not object instance - msg = str(msg) - dialogs.ErrorDialog(_('Could not load image'), msg) - return - puny_jid = helpers.sanitize_filename(self.contact.jid) - path_to_file = os.path.join(gajim.AVATAR_PATH, puny_jid) + '_local.png' - pixbuf.save(path_to_file, 'png') - self.dialog.destroy() - self.update_avatar_in_gui() - - # rescale it - pixbuf = gtkgui_helpers.get_scaled_pixbuf(pixbuf, 'vcard') - image = self.photo_button.get_image() - image.set_from_pixbuf(pixbuf) - self.photo_button.show() - self.nophoto_button.hide() - - def on_clear(widget): - self.dialog.destroy() - self.on_clear_button_clicked(widget) - - self.dialog = dialogs.AvatarChooserDialog(on_response_ok = on_ok, - on_response_clear = on_clear) - - def on_clear_button_clicked(self, widget): - # empty the image - image = self.photo_button.get_image() - image.set_from_pixbuf(None) - self.photo_button.hide() - self.nophoto_button.show() - # Delete file: - puny_jid = helpers.sanitize_filename(self.contact.jid) - path_to_file = os.path.join(gajim.AVATAR_PATH, puny_jid) + '_local.png' - try: - os.remove(path_to_file) - except OSError: - gajim.log.debug('Cannot remove %s' % path_to_file) - self.update_avatar_in_gui() - - def on_PHOTO_button_press_event(self, widget, event): - '''If right-clicked, show popup''' - if event.button == 3 and self.avatar_encoded: # right click - menu = gtk.Menu() - - # Try to get pixbuf -# pixbuf = gtkgui_helpers.get_avatar_pixbuf_from_cache(self.jid) - -# if pixbuf: -# nick = self.contact.get_shown_name() -# menuitem = gtk.ImageMenuItem(gtk.STOCK_SAVE_AS) -# menuitem.connect('activate', -# gtkgui_helpers.on_avatar_save_as_menuitem_activate, self.jid, -# None, nick + '.jpeg') -# menu.append(menuitem) - # show clear - menuitem = gtk.ImageMenuItem(gtk.STOCK_CLEAR) - menuitem.connect('activate', self.on_clear_button_clicked) - menu.append(menuitem) - menu.connect('selection-done', lambda w:w.destroy()) - # show the menu - menu.show_all() - menu.popup(None, None, None, event.button, event.time) - elif event.button == 1: # left click - self.on_NOPHOTO_button_clicked(widget) - def on_vcard_information_window_destroy(self, widget): if self.update_progressbar_timeout_id is not None: gobject.source_remove(self.update_progressbar_timeout_id)