#include "hardinfo.h"
#include "about.h"
static void about_close(GtkWidget *widget, gpointer data)
{
GtkAbout *about = (GtkAbout*) data;
gtk_widget_destroy(about->window);
}
GtkAbout *
gtk_about_new(const gchar * name, const gchar * version,
const gchar * description, const gchar * authors[], const gchar * logo_img)
{
GtkWidget *img;
gchar *buf;
const gchar *auth;
GtkWidget *window, *vbox, *label, *btn, *hr, *hbox;
GtkAbout *about;
gint i;
about = g_new0(GtkAbout, 1);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "About");
gtk_container_set_border_width(GTK_CONTAINER(window), 8);
about->window = window;
gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
vbox = gtk_vbox_new(FALSE, 5);
gtk_box_set_spacing(GTK_BOX(vbox), 3);
gtk_container_add(GTK_CONTAINER(window), vbox);
img = gtk_image_new_from_file(logo_img);
gtk_widget_show(img);
gtk_box_pack_start(GTK_BOX(vbox), img, FALSE, FALSE, 0);
gtk_widget_set_usize(GTK_WIDGET(img), 64, 64);
#define ADD_LABEL(x,y) label = gtk_label_new(x); \
gtk_label_set_use_markup(GTK_LABEL(label), TRUE); \
gtk_widget_show(label); \
gtk_box_pack_start(GTK_BOX(y), label, TRUE, TRUE, 0);
buf =
g_strdup_printf
("%s %s", name,
version);
ADD_LABEL(buf, vbox);
g_free(buf);
ADD_LABEL(description, vbox);
for (i = 0; authors[i] != NULL; i++) {
auth = authors[i];
if (*auth == '>') {
auth++;
buf = g_strdup_printf("%s", auth);
ADD_LABEL(buf, vbox);
g_free(buf);
} else {
buf = g_strdup_printf("%s", auth);
ADD_LABEL(buf, vbox);
g_free(buf);
}
}
hr = gtk_hseparator_new();
gtk_box_pack_start(GTK_BOX(vbox), hr, FALSE, FALSE, 0);
hbox = gtk_hbutton_box_new();
gtk_container_set_border_width(GTK_CONTAINER(hbox), 4);
gtk_widget_show(hbox);
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
gtk_button_box_set_spacing(GTK_BUTTON_BOX(hbox), 6);
gtk_button_box_set_layout(GTK_BUTTON_BOX(hbox), GTK_BUTTONBOX_END);
btn = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
g_signal_connect(G_OBJECT(btn), "clicked", (GCallback)about_close, about);
gtk_widget_show(btn);
gtk_box_pack_start(GTK_BOX(hbox), btn, FALSE, FALSE, 0);
gtk_widget_show_all(window);
return about;
}