fixed a crash on Cancel that occured due to bad list handling

* app/gdisplay_color_ui.c: fixed a crash on Cancel that occured
        due to bad list handling

        * app/module_db.c: indentation madness, no changes

        * app/nav_window.c: set the zoom label and slider first, then
        update the preview. Gives better user feedback. This is now what
        bugreport #3354 suggest, but it comes close.

        * plug-ins/common/plugindetails.c: tried to fix the strange resizing
        of the dialog. Should fix bug #3352.

--Sven
This commit is contained in:
Sven Neumann 1999-11-06 03:03:26 +00:00
parent 558271ff3b
commit 3333ca348d
13 changed files with 686 additions and 612 deletions

View File

@ -1,3 +1,17 @@
Sat Nov 6 03:57:20 MET 1999 Sven Neumann <sven@gimp.org>
* app/gdisplay_color_ui.c: fixed a crash on Cancel that occured
due to bad list handling
* app/module_db.c: indentation madness, no changes
* app/nav_window.c: set the zoom label and slider first, then
update the preview. Gives better user feedback. This is now what
bugreport #3354 suggest, but it comes close.
* plug-ins/common/plugindetails.c: tried to fix the strange resizing
of the dialog. Should fix bug #3352.
Fri Nov 5 15:32:15 MET 1999 Sven Neumann <sven@gimp.org> Fri Nov 5 15:32:15 MET 1999 Sven Neumann <sven@gimp.org>
* app/edit_selection.c: when moving layers/masks freeze the undo * app/edit_selection.c: when moving layers/masks freeze the undo

View File

@ -65,10 +65,13 @@ static const char * const statename[] = {
#ifdef __EMX__ #ifdef __EMX__
extern void gimp_color_selector_register(); extern void gimp_color_selector_register();
extern void gimp_color_selector_unregister(); extern void gimp_color_selector_unregister();
static struct main_funcs_struc { static struct main_funcs_struc {
gchar *name; gchar *name;
void (*func)(); void (*func)();
} gimp_main_funcs[] = { }
gimp_main_funcs[] = {
{ "gimp_color_selector_register", gimp_color_selector_register }, { "gimp_color_selector_register", gimp_color_selector_register },
{ "gimp_color_selector_unregister", gimp_color_selector_unregister }, { "gimp_color_selector_unregister", gimp_color_selector_unregister },
{ NULL, NULL } { NULL, NULL }
@ -141,7 +144,6 @@ static module_info *module_find_by_path (const char *fullpath);
#ifdef DUMP_DB #ifdef DUMP_DB
static void print_module_info (gpointer data, gpointer user_data); static void print_module_info (gpointer data, gpointer user_data);
#endif #endif
static void browser_popdown_callback (GtkWidget *w, gpointer client_data); static void browser_popdown_callback (GtkWidget *w, gpointer client_data);
static void browser_destroy_callback (GtkWidget *w, gpointer client_data); static void browser_destroy_callback (GtkWidget *w, gpointer client_data);
static void browser_info_update (module_info *, browser_st *); static void browser_info_update (module_info *, browser_st *);
@ -184,7 +186,8 @@ module_db_init (void)
} }
static void static void
free_a_single_module (gpointer data, gpointer user_data) free_a_single_module (gpointer data,
gpointer user_data)
{ {
module_info *mod = data; module_info *mod = data;
@ -195,7 +198,8 @@ free_a_single_module (gpointer data, gpointer user_data)
} }
static void static void
add_to_inhibit_string (gpointer data, gpointer user_data) add_to_inhibit_string (gpointer data,
gpointer user_data)
{ {
module_info *mod = data; module_info *mod = data;
GString *str = user_data; GString *str = user_data;
@ -475,7 +479,8 @@ valid_module_name (const char *filename)
static gboolean static gboolean
module_inhibited (const char *fullpath, const char *inhibit_list) module_inhibited (const char *fullpath,
const char *inhibit_list)
{ {
char *p; char *p;
int pathlen; int pathlen;
@ -559,7 +564,8 @@ module_initialize (char *filename)
} }
static void static void
mod_load (module_info *mod, gboolean verbose) mod_load (module_info *mod,
gboolean verbose)
{ {
gpointer symbol; gpointer symbol;
@ -649,7 +655,8 @@ mod_unload_completed_callback (void *data)
} }
static void static void
mod_unload (module_info *mod, gboolean verbose) mod_unload (module_info *mod,
gboolean verbose)
{ {
g_return_if_fail (mod->module != NULL); g_return_if_fail (mod->module != NULL);
g_return_if_fail (mod->unload != NULL); g_return_if_fail (mod->unload != NULL);
@ -673,7 +680,8 @@ mod_unload (module_info *mod, gboolean verbose)
#ifdef DUMP_DB #ifdef DUMP_DB
static void static void
print_module_info (gpointer data, gpointer user_data) print_module_info (gpointer data,
gpointer user_data)
{ {
module_info *i = data; module_info *i = data;
@ -703,20 +711,23 @@ print_module_info (gpointer data, gpointer user_data)
/* UI functions */ /* UI functions */
static void static void
browser_popdown_callback (GtkWidget *w, gpointer client_data) browser_popdown_callback (GtkWidget *w,
gpointer client_data)
{ {
gtk_widget_destroy (GTK_WIDGET (client_data)); gtk_widget_destroy (GTK_WIDGET (client_data));
} }
static void static void
browser_destroy_callback (GtkWidget *w, gpointer client_data) browser_destroy_callback (GtkWidget *w,
gpointer client_data)
{ {
gtk_signal_disconnect_by_data (GTK_OBJECT (modules), client_data); gtk_signal_disconnect_by_data (GTK_OBJECT (modules), client_data);
g_free (client_data); g_free (client_data);
} }
static void static void
browser_load_inhibit_callback (GtkWidget *w, gpointer data) browser_load_inhibit_callback (GtkWidget *w,
gpointer data)
{ {
browser_st *st = data; browser_st *st = data;
gboolean new_value; gboolean new_value;
@ -735,7 +746,8 @@ browser_load_inhibit_callback (GtkWidget *w, gpointer data)
} }
static void static void
browser_info_update (module_info *mod, browser_st *st) browser_info_update (module_info *mod,
browser_st *st)
{ {
int i; int i;
const char *text[NUM_INFO_LINES - 1]; const char *text[NUM_INFO_LINES - 1];
@ -818,7 +830,8 @@ browser_info_update (module_info *mod, browser_st *st)
} }
static void static void
browser_info_init (browser_st *st, GtkWidget *table) browser_info_init (browser_st *st,
GtkWidget *table)
{ {
GtkWidget *label; GtkWidget *label;
int i; int i;
@ -858,7 +871,8 @@ browser_info_init (browser_st *st, GtkWidget *table)
} }
static void static void
browser_select_callback (GtkWidget *widget, GtkWidget *child) browser_select_callback (GtkWidget *widget,
GtkWidget *child)
{ {
module_info *i; module_info *i;
browser_st *st; browser_st *st;
@ -876,7 +890,8 @@ browser_select_callback (GtkWidget *widget, GtkWidget *child)
static void static void
browser_load_unload_callback (GtkWidget *widget, gpointer data) browser_load_unload_callback (GtkWidget *widget,
gpointer data)
{ {
browser_st *st = data; browser_st *st = data;
@ -890,7 +905,8 @@ browser_load_unload_callback (GtkWidget *widget, gpointer data)
static void static void
make_list_item (gpointer data, gpointer user_data) make_list_item (gpointer data,
gpointer user_data)
{ {
module_info *info = data; module_info *info = data;
browser_st *st = user_data; browser_st *st = user_data;
@ -909,14 +925,18 @@ make_list_item (gpointer data, gpointer user_data)
static void static void
browser_info_add (GimpSet *set, module_info *mod, browser_st *st) browser_info_add (GimpSet *set,
module_info *mod,
browser_st *st)
{ {
make_list_item (mod, st); make_list_item (mod, st);
} }
static void static void
browser_info_remove (GimpSet *set, module_info *mod, browser_st *st) browser_info_remove (GimpSet *set,
module_info *mod,
browser_st *st)
{ {
GList *dlist, *free_list; GList *dlist, *free_list;
GtkWidget *list_item; GtkWidget *list_item;
@ -949,7 +969,8 @@ browser_info_remove (GimpSet *set, module_info *mod, browser_st *st)
static void static void
module_db_module_ondisk (gpointer data, gpointer user_data) module_db_module_ondisk (gpointer data,
gpointer user_data)
{ {
module_info *mod = data; module_info *mod = data;
struct stat statbuf; struct stat statbuf;
@ -977,7 +998,8 @@ module_db_module_ondisk (gpointer data, gpointer user_data)
static void static void
module_db_module_remove (gpointer data, gpointer user_data) module_db_module_remove (gpointer data,
gpointer user_data)
{ {
module_info *mod = data; module_info *mod = data;
@ -994,7 +1016,8 @@ typedef struct {
} find_by_path_closure; } find_by_path_closure;
static void static void
module_db_path_cmp (gpointer data, gpointer user_data) module_db_path_cmp (gpointer data,
gpointer user_data)
{ {
module_info *mod = data; module_info *mod = data;
find_by_path_closure *cl = user_data; find_by_path_closure *cl = user_data;
@ -1019,7 +1042,8 @@ module_find_by_path (const char *fullpath)
static void static void
browser_refresh_callback (GtkWidget *widget, gpointer data) browser_refresh_callback (GtkWidget *widget,
gpointer data)
{ {
GSList *kill_list = NULL; GSList *kill_list = NULL;

View File

@ -211,6 +211,7 @@ color_display_cancel_callback (GtkWidget *widget,
gpointer data) gpointer data)
{ {
GList *list; GList *list;
GList *next;
gtk_widget_hide (GTK_WIDGET (data)); gtk_widget_hide (GTK_WIDGET (data));
@ -221,10 +222,12 @@ color_display_cancel_callback (GtkWidget *widget,
while (list) while (list)
{ {
next = list->next;
if (!g_list_find (cdd.old_nodes, list->data)) if (!g_list_find (cdd.old_nodes, list->data))
gdisplay_color_detach_destroy (cdd.gdisp, list->data); gdisplay_color_detach_destroy (cdd.gdisp, list->data);
list = list->next; list = next;
} }
} }

View File

@ -31,6 +31,7 @@
#include "gimpui.h" #include "gimpui.h"
#include "gximage.h" #include "gximage.h"
#include "interface.h" #include "interface.h"
#include "nav_window.h"
#include "scroll.h" #include "scroll.h"
#include "scale.h" #include "scale.h"
@ -100,43 +101,17 @@ struct _NavWinData
}; };
static gint static gint nav_window_preview_events (GtkWidget *, GdkEvent *, gpointer *);
nav_window_preview_events (GtkWidget *, static gint nav_window_expose_events (GtkWidget *, GdkEvent *, gpointer *);
GdkEvent *, static void nav_window_update_preview (NavWinData *);
gpointer *); static void nav_window_update_preview_blank (NavWinData *iwd);
static gint static void destroy_preview_widget (NavWinData *);
nav_window_expose_events (GtkWidget *, static void create_preview_widget (NavWinData *);
GdkEvent *, static void nav_window_draw_sqr (NavWinData *, gboolean,
gpointer *); gint, gint, gint, gint );
static void set_size_data (NavWinData *);
static gint nav_preview_update_do_timer (NavWinData *);
static void
nav_window_update_preview (NavWinData *);
static void
nav_window_update_preview_blank (NavWinData *iwd);
static void
destroy_preview_widget (NavWinData *);
static void
create_preview_widget (NavWinData *);
void
nav_window_update_window_marker (InfoDialog *);
static void
nav_window_draw_sqr(NavWinData *,
gboolean,
gint ,
gint ,
gint ,
gint );
static void
set_size_data(NavWinData *);
static gint
nav_preview_update_do_timer (NavWinData *);
static void static void
@ -972,7 +947,7 @@ nav_preview_update_do (NavWinData *iwd)
{ {
nav_window_update_preview(iwd); nav_window_update_preview(iwd);
nav_window_disp_area(iwd,iwd->gdisp_ptr); nav_window_disp_area(iwd,iwd->gdisp_ptr);
gtk_widget_draw(iwd->preview, NULL); gtk_widget_queue_draw(iwd->preview);
iwd->installedDirtyTimer = FALSE; iwd->installedDirtyTimer = FALSE;
return FALSE; return FALSE;
} }
@ -1309,6 +1284,9 @@ nav_window_update_window_marker (InfoDialog *info_win)
iwd->block_window_marker == TRUE) iwd->block_window_marker == TRUE)
return; return;
update_zoom_label (iwd);
update_zoom_adjustment (iwd);
/* Undraw old size */ /* Undraw old size */
nav_window_draw_sqr (iwd, nav_window_draw_sqr (iwd,
FALSE, FALSE,
@ -1326,9 +1304,6 @@ nav_window_update_window_marker (InfoDialog *info_win)
iwd->dispy, iwd->dispy,
iwd->dispwidth, iwd->dispheight); iwd->dispwidth, iwd->dispheight);
update_zoom_label(iwd);
update_zoom_adjustment(iwd);
} }
void void

View File

@ -31,6 +31,7 @@
#include "gimpui.h" #include "gimpui.h"
#include "gximage.h" #include "gximage.h"
#include "interface.h" #include "interface.h"
#include "nav_window.h"
#include "scroll.h" #include "scroll.h"
#include "scale.h" #include "scale.h"
@ -100,43 +101,17 @@ struct _NavWinData
}; };
static gint static gint nav_window_preview_events (GtkWidget *, GdkEvent *, gpointer *);
nav_window_preview_events (GtkWidget *, static gint nav_window_expose_events (GtkWidget *, GdkEvent *, gpointer *);
GdkEvent *, static void nav_window_update_preview (NavWinData *);
gpointer *); static void nav_window_update_preview_blank (NavWinData *iwd);
static gint static void destroy_preview_widget (NavWinData *);
nav_window_expose_events (GtkWidget *, static void create_preview_widget (NavWinData *);
GdkEvent *, static void nav_window_draw_sqr (NavWinData *, gboolean,
gpointer *); gint, gint, gint, gint );
static void set_size_data (NavWinData *);
static gint nav_preview_update_do_timer (NavWinData *);
static void
nav_window_update_preview (NavWinData *);
static void
nav_window_update_preview_blank (NavWinData *iwd);
static void
destroy_preview_widget (NavWinData *);
static void
create_preview_widget (NavWinData *);
void
nav_window_update_window_marker (InfoDialog *);
static void
nav_window_draw_sqr(NavWinData *,
gboolean,
gint ,
gint ,
gint ,
gint );
static void
set_size_data(NavWinData *);
static gint
nav_preview_update_do_timer (NavWinData *);
static void static void
@ -972,7 +947,7 @@ nav_preview_update_do (NavWinData *iwd)
{ {
nav_window_update_preview(iwd); nav_window_update_preview(iwd);
nav_window_disp_area(iwd,iwd->gdisp_ptr); nav_window_disp_area(iwd,iwd->gdisp_ptr);
gtk_widget_draw(iwd->preview, NULL); gtk_widget_queue_draw(iwd->preview);
iwd->installedDirtyTimer = FALSE; iwd->installedDirtyTimer = FALSE;
return FALSE; return FALSE;
} }
@ -1309,6 +1284,9 @@ nav_window_update_window_marker (InfoDialog *info_win)
iwd->block_window_marker == TRUE) iwd->block_window_marker == TRUE)
return; return;
update_zoom_label (iwd);
update_zoom_adjustment (iwd);
/* Undraw old size */ /* Undraw old size */
nav_window_draw_sqr (iwd, nav_window_draw_sqr (iwd,
FALSE, FALSE,
@ -1326,9 +1304,6 @@ nav_window_update_window_marker (InfoDialog *info_win)
iwd->dispy, iwd->dispy,
iwd->dispwidth, iwd->dispheight); iwd->dispwidth, iwd->dispheight);
update_zoom_label(iwd);
update_zoom_adjustment(iwd);
} }
void void

View File

@ -211,6 +211,7 @@ color_display_cancel_callback (GtkWidget *widget,
gpointer data) gpointer data)
{ {
GList *list; GList *list;
GList *next;
gtk_widget_hide (GTK_WIDGET (data)); gtk_widget_hide (GTK_WIDGET (data));
@ -221,10 +222,12 @@ color_display_cancel_callback (GtkWidget *widget,
while (list) while (list)
{ {
next = list->next;
if (!g_list_find (cdd.old_nodes, list->data)) if (!g_list_find (cdd.old_nodes, list->data))
gdisplay_color_detach_destroy (cdd.gdisp, list->data); gdisplay_color_detach_destroy (cdd.gdisp, list->data);
list = list->next; list = next;
} }
} }

View File

@ -65,10 +65,13 @@ static const char * const statename[] = {
#ifdef __EMX__ #ifdef __EMX__
extern void gimp_color_selector_register(); extern void gimp_color_selector_register();
extern void gimp_color_selector_unregister(); extern void gimp_color_selector_unregister();
static struct main_funcs_struc { static struct main_funcs_struc {
gchar *name; gchar *name;
void (*func)(); void (*func)();
} gimp_main_funcs[] = { }
gimp_main_funcs[] = {
{ "gimp_color_selector_register", gimp_color_selector_register }, { "gimp_color_selector_register", gimp_color_selector_register },
{ "gimp_color_selector_unregister", gimp_color_selector_unregister }, { "gimp_color_selector_unregister", gimp_color_selector_unregister },
{ NULL, NULL } { NULL, NULL }
@ -141,7 +144,6 @@ static module_info *module_find_by_path (const char *fullpath);
#ifdef DUMP_DB #ifdef DUMP_DB
static void print_module_info (gpointer data, gpointer user_data); static void print_module_info (gpointer data, gpointer user_data);
#endif #endif
static void browser_popdown_callback (GtkWidget *w, gpointer client_data); static void browser_popdown_callback (GtkWidget *w, gpointer client_data);
static void browser_destroy_callback (GtkWidget *w, gpointer client_data); static void browser_destroy_callback (GtkWidget *w, gpointer client_data);
static void browser_info_update (module_info *, browser_st *); static void browser_info_update (module_info *, browser_st *);
@ -184,7 +186,8 @@ module_db_init (void)
} }
static void static void
free_a_single_module (gpointer data, gpointer user_data) free_a_single_module (gpointer data,
gpointer user_data)
{ {
module_info *mod = data; module_info *mod = data;
@ -195,7 +198,8 @@ free_a_single_module (gpointer data, gpointer user_data)
} }
static void static void
add_to_inhibit_string (gpointer data, gpointer user_data) add_to_inhibit_string (gpointer data,
gpointer user_data)
{ {
module_info *mod = data; module_info *mod = data;
GString *str = user_data; GString *str = user_data;
@ -475,7 +479,8 @@ valid_module_name (const char *filename)
static gboolean static gboolean
module_inhibited (const char *fullpath, const char *inhibit_list) module_inhibited (const char *fullpath,
const char *inhibit_list)
{ {
char *p; char *p;
int pathlen; int pathlen;
@ -559,7 +564,8 @@ module_initialize (char *filename)
} }
static void static void
mod_load (module_info *mod, gboolean verbose) mod_load (module_info *mod,
gboolean verbose)
{ {
gpointer symbol; gpointer symbol;
@ -649,7 +655,8 @@ mod_unload_completed_callback (void *data)
} }
static void static void
mod_unload (module_info *mod, gboolean verbose) mod_unload (module_info *mod,
gboolean verbose)
{ {
g_return_if_fail (mod->module != NULL); g_return_if_fail (mod->module != NULL);
g_return_if_fail (mod->unload != NULL); g_return_if_fail (mod->unload != NULL);
@ -673,7 +680,8 @@ mod_unload (module_info *mod, gboolean verbose)
#ifdef DUMP_DB #ifdef DUMP_DB
static void static void
print_module_info (gpointer data, gpointer user_data) print_module_info (gpointer data,
gpointer user_data)
{ {
module_info *i = data; module_info *i = data;
@ -703,20 +711,23 @@ print_module_info (gpointer data, gpointer user_data)
/* UI functions */ /* UI functions */
static void static void
browser_popdown_callback (GtkWidget *w, gpointer client_data) browser_popdown_callback (GtkWidget *w,
gpointer client_data)
{ {
gtk_widget_destroy (GTK_WIDGET (client_data)); gtk_widget_destroy (GTK_WIDGET (client_data));
} }
static void static void
browser_destroy_callback (GtkWidget *w, gpointer client_data) browser_destroy_callback (GtkWidget *w,
gpointer client_data)
{ {
gtk_signal_disconnect_by_data (GTK_OBJECT (modules), client_data); gtk_signal_disconnect_by_data (GTK_OBJECT (modules), client_data);
g_free (client_data); g_free (client_data);
} }
static void static void
browser_load_inhibit_callback (GtkWidget *w, gpointer data) browser_load_inhibit_callback (GtkWidget *w,
gpointer data)
{ {
browser_st *st = data; browser_st *st = data;
gboolean new_value; gboolean new_value;
@ -735,7 +746,8 @@ browser_load_inhibit_callback (GtkWidget *w, gpointer data)
} }
static void static void
browser_info_update (module_info *mod, browser_st *st) browser_info_update (module_info *mod,
browser_st *st)
{ {
int i; int i;
const char *text[NUM_INFO_LINES - 1]; const char *text[NUM_INFO_LINES - 1];
@ -818,7 +830,8 @@ browser_info_update (module_info *mod, browser_st *st)
} }
static void static void
browser_info_init (browser_st *st, GtkWidget *table) browser_info_init (browser_st *st,
GtkWidget *table)
{ {
GtkWidget *label; GtkWidget *label;
int i; int i;
@ -858,7 +871,8 @@ browser_info_init (browser_st *st, GtkWidget *table)
} }
static void static void
browser_select_callback (GtkWidget *widget, GtkWidget *child) browser_select_callback (GtkWidget *widget,
GtkWidget *child)
{ {
module_info *i; module_info *i;
browser_st *st; browser_st *st;
@ -876,7 +890,8 @@ browser_select_callback (GtkWidget *widget, GtkWidget *child)
static void static void
browser_load_unload_callback (GtkWidget *widget, gpointer data) browser_load_unload_callback (GtkWidget *widget,
gpointer data)
{ {
browser_st *st = data; browser_st *st = data;
@ -890,7 +905,8 @@ browser_load_unload_callback (GtkWidget *widget, gpointer data)
static void static void
make_list_item (gpointer data, gpointer user_data) make_list_item (gpointer data,
gpointer user_data)
{ {
module_info *info = data; module_info *info = data;
browser_st *st = user_data; browser_st *st = user_data;
@ -909,14 +925,18 @@ make_list_item (gpointer data, gpointer user_data)
static void static void
browser_info_add (GimpSet *set, module_info *mod, browser_st *st) browser_info_add (GimpSet *set,
module_info *mod,
browser_st *st)
{ {
make_list_item (mod, st); make_list_item (mod, st);
} }
static void static void
browser_info_remove (GimpSet *set, module_info *mod, browser_st *st) browser_info_remove (GimpSet *set,
module_info *mod,
browser_st *st)
{ {
GList *dlist, *free_list; GList *dlist, *free_list;
GtkWidget *list_item; GtkWidget *list_item;
@ -949,7 +969,8 @@ browser_info_remove (GimpSet *set, module_info *mod, browser_st *st)
static void static void
module_db_module_ondisk (gpointer data, gpointer user_data) module_db_module_ondisk (gpointer data,
gpointer user_data)
{ {
module_info *mod = data; module_info *mod = data;
struct stat statbuf; struct stat statbuf;
@ -977,7 +998,8 @@ module_db_module_ondisk (gpointer data, gpointer user_data)
static void static void
module_db_module_remove (gpointer data, gpointer user_data) module_db_module_remove (gpointer data,
gpointer user_data)
{ {
module_info *mod = data; module_info *mod = data;
@ -994,7 +1016,8 @@ typedef struct {
} find_by_path_closure; } find_by_path_closure;
static void static void
module_db_path_cmp (gpointer data, gpointer user_data) module_db_path_cmp (gpointer data,
gpointer user_data)
{ {
module_info *mod = data; module_info *mod = data;
find_by_path_closure *cl = user_data; find_by_path_closure *cl = user_data;
@ -1019,7 +1042,8 @@ module_find_by_path (const char *fullpath)
static void static void
browser_refresh_callback (GtkWidget *widget, gpointer data) browser_refresh_callback (GtkWidget *widget,
gpointer data)
{ {
GSList *kill_list = NULL; GSList *kill_list = NULL;

View File

@ -65,10 +65,13 @@ static const char * const statename[] = {
#ifdef __EMX__ #ifdef __EMX__
extern void gimp_color_selector_register(); extern void gimp_color_selector_register();
extern void gimp_color_selector_unregister(); extern void gimp_color_selector_unregister();
static struct main_funcs_struc { static struct main_funcs_struc {
gchar *name; gchar *name;
void (*func)(); void (*func)();
} gimp_main_funcs[] = { }
gimp_main_funcs[] = {
{ "gimp_color_selector_register", gimp_color_selector_register }, { "gimp_color_selector_register", gimp_color_selector_register },
{ "gimp_color_selector_unregister", gimp_color_selector_unregister }, { "gimp_color_selector_unregister", gimp_color_selector_unregister },
{ NULL, NULL } { NULL, NULL }
@ -141,7 +144,6 @@ static module_info *module_find_by_path (const char *fullpath);
#ifdef DUMP_DB #ifdef DUMP_DB
static void print_module_info (gpointer data, gpointer user_data); static void print_module_info (gpointer data, gpointer user_data);
#endif #endif
static void browser_popdown_callback (GtkWidget *w, gpointer client_data); static void browser_popdown_callback (GtkWidget *w, gpointer client_data);
static void browser_destroy_callback (GtkWidget *w, gpointer client_data); static void browser_destroy_callback (GtkWidget *w, gpointer client_data);
static void browser_info_update (module_info *, browser_st *); static void browser_info_update (module_info *, browser_st *);
@ -184,7 +186,8 @@ module_db_init (void)
} }
static void static void
free_a_single_module (gpointer data, gpointer user_data) free_a_single_module (gpointer data,
gpointer user_data)
{ {
module_info *mod = data; module_info *mod = data;
@ -195,7 +198,8 @@ free_a_single_module (gpointer data, gpointer user_data)
} }
static void static void
add_to_inhibit_string (gpointer data, gpointer user_data) add_to_inhibit_string (gpointer data,
gpointer user_data)
{ {
module_info *mod = data; module_info *mod = data;
GString *str = user_data; GString *str = user_data;
@ -475,7 +479,8 @@ valid_module_name (const char *filename)
static gboolean static gboolean
module_inhibited (const char *fullpath, const char *inhibit_list) module_inhibited (const char *fullpath,
const char *inhibit_list)
{ {
char *p; char *p;
int pathlen; int pathlen;
@ -559,7 +564,8 @@ module_initialize (char *filename)
} }
static void static void
mod_load (module_info *mod, gboolean verbose) mod_load (module_info *mod,
gboolean verbose)
{ {
gpointer symbol; gpointer symbol;
@ -649,7 +655,8 @@ mod_unload_completed_callback (void *data)
} }
static void static void
mod_unload (module_info *mod, gboolean verbose) mod_unload (module_info *mod,
gboolean verbose)
{ {
g_return_if_fail (mod->module != NULL); g_return_if_fail (mod->module != NULL);
g_return_if_fail (mod->unload != NULL); g_return_if_fail (mod->unload != NULL);
@ -673,7 +680,8 @@ mod_unload (module_info *mod, gboolean verbose)
#ifdef DUMP_DB #ifdef DUMP_DB
static void static void
print_module_info (gpointer data, gpointer user_data) print_module_info (gpointer data,
gpointer user_data)
{ {
module_info *i = data; module_info *i = data;
@ -703,20 +711,23 @@ print_module_info (gpointer data, gpointer user_data)
/* UI functions */ /* UI functions */
static void static void
browser_popdown_callback (GtkWidget *w, gpointer client_data) browser_popdown_callback (GtkWidget *w,
gpointer client_data)
{ {
gtk_widget_destroy (GTK_WIDGET (client_data)); gtk_widget_destroy (GTK_WIDGET (client_data));
} }
static void static void
browser_destroy_callback (GtkWidget *w, gpointer client_data) browser_destroy_callback (GtkWidget *w,
gpointer client_data)
{ {
gtk_signal_disconnect_by_data (GTK_OBJECT (modules), client_data); gtk_signal_disconnect_by_data (GTK_OBJECT (modules), client_data);
g_free (client_data); g_free (client_data);
} }
static void static void
browser_load_inhibit_callback (GtkWidget *w, gpointer data) browser_load_inhibit_callback (GtkWidget *w,
gpointer data)
{ {
browser_st *st = data; browser_st *st = data;
gboolean new_value; gboolean new_value;
@ -735,7 +746,8 @@ browser_load_inhibit_callback (GtkWidget *w, gpointer data)
} }
static void static void
browser_info_update (module_info *mod, browser_st *st) browser_info_update (module_info *mod,
browser_st *st)
{ {
int i; int i;
const char *text[NUM_INFO_LINES - 1]; const char *text[NUM_INFO_LINES - 1];
@ -818,7 +830,8 @@ browser_info_update (module_info *mod, browser_st *st)
} }
static void static void
browser_info_init (browser_st *st, GtkWidget *table) browser_info_init (browser_st *st,
GtkWidget *table)
{ {
GtkWidget *label; GtkWidget *label;
int i; int i;
@ -858,7 +871,8 @@ browser_info_init (browser_st *st, GtkWidget *table)
} }
static void static void
browser_select_callback (GtkWidget *widget, GtkWidget *child) browser_select_callback (GtkWidget *widget,
GtkWidget *child)
{ {
module_info *i; module_info *i;
browser_st *st; browser_st *st;
@ -876,7 +890,8 @@ browser_select_callback (GtkWidget *widget, GtkWidget *child)
static void static void
browser_load_unload_callback (GtkWidget *widget, gpointer data) browser_load_unload_callback (GtkWidget *widget,
gpointer data)
{ {
browser_st *st = data; browser_st *st = data;
@ -890,7 +905,8 @@ browser_load_unload_callback (GtkWidget *widget, gpointer data)
static void static void
make_list_item (gpointer data, gpointer user_data) make_list_item (gpointer data,
gpointer user_data)
{ {
module_info *info = data; module_info *info = data;
browser_st *st = user_data; browser_st *st = user_data;
@ -909,14 +925,18 @@ make_list_item (gpointer data, gpointer user_data)
static void static void
browser_info_add (GimpSet *set, module_info *mod, browser_st *st) browser_info_add (GimpSet *set,
module_info *mod,
browser_st *st)
{ {
make_list_item (mod, st); make_list_item (mod, st);
} }
static void static void
browser_info_remove (GimpSet *set, module_info *mod, browser_st *st) browser_info_remove (GimpSet *set,
module_info *mod,
browser_st *st)
{ {
GList *dlist, *free_list; GList *dlist, *free_list;
GtkWidget *list_item; GtkWidget *list_item;
@ -949,7 +969,8 @@ browser_info_remove (GimpSet *set, module_info *mod, browser_st *st)
static void static void
module_db_module_ondisk (gpointer data, gpointer user_data) module_db_module_ondisk (gpointer data,
gpointer user_data)
{ {
module_info *mod = data; module_info *mod = data;
struct stat statbuf; struct stat statbuf;
@ -977,7 +998,8 @@ module_db_module_ondisk (gpointer data, gpointer user_data)
static void static void
module_db_module_remove (gpointer data, gpointer user_data) module_db_module_remove (gpointer data,
gpointer user_data)
{ {
module_info *mod = data; module_info *mod = data;
@ -994,7 +1016,8 @@ typedef struct {
} find_by_path_closure; } find_by_path_closure;
static void static void
module_db_path_cmp (gpointer data, gpointer user_data) module_db_path_cmp (gpointer data,
gpointer user_data)
{ {
module_info *mod = data; module_info *mod = data;
find_by_path_closure *cl = user_data; find_by_path_closure *cl = user_data;
@ -1019,7 +1042,8 @@ module_find_by_path (const char *fullpath)
static void static void
browser_refresh_callback (GtkWidget *widget, gpointer data) browser_refresh_callback (GtkWidget *widget,
gpointer data)
{ {
GSList *kill_list = NULL; GSList *kill_list = NULL;

View File

@ -31,6 +31,7 @@
#include "gimpui.h" #include "gimpui.h"
#include "gximage.h" #include "gximage.h"
#include "interface.h" #include "interface.h"
#include "nav_window.h"
#include "scroll.h" #include "scroll.h"
#include "scale.h" #include "scale.h"
@ -100,43 +101,17 @@ struct _NavWinData
}; };
static gint static gint nav_window_preview_events (GtkWidget *, GdkEvent *, gpointer *);
nav_window_preview_events (GtkWidget *, static gint nav_window_expose_events (GtkWidget *, GdkEvent *, gpointer *);
GdkEvent *, static void nav_window_update_preview (NavWinData *);
gpointer *); static void nav_window_update_preview_blank (NavWinData *iwd);
static gint static void destroy_preview_widget (NavWinData *);
nav_window_expose_events (GtkWidget *, static void create_preview_widget (NavWinData *);
GdkEvent *, static void nav_window_draw_sqr (NavWinData *, gboolean,
gpointer *); gint, gint, gint, gint );
static void set_size_data (NavWinData *);
static gint nav_preview_update_do_timer (NavWinData *);
static void
nav_window_update_preview (NavWinData *);
static void
nav_window_update_preview_blank (NavWinData *iwd);
static void
destroy_preview_widget (NavWinData *);
static void
create_preview_widget (NavWinData *);
void
nav_window_update_window_marker (InfoDialog *);
static void
nav_window_draw_sqr(NavWinData *,
gboolean,
gint ,
gint ,
gint ,
gint );
static void
set_size_data(NavWinData *);
static gint
nav_preview_update_do_timer (NavWinData *);
static void static void
@ -972,7 +947,7 @@ nav_preview_update_do (NavWinData *iwd)
{ {
nav_window_update_preview(iwd); nav_window_update_preview(iwd);
nav_window_disp_area(iwd,iwd->gdisp_ptr); nav_window_disp_area(iwd,iwd->gdisp_ptr);
gtk_widget_draw(iwd->preview, NULL); gtk_widget_queue_draw(iwd->preview);
iwd->installedDirtyTimer = FALSE; iwd->installedDirtyTimer = FALSE;
return FALSE; return FALSE;
} }
@ -1309,6 +1284,9 @@ nav_window_update_window_marker (InfoDialog *info_win)
iwd->block_window_marker == TRUE) iwd->block_window_marker == TRUE)
return; return;
update_zoom_label (iwd);
update_zoom_adjustment (iwd);
/* Undraw old size */ /* Undraw old size */
nav_window_draw_sqr (iwd, nav_window_draw_sqr (iwd,
FALSE, FALSE,
@ -1326,9 +1304,6 @@ nav_window_update_window_marker (InfoDialog *info_win)
iwd->dispy, iwd->dispy,
iwd->dispwidth, iwd->dispheight); iwd->dispwidth, iwd->dispheight);
update_zoom_label(iwd);
update_zoom_adjustment(iwd);
} }
void void

View File

@ -211,6 +211,7 @@ color_display_cancel_callback (GtkWidget *widget,
gpointer data) gpointer data)
{ {
GList *list; GList *list;
GList *next;
gtk_widget_hide (GTK_WIDGET (data)); gtk_widget_hide (GTK_WIDGET (data));
@ -221,10 +222,12 @@ color_display_cancel_callback (GtkWidget *widget,
while (list) while (list)
{ {
next = list->next;
if (!g_list_find (cdd.old_nodes, list->data)) if (!g_list_find (cdd.old_nodes, list->data))
gdisplay_color_detach_destroy (cdd.gdisp, list->data); gdisplay_color_detach_destroy (cdd.gdisp, list->data);
list = list->next; list = next;
} }
} }

View File

@ -29,7 +29,7 @@
#include "libgimp/gimp.h" #include "libgimp/gimp.h"
#define DBL_LIST_WIDTH 250 #define DBL_LIST_WIDTH 250
#define DBL_WIDTH DBL_LIST_WIDTH+450 #define DBL_WIDTH (DBL_LIST_WIDTH + 300)
#define DBL_HEIGHT 200 #define DBL_HEIGHT 200
static char *proc_type_str[] = static char *proc_type_str[] =
@ -146,9 +146,9 @@ typedef struct
gint clist_row; gint clist_row;
gint c1size; gint c1size;
gboolean details_showing; gboolean details_showing;
} PLUGINDESC,*PLUGINDESCP; } PDesc;
PLUGINDESCP plugindesc = NULL; PDesc *plugindesc = NULL;
typedef struct typedef struct
{ {
@ -158,14 +158,14 @@ typedef struct
gchar *types; gchar *types;
gchar *realname; gchar *realname;
gint instime; gint instime;
} PINFO, *PINFOP; } PInfo;
static void static void
dialog_close_callback (GtkWidget *widget, dialog_close_callback (GtkWidget *widget,
gpointer data) gpointer data)
/* end of the dialog */ /* end of the dialog */
{ {
PLUGINDESCP pdesc = data; PDesc *pdesc = data;
gtk_widget_destroy(pdesc->dlg); gtk_widget_destroy(pdesc->dlg);
gtk_main_quit (); gtk_main_quit ();
} }
@ -177,9 +177,24 @@ details_callback (GtkWidget *widget,
gpointer data) gpointer data)
{ {
/* Show or hide the details window */ /* Show or hide the details window */
PLUGINDESCP pdesc = data; PDesc *pdesc = data;
GtkLabel *lab = GTK_LABEL(GTK_BIN (widget)->child); GtkLabel *lab = GTK_LABEL(GTK_BIN (widget)->child);
/* This is a lame hack:
We add the description on the right on the first details_callback.
Otherwise the window reacts quite weird on resizes */
if (pdesc->descr_scroll == NULL)
{
pdesc->descr_scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (pdesc->descr_scroll),
GTK_POLICY_ALWAYS,
GTK_POLICY_ALWAYS
);
gtk_widget_set_usize (pdesc->descr_scroll, DBL_WIDTH - DBL_LIST_WIDTH, -1);
gtk_paned_pack2 (GTK_PANED (pdesc->paned), pdesc->descr_scroll, FALSE, TRUE);
gtk_clist_select_row (GTK_CLIST(pdesc->clist), pdesc->clist_row, -1);
}
if(pdesc->details_showing == FALSE) if(pdesc->details_showing == FALSE)
{ {
GTK_PANED(pdesc->paned)->child1_resize=FALSE; GTK_PANED(pdesc->paned)->child1_resize=FALSE;
@ -222,8 +237,8 @@ format_menu_path(gchar *s)
} }
static gint static gint
procedure_general_select_callback (PLUGINDESCP pdesc, procedure_general_select_callback (PDesc *pdesc,
PINFOP pinfo) PInfo *pinfo)
{ {
gchar *selected_proc_blurb; gchar *selected_proc_blurb;
gchar *selected_proc_help; gchar *selected_proc_help;
@ -247,6 +262,9 @@ procedure_general_select_callback (PLUGINDESCP pdesc,
g_return_val_if_fail (pinfo != NULL, FALSE); g_return_val_if_fail (pinfo != NULL, FALSE);
if (pdesc->descr_scroll == NULL)
return FALSE;
selected_proc_blurb = NULL; selected_proc_blurb = NULL;
selected_proc_help = NULL; selected_proc_help = NULL;
selected_proc_author = NULL; selected_proc_author = NULL;
@ -460,7 +478,8 @@ procedure_general_select_callback (PLUGINDESCP pdesc,
} }
static void static void
expand_to(PLUGINDESCP pdesc,GtkCTreeNode * parent) expand_to (PDesc *pdesc,
GtkCTreeNode *parent)
{ {
if(parent) if(parent)
{ {
@ -476,13 +495,13 @@ procedure_clist_select_callback (GtkWidget *widget,
GdkEventButton *bevent, GdkEventButton *bevent,
gpointer data) gpointer data)
{ {
PINFOP pinfo; PInfo *pinfo;
GtkCTreeNode * found_node; GtkCTreeNode * found_node;
PLUGINDESCP pdesc = data; PDesc *pdesc = data;
g_return_val_if_fail (pdesc != NULL, FALSE); g_return_val_if_fail (pdesc != NULL, FALSE);
pinfo = (PINFOP)gtk_clist_get_row_data (GTK_CLIST (widget), row); pinfo = (PInfo *)gtk_clist_get_row_data (GTK_CLIST (widget), row);
if(!pinfo) if(!pinfo)
return FALSE; return FALSE;
@ -548,7 +567,7 @@ page_select_callback (GtkNotebook *notebook,
guint page_num, guint page_num,
gpointer data) gpointer data)
{ {
PLUGINDESCP pdesc = data; PDesc *pdesc = data;
if(page_num == 0) if(page_num == 0)
{ {
@ -556,7 +575,7 @@ page_select_callback (GtkNotebook *notebook,
gtk_clist_moveto(GTK_CLIST(pdesc->clist), gtk_clist_moveto(GTK_CLIST(pdesc->clist),
pdesc->clist_row, pdesc->clist_row,
0, 0,
0.5,0.5); 0.5, 0.0);
} }
else else
{ {
@ -564,7 +583,7 @@ page_select_callback (GtkNotebook *notebook,
gtk_clist_moveto(GTK_CLIST(pdesc->ctree), gtk_clist_moveto(GTK_CLIST(pdesc->ctree),
pdesc->ctree_row, pdesc->ctree_row,
0, 0,
0.5,0.5); 0.5, 0.0);
} }
return FALSE; return FALSE;
} }
@ -575,8 +594,8 @@ procedure_ctree_select_callback (GtkWidget *widget,
gint column, gint column,
gpointer data) gpointer data)
{ {
PINFOP pinfo; PInfo *pinfo;
PLUGINDESCP pdesc; PDesc *pdesc;
gboolean is_leaf; gboolean is_leaf;
gint sel_row; gint sel_row;
@ -594,13 +613,11 @@ procedure_ctree_select_callback (GtkWidget *widget,
NULL); NULL);
if (!is_leaf) if (!is_leaf)
{
return FALSE; return FALSE;
}
pdesc = data; pdesc = data;
pinfo = (PINFOP)gtk_ctree_node_get_row_data (GTK_CTREE(widget),GTK_CTREE_NODE(row)); pinfo = (PInfo *)gtk_ctree_node_get_row_data (GTK_CTREE(widget),GTK_CTREE_NODE(row));
/* Must set clist to this one */ /* Must set clist to this one */
@ -625,7 +642,7 @@ procedure_ctree_select_callback (GtkWidget *widget,
static void static void
pinfo_free (gpointer p) pinfo_free (gpointer p)
{ {
PINFOP pinfo = p; PInfo *pinfo = p;
g_free(pinfo->menu); g_free(pinfo->menu);
@ -637,7 +654,9 @@ pinfo_free(gpointer p)
} }
static GtkCTreeNode* static GtkCTreeNode*
get_parent(PLUGINDESCP pdesc,GHashTable * ghash,gchar *mpath) get_parent (PDesc *pdesc,
GHashTable *ghash,
gchar *mpath)
{ {
GtkCTreeNode *parent; GtkCTreeNode *parent;
GtkCTreeNode *last_parent; GtkCTreeNode *last_parent;
@ -702,12 +721,13 @@ get_parent(PLUGINDESCP pdesc,GHashTable * ghash,gchar *mpath)
} }
static void static void
insert_into_ctree(PLUGINDESCP pdesc,gchar *name, insert_into_ctree (PDesc *pdesc,
gchar *name,
gchar *xtimestr, gchar *xtimestr,
gchar *menu_str, gchar *menu_str,
gchar *types_str, gchar *types_str,
GHashTable *ghash, GHashTable *ghash,
PINFOP pinfo) PInfo *pinfo)
{ {
gchar *labels[3]; gchar *labels[3];
gchar *str_ptr; gchar *str_ptr;
@ -757,7 +777,8 @@ insert_into_ctree(PLUGINDESCP pdesc,gchar *name,
} }
static void static void
get_plugin_info(PLUGINDESCP pdesc,gchar *search_text) get_plugin_info (PDesc *pdesc,
gchar *search_text)
{ {
GParam *return_vals; GParam *return_vals;
int nreturn_vals; int nreturn_vals;
@ -792,7 +813,7 @@ get_plugin_info(PLUGINDESCP pdesc,gchar *search_text)
for (loop = 0; loop < return_vals[1].data.d_int32; loop++) for (loop = 0; loop < return_vals[1].data.d_int32; loop++)
{ {
PINFOP pinfo; PInfo *pinfo;
gchar *labels[4]; gchar *labels[4];
gchar *name; gchar *name;
gchar xtimestr[50]; gchar xtimestr[50];
@ -807,7 +828,7 @@ get_plugin_info(PLUGINDESCP pdesc,gchar *search_text)
else else
name = menu_strs[loop]; name = menu_strs[loop];
pinfo = g_new0(PINFO,1); pinfo = g_new0 (PInfo, 1);
tx = time_ints[loop]; tx = time_ints[loop];
if(tx) if(tx)
@ -831,8 +852,7 @@ get_plugin_info(PLUGINDESCP pdesc,gchar *search_text)
labels[2] = g_strdup(menu_strs[loop]); labels[2] = g_strdup(menu_strs[loop]);
labels[3] = g_strdup(types_strs[loop]); labels[3] = g_strdup(types_strs[loop]);
gtk_clist_insert (GTK_CLIST (GTK_CLIST(pdesc->clist)), row_count, gtk_clist_insert (GTK_CLIST(pdesc->clist), row_count, labels);
labels);
gtk_clist_set_row_data_full (GTK_CLIST (pdesc->clist), row_count, gtk_clist_set_row_data_full (GTK_CLIST (pdesc->clist), row_count,
pinfo, pinfo_free); pinfo, pinfo_free);
@ -857,7 +877,7 @@ static void
dialog_search_callback (GtkWidget *widget, dialog_search_callback (GtkWidget *widget,
gpointer data) gpointer data)
{ {
PLUGINDESCP pdesc = data; PDesc *pdesc = data;
gchar *search_text = NULL; gchar *search_text = NULL;
if(widget != NULL) if(widget != NULL)
@ -890,8 +910,8 @@ date_sort(GtkCList *clist,
GtkCListRow *row2 = (GtkCListRow *) ptr2; GtkCListRow *row2 = (GtkCListRow *) ptr2;
/* Get the data for the row */ /* Get the data for the row */
PINFOP row1_pinfo = row1->data; PInfo *row1_pinfo = row1->data;
PINFOP row2_pinfo = row2->data; PInfo *row2_pinfo = row2->data;
/* Want to sort on the date field */ /* Want to sort on the date field */
@ -909,7 +929,9 @@ date_sort(GtkCList *clist,
} }
static void static void
clist_click_column (GtkCList *clist, gint column, gpointer data) clist_click_column (GtkCList *clist,
gint column,
gpointer data)
{ {
if (column == 1) if (column == 1)
{ {
@ -951,7 +973,7 @@ gimp_plugin_desc()
gtk_init (&argc, &argv); gtk_init (&argc, &argv);
gtk_rc_parse (gimp_gtkrc ()); gtk_rc_parse (gimp_gtkrc ());
plugindesc = g_new0(PLUGINDESC,1); plugindesc = g_new0 (PDesc, 1);
/* the dialog box */ /* the dialog box */
@ -963,7 +985,7 @@ gimp_plugin_desc()
gtk_signal_connect (GTK_OBJECT (plugindesc->dlg), "destroy", gtk_signal_connect (GTK_OBJECT (plugindesc->dlg), "destroy",
(GtkSignalFunc) dialog_close_callback, (GtkSignalFunc) dialog_close_callback,
plugindesc); plugindesc);
gtk_window_set_policy(GTK_WINDOW (plugindesc->dlg),TRUE,TRUE,TRUE); gtk_window_set_policy(GTK_WINDOW (plugindesc->dlg), FALSE, TRUE, TRUE);
/* hbox : left=notebook ; right=description */ /* hbox : left=notebook ; right=description */
@ -980,7 +1002,7 @@ gimp_plugin_desc()
plugindesc->left_paned = vbox = gtk_vbox_new (FALSE, 0); plugindesc->left_paned = vbox = gtk_vbox_new (FALSE, 0);
gtk_container_border_width (GTK_CONTAINER (vbox), 3); gtk_container_border_width (GTK_CONTAINER (vbox), 3);
gtk_paned_add1 (GTK_PANED (hbox),vbox); gtk_paned_pack1 (GTK_PANED (hbox), vbox, FALSE, FALSE);
gtk_widget_show (vbox); gtk_widget_show (vbox);
/* left = notebook */ /* left = notebook */
@ -1048,13 +1070,13 @@ gimp_plugin_desc()
searchhbox = gtk_hbox_new(FALSE,0); searchhbox = gtk_hbox_new(FALSE,0);
gtk_box_pack_start (GTK_BOX (vbox), gtk_box_pack_start (GTK_BOX (vbox),
searchhbox, FALSE, TRUE, 0); searchhbox, FALSE, FALSE, 0);
gtk_widget_show(searchhbox); gtk_widget_show(searchhbox);
label = gtk_label_new("Search : "); label = gtk_label_new("Search : ");
gtk_misc_set_alignment( GTK_MISC(label), 0.0, 0.5); gtk_misc_set_alignment( GTK_MISC(label), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (searchhbox), gtk_box_pack_start (GTK_BOX (searchhbox),
label, TRUE, TRUE, 0); label, FALSE, FALSE, 0);
gtk_widget_show(label); gtk_widget_show(label);
plugindesc->search_entry = gtk_entry_new(); plugindesc->search_entry = gtk_entry_new();
@ -1067,17 +1089,10 @@ gimp_plugin_desc()
gtk_signal_connect (GTK_OBJECT (button), "clicked", gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) details_callback, plugindesc); (GtkSignalFunc) details_callback, plugindesc);
gtk_box_pack_start (GTK_BOX (searchhbox), gtk_box_pack_start (GTK_BOX (searchhbox),
button, TRUE, TRUE, 0); button, FALSE, FALSE, 0);
/* right = description */ /* right = description */
/* the right description is build on first click of the Details button */
plugindesc->descr_scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (plugindesc->descr_scroll),
GTK_POLICY_ALWAYS,
GTK_POLICY_ALWAYS
);
gtk_paned_add2 (GTK_PANED (hbox), plugindesc->descr_scroll);
gtk_widget_set_usize (plugindesc->descr_scroll, DBL_WIDTH - DBL_LIST_WIDTH, 0);
/* buttons in dlg->action_area */ /* buttons in dlg->action_area */
@ -1107,6 +1122,9 @@ gimp_plugin_desc()
gtk_widget_show (plugindesc->clist); gtk_widget_show (plugindesc->clist);
gtk_widget_show (plugindesc->dlg); gtk_widget_show (plugindesc->dlg);
gtk_clist_select_row (GTK_CLIST (plugindesc->clist), 0, 0);
gtk_clist_moveto (GTK_CLIST (plugindesc->clist), 0, 0, 0.0, 0.0);
plugindesc->c1size = GTK_PANED(plugindesc->paned)->child1_size; plugindesc->c1size = GTK_PANED(plugindesc->paned)->child1_size;
GTK_PANED(plugindesc->paned)->child1_resize=TRUE; GTK_PANED(plugindesc->paned)->child1_resize=TRUE;

View File

@ -29,7 +29,7 @@
#include "libgimp/gimp.h" #include "libgimp/gimp.h"
#define DBL_LIST_WIDTH 250 #define DBL_LIST_WIDTH 250
#define DBL_WIDTH DBL_LIST_WIDTH+450 #define DBL_WIDTH (DBL_LIST_WIDTH + 300)
#define DBL_HEIGHT 200 #define DBL_HEIGHT 200
static char *proc_type_str[] = static char *proc_type_str[] =
@ -146,9 +146,9 @@ typedef struct
gint clist_row; gint clist_row;
gint c1size; gint c1size;
gboolean details_showing; gboolean details_showing;
} PLUGINDESC,*PLUGINDESCP; } PDesc;
PLUGINDESCP plugindesc = NULL; PDesc *plugindesc = NULL;
typedef struct typedef struct
{ {
@ -158,14 +158,14 @@ typedef struct
gchar *types; gchar *types;
gchar *realname; gchar *realname;
gint instime; gint instime;
} PINFO, *PINFOP; } PInfo;
static void static void
dialog_close_callback (GtkWidget *widget, dialog_close_callback (GtkWidget *widget,
gpointer data) gpointer data)
/* end of the dialog */ /* end of the dialog */
{ {
PLUGINDESCP pdesc = data; PDesc *pdesc = data;
gtk_widget_destroy(pdesc->dlg); gtk_widget_destroy(pdesc->dlg);
gtk_main_quit (); gtk_main_quit ();
} }
@ -177,9 +177,24 @@ details_callback (GtkWidget *widget,
gpointer data) gpointer data)
{ {
/* Show or hide the details window */ /* Show or hide the details window */
PLUGINDESCP pdesc = data; PDesc *pdesc = data;
GtkLabel *lab = GTK_LABEL(GTK_BIN (widget)->child); GtkLabel *lab = GTK_LABEL(GTK_BIN (widget)->child);
/* This is a lame hack:
We add the description on the right on the first details_callback.
Otherwise the window reacts quite weird on resizes */
if (pdesc->descr_scroll == NULL)
{
pdesc->descr_scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (pdesc->descr_scroll),
GTK_POLICY_ALWAYS,
GTK_POLICY_ALWAYS
);
gtk_widget_set_usize (pdesc->descr_scroll, DBL_WIDTH - DBL_LIST_WIDTH, -1);
gtk_paned_pack2 (GTK_PANED (pdesc->paned), pdesc->descr_scroll, FALSE, TRUE);
gtk_clist_select_row (GTK_CLIST(pdesc->clist), pdesc->clist_row, -1);
}
if(pdesc->details_showing == FALSE) if(pdesc->details_showing == FALSE)
{ {
GTK_PANED(pdesc->paned)->child1_resize=FALSE; GTK_PANED(pdesc->paned)->child1_resize=FALSE;
@ -222,8 +237,8 @@ format_menu_path(gchar *s)
} }
static gint static gint
procedure_general_select_callback (PLUGINDESCP pdesc, procedure_general_select_callback (PDesc *pdesc,
PINFOP pinfo) PInfo *pinfo)
{ {
gchar *selected_proc_blurb; gchar *selected_proc_blurb;
gchar *selected_proc_help; gchar *selected_proc_help;
@ -247,6 +262,9 @@ procedure_general_select_callback (PLUGINDESCP pdesc,
g_return_val_if_fail (pinfo != NULL, FALSE); g_return_val_if_fail (pinfo != NULL, FALSE);
if (pdesc->descr_scroll == NULL)
return FALSE;
selected_proc_blurb = NULL; selected_proc_blurb = NULL;
selected_proc_help = NULL; selected_proc_help = NULL;
selected_proc_author = NULL; selected_proc_author = NULL;
@ -460,7 +478,8 @@ procedure_general_select_callback (PLUGINDESCP pdesc,
} }
static void static void
expand_to(PLUGINDESCP pdesc,GtkCTreeNode * parent) expand_to (PDesc *pdesc,
GtkCTreeNode *parent)
{ {
if(parent) if(parent)
{ {
@ -476,13 +495,13 @@ procedure_clist_select_callback (GtkWidget *widget,
GdkEventButton *bevent, GdkEventButton *bevent,
gpointer data) gpointer data)
{ {
PINFOP pinfo; PInfo *pinfo;
GtkCTreeNode * found_node; GtkCTreeNode * found_node;
PLUGINDESCP pdesc = data; PDesc *pdesc = data;
g_return_val_if_fail (pdesc != NULL, FALSE); g_return_val_if_fail (pdesc != NULL, FALSE);
pinfo = (PINFOP)gtk_clist_get_row_data (GTK_CLIST (widget), row); pinfo = (PInfo *)gtk_clist_get_row_data (GTK_CLIST (widget), row);
if(!pinfo) if(!pinfo)
return FALSE; return FALSE;
@ -548,7 +567,7 @@ page_select_callback (GtkNotebook *notebook,
guint page_num, guint page_num,
gpointer data) gpointer data)
{ {
PLUGINDESCP pdesc = data; PDesc *pdesc = data;
if(page_num == 0) if(page_num == 0)
{ {
@ -556,7 +575,7 @@ page_select_callback (GtkNotebook *notebook,
gtk_clist_moveto(GTK_CLIST(pdesc->clist), gtk_clist_moveto(GTK_CLIST(pdesc->clist),
pdesc->clist_row, pdesc->clist_row,
0, 0,
0.5,0.5); 0.5, 0.0);
} }
else else
{ {
@ -564,7 +583,7 @@ page_select_callback (GtkNotebook *notebook,
gtk_clist_moveto(GTK_CLIST(pdesc->ctree), gtk_clist_moveto(GTK_CLIST(pdesc->ctree),
pdesc->ctree_row, pdesc->ctree_row,
0, 0,
0.5,0.5); 0.5, 0.0);
} }
return FALSE; return FALSE;
} }
@ -575,8 +594,8 @@ procedure_ctree_select_callback (GtkWidget *widget,
gint column, gint column,
gpointer data) gpointer data)
{ {
PINFOP pinfo; PInfo *pinfo;
PLUGINDESCP pdesc; PDesc *pdesc;
gboolean is_leaf; gboolean is_leaf;
gint sel_row; gint sel_row;
@ -594,13 +613,11 @@ procedure_ctree_select_callback (GtkWidget *widget,
NULL); NULL);
if (!is_leaf) if (!is_leaf)
{
return FALSE; return FALSE;
}
pdesc = data; pdesc = data;
pinfo = (PINFOP)gtk_ctree_node_get_row_data (GTK_CTREE(widget),GTK_CTREE_NODE(row)); pinfo = (PInfo *)gtk_ctree_node_get_row_data (GTK_CTREE(widget),GTK_CTREE_NODE(row));
/* Must set clist to this one */ /* Must set clist to this one */
@ -625,7 +642,7 @@ procedure_ctree_select_callback (GtkWidget *widget,
static void static void
pinfo_free (gpointer p) pinfo_free (gpointer p)
{ {
PINFOP pinfo = p; PInfo *pinfo = p;
g_free(pinfo->menu); g_free(pinfo->menu);
@ -637,7 +654,9 @@ pinfo_free(gpointer p)
} }
static GtkCTreeNode* static GtkCTreeNode*
get_parent(PLUGINDESCP pdesc,GHashTable * ghash,gchar *mpath) get_parent (PDesc *pdesc,
GHashTable *ghash,
gchar *mpath)
{ {
GtkCTreeNode *parent; GtkCTreeNode *parent;
GtkCTreeNode *last_parent; GtkCTreeNode *last_parent;
@ -702,12 +721,13 @@ get_parent(PLUGINDESCP pdesc,GHashTable * ghash,gchar *mpath)
} }
static void static void
insert_into_ctree(PLUGINDESCP pdesc,gchar *name, insert_into_ctree (PDesc *pdesc,
gchar *name,
gchar *xtimestr, gchar *xtimestr,
gchar *menu_str, gchar *menu_str,
gchar *types_str, gchar *types_str,
GHashTable *ghash, GHashTable *ghash,
PINFOP pinfo) PInfo *pinfo)
{ {
gchar *labels[3]; gchar *labels[3];
gchar *str_ptr; gchar *str_ptr;
@ -757,7 +777,8 @@ insert_into_ctree(PLUGINDESCP pdesc,gchar *name,
} }
static void static void
get_plugin_info(PLUGINDESCP pdesc,gchar *search_text) get_plugin_info (PDesc *pdesc,
gchar *search_text)
{ {
GParam *return_vals; GParam *return_vals;
int nreturn_vals; int nreturn_vals;
@ -792,7 +813,7 @@ get_plugin_info(PLUGINDESCP pdesc,gchar *search_text)
for (loop = 0; loop < return_vals[1].data.d_int32; loop++) for (loop = 0; loop < return_vals[1].data.d_int32; loop++)
{ {
PINFOP pinfo; PInfo *pinfo;
gchar *labels[4]; gchar *labels[4];
gchar *name; gchar *name;
gchar xtimestr[50]; gchar xtimestr[50];
@ -807,7 +828,7 @@ get_plugin_info(PLUGINDESCP pdesc,gchar *search_text)
else else
name = menu_strs[loop]; name = menu_strs[loop];
pinfo = g_new0(PINFO,1); pinfo = g_new0 (PInfo, 1);
tx = time_ints[loop]; tx = time_ints[loop];
if(tx) if(tx)
@ -831,8 +852,7 @@ get_plugin_info(PLUGINDESCP pdesc,gchar *search_text)
labels[2] = g_strdup(menu_strs[loop]); labels[2] = g_strdup(menu_strs[loop]);
labels[3] = g_strdup(types_strs[loop]); labels[3] = g_strdup(types_strs[loop]);
gtk_clist_insert (GTK_CLIST (GTK_CLIST(pdesc->clist)), row_count, gtk_clist_insert (GTK_CLIST(pdesc->clist), row_count, labels);
labels);
gtk_clist_set_row_data_full (GTK_CLIST (pdesc->clist), row_count, gtk_clist_set_row_data_full (GTK_CLIST (pdesc->clist), row_count,
pinfo, pinfo_free); pinfo, pinfo_free);
@ -857,7 +877,7 @@ static void
dialog_search_callback (GtkWidget *widget, dialog_search_callback (GtkWidget *widget,
gpointer data) gpointer data)
{ {
PLUGINDESCP pdesc = data; PDesc *pdesc = data;
gchar *search_text = NULL; gchar *search_text = NULL;
if(widget != NULL) if(widget != NULL)
@ -890,8 +910,8 @@ date_sort(GtkCList *clist,
GtkCListRow *row2 = (GtkCListRow *) ptr2; GtkCListRow *row2 = (GtkCListRow *) ptr2;
/* Get the data for the row */ /* Get the data for the row */
PINFOP row1_pinfo = row1->data; PInfo *row1_pinfo = row1->data;
PINFOP row2_pinfo = row2->data; PInfo *row2_pinfo = row2->data;
/* Want to sort on the date field */ /* Want to sort on the date field */
@ -909,7 +929,9 @@ date_sort(GtkCList *clist,
} }
static void static void
clist_click_column (GtkCList *clist, gint column, gpointer data) clist_click_column (GtkCList *clist,
gint column,
gpointer data)
{ {
if (column == 1) if (column == 1)
{ {
@ -951,7 +973,7 @@ gimp_plugin_desc()
gtk_init (&argc, &argv); gtk_init (&argc, &argv);
gtk_rc_parse (gimp_gtkrc ()); gtk_rc_parse (gimp_gtkrc ());
plugindesc = g_new0(PLUGINDESC,1); plugindesc = g_new0 (PDesc, 1);
/* the dialog box */ /* the dialog box */
@ -963,7 +985,7 @@ gimp_plugin_desc()
gtk_signal_connect (GTK_OBJECT (plugindesc->dlg), "destroy", gtk_signal_connect (GTK_OBJECT (plugindesc->dlg), "destroy",
(GtkSignalFunc) dialog_close_callback, (GtkSignalFunc) dialog_close_callback,
plugindesc); plugindesc);
gtk_window_set_policy(GTK_WINDOW (plugindesc->dlg),TRUE,TRUE,TRUE); gtk_window_set_policy(GTK_WINDOW (plugindesc->dlg), FALSE, TRUE, TRUE);
/* hbox : left=notebook ; right=description */ /* hbox : left=notebook ; right=description */
@ -980,7 +1002,7 @@ gimp_plugin_desc()
plugindesc->left_paned = vbox = gtk_vbox_new (FALSE, 0); plugindesc->left_paned = vbox = gtk_vbox_new (FALSE, 0);
gtk_container_border_width (GTK_CONTAINER (vbox), 3); gtk_container_border_width (GTK_CONTAINER (vbox), 3);
gtk_paned_add1 (GTK_PANED (hbox),vbox); gtk_paned_pack1 (GTK_PANED (hbox), vbox, FALSE, FALSE);
gtk_widget_show (vbox); gtk_widget_show (vbox);
/* left = notebook */ /* left = notebook */
@ -1048,13 +1070,13 @@ gimp_plugin_desc()
searchhbox = gtk_hbox_new(FALSE,0); searchhbox = gtk_hbox_new(FALSE,0);
gtk_box_pack_start (GTK_BOX (vbox), gtk_box_pack_start (GTK_BOX (vbox),
searchhbox, FALSE, TRUE, 0); searchhbox, FALSE, FALSE, 0);
gtk_widget_show(searchhbox); gtk_widget_show(searchhbox);
label = gtk_label_new("Search : "); label = gtk_label_new("Search : ");
gtk_misc_set_alignment( GTK_MISC(label), 0.0, 0.5); gtk_misc_set_alignment( GTK_MISC(label), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (searchhbox), gtk_box_pack_start (GTK_BOX (searchhbox),
label, TRUE, TRUE, 0); label, FALSE, FALSE, 0);
gtk_widget_show(label); gtk_widget_show(label);
plugindesc->search_entry = gtk_entry_new(); plugindesc->search_entry = gtk_entry_new();
@ -1067,17 +1089,10 @@ gimp_plugin_desc()
gtk_signal_connect (GTK_OBJECT (button), "clicked", gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) details_callback, plugindesc); (GtkSignalFunc) details_callback, plugindesc);
gtk_box_pack_start (GTK_BOX (searchhbox), gtk_box_pack_start (GTK_BOX (searchhbox),
button, TRUE, TRUE, 0); button, FALSE, FALSE, 0);
/* right = description */ /* right = description */
/* the right description is build on first click of the Details button */
plugindesc->descr_scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (plugindesc->descr_scroll),
GTK_POLICY_ALWAYS,
GTK_POLICY_ALWAYS
);
gtk_paned_add2 (GTK_PANED (hbox), plugindesc->descr_scroll);
gtk_widget_set_usize (plugindesc->descr_scroll, DBL_WIDTH - DBL_LIST_WIDTH, 0);
/* buttons in dlg->action_area */ /* buttons in dlg->action_area */
@ -1107,6 +1122,9 @@ gimp_plugin_desc()
gtk_widget_show (plugindesc->clist); gtk_widget_show (plugindesc->clist);
gtk_widget_show (plugindesc->dlg); gtk_widget_show (plugindesc->dlg);
gtk_clist_select_row (GTK_CLIST (plugindesc->clist), 0, 0);
gtk_clist_moveto (GTK_CLIST (plugindesc->clist), 0, 0, 0.0, 0.0);
plugindesc->c1size = GTK_PANED(plugindesc->paned)->child1_size; plugindesc->c1size = GTK_PANED(plugindesc->paned)->child1_size;
GTK_PANED(plugindesc->paned)->child1_resize=TRUE; GTK_PANED(plugindesc->paned)->child1_resize=TRUE;

View File

@ -29,7 +29,7 @@
#include "libgimp/gimp.h" #include "libgimp/gimp.h"
#define DBL_LIST_WIDTH 250 #define DBL_LIST_WIDTH 250
#define DBL_WIDTH DBL_LIST_WIDTH+450 #define DBL_WIDTH (DBL_LIST_WIDTH + 300)
#define DBL_HEIGHT 200 #define DBL_HEIGHT 200
static char *proc_type_str[] = static char *proc_type_str[] =
@ -146,9 +146,9 @@ typedef struct
gint clist_row; gint clist_row;
gint c1size; gint c1size;
gboolean details_showing; gboolean details_showing;
} PLUGINDESC,*PLUGINDESCP; } PDesc;
PLUGINDESCP plugindesc = NULL; PDesc *plugindesc = NULL;
typedef struct typedef struct
{ {
@ -158,14 +158,14 @@ typedef struct
gchar *types; gchar *types;
gchar *realname; gchar *realname;
gint instime; gint instime;
} PINFO, *PINFOP; } PInfo;
static void static void
dialog_close_callback (GtkWidget *widget, dialog_close_callback (GtkWidget *widget,
gpointer data) gpointer data)
/* end of the dialog */ /* end of the dialog */
{ {
PLUGINDESCP pdesc = data; PDesc *pdesc = data;
gtk_widget_destroy(pdesc->dlg); gtk_widget_destroy(pdesc->dlg);
gtk_main_quit (); gtk_main_quit ();
} }
@ -177,9 +177,24 @@ details_callback (GtkWidget *widget,
gpointer data) gpointer data)
{ {
/* Show or hide the details window */ /* Show or hide the details window */
PLUGINDESCP pdesc = data; PDesc *pdesc = data;
GtkLabel *lab = GTK_LABEL(GTK_BIN (widget)->child); GtkLabel *lab = GTK_LABEL(GTK_BIN (widget)->child);
/* This is a lame hack:
We add the description on the right on the first details_callback.
Otherwise the window reacts quite weird on resizes */
if (pdesc->descr_scroll == NULL)
{
pdesc->descr_scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (pdesc->descr_scroll),
GTK_POLICY_ALWAYS,
GTK_POLICY_ALWAYS
);
gtk_widget_set_usize (pdesc->descr_scroll, DBL_WIDTH - DBL_LIST_WIDTH, -1);
gtk_paned_pack2 (GTK_PANED (pdesc->paned), pdesc->descr_scroll, FALSE, TRUE);
gtk_clist_select_row (GTK_CLIST(pdesc->clist), pdesc->clist_row, -1);
}
if(pdesc->details_showing == FALSE) if(pdesc->details_showing == FALSE)
{ {
GTK_PANED(pdesc->paned)->child1_resize=FALSE; GTK_PANED(pdesc->paned)->child1_resize=FALSE;
@ -222,8 +237,8 @@ format_menu_path(gchar *s)
} }
static gint static gint
procedure_general_select_callback (PLUGINDESCP pdesc, procedure_general_select_callback (PDesc *pdesc,
PINFOP pinfo) PInfo *pinfo)
{ {
gchar *selected_proc_blurb; gchar *selected_proc_blurb;
gchar *selected_proc_help; gchar *selected_proc_help;
@ -247,6 +262,9 @@ procedure_general_select_callback (PLUGINDESCP pdesc,
g_return_val_if_fail (pinfo != NULL, FALSE); g_return_val_if_fail (pinfo != NULL, FALSE);
if (pdesc->descr_scroll == NULL)
return FALSE;
selected_proc_blurb = NULL; selected_proc_blurb = NULL;
selected_proc_help = NULL; selected_proc_help = NULL;
selected_proc_author = NULL; selected_proc_author = NULL;
@ -460,7 +478,8 @@ procedure_general_select_callback (PLUGINDESCP pdesc,
} }
static void static void
expand_to(PLUGINDESCP pdesc,GtkCTreeNode * parent) expand_to (PDesc *pdesc,
GtkCTreeNode *parent)
{ {
if(parent) if(parent)
{ {
@ -476,13 +495,13 @@ procedure_clist_select_callback (GtkWidget *widget,
GdkEventButton *bevent, GdkEventButton *bevent,
gpointer data) gpointer data)
{ {
PINFOP pinfo; PInfo *pinfo;
GtkCTreeNode * found_node; GtkCTreeNode * found_node;
PLUGINDESCP pdesc = data; PDesc *pdesc = data;
g_return_val_if_fail (pdesc != NULL, FALSE); g_return_val_if_fail (pdesc != NULL, FALSE);
pinfo = (PINFOP)gtk_clist_get_row_data (GTK_CLIST (widget), row); pinfo = (PInfo *)gtk_clist_get_row_data (GTK_CLIST (widget), row);
if(!pinfo) if(!pinfo)
return FALSE; return FALSE;
@ -548,7 +567,7 @@ page_select_callback (GtkNotebook *notebook,
guint page_num, guint page_num,
gpointer data) gpointer data)
{ {
PLUGINDESCP pdesc = data; PDesc *pdesc = data;
if(page_num == 0) if(page_num == 0)
{ {
@ -556,7 +575,7 @@ page_select_callback (GtkNotebook *notebook,
gtk_clist_moveto(GTK_CLIST(pdesc->clist), gtk_clist_moveto(GTK_CLIST(pdesc->clist),
pdesc->clist_row, pdesc->clist_row,
0, 0,
0.5,0.5); 0.5, 0.0);
} }
else else
{ {
@ -564,7 +583,7 @@ page_select_callback (GtkNotebook *notebook,
gtk_clist_moveto(GTK_CLIST(pdesc->ctree), gtk_clist_moveto(GTK_CLIST(pdesc->ctree),
pdesc->ctree_row, pdesc->ctree_row,
0, 0,
0.5,0.5); 0.5, 0.0);
} }
return FALSE; return FALSE;
} }
@ -575,8 +594,8 @@ procedure_ctree_select_callback (GtkWidget *widget,
gint column, gint column,
gpointer data) gpointer data)
{ {
PINFOP pinfo; PInfo *pinfo;
PLUGINDESCP pdesc; PDesc *pdesc;
gboolean is_leaf; gboolean is_leaf;
gint sel_row; gint sel_row;
@ -594,13 +613,11 @@ procedure_ctree_select_callback (GtkWidget *widget,
NULL); NULL);
if (!is_leaf) if (!is_leaf)
{
return FALSE; return FALSE;
}
pdesc = data; pdesc = data;
pinfo = (PINFOP)gtk_ctree_node_get_row_data (GTK_CTREE(widget),GTK_CTREE_NODE(row)); pinfo = (PInfo *)gtk_ctree_node_get_row_data (GTK_CTREE(widget),GTK_CTREE_NODE(row));
/* Must set clist to this one */ /* Must set clist to this one */
@ -625,7 +642,7 @@ procedure_ctree_select_callback (GtkWidget *widget,
static void static void
pinfo_free (gpointer p) pinfo_free (gpointer p)
{ {
PINFOP pinfo = p; PInfo *pinfo = p;
g_free(pinfo->menu); g_free(pinfo->menu);
@ -637,7 +654,9 @@ pinfo_free(gpointer p)
} }
static GtkCTreeNode* static GtkCTreeNode*
get_parent(PLUGINDESCP pdesc,GHashTable * ghash,gchar *mpath) get_parent (PDesc *pdesc,
GHashTable *ghash,
gchar *mpath)
{ {
GtkCTreeNode *parent; GtkCTreeNode *parent;
GtkCTreeNode *last_parent; GtkCTreeNode *last_parent;
@ -702,12 +721,13 @@ get_parent(PLUGINDESCP pdesc,GHashTable * ghash,gchar *mpath)
} }
static void static void
insert_into_ctree(PLUGINDESCP pdesc,gchar *name, insert_into_ctree (PDesc *pdesc,
gchar *name,
gchar *xtimestr, gchar *xtimestr,
gchar *menu_str, gchar *menu_str,
gchar *types_str, gchar *types_str,
GHashTable *ghash, GHashTable *ghash,
PINFOP pinfo) PInfo *pinfo)
{ {
gchar *labels[3]; gchar *labels[3];
gchar *str_ptr; gchar *str_ptr;
@ -757,7 +777,8 @@ insert_into_ctree(PLUGINDESCP pdesc,gchar *name,
} }
static void static void
get_plugin_info(PLUGINDESCP pdesc,gchar *search_text) get_plugin_info (PDesc *pdesc,
gchar *search_text)
{ {
GParam *return_vals; GParam *return_vals;
int nreturn_vals; int nreturn_vals;
@ -792,7 +813,7 @@ get_plugin_info(PLUGINDESCP pdesc,gchar *search_text)
for (loop = 0; loop < return_vals[1].data.d_int32; loop++) for (loop = 0; loop < return_vals[1].data.d_int32; loop++)
{ {
PINFOP pinfo; PInfo *pinfo;
gchar *labels[4]; gchar *labels[4];
gchar *name; gchar *name;
gchar xtimestr[50]; gchar xtimestr[50];
@ -807,7 +828,7 @@ get_plugin_info(PLUGINDESCP pdesc,gchar *search_text)
else else
name = menu_strs[loop]; name = menu_strs[loop];
pinfo = g_new0(PINFO,1); pinfo = g_new0 (PInfo, 1);
tx = time_ints[loop]; tx = time_ints[loop];
if(tx) if(tx)
@ -831,8 +852,7 @@ get_plugin_info(PLUGINDESCP pdesc,gchar *search_text)
labels[2] = g_strdup(menu_strs[loop]); labels[2] = g_strdup(menu_strs[loop]);
labels[3] = g_strdup(types_strs[loop]); labels[3] = g_strdup(types_strs[loop]);
gtk_clist_insert (GTK_CLIST (GTK_CLIST(pdesc->clist)), row_count, gtk_clist_insert (GTK_CLIST(pdesc->clist), row_count, labels);
labels);
gtk_clist_set_row_data_full (GTK_CLIST (pdesc->clist), row_count, gtk_clist_set_row_data_full (GTK_CLIST (pdesc->clist), row_count,
pinfo, pinfo_free); pinfo, pinfo_free);
@ -857,7 +877,7 @@ static void
dialog_search_callback (GtkWidget *widget, dialog_search_callback (GtkWidget *widget,
gpointer data) gpointer data)
{ {
PLUGINDESCP pdesc = data; PDesc *pdesc = data;
gchar *search_text = NULL; gchar *search_text = NULL;
if(widget != NULL) if(widget != NULL)
@ -890,8 +910,8 @@ date_sort(GtkCList *clist,
GtkCListRow *row2 = (GtkCListRow *) ptr2; GtkCListRow *row2 = (GtkCListRow *) ptr2;
/* Get the data for the row */ /* Get the data for the row */
PINFOP row1_pinfo = row1->data; PInfo *row1_pinfo = row1->data;
PINFOP row2_pinfo = row2->data; PInfo *row2_pinfo = row2->data;
/* Want to sort on the date field */ /* Want to sort on the date field */
@ -909,7 +929,9 @@ date_sort(GtkCList *clist,
} }
static void static void
clist_click_column (GtkCList *clist, gint column, gpointer data) clist_click_column (GtkCList *clist,
gint column,
gpointer data)
{ {
if (column == 1) if (column == 1)
{ {
@ -951,7 +973,7 @@ gimp_plugin_desc()
gtk_init (&argc, &argv); gtk_init (&argc, &argv);
gtk_rc_parse (gimp_gtkrc ()); gtk_rc_parse (gimp_gtkrc ());
plugindesc = g_new0(PLUGINDESC,1); plugindesc = g_new0 (PDesc, 1);
/* the dialog box */ /* the dialog box */
@ -963,7 +985,7 @@ gimp_plugin_desc()
gtk_signal_connect (GTK_OBJECT (plugindesc->dlg), "destroy", gtk_signal_connect (GTK_OBJECT (plugindesc->dlg), "destroy",
(GtkSignalFunc) dialog_close_callback, (GtkSignalFunc) dialog_close_callback,
plugindesc); plugindesc);
gtk_window_set_policy(GTK_WINDOW (plugindesc->dlg),TRUE,TRUE,TRUE); gtk_window_set_policy(GTK_WINDOW (plugindesc->dlg), FALSE, TRUE, TRUE);
/* hbox : left=notebook ; right=description */ /* hbox : left=notebook ; right=description */
@ -980,7 +1002,7 @@ gimp_plugin_desc()
plugindesc->left_paned = vbox = gtk_vbox_new (FALSE, 0); plugindesc->left_paned = vbox = gtk_vbox_new (FALSE, 0);
gtk_container_border_width (GTK_CONTAINER (vbox), 3); gtk_container_border_width (GTK_CONTAINER (vbox), 3);
gtk_paned_add1 (GTK_PANED (hbox),vbox); gtk_paned_pack1 (GTK_PANED (hbox), vbox, FALSE, FALSE);
gtk_widget_show (vbox); gtk_widget_show (vbox);
/* left = notebook */ /* left = notebook */
@ -1048,13 +1070,13 @@ gimp_plugin_desc()
searchhbox = gtk_hbox_new(FALSE,0); searchhbox = gtk_hbox_new(FALSE,0);
gtk_box_pack_start (GTK_BOX (vbox), gtk_box_pack_start (GTK_BOX (vbox),
searchhbox, FALSE, TRUE, 0); searchhbox, FALSE, FALSE, 0);
gtk_widget_show(searchhbox); gtk_widget_show(searchhbox);
label = gtk_label_new("Search : "); label = gtk_label_new("Search : ");
gtk_misc_set_alignment( GTK_MISC(label), 0.0, 0.5); gtk_misc_set_alignment( GTK_MISC(label), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (searchhbox), gtk_box_pack_start (GTK_BOX (searchhbox),
label, TRUE, TRUE, 0); label, FALSE, FALSE, 0);
gtk_widget_show(label); gtk_widget_show(label);
plugindesc->search_entry = gtk_entry_new(); plugindesc->search_entry = gtk_entry_new();
@ -1067,17 +1089,10 @@ gimp_plugin_desc()
gtk_signal_connect (GTK_OBJECT (button), "clicked", gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) details_callback, plugindesc); (GtkSignalFunc) details_callback, plugindesc);
gtk_box_pack_start (GTK_BOX (searchhbox), gtk_box_pack_start (GTK_BOX (searchhbox),
button, TRUE, TRUE, 0); button, FALSE, FALSE, 0);
/* right = description */ /* right = description */
/* the right description is build on first click of the Details button */
plugindesc->descr_scroll = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (plugindesc->descr_scroll),
GTK_POLICY_ALWAYS,
GTK_POLICY_ALWAYS
);
gtk_paned_add2 (GTK_PANED (hbox), plugindesc->descr_scroll);
gtk_widget_set_usize (plugindesc->descr_scroll, DBL_WIDTH - DBL_LIST_WIDTH, 0);
/* buttons in dlg->action_area */ /* buttons in dlg->action_area */
@ -1107,6 +1122,9 @@ gimp_plugin_desc()
gtk_widget_show (plugindesc->clist); gtk_widget_show (plugindesc->clist);
gtk_widget_show (plugindesc->dlg); gtk_widget_show (plugindesc->dlg);
gtk_clist_select_row (GTK_CLIST (plugindesc->clist), 0, 0);
gtk_clist_moveto (GTK_CLIST (plugindesc->clist), 0, 0, 0.0, 0.0);
plugindesc->c1size = GTK_PANED(plugindesc->paned)->child1_size; plugindesc->c1size = GTK_PANED(plugindesc->paned)->child1_size;
GTK_PANED(plugindesc->paned)->child1_resize=TRUE; GTK_PANED(plugindesc->paned)->child1_resize=TRUE;