Fixed indentation, fixed url handling, added mooname
This commit is contained in:
parent
3b9f4e0a5f
commit
2f46f14ae2
|
@ -6,6 +6,7 @@
|
|||
#include <glade/glade.h>
|
||||
#include <libgnome/libgnome.h>
|
||||
|
||||
#include "gm-world-info-dialog.h"
|
||||
#include "../gm-world.h"
|
||||
#include "../gm-support.h"
|
||||
#include "../gm-pixbuf.h"
|
||||
|
@ -18,71 +19,98 @@ gboolean on_gm_world_info_dialog_url_button_release(GtkWidget *button,
|
|||
/* Private */
|
||||
void
|
||||
gm_world_info_dialog_set_label(GtkLabel *label, gchar *text) {
|
||||
if (text) {
|
||||
gtk_label_set_markup(label, text);
|
||||
} else {
|
||||
gtk_label_set_markup(label, _("<i>unspecified</i>"));
|
||||
}
|
||||
if (text) {
|
||||
gtk_label_set_markup(label, text);
|
||||
} else {
|
||||
gtk_label_set_markup(label, _("<i>unspecified</i>"));
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
gm_world_info_dialog_event_box_cursor(GtkWidget *widget) {
|
||||
GdkCursor *cursor = gdk_cursor_new(GDK_HAND2);
|
||||
gdk_window_set_cursor(widget->window, cursor);
|
||||
gdk_cursor_destroy(cursor);
|
||||
}
|
||||
|
||||
/* Public */
|
||||
|
||||
GtkDialog *
|
||||
gm_world_info_dialog_new(GmWorldInfo world_info) {
|
||||
GladeXML *xml;
|
||||
GtkWidget *dlg, *widget;
|
||||
gchar *tmp;
|
||||
gm_world_info_dialog_new(GmWorldInfo const *world_info) {
|
||||
GladeXML *xml;
|
||||
GtkWidget *dlg, *widget;
|
||||
gchar *tmp;
|
||||
|
||||
xml = glade_xml_new(G_WORLD_INFO_XML, "gm_world_info_dialog", NULL);
|
||||
dlg = glade_xml_get_widget(xml, "gm_world_info_dialog");
|
||||
|
||||
if (world_info->name) {
|
||||
tmp = g_strconcat(world_info->name, " - ", _("World info"), NULL);
|
||||
gtk_window_set_title(GTK_WINDOW(dlg), tmp);
|
||||
g_free(tmp);
|
||||
}
|
||||
|
||||
gm_world_info_dialog_set_label(GTK_LABEL(glade_xml_get_widget(xml,
|
||||
"label_world_name")), world_info->name);
|
||||
gm_world_info_dialog_set_label(GTK_LABEL(glade_xml_get_widget(xml,
|
||||
"label_name")), world_info->admin);
|
||||
gm_world_info_dialog_set_label(GTK_LABEL(glade_xml_get_widget(xml,
|
||||
"label_location")), world_info->location);
|
||||
gm_world_info_dialog_set_label(GTK_LABEL(glade_xml_get_widget(xml,
|
||||
"label_system")), world_info->system);
|
||||
gm_world_info_dialog_set_label(GTK_LABEL(glade_xml_get_widget(xml,
|
||||
"label_characterset")), world_info->charset);
|
||||
gm_world_info_dialog_set_label(GTK_LABEL(glade_xml_get_widget(xml,
|
||||
"label_language")), world_info->language);
|
||||
|
||||
xml = glade_xml_new(G_WORLD_INFO_XML, "dlgWorldInfo", NULL);
|
||||
dlg = glade_xml_get_widget(xml, "dlgWorldInfo");
|
||||
if (world_info->homepage) {
|
||||
tmp = g_strconcat("<u><span color=\"#0000ff\">", world_info->homepage,
|
||||
"</span></u>", NULL);
|
||||
glade_xml_signal_connect_data(xml,
|
||||
"on_label_homepage_button_release",
|
||||
G_CALLBACK(on_gm_world_info_dialog_url_button_release), NULL);
|
||||
widget = glade_xml_get_widget(xml, "label_homepage");
|
||||
gtk_label_set_markup(GTK_LABEL(widget), tmp);
|
||||
g_free(tmp);
|
||||
|
||||
gm_world_info_dialog_event_box_cursor(glade_xml_get_widget(xml,
|
||||
"event_box_homepage"));
|
||||
} else {
|
||||
gtk_label_set_markup(GTK_LABEL(glade_xml_get_widget(xml,
|
||||
"label_homepage")), _("<i>unspecified</i>"));
|
||||
}
|
||||
|
||||
gm_world_info_dialog_set_label(GTK_LABEL(glade_xml_get_widget(xml,
|
||||
"lblName")), world_info.admin);
|
||||
gm_world_info_dialog_set_label(GTK_LABEL(glade_xml_get_widget(xml,
|
||||
"lblLocation")), world_info.location);
|
||||
gm_world_info_dialog_set_label(GTK_LABEL(glade_xml_get_widget(xml,
|
||||
"lblSystem")), world_info.system);
|
||||
gm_world_info_dialog_set_label(GTK_LABEL(glade_xml_get_widget(xml,
|
||||
"lblCharset")), world_info.charset);
|
||||
gm_world_info_dialog_set_label(GTK_LABEL(glade_xml_get_widget(xml,
|
||||
"lblLanguage")), world_info.language);
|
||||
if (world_info->contact) {
|
||||
tmp = g_strconcat("<u><span color=\"#0000ff\">", world_info->contact,
|
||||
"</span></u>", NULL);
|
||||
glade_xml_signal_connect_data(xml,
|
||||
"on_label_email_button_release",
|
||||
G_CALLBACK(on_gm_world_info_dialog_url_button_release), "mailto:");
|
||||
widget = glade_xml_get_widget(xml, "label_email");
|
||||
gtk_label_set_markup(GTK_LABEL(widget), tmp);
|
||||
g_free(tmp);
|
||||
|
||||
gm_world_info_dialog_event_box_cursor(glade_xml_get_widget(xml,
|
||||
"event_box_email"));
|
||||
} else {
|
||||
gtk_label_set_markup(GTK_LABEL(glade_xml_get_widget(xml,
|
||||
"label_email")), _("<i>unspecified</i>"));
|
||||
}
|
||||
|
||||
if (world_info.homepage) {
|
||||
tmp = g_strconcat("<u><span color=\"#0000ff\">", world_info.homepage,
|
||||
"</span></u>", NULL);
|
||||
glade_xml_signal_connect_data(xml,
|
||||
"on_gm_world_info_dialog_url_button_release",
|
||||
G_CALLBACK(on_gm_world_info_dialog_url_button_release), NULL);
|
||||
widget = glade_xml_get_widget(xml, "lblHomepage");
|
||||
gtk_label_set_markup(GTK_LABEL(widget), tmp);
|
||||
g_free(tmp);
|
||||
}
|
||||
if (world_info->logo) {
|
||||
gtk_image_set_from_pixbuf(GTK_IMAGE(glade_xml_get_widget(xml,
|
||||
"image_logo")), gm_pixbuf_get(world_info->logo));
|
||||
}
|
||||
|
||||
if (world_info.contact) {
|
||||
tmp = g_strconcat("<u><span color=\"#0000ff\">", world_info.contact,
|
||||
"</span></u>", NULL);
|
||||
glade_xml_signal_connect_data(xml,
|
||||
"on_gm_world_info_dialog_url_button_release",
|
||||
G_CALLBACK(on_gm_world_info_dialog_url_button_release), "mailto:");
|
||||
widget = glade_xml_get_widget(xml, "lblEmail");
|
||||
gtk_label_set_markup(GTK_LABEL(widget), tmp);
|
||||
g_free(tmp);
|
||||
}
|
||||
|
||||
if (world_info.logo) {
|
||||
gtk_image_set_from_pixbuf(GTK_IMAGE(glade_xml_get_widget(xml,
|
||||
"imageLogo")), gm_pixbuf_get(world_info.logo));
|
||||
}
|
||||
|
||||
glade_xml_signal_connect(xml, "on_dlgWorldInfo_delete",
|
||||
G_CALLBACK(gtk_widget_destroy));
|
||||
glade_xml_signal_connect_data(xml, "on_buttonClose_clicked",
|
||||
G_CALLBACK(gm_widget_destroy_data), dlg);
|
||||
|
||||
gtk_widget_show_all(dlg);
|
||||
|
||||
g_object_unref(xml);
|
||||
return GTK_DIALOG(dlg);
|
||||
glade_xml_signal_connect(xml, "on_gm_world_info_dialog_delete",
|
||||
G_CALLBACK(gtk_widget_destroy));
|
||||
glade_xml_signal_connect_data(xml, "on_button_close_clicked",
|
||||
G_CALLBACK(gm_widget_destroy_data), dlg);
|
||||
|
||||
gtk_widget_show_all(dlg);
|
||||
|
||||
g_object_unref(xml);
|
||||
return GTK_DIALOG(dlg);
|
||||
}
|
||||
|
||||
/* Callbacks */
|
||||
|
@ -90,22 +118,22 @@ gm_world_info_dialog_new(GmWorldInfo world_info) {
|
|||
gboolean
|
||||
on_gm_world_info_dialog_url_button_release(GtkWidget *label,
|
||||
GdkEventButton *event, gchar *prefix) {
|
||||
GError *err = NULL;
|
||||
gchar *tmp, *link;
|
||||
|
||||
if (prefix != NULL) {
|
||||
link = g_strconcat(prefix, gtk_label_get_text(GTK_LABEL(label)), NULL);
|
||||
} else {
|
||||
link = g_strdup(gtk_label_get_text(GTK_LABEL(label)));
|
||||
}
|
||||
|
||||
if (!gnome_url_show(link, &err)) {
|
||||
tmp = g_strdup_printf("Could not open link: %s", err->message);
|
||||
gm_error_dialog(tmp, NULL);
|
||||
g_free(tmp);
|
||||
g_error_free(err);
|
||||
}
|
||||
|
||||
GError *err = NULL;
|
||||
gchar *tmp, *link;
|
||||
|
||||
if (prefix != NULL) {
|
||||
link = g_strconcat(prefix, gtk_label_get_text(GTK_LABEL(label)), NULL);
|
||||
} else {
|
||||
link = g_strdup(gtk_label_get_text(GTK_LABEL(label)));
|
||||
}
|
||||
|
||||
if (!gnome_url_show(link, &err)) {
|
||||
tmp = g_strdup_printf(_("Could not open link: %s"), err->message);
|
||||
gm_error_dialog(tmp, NULL);
|
||||
g_free(tmp);
|
||||
g_error_free(err);
|
||||
}
|
||||
|
||||
g_free(link);
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
|
Reference in New Issue