remote-viewer-connect: Changed hardcoded UI into XML

Hardcoded UI removed in favor of XML.
Added the new XML file for translation.
This commit is contained in:
Lukas Venhoda
2015-06-15 12:47:32 +02:00
committed by Pavel Grunt
parent ce31441c73
commit 0571843d7f
4 changed files with 168 additions and 68 deletions

View File

@ -3,6 +3,7 @@ data/virt-viewer-mime.xml.in
src/gbinding.c
src/remote-viewer-main.c
src/remote-viewer.c
[type: gettext/glade] src/remote-viewer-connect.xml
[type: gettext/glade] src/virt-viewer-about.xml
src/virt-viewer-app.c
src/virt-viewer-auth.c

View File

@ -11,6 +11,7 @@ builderxml_DATA = \
virt-viewer-guest-details.xml \
virt-viewer-vm-connection.xml \
virt-viewer-preferences.xml \
remote-viewer-connect.xml \
$(NULL)
EXTRA_DIST = \

View File

@ -19,6 +19,7 @@
*/
#include "remote-viewer-connect.h"
#include "virt-viewer-util.h"
#include <glib/gi18n.h>
#include <gdk/gdkkeysyms.h>
@ -132,30 +133,14 @@ recent_item_activated_dialog_cb(GtkRecentChooser *chooser G_GNUC_UNUSED, gpointe
}
static void
make_label_light(GtkLabel* label)
make_label_small(GtkLabel* label)
{
PangoAttrList* attributes = pango_attr_list_new();
#if GTK_CHECK_VERSION(3, 0, 0)
gtk_style_context_add_class(gtk_widget_get_style_context(GTK_WIDGET(label)), "dim-label");
#else
GtkStyle* style = gtk_widget_get_style(GTK_WIDGET(label));
GdkColor* c = &style->text[GTK_STATE_INSENSITIVE];
pango_attr_list_insert(attributes, pango_attr_foreground_new(c->red, c->green, c->blue));
#endif
pango_attr_list_insert(attributes, pango_attr_scale_new(0.9));
gtk_label_set_attributes(label, attributes);
pango_attr_list_unref(attributes);
}
static void
make_label_bold(GtkLabel* label)
{
PangoAttrList* attributes = pango_attr_list_new();
pango_attr_list_insert(attributes, pango_attr_weight_new(PANGO_WEIGHT_BOLD));
gtk_label_set_attributes(label, attributes);
pango_attr_list_unref(attributes);
}
/**
* remote_viewer_connect_dialog
*
@ -169,11 +154,9 @@ make_label_bold(GtkLabel* label)
gboolean
remote_viewer_connect_dialog(gchar **uri)
{
GtkWidget *window, *box, *label, *entry, *recent, *connect_button, *cancel_button, *button_box;
#if !GTK_CHECK_VERSION(3, 0, 0)
GtkWidget *alignment;
#endif
GtkWidget *window, *label, *entry, *recent, *connect_button, *cancel_button;
GtkRecentFilter *rfilter;
GtkBuilder *builder;
ConnectionInfo ci = {
FALSE,
@ -183,47 +166,18 @@ remote_viewer_connect_dialog(gchar **uri)
g_return_val_if_fail(uri && *uri == NULL, FALSE);
/* Create the widgets */
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_container_set_border_width(GTK_CONTAINER(window), 5);
box = gtk_vbox_new(FALSE, 6);
gtk_container_set_border_width(GTK_CONTAINER(box), 5);
gtk_container_add(GTK_CONTAINER(window), box);
builder = virt_viewer_util_load_ui("remote-viewer-connect.xml");
g_return_val_if_fail(builder != NULL, GTK_RESPONSE_NONE);
label = gtk_label_new_with_mnemonic(_("_Connection Address"));
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 0);
entry = GTK_WIDGET(gtk_entry_new());
gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);
g_object_set(entry, "width-request", 200, NULL);
g_signal_connect(entry, "changed", G_CALLBACK(entry_changed_cb), entry);
g_signal_connect(entry, "icon-release", G_CALLBACK(entry_icon_release_cb), entry);
gtk_box_pack_start(GTK_BOX(box), entry, TRUE, TRUE, 0);
gtk_label_set_mnemonic_widget(GTK_LABEL(label), entry);
make_label_bold(GTK_LABEL(label));
window = GTK_WIDGET(gtk_builder_get_object(builder, "remote-viewer-connection-window"));
connect_button = GTK_WIDGET(gtk_builder_get_object(builder, "connect-button"));
cancel_button = GTK_WIDGET(gtk_builder_get_object(builder, "cancel-button"));
label = GTK_WIDGET(gtk_builder_get_object(builder, "example-label"));
entry = GTK_WIDGET(gtk_builder_get_object(builder, "connection-address-entry"));
label = gtk_label_new(_("For example, spice://foo.example.org:5900"));
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
make_label_light(GTK_LABEL(label));
#if GTK_CHECK_VERSION(3, 0, 0)
gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 0);
gtk_widget_set_margin_bottom(label, 12);
#else
alignment = gtk_alignment_new(0, 0, 1, 1);
gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 0, 12, 0, 0);
gtk_container_add(GTK_CONTAINER(alignment), label);
gtk_box_pack_start(GTK_BOX(box), alignment, TRUE, TRUE, 0);
#endif
make_label_small(GTK_LABEL(label));
label = gtk_label_new_with_mnemonic(_("_Recent Connections"));
make_label_bold(GTK_LABEL(label));
gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 0);
gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
recent = GTK_WIDGET(gtk_recent_chooser_widget_new());
gtk_recent_chooser_set_show_icons(GTK_RECENT_CHOOSER(recent), FALSE);
gtk_recent_chooser_set_sort_type(GTK_RECENT_CHOOSER(recent), GTK_RECENT_SORT_MRU);
gtk_box_pack_start(GTK_BOX(box), recent, TRUE, TRUE, 0);
gtk_label_set_mnemonic_widget(GTK_LABEL(label), recent);
recent = GTK_WIDGET(gtk_builder_get_object(builder, "recent-chooser"));
rfilter = gtk_recent_filter_new();
gtk_recent_filter_add_mime_type(rfilter, "application/x-spice");
@ -232,15 +186,6 @@ remote_viewer_connect_dialog(gchar **uri)
gtk_recent_chooser_set_filter(GTK_RECENT_CHOOSER(recent), rfilter);
gtk_recent_chooser_set_local_only(GTK_RECENT_CHOOSER(recent), FALSE);
button_box = gtk_hbutton_box_new();
gtk_button_box_set_layout(GTK_BUTTON_BOX(button_box), GTK_BUTTONBOX_END);
connect_button = gtk_button_new_with_label("Connect");
cancel_button = gtk_button_new_with_label("Cancel");
gtk_box_pack_start(GTK_BOX(button_box), cancel_button, FALSE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(button_box), connect_button, FALSE, TRUE, 1);
gtk_box_pack_start(GTK_BOX(box), button_box, FALSE, TRUE, 0);
g_signal_connect(window, "key-press-event",
G_CALLBACK(key_pressed_cb), window);
g_signal_connect(connect_button, "clicked",
@ -275,6 +220,7 @@ remote_viewer_connect_dialog(gchar **uri)
*uri = NULL;
}
g_object_unref(builder);
gtk_widget_destroy(window);
return ci.response;

View File

@ -0,0 +1,152 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->
<interface>
<object class="GtkWindow" id="remote-viewer-connection-window">
<property name="can_focus">False</property>
<property name="title" translatable="yes">Connection details</property>
<child>
<object class="GtkVBox" id="main-box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="border_width">10</property>
<property name="spacing">20</property>
<child>
<object class="GtkVBox" id="connection-address-box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel" id="connection-address-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Connection Address</property>
<property name="xalign">0</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="connection-address-entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="example-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="sensitive">False</property>
<property name="label" translatable="yes">For example, spice://foo.example.org:5900</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkVBox" id="recent-chooser-box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel" id="recent-chooser-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Recent connections</property>
<property name="xalign">0</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkRecentChooserWidget" id="recent-chooser">
<property name="can_focus">False</property>
<property name="limit">20</property>
<property name="local_only">False</property>
<property name="show_icons">False</property>
<property name="sort_type">mru</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkHButtonBox" id="button-box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="resize_mode">immediate</property>
<property name="spacing">6</property>
<property name="layout_style">end</property>
<child>
<object class="GtkButton" id="cancel-button">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="connect-button">
<property name="label" translatable="yes">Connect</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="pack_type">end</property>
<property name="position">3</property>
</packing>
</child>
</object>
</child>
</object>
</interface>