Integrative work

Lauris Kaplinski lauris at kaplinski.com
Sat Dec 20 13:17:19 GMT 2003


Hello!

Alexander Neundorf kirjutas R, 19.12.2003 kell 00:27:
> > > One way to do that is to make those apps use our filedialog and
> > > printdialog (printing does work in most cases, filedialog is a research
> > > project people should look at and maybe make proposals how to change gtk
> > > to call the kde file dialog, patches welcome for demo.
> >
> > Somewhat hackish, but working implementation is in sodipodi
> > (www.sodipodi.com). No KIO integration - only file dialogs
> > and print dialog + bridge to KDE print.
> >
> > If someone want to do non-hackish or more advanced thing
> > (make Gtk+ library to use KDE file dialogs by default),
> > functional main loop integration is must-be. But still you
> > will be easily caught, as soon as someone tries to extend
> > file dialog with some extra Gtk+ widgets ;-)

> How did you do it ?
> Catch the gtp_new_file_dialog() function and hoping that nobody will access 
> the file dialog widget directly ?
> Do you have the code somewhere available ?
> Please join at kde-debian at kde.org

In sodipodi it is compile-time option and involves several code
changes. The dialog itself is invoked explicitly, not as hooked
Gtk+ dialog. As dialog is modal, I have not to care too much
about handling Gtk+ events, while KDE file dialog is visible.
I have just hooked threadAwake and timer signals of file dialog,
and ensure that Gtk+ expose event gets processed time-to-time.

But I can imagine working implementation like that:

1. Hook gtk_file_selection_get_type, to return specially
   constructed GtkWidget type. It should have the same fields,
   as ordinary GtkFileSelection, plus hidden hook for
   KDE file dialog
2. Hook all other file selector API, and implement ::show
   (and maybe some other internal stuff), so that, if:
   - file selector is show modally AND
   - user has not added custom widgets to file selector
   KDE file dialog is run. If non-modal or modified dialog
   is needed, original Gtk dialog is shown.

My code is in sodipodi (either Gnome CVS, module sodipodi, or
http://sourceforge.net/project/showfiles.php?group_id=4054),
src/helper/kde*

Best wishes,
Lauris Kaplinski



 
>> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<




More information about the kde-core-devel mailing list