mirror of
https://gitlab.gnome.org/GNOME/gimp
synced 2024-10-22 12:32:37 +00:00
start with a reasonable size and paned position and remember the window
2007-05-06 Sven Neumann <sven@gimp.org> * plug-ins/helpbrowser/dialog.c: start with a reasonable size and paned position and remember the window size and paned position at least within a GIMP session. svn path=/trunk/; revision=22439
This commit is contained in:
parent
5341a85720
commit
c4bf0847db
|
@ -1,3 +1,9 @@
|
||||||
|
2007-05-06 Sven Neumann <sven@gimp.org>
|
||||||
|
|
||||||
|
* plug-ins/helpbrowser/dialog.c: start with a reasonable size and
|
||||||
|
paned position and remember the window size and paned position at
|
||||||
|
least within a GIMP session.
|
||||||
|
|
||||||
2007-05-06 Sven Neumann <sven@gimp.org>
|
2007-05-06 Sven Neumann <sven@gimp.org>
|
||||||
|
|
||||||
* gimptool-2.0.in: define datarootdir before datadir (bug #436386).
|
* gimptool-2.0.in: define datarootdir before datadir (bug #436386).
|
||||||
|
|
|
@ -63,6 +63,15 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define GIMP_HELP_BROWSER_DIALOG_DATA "gimp-help-browser-dialog"
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
gint32 width;
|
||||||
|
gint32 height;
|
||||||
|
gint32 paned_position;
|
||||||
|
} DialogData;
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
HISTORY_TITLE,
|
HISTORY_TITLE,
|
||||||
|
@ -71,85 +80,92 @@ enum
|
||||||
|
|
||||||
/* local function prototypes */
|
/* local function prototypes */
|
||||||
|
|
||||||
static GtkUIManager * ui_manager_new (GtkWidget *window);
|
static GtkUIManager * ui_manager_new (GtkWidget *window);
|
||||||
static void browser_dialog_404 (HtmlDocument *doc,
|
static void browser_dialog_404 (HtmlDocument *doc,
|
||||||
const gchar *uri,
|
const gchar *uri,
|
||||||
const gchar *message);
|
const gchar *message);
|
||||||
|
|
||||||
static void back_callback (GtkAction *action,
|
static void back_callback (GtkAction *action,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
static void forward_callback (GtkAction *action,
|
static void forward_callback (GtkAction *action,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
static void index_callback (GtkAction *action,
|
static void index_callback (GtkAction *action,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
static void zoom_in_callback (GtkAction *action,
|
static void zoom_in_callback (GtkAction *action,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
static void zoom_out_callback (GtkAction *action,
|
static void zoom_out_callback (GtkAction *action,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
static void close_callback (GtkAction *action,
|
static void close_callback (GtkAction *action,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
static void online_callback (GtkAction *action,
|
static void online_callback (GtkAction *action,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
|
|
||||||
static void update_toolbar (void);
|
static void update_toolbar (void);
|
||||||
|
|
||||||
static void combo_changed (GtkWidget *widget,
|
static void combo_changed (GtkWidget *widget,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
|
|
||||||
static void drag_begin (GtkWidget *widget,
|
static void drag_begin (GtkWidget *widget,
|
||||||
GdkDragContext *context,
|
GdkDragContext *context,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
static void drag_data_get (GtkWidget *widget,
|
static void drag_data_get (GtkWidget *widget,
|
||||||
GdkDragContext *context,
|
GdkDragContext *context,
|
||||||
GtkSelectionData *selection_data,
|
GtkSelectionData *selection_data,
|
||||||
guint info,
|
guint info,
|
||||||
guint time,
|
guint time,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
static void view_realize (GtkWidget *widget);
|
|
||||||
static void view_unrealize (GtkWidget *widget);
|
|
||||||
static gboolean view_popup_menu (GtkWidget *widget,
|
|
||||||
GdkEventButton *event);
|
|
||||||
static gboolean view_button_press (GtkWidget *widget,
|
|
||||||
GdkEventButton *event);
|
|
||||||
|
|
||||||
static void title_changed (HtmlDocument *doc,
|
static void row_activated (GtkTreeView *tree_view,
|
||||||
const gchar *new_title,
|
GtkTreePath *path,
|
||||||
gpointer data);
|
GtkTreeViewColumn *column);
|
||||||
static void link_clicked (HtmlDocument *doc,
|
static void dialog_unmap (GtkWidget *window,
|
||||||
const gchar *uri,
|
GtkWidget *paned);
|
||||||
gpointer data);
|
|
||||||
static gboolean request_url (HtmlDocument *doc,
|
static void view_realize (GtkWidget *widget);
|
||||||
const gchar *uri,
|
static void view_unrealize (GtkWidget *widget);
|
||||||
|
static gboolean view_popup_menu (GtkWidget *widget,
|
||||||
|
GdkEventButton *event);
|
||||||
|
static gboolean view_button_press (GtkWidget *widget,
|
||||||
|
GdkEventButton *event);
|
||||||
|
|
||||||
|
static void title_changed (HtmlDocument *doc,
|
||||||
|
const gchar *new_title,
|
||||||
|
gpointer data);
|
||||||
|
static void link_clicked (HtmlDocument *doc,
|
||||||
|
const gchar *uri,
|
||||||
|
gpointer data);
|
||||||
|
static gboolean request_url (HtmlDocument *doc,
|
||||||
|
const gchar *uri,
|
||||||
HtmlStream *stream,
|
HtmlStream *stream,
|
||||||
GError **error);
|
GError **error);
|
||||||
static gboolean io_handler (GIOChannel *io,
|
static gboolean io_handler (GIOChannel *io,
|
||||||
GIOCondition condition,
|
GIOCondition condition,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
static void load_remote_page (const gchar *uri);
|
static void load_remote_page (const gchar *uri);
|
||||||
|
|
||||||
static void history_add (GtkComboBox *combo,
|
static void history_add (GtkComboBox *combo,
|
||||||
const gchar *uri,
|
const gchar *uri,
|
||||||
const gchar *title);
|
const gchar *title);
|
||||||
|
|
||||||
static gboolean has_case_prefix (const gchar *haystack,
|
static gboolean has_case_prefix (const gchar *haystack,
|
||||||
const gchar *needle);
|
const gchar *needle);
|
||||||
|
|
||||||
static gchar * filename_from_uri (const gchar *uri);
|
static gchar * filename_from_uri (const gchar *uri);
|
||||||
|
|
||||||
|
|
||||||
/* private variables */
|
/* private variables */
|
||||||
|
|
||||||
static const gchar *eek_png_tag = "<h1>Eeek!</h1>";
|
static const gchar *eek_png_tag = "<h1>Eeek!</h1>";
|
||||||
|
|
||||||
static Queue *queue = NULL;
|
static Queue *queue = NULL;
|
||||||
static gchar *current_uri = NULL;
|
static gchar *current_uri = NULL;
|
||||||
|
|
||||||
static GtkWidget *html = NULL;
|
static GtkWidget *html = NULL;
|
||||||
static GtkWidget *tree_view = NULL;
|
static GtkWidget *tree_view = NULL;
|
||||||
static GtkUIManager *ui_manager = NULL;
|
static GtkUIManager *ui_manager = NULL;
|
||||||
static GtkWidget *button_prev = NULL;
|
static GtkWidget *button_prev = NULL;
|
||||||
static GtkWidget *button_next = NULL;
|
static GtkWidget *button_next = NULL;
|
||||||
static GdkCursor *busy_cursor = NULL;
|
static GdkCursor *busy_cursor = NULL;
|
||||||
|
|
||||||
static GtkTargetEntry help_dnd_target_table[] =
|
static GtkTargetEntry help_dnd_target_table[] =
|
||||||
{
|
{
|
||||||
|
@ -160,37 +176,6 @@ static GtkTargetEntry help_dnd_target_table[] =
|
||||||
|
|
||||||
/* public functions */
|
/* public functions */
|
||||||
|
|
||||||
static void
|
|
||||||
row_activated (GtkTreeView *tree_view,
|
|
||||||
GtkTreePath *path,
|
|
||||||
GtkTreeViewColumn *column)
|
|
||||||
{
|
|
||||||
GtkTreeModel *model = gtk_tree_view_get_model (tree_view);
|
|
||||||
GtkTreeIter iter;
|
|
||||||
GimpHelpDomain *domain;
|
|
||||||
GimpHelpLocale *locale;
|
|
||||||
GimpHelpItem *item;
|
|
||||||
gchar *uri;
|
|
||||||
|
|
||||||
gtk_tree_model_get_iter (model, &iter, path);
|
|
||||||
|
|
||||||
gtk_tree_model_get (model, &iter,
|
|
||||||
0, &item,
|
|
||||||
-1);
|
|
||||||
|
|
||||||
domain = g_object_get_data (G_OBJECT (model), "domain");
|
|
||||||
locale = g_object_get_data (G_OBJECT (model), "locale");
|
|
||||||
|
|
||||||
uri = g_strconcat (domain->help_uri, "/",
|
|
||||||
locale->locale_id, "/",
|
|
||||||
item->ref,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
browser_dialog_load (uri, TRUE);
|
|
||||||
|
|
||||||
g_free (uri);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
browser_dialog_open (void)
|
browser_dialog_open (void)
|
||||||
{
|
{
|
||||||
|
@ -210,9 +195,12 @@ browser_dialog_open (void)
|
||||||
GtkCellRenderer *cell;
|
GtkCellRenderer *cell;
|
||||||
GdkPixbuf *pixbuf;
|
GdkPixbuf *pixbuf;
|
||||||
gchar *eek_png_path;
|
gchar *eek_png_path;
|
||||||
|
DialogData data = { 640, 560, 240 };
|
||||||
|
|
||||||
gimp_ui_init ("helpbrowser", TRUE);
|
gimp_ui_init ("helpbrowser", TRUE);
|
||||||
|
|
||||||
|
gimp_get_data (GIMP_HELP_BROWSER_DIALOG_DATA, &data);
|
||||||
|
|
||||||
eek_png_path = g_build_filename (gimp_data_directory (),
|
eek_png_path = g_build_filename (gimp_data_directory (),
|
||||||
"themes", "Default", "images",
|
"themes", "Default", "images",
|
||||||
"stock-wilber-eek-64.png", NULL);
|
"stock-wilber-eek-64.png", NULL);
|
||||||
|
@ -227,7 +215,7 @@ browser_dialog_open (void)
|
||||||
gtk_window_set_title (GTK_WINDOW (window), _("GIMP Help Browser"));
|
gtk_window_set_title (GTK_WINDOW (window), _("GIMP Help Browser"));
|
||||||
gtk_window_set_role (GTK_WINDOW (window), "helpbrowser");
|
gtk_window_set_role (GTK_WINDOW (window), "helpbrowser");
|
||||||
|
|
||||||
gtk_window_set_default_size (GTK_WINDOW (window), 420, 500);
|
gtk_window_set_default_size (GTK_WINDOW (window), data.width, data.height);
|
||||||
|
|
||||||
g_signal_connect (window, "destroy",
|
g_signal_connect (window, "destroy",
|
||||||
G_CALLBACK (gtk_main_quit),
|
G_CALLBACK (gtk_main_quit),
|
||||||
|
@ -278,8 +266,7 @@ browser_dialog_open (void)
|
||||||
gimp_throbber_set_image (GIMP_THROBBER (button),
|
gimp_throbber_set_image (GIMP_THROBBER (button),
|
||||||
gtk_image_new_from_pixbuf (pixbuf));
|
gtk_image_new_from_pixbuf (pixbuf));
|
||||||
|
|
||||||
|
/* the horizontal paned */
|
||||||
|
|
||||||
paned = gtk_hpaned_new ();
|
paned = gtk_hpaned_new ();
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), paned, TRUE, TRUE, 0);
|
gtk_box_pack_start (GTK_BOX (vbox), paned, TRUE, TRUE, 0);
|
||||||
gtk_widget_show (paned);
|
gtk_widget_show (paned);
|
||||||
|
@ -288,6 +275,7 @@ browser_dialog_open (void)
|
||||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll),
|
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll),
|
||||||
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
|
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
|
||||||
gtk_paned_add1 (GTK_PANED (paned), scroll);
|
gtk_paned_add1 (GTK_PANED (paned), scroll);
|
||||||
|
gtk_paned_set_position (GTK_PANED (paned), data.paned_position);
|
||||||
gtk_widget_show (scroll);
|
gtk_widget_show (scroll);
|
||||||
|
|
||||||
tree_view = gtk_tree_view_new ();
|
tree_view = gtk_tree_view_new ();
|
||||||
|
@ -350,7 +338,6 @@ browser_dialog_open (void)
|
||||||
"text", HISTORY_TITLE,
|
"text", HISTORY_TITLE,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
gtk_widget_set_size_request (GTK_WIDGET (combo), 320, -1);
|
|
||||||
gtk_box_pack_start (GTK_BOX (hbox), combo, TRUE, TRUE, 0);
|
gtk_box_pack_start (GTK_BOX (hbox), combo, TRUE, TRUE, 0);
|
||||||
gtk_widget_show (combo);
|
gtk_widget_show (combo);
|
||||||
|
|
||||||
|
@ -362,7 +349,7 @@ browser_dialog_open (void)
|
||||||
html = html_view_new ();
|
html = html_view_new ();
|
||||||
queue = queue_new ();
|
queue = queue_new ();
|
||||||
|
|
||||||
gtk_widget_set_size_request (html, -1, 200);
|
gtk_widget_set_size_request (html, 300, 200);
|
||||||
|
|
||||||
scroll =
|
scroll =
|
||||||
gtk_scrolled_window_new (gtk_layout_get_hadjustment (GTK_LAYOUT (html)),
|
gtk_scrolled_window_new (gtk_layout_get_hadjustment (GTK_LAYOUT (html)),
|
||||||
|
@ -404,6 +391,10 @@ browser_dialog_open (void)
|
||||||
|
|
||||||
gtk_widget_grab_focus (html);
|
gtk_widget_grab_focus (html);
|
||||||
|
|
||||||
|
g_signal_connect (window, "unmap",
|
||||||
|
G_CALLBACK (dialog_unmap),
|
||||||
|
paned);
|
||||||
|
|
||||||
gtk_widget_show (window);
|
gtk_widget_show (window);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -613,8 +604,6 @@ browser_dialog_make_index (GimpHelpDomain *domain,
|
||||||
GtkTreeStore *store;
|
GtkTreeStore *store;
|
||||||
GList *list;
|
GList *list;
|
||||||
|
|
||||||
g_printerr ("%s\n", G_STRFUNC);
|
|
||||||
|
|
||||||
if (! locale->toplevel_items)
|
if (! locale->toplevel_items)
|
||||||
{
|
{
|
||||||
g_hash_table_foreach (locale->help_id_mapping,
|
g_hash_table_foreach (locale->help_id_mapping,
|
||||||
|
@ -974,6 +963,56 @@ drag_data_get (GtkWidget *widget,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
row_activated (GtkTreeView *tree_view,
|
||||||
|
GtkTreePath *path,
|
||||||
|
GtkTreeViewColumn *column)
|
||||||
|
{
|
||||||
|
GtkTreeModel *model = gtk_tree_view_get_model (tree_view);
|
||||||
|
GtkTreeIter iter;
|
||||||
|
GimpHelpDomain *domain;
|
||||||
|
GimpHelpLocale *locale;
|
||||||
|
GimpHelpItem *item;
|
||||||
|
gchar *uri;
|
||||||
|
|
||||||
|
gtk_tree_model_get_iter (model, &iter, path);
|
||||||
|
|
||||||
|
gtk_tree_model_get (model, &iter,
|
||||||
|
0, &item,
|
||||||
|
-1);
|
||||||
|
|
||||||
|
domain = g_object_get_data (G_OBJECT (model), "domain");
|
||||||
|
locale = g_object_get_data (G_OBJECT (model), "locale");
|
||||||
|
|
||||||
|
uri = g_strconcat (domain->help_uri, "/",
|
||||||
|
locale->locale_id, "/",
|
||||||
|
item->ref,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
browser_dialog_load (uri, TRUE);
|
||||||
|
|
||||||
|
g_free (uri);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
dialog_unmap (GtkWidget *window,
|
||||||
|
GtkWidget *paned)
|
||||||
|
{
|
||||||
|
DialogData data;
|
||||||
|
gint width;
|
||||||
|
gint height;
|
||||||
|
|
||||||
|
gtk_window_get_size (GTK_WINDOW (window), &width, &height);
|
||||||
|
|
||||||
|
data.width = width;
|
||||||
|
data.height = height;
|
||||||
|
data.paned_position = gtk_paned_get_position (GTK_PANED (paned));
|
||||||
|
|
||||||
|
gimp_set_data (GIMP_HELP_BROWSER_DIALOG_DATA, &data, sizeof (data));
|
||||||
|
|
||||||
|
gtk_main_quit ();
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
view_realize (GtkWidget *widget)
|
view_realize (GtkWidget *widget)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue