Hi Axel,

I have build a simple file-manager that base one gio, works well, and
much much faster than GnomeVFS, looks screenshot:

    http://farm5.static.flickr.com/4027/4584389024_782b1e09ee_o.png
    
After i test all GIO APIs, i will request you merge my branch
(https://patch-tag.com/r/AndyStewart/gio-branch/home) to main
repository.

I think those patches are high quality.
The biggest cause to merge gio branch is `System` APIs (GHC) can't
cross-platform well, speical unicode problem, some `System` functions
can't handle unicode filepath on Unix.

Code logic is too complicated even i can use utf8-string decode/encode filepath.

GIO give user easy and cross-platform APIs to handle files (advanced
vfs), and integrate with gtk+ module perfect.




But before merge, it's need fix something in `gtk` packages:

Currently, i wirte below to gio.cabal:
------------------------------> gio.cabal start <------------------------------
x-Types-Forward: Graphics.UI.GtkInternals
......

        build-depends:  base >= 4, array, containers, haskell98, mtl, 
bytestring,
                        glib >= 0.10.5 && < 0.11,
                        gtk  >= 0.10.5 && < 0.11
......
------------------------------> gio.cabal end   <------------------------------

Because gio modules need `Graphics.UI.Gtk.Signals`, and
`Graphics.UI.Gtk.Signals` just expose in GtkInternal.chs.
So we need setup above in gio.cabal 

Okay, let's see the real problem, 

Because have some necessary gtk+ functions (`iconThemeLookupByGicon` in my
previous patch) need gio Types, so we need add "gio >= 0.10.5 && < 0.11"
in option `build-depends` of gtk.cabal

Do you see? gtk.cabal need `gio`, and gio.cabal `gtk`, so can't compile.
And right way is `gtk` depend `gio` and `gio` just depend `glib`.

The only *neat* solution to fix is move

   `gtk2hs/gtk/Graphics/UI/Gtk/Signals.chs`
to
   `gtk2hs/glib/System/Glib/Callback.chs` (or better name), 
   
because Signals.chs need `General/Threading.hs` (hsgthread.c and hsgthread.h),
so we need move below files to somewhere under `glib` packages.

  gtk2hs/gtk/Graphics/UI/Gtk/Signals
  gtk2hs/gtk/Graphics/UI/Gtk/General/Threading.hs
  gtk2hs/gtk/Graphics/UI/Gtk/General/hsgthread.h
  gtk2hs/gtk/Graphics/UI/Gtk/General/hsgthread.c
  
I have check above files, them just need System.Glib, so move to `glib`
package is safety.

After move above files, we make all packages that need Signals depend
`glib`, then we can fix conflict problem between `gio` and `gtk`.

We need change all modules import `System.Glib.Callback` instead
`Graphics.UI.Gtk.Signals`, i think this change won't break user's code,
because user don't import `Graphics.UI.Gtk.Signals`

I can't think better solution than above.
What do you think?

Cheers,

  -- Andy



------------------------------------------------------------------------------
_______________________________________________
Gtk2hs-devel mailing list
Gtk2hs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gtk2hs-devel

Reply via email to