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>
|
||||
|
||||
* gimptool-2.0.in: define datarootdir before datadir (bug #436386).
|
||||
|
|
|
@ -63,6 +63,15 @@
|
|||
#endif
|
||||
|
||||
|
||||
#define GIMP_HELP_BROWSER_DIALOG_DATA "gimp-help-browser-dialog"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
gint32 width;
|
||||
gint32 height;
|
||||
gint32 paned_position;
|
||||
} DialogData;
|
||||
|
||||
enum
|
||||
{
|
||||
HISTORY_TITLE,
|
||||
|
@ -71,85 +80,92 @@ enum
|
|||
|
||||
/* local function prototypes */
|
||||
|
||||
static GtkUIManager * ui_manager_new (GtkWidget *window);
|
||||
static void browser_dialog_404 (HtmlDocument *doc,
|
||||
const gchar *uri,
|
||||
const gchar *message);
|
||||
static GtkUIManager * ui_manager_new (GtkWidget *window);
|
||||
static void browser_dialog_404 (HtmlDocument *doc,
|
||||
const gchar *uri,
|
||||
const gchar *message);
|
||||
|
||||
static void back_callback (GtkAction *action,
|
||||
gpointer data);
|
||||
static void forward_callback (GtkAction *action,
|
||||
gpointer data);
|
||||
static void index_callback (GtkAction *action,
|
||||
gpointer data);
|
||||
static void zoom_in_callback (GtkAction *action,
|
||||
gpointer data);
|
||||
static void zoom_out_callback (GtkAction *action,
|
||||
gpointer data);
|
||||
static void close_callback (GtkAction *action,
|
||||
gpointer data);
|
||||
static void online_callback (GtkAction *action,
|
||||
gpointer data);
|
||||
static void back_callback (GtkAction *action,
|
||||
gpointer data);
|
||||
static void forward_callback (GtkAction *action,
|
||||
gpointer data);
|
||||
static void index_callback (GtkAction *action,
|
||||
gpointer data);
|
||||
static void zoom_in_callback (GtkAction *action,
|
||||
gpointer data);
|
||||
static void zoom_out_callback (GtkAction *action,
|
||||
gpointer data);
|
||||
static void close_callback (GtkAction *action,
|
||||
gpointer data);
|
||||
static void online_callback (GtkAction *action,
|
||||
gpointer data);
|
||||
|
||||
static void update_toolbar (void);
|
||||
|
||||
static void combo_changed (GtkWidget *widget,
|
||||
gpointer data);
|
||||
static void combo_changed (GtkWidget *widget,
|
||||
gpointer data);
|
||||
|
||||
static void drag_begin (GtkWidget *widget,
|
||||
GdkDragContext *context,
|
||||
gpointer data);
|
||||
static void drag_data_get (GtkWidget *widget,
|
||||
GdkDragContext *context,
|
||||
GtkSelectionData *selection_data,
|
||||
guint info,
|
||||
guint time,
|
||||
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 drag_begin (GtkWidget *widget,
|
||||
GdkDragContext *context,
|
||||
gpointer data);
|
||||
static void drag_data_get (GtkWidget *widget,
|
||||
GdkDragContext *context,
|
||||
GtkSelectionData *selection_data,
|
||||
guint info,
|
||||
guint time,
|
||||
gpointer data);
|
||||
|
||||
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,
|
||||
static void row_activated (GtkTreeView *tree_view,
|
||||
GtkTreePath *path,
|
||||
GtkTreeViewColumn *column);
|
||||
static void dialog_unmap (GtkWidget *window,
|
||||
GtkWidget *paned);
|
||||
|
||||
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,
|
||||
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,
|
||||
GError **error);
|
||||
static gboolean io_handler (GIOChannel *io,
|
||||
GIOCondition condition,
|
||||
gpointer data);
|
||||
static void load_remote_page (const gchar *uri);
|
||||
GError **error);
|
||||
static gboolean io_handler (GIOChannel *io,
|
||||
GIOCondition condition,
|
||||
gpointer data);
|
||||
static void load_remote_page (const gchar *uri);
|
||||
|
||||
static void history_add (GtkComboBox *combo,
|
||||
const gchar *uri,
|
||||
const gchar *title);
|
||||
static void history_add (GtkComboBox *combo,
|
||||
const gchar *uri,
|
||||
const gchar *title);
|
||||
|
||||
static gboolean has_case_prefix (const gchar *haystack,
|
||||
const gchar *needle);
|
||||
static gboolean has_case_prefix (const gchar *haystack,
|
||||
const gchar *needle);
|
||||
|
||||
static gchar * filename_from_uri (const gchar *uri);
|
||||
static gchar * filename_from_uri (const gchar *uri);
|
||||
|
||||
|
||||
/* 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 gchar *current_uri = NULL;
|
||||
static Queue *queue = NULL;
|
||||
static gchar *current_uri = NULL;
|
||||
|
||||
static GtkWidget *html = NULL;
|
||||
static GtkWidget *tree_view = NULL;
|
||||
static GtkUIManager *ui_manager = NULL;
|
||||
static GtkWidget *button_prev = NULL;
|
||||
static GtkWidget *button_next = NULL;
|
||||
static GdkCursor *busy_cursor = NULL;
|
||||
static GtkWidget *html = NULL;
|
||||
static GtkWidget *tree_view = NULL;
|
||||
static GtkUIManager *ui_manager = NULL;
|
||||
static GtkWidget *button_prev = NULL;
|
||||
static GtkWidget *button_next = NULL;
|
||||
static GdkCursor *busy_cursor = NULL;
|
||||
|
||||
static GtkTargetEntry help_dnd_target_table[] =
|
||||
{
|
||||
|
@ -160,37 +176,6 @@ static GtkTargetEntry help_dnd_target_table[] =
|
|||
|
||||
/* 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
|
||||
browser_dialog_open (void)
|
||||
{
|
||||
|
@ -210,9 +195,12 @@ browser_dialog_open (void)
|
|||
GtkCellRenderer *cell;
|
||||
GdkPixbuf *pixbuf;
|
||||
gchar *eek_png_path;
|
||||
DialogData data = { 640, 560, 240 };
|
||||
|
||||
gimp_ui_init ("helpbrowser", TRUE);
|
||||
|
||||
gimp_get_data (GIMP_HELP_BROWSER_DIALOG_DATA, &data);
|
||||
|
||||
eek_png_path = g_build_filename (gimp_data_directory (),
|
||||
"themes", "Default", "images",
|
||||
"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_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_CALLBACK (gtk_main_quit),
|
||||
|
@ -278,8 +266,7 @@ browser_dialog_open (void)
|
|||
gimp_throbber_set_image (GIMP_THROBBER (button),
|
||||
gtk_image_new_from_pixbuf (pixbuf));
|
||||
|
||||
|
||||
|
||||
/* the horizontal paned */
|
||||
paned = gtk_hpaned_new ();
|
||||
gtk_box_pack_start (GTK_BOX (vbox), paned, TRUE, TRUE, 0);
|
||||
gtk_widget_show (paned);
|
||||
|
@ -288,6 +275,7 @@ browser_dialog_open (void)
|
|||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll),
|
||||
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
|
||||
gtk_paned_add1 (GTK_PANED (paned), scroll);
|
||||
gtk_paned_set_position (GTK_PANED (paned), data.paned_position);
|
||||
gtk_widget_show (scroll);
|
||||
|
||||
tree_view = gtk_tree_view_new ();
|
||||
|
@ -350,7 +338,6 @@ browser_dialog_open (void)
|
|||
"text", HISTORY_TITLE,
|
||||
NULL);
|
||||
|
||||
gtk_widget_set_size_request (GTK_WIDGET (combo), 320, -1);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), combo, TRUE, TRUE, 0);
|
||||
gtk_widget_show (combo);
|
||||
|
||||
|
@ -362,7 +349,7 @@ browser_dialog_open (void)
|
|||
html = html_view_new ();
|
||||
queue = queue_new ();
|
||||
|
||||
gtk_widget_set_size_request (html, -1, 200);
|
||||
gtk_widget_set_size_request (html, 300, 200);
|
||||
|
||||
scroll =
|
||||
gtk_scrolled_window_new (gtk_layout_get_hadjustment (GTK_LAYOUT (html)),
|
||||
|
@ -404,6 +391,10 @@ browser_dialog_open (void)
|
|||
|
||||
gtk_widget_grab_focus (html);
|
||||
|
||||
g_signal_connect (window, "unmap",
|
||||
G_CALLBACK (dialog_unmap),
|
||||
paned);
|
||||
|
||||
gtk_widget_show (window);
|
||||
}
|
||||
|
||||
|
@ -613,8 +604,6 @@ browser_dialog_make_index (GimpHelpDomain *domain,
|
|||
GtkTreeStore *store;
|
||||
GList *list;
|
||||
|
||||
g_printerr ("%s\n", G_STRFUNC);
|
||||
|
||||
if (! locale->toplevel_items)
|
||||
{
|
||||
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
|
||||
view_realize (GtkWidget *widget)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue