<div dir="ltr">nice! code looks good, ack<br><div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Apr 11, 2014 at 11:43 PM, Jonathon Jongsma <span dir="ltr"><<a href="mailto:jjongsma@redhat.com" target="_blank">jjongsma@redhat.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Based on the new design for the 'connect to server' dialog from Nautilus.<br>
---<br>
 src/remote-viewer.c | 87 +++++++++++++++++++++++++++++++++++++++++++++--------<br>
 1 file changed, 75 insertions(+), 12 deletions(-)<br>
<br>
diff --git a/src/remote-viewer.c b/src/remote-viewer.c<br>
index fe8b5a3..15d576b 100644<br>
--- a/src/remote-viewer.c<br>
+++ b/src/remote-viewer.c<br>
@@ -843,6 +843,24 @@ error:<br>
<br>
 #endif<br>
<br>
+static void entry_icon_release_cb(GtkEntry* entry, gpointer data G_GNUC_UNUSED)<br>
+{<br>
+    gtk_entry_set_text(entry, "");<br>
+    gtk_widget_grab_focus(GTK_WIDGET(entry));<br>
+}<br>
+<br>
+static void entry_changed_cb(GtkEditable* entry, gpointer data G_GNUC_UNUSED)<br>
+{<br>
+    gboolean rtl = (gtk_widget_get_direction(GTK_WIDGET(entry)) == GTK_TEXT_DIR_RTL);<br>
+    gboolean active = gtk_entry_get_text_length(GTK_ENTRY(entry)) > 0;<br>
+<br>
+    g_object_set(entry,<br>
+                 "secondary-icon-name", active ? (rtl ? "edit-clear-rtl-symbolic" : "edit-clear-symbolic") : NULL,<br>
+                 "secondary-icon-activatable", active,<br>
+                 "secondary-icon-sensitive", active,<br>
+                 NULL);<br>
+}<br>
+<br>
 static void<br>
 recent_selection_changed_dialog_cb(GtkRecentChooser *chooser, gpointer data)<br>
 {<br>
@@ -868,12 +886,38 @@ recent_item_activated_dialog_cb(GtkRecentChooser *chooser G_GNUC_UNUSED, gpointe<br>
    gtk_dialog_response(GTK_DIALOG (data), GTK_RESPONSE_ACCEPT);<br>
 }<br>
<br>
+static void make_label_light(GtkLabel* label)<br>
+{<br>
+    PangoAttrList* attributes = pango_attr_list_new();<br>
+#if GTK_CHECK_VERSION(3, 0, 0)<br>
+    gtk_style_context_add_class(gtk_widget_get_style_context(GTK_WIDGET(label)), "dim-label");<br>
+#else<br>
+    GtkStyle* style = gtk_widget_get_style(GTK_WIDGET(label));<br>
+    GdkColor* c = &style->text[GTK_STATE_INSENSITIVE];<br>
+    pango_attr_list_insert(attributes, pango_attr_foreground_new(c->red, c->green, c->blue));<br>
+#endif<br>
+    pango_attr_list_insert(attributes, pango_attr_scale_new(0.9));<br>
+    gtk_label_set_attributes(label, attributes);<br>
+    pango_attr_list_unref(attributes);<br>
+}<br>
+<br>
+static void make_label_bold(GtkLabel* label)<br>
+{<br>
+    PangoAttrList* attributes = pango_attr_list_new();<br>
+    pango_attr_list_insert(attributes, pango_attr_weight_new(PANGO_WEIGHT_BOLD));<br>
+    gtk_label_set_attributes(label, attributes);<br>
+    pango_attr_list_unref(attributes);<br>
+<br>
+}<br>
+<br>
 static gint<br>
 connect_dialog(gchar **uri)<br>
 {<br>
-    GtkWidget *dialog, *area, *label, *entry, *recent;<br>
+    GtkWidget *dialog, *area, *box, *label, *entry, *recent;<br>
+#if !GTK_CHECK_VERSION(3, 0, 0)<br>
+    GtkWidget *alignment;<br>
+#endif<br>
     GtkRecentFilter *rfilter;<br>
-    GtkTable *table;<br>
     gint retval;<br>
<br>
     /* Create the widgets */<br>
@@ -886,28 +930,47 @@ connect_dialog(gchar **uri)<br>
                                          GTK_RESPONSE_ACCEPT,<br>
                                          NULL);<br>
     gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT);<br>
+    gtk_container_set_border_width(GTK_CONTAINER(dialog), 5);<br>
     area = gtk_dialog_get_content_area(GTK_DIALOG(dialog));<br>
-    table = GTK_TABLE(gtk_table_new(1, 2, 0));<br>
-    gtk_box_pack_start(GTK_BOX(area), GTK_WIDGET(table), TRUE, TRUE, 0);<br>
-    gtk_table_set_row_spacings(table, 5);<br>
-    gtk_table_set_col_spacings(table, 5);<br>
+    box = gtk_vbox_new(FALSE, 6);<br>
+    gtk_container_set_border_width(GTK_CONTAINER(box), 5);<br>
+    gtk_box_pack_start(GTK_BOX(area), box, TRUE, TRUE, 0);<br>
<br>
-    label = gtk_label_new(_("URL:"));<br>
+    label = gtk_label_new_with_mnemonic(_("_Connection Address"));<br>
     gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);<br>
-    gtk_table_attach_defaults(table, label, 0, 1, 0, 1);<br>
+    gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 0);<br>
     entry = GTK_WIDGET(gtk_entry_new());<br>
     gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);<br>
     g_object_set(entry, "width-request", 200, NULL);<br>
-    gtk_table_attach_defaults(table, entry, 1, 2, 0, 1);<br>
+    g_signal_connect(entry, "changed", G_CALLBACK(entry_changed_cb), entry);<br>
+    g_signal_connect(entry, "icon-release", G_CALLBACK(entry_icon_release_cb), entry);<br>
+    gtk_box_pack_start(GTK_BOX(box), entry, TRUE, TRUE, 0);<br>
+    gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry);<br>
+    make_label_bold(GTK_LABEL(label));<br>
+<br>
+    label = gtk_label_new(_("For example, spice://<a href="http://foo.example.org:5900" target="_blank">foo.example.org:5900</a>"));<br>
+    gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);<br>
+    make_label_light(GTK_LABEL(label));<br>
+#if GTK_CHECK_VERSION(3, 0, 0)<br>
+    gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 0);<br>
+    gtk_widget_set_margin_bottom(label, 12);<br>
+#else<br>
+    alignment = gtk_alignment_new(0, 0, 1, 1);<br>
+    gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 0, 12, 0, 0);<br>
+    gtk_container_add(GTK_CONTAINER(alignment), label);<br>
+    gtk_box_pack_start(GTK_BOX(box), alignment, TRUE, TRUE, 0);<br>
+#endif<br>
<br>
-    label = gtk_label_new(_("Recent connections:"));<br>
-    gtk_box_pack_start(GTK_BOX(area), label, TRUE, TRUE, 0);<br>
+    label = gtk_label_new_with_mnemonic(_("_Recent Connections"));<br>
+    make_label_bold(GTK_LABEL(label));<br>
+    gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 0);<br>
     gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);<br>
<br>
     recent = GTK_WIDGET(gtk_recent_chooser_widget_new());<br>
     gtk_recent_chooser_set_show_icons(GTK_RECENT_CHOOSER(recent), FALSE);<br>
     gtk_recent_chooser_set_sort_type(GTK_RECENT_CHOOSER(recent), GTK_RECENT_SORT_MRU);<br>
-    gtk_box_pack_start(GTK_BOX(area), recent, TRUE, TRUE, 0);<br>
+    gtk_box_pack_start(GTK_BOX(box), recent, TRUE, TRUE, 0);<br>
+    gtk_label_set_mnemonic_widget(GTK_LABEL(label), recent);<br>
<br>
     rfilter = gtk_recent_filter_new();<br>
     gtk_recent_filter_add_mime_type(rfilter, "application/x-spice");<br>
<span class="HOEnZb"><font color="#888888">--<br>
1.9.0<br>
<br>
_______________________________________________<br>
virt-tools-list mailing list<br>
<a href="mailto:virt-tools-list@redhat.com">virt-tools-list@redhat.com</a><br>
<a href="https://www.redhat.com/mailman/listinfo/virt-tools-list" target="_blank">https://www.redhat.com/mailman/listinfo/virt-tools-list</a><br>
</font></span></blockquote></div><br><br clear="all"><br>-- <br>Marc-André Lureau
</div></div></div>