GtkAboutDialog, again



I have looked at that bug (109435) again.

The patch we had in bugzilla has the following features:
- display logo, name, version, website link, copyright,
  comment in the main dialog
- show the license in a secondary dialog
- show credits for authors, documenters, artists, translators 
  in a secondary dialog, organized in tab
- email addresses and urls can be formatted as links, and can
  trigger hooks when clicked
- *all* information is optional; if you display an about dialog
  without setting any properties, you get the default window icon
  as logo, and g_get_application_name () as name.
- there is a convenience varargs function which allows to set
  the properties and display the dialog in one step, without having
  to worry about the lifecycle of the dialog

While this isn't exactly a "minimal" about dialog, I don't want to
spend a large amount of time ripping out functionality which already
works (as I said, everything here is optional, so you can still 
create very simple about dialogs). 

The updated patch which I have just attached there contains the
following changes:

- fully documented
- updated to 2.4 api (G_DEFINE_TYPE, IPD, g_markup_printf_escaped)
- added a style property for the link color
- added setters and getters for all properties

The patch still contains the convenience API mentioned above, but
we can easily remove it if you think it isn't worth it. I have attached
the header, if you want to see the implementation, go
to the bug.

Matthias



/* GTK - The GIMP Toolkit

   Copyright (C) 2001 CodeFactory AB
   Copyright (C) 2001 Anders Carlsson <andersca codefactory se>
   Copyright (C) 2003, 2004 Matthias Clasen <mclasen redhat com>

   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public License as
   published by the Free Software Foundation; either version 2 of the
   License, or (at your option) any later version.

   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Library General Public License for more details.

   You should have received a copy of the GNU Library General Public
   License along with the Gnome Library; see the file COPYING.LIB.  If not,
   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
   Boston, MA 02111-1307, USA.

   Author: Anders Carlsson <andersca codefactory se>
*/

#ifndef __GTK_ABOUT_DIALOG_H__
#define __GTK_ABOUT_DIALOG_H__

#include <gtk/gtkdialog.h>

G_BEGIN_DECLS

#define GTK_TYPE_ABOUT_DIALOG            (gtk_about_dialog_get_type ())
#define GTK_ABOUT_DIALOG(object)         (G_TYPE_CHECK_INSTANCE_CAST ((object), GTK_TYPE_ABOUT_DIALOG, GtkAboutDialog))
#define GTK_ABOUT_DIALOG_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_ABOUT_DIALOG, GtkAboutDialogClass))
#define GTK_IS_ABOUT_DIALOG(object)      (G_TYPE_CHECK_INSTANCE_TYPE ((object), GTK_TYPE_ABOUT_DIALOG))
#define GTK_IS_ABOUT_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_ABOUT_DIALOG))
#define GTK_ABOUT_DIALOG_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_ABOUT_DIALOG, GtkAboutDialogClass))

typedef struct _GtkAboutDialog        GtkAboutDialog;
typedef struct _GtkAboutDialogClass   GtkAboutDialogClass;

struct _GtkAboutDialog 
{
  GtkDialog parent_instance;

  /*< private >*/
  gpointer private_data;
};

struct _GtkAboutDialogClass 
{
  GtkDialogClass parent_class;

  /* Padding for future expansion */
  void (*_gtk_reserved1) (void);
  void (*_gtk_reserved2) (void);
  void (*_gtk_reserved3) (void);
  void (*_gtk_reserved4) (void);
};

GType                  gtk_about_dialog_get_type               (void) G_GNUC_CONST;
GtkWidget             *gtk_about_dialog_new                    (void);
void                   gtk_show_about_dialog                   (GtkWindow       *parent,
								const gchar     *first_property_name,
								...);

G_CONST_RETURN gchar  *gtk_about_dialog_get_name               (GtkAboutDialog  *about);
void                   gtk_about_dialog_set_name               (GtkAboutDialog  *about,
								const gchar     *name);
G_CONST_RETURN gchar  *gtk_about_dialog_get_version            (GtkAboutDialog  *about);
void                   gtk_about_dialog_set_version            (GtkAboutDialog  *about,
								const gchar     *version);
G_CONST_RETURN gchar  *gtk_about_dialog_get_copyright          (GtkAboutDialog  *about);
void                   gtk_about_dialog_set_copyright          (GtkAboutDialog  *about,
								const gchar     *copyright);
G_CONST_RETURN gchar  *gtk_about_dialog_get_comments           (GtkAboutDialog  *about);
void                   gtk_about_dialog_set_comments           (GtkAboutDialog  *about,
								const gchar     *comments);
G_CONST_RETURN gchar  *gtk_about_dialog_get_license            (GtkAboutDialog  *about);
void                   gtk_about_dialog_set_license            (GtkAboutDialog  *about,
								const gchar     *license);
G_CONST_RETURN gchar  *gtk_about_dialog_get_website            (GtkAboutDialog  *about);
void                   gtk_about_dialog_set_website            (GtkAboutDialog  *about,
								const gchar     *website);
G_CONST_RETURN gchar  *gtk_about_dialog_get_website_label      (GtkAboutDialog  *about);
void                   gtk_about_dialog_set_website_label      (GtkAboutDialog  *about,
								const gchar     *website_label);
gchar                **gtk_about_dialog_get_authors            (GtkAboutDialog  *about);
void                   gtk_about_dialog_set_authors            (GtkAboutDialog  *about,
								gchar          **authors);
gchar                **gtk_about_dialog_get_documenters        (GtkAboutDialog  *about);
void                   gtk_about_dialog_set_documenters        (GtkAboutDialog  *about,
								gchar          **documenters);
gchar **               gtk_about_dialog_get_artists            (GtkAboutDialog  *about);
void                   gtk_about_dialog_set_artists            (GtkAboutDialog  *about,
								gchar          **artists);
G_CONST_RETURN gchar  *gtk_about_dialog_get_translator_credits (GtkAboutDialog  *about);
void                   gtk_about_dialog_set_translator_credits (GtkAboutDialog  *about,
								const gchar     *translator_credits);
GdkPixbuf             *gtk_about_dialog_get_logo               (GtkAboutDialog  *about);
void                   gtk_about_dialog_set_logo               (GtkAboutDialog  *about,
								GdkPixbuf       *logo);

typedef void (* GtkAboutDialogActivateLinkFunc) (GtkAboutDialog *about,
						 const gchar    *link);

GtkAboutDialogActivateLinkFunc gtk_about_dialog_set_email_hook (GtkAboutDialogActivateLinkFunc func);
GtkAboutDialogActivateLinkFunc gtk_about_dialog_set_url_hook   (GtkAboutDialogActivateLinkFunc func);

G_END_DECLS

#endif /* __GTK_ABOUT_DIALOG_H__ */




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]