-void
-About::show_sub (bool yn)
-{
- if (yn) {
- vbox.pack_start (subvbox, true, true);
- subvbox.show_all ();
- } else {
- vbox.remove (subvbox);
- subvbox.hide ();
- }
-}
-
-gint
-About::button_release_event_impl (GdkEventButton* ev)
-{
- hide();
-
- if (!_ui->shown ()) {
- /* show it immediately */
- _ui->show();
- }
-
- return TRUE;
-}
-
-void
-About::realize_impl ()
-{
- Window::realize_impl ();
- get_window().set_decorations (GdkWMDecoration (GDK_DECOR_BORDER|GDK_DECOR_RESIZEH));
- // get_window().set_decorations (GdkWMDecoration (0));
-}
-
-bool
-About::load_logo_size ()
-{
- gchar buf[1024];
- FILE *fp;
- string path = find_data_file ("splash.ppm");
-
- if (path.length() == 0) {
- return false;
- }
-
- if ((fp = fopen (path.c_str(), "rb")) == 0) {
- error << compose (_("cannot open splash image file \"%1\""), path) << endmsg;
- return false;
- }
-
- fgets (buf, sizeof (buf), fp);
- if (strcmp (buf, "P6\n") != 0) {
- fclose (fp);
- return false;
- }
-
- fgets (buf, sizeof (buf), fp);
- fgets (buf, sizeof (buf), fp);
- sscanf (buf, "%d %d", &logo_width, &logo_height);
- fclose (fp);
- return true;
-}
-
-bool
-About::load_logo (Gtk::Window& window)
-{
- GdkGC* gc;
- gchar buf[1024];
- guchar *pixelrow;
- FILE *fp;
- gint count;
- gint i;
- string path;
-
- path = find_data_file ("splash.ppm");
-
- if (path.length() == 0) {
- return false;
- }
-
- if ((fp = fopen (path.c_str(), "rb")) == 0) {
- return false;
- }
-
- fgets (buf, sizeof (buf), fp);
- if (strcmp (buf, "P6\n") != 0) {
- fclose (fp);
- return false;
- }
-
- fgets (buf, sizeof (buf), fp);
- fgets (buf, sizeof (buf), fp);
- sscanf (buf, "%d %d", &logo_width, &logo_height);
-
- fgets (buf, sizeof (buf), fp);
- if (strcmp (buf, "255\n") != 0) {
- fclose (fp);
- return false;
- }
-
- Gtk::Preview preview (GTK_PREVIEW_COLOR);
-
- preview.size (logo_width, logo_height);
- pixelrow = new guchar[logo_width * 3];
-
- for (i = 0; i < logo_height; i++) {
- count = fread (pixelrow, sizeof (unsigned char), logo_width * 3, fp);
- if (count != (logo_width * 3))
- {
- delete [] pixelrow;
- fclose (fp);
- return false;
- }
- preview.draw_row (pixelrow, 0, i, logo_width);
- }
-
- window.realize ();
-
- logo_pixmap = gdk_pixmap_new (GTK_WIDGET(window.gtkobj())->window, logo_width, logo_height,
- gtk_preview_get_visual()->depth);
- gc = gdk_gc_new (logo_pixmap);
- gtk_preview_put (preview.gtkobj(), logo_pixmap, gc, 0, 0, 0, 0, logo_width, logo_height);
- gdk_gc_destroy (gc);
-
- delete [] pixelrow;
- fclose (fp);
-
- return true;
-}
-
-gint
-About::logo_area_expose (GdkEventExpose* ev)
-{
- if (!drawn) {
- drawn = true;
- }
-
- if (logo_pixmap) {
- logo_area.get_window().draw_pixmap (logo_area.get_style()->get_black_gc(),
- Gdk_Pixmap (logo_pixmap),
- 0, 0,
- ((logo_area.width() - logo_width) / 2),
- ((logo_area.height() - logo_height) / 2),
- logo_width, logo_height);
- gdk_flush ();
- }
-
- return FALSE;
-}
-