]> gitweb.factorcode.org Git - factor.git/commitdiff
Merge remote-tracking branch 'Blei/gtk-image-loader'
authorJoe Groff <arcata@gmail.com>
Sat, 27 Aug 2011 21:07:18 +0000 (14:07 -0700)
committerJoe Groff <arcata@gmail.com>
Sat, 27 Aug 2011 21:07:18 +0000 (14:07 -0700)
Conflicts:
basis/alien/enums/enums-tests.factor
basis/alien/enums/enums.factor
basis/alien/parser/parser.factor
basis/gdk/pixbuf/ffi/ffi.factor
basis/glib/ffi/ffi.factor
basis/tools/deploy/shaker/shaker.factor
basis/ui/backend/gtk/gtk.factor
basis/windows/nt/nt.factor

1  2 
basis/gdk/pixbuf/ffi/ffi.factor
basis/glib/ffi/ffi.factor
basis/images/images.factor
basis/tools/deploy/shaker/shaker.factor
basis/ui/backend/gtk/gtk.factor
basis/windows/com/com.factor
core/vocabs/loader/loader-docs.factor

index 113cf8d0c860cfae358c600ac9473c490afca31c,38959c9004f31542a38c2823272b016c9957927f..2a4f64f042284557ee9e94e9ce5d16f5240bd6d4
@@@ -1,15 -1,11 +1,15 @@@
 -! Copyright (C) 2009 Anton Gorenko.
 +! Copyright (C) 2010 Anton Gorenko.
  ! See http://factorcode.org/license.txt for BSD license.
- USING: alien alien.libraries alien.syntax combinators
- gobject-introspection kernel system vocabs.loader ;
+ USING: alien alien.data alien.libraries alien.syntax
+ combinators gio.ffi glib.ffi gmodule.ffi gobject-introspection
+ gobject.ffi kernel libc sequences system ;
+ EXCLUDE: alien.c-types => pointer ;
  IN: gdk.pixbuf.ffi
  
- <<
 +"gio.ffi" require
- >>
 +
 +LIBRARY: gdk.pixbuf
 +
  <<
  "gdk.pixbuf" {
      { [ os winnt? ] [ "libgdk_pixbuf-2.0-0.dll" cdecl add-library ] }
index 860d34bb8d2277b6a89b9e5ce53ff043795bc81b,22b40f47adbecb8377ab0784b2bb8c623cbcb5a8..5eefe08cd0e7288cb421d5faaba34933701e4ac0
@@@ -1,12 -1,11 +1,13 @@@
 -! Copyright (C) 2009 Anton Gorenko.
 +! Copyright (C) 2010 Anton Gorenko.
  ! See http://factorcode.org/license.txt for BSD license.
- USING: alien alien.destructors alien.libraries alien.syntax
- combinators kernel gobject-introspection
- gobject-introspection.standard-types system ;
+ USING: accessors alien alien.c-types alien.destructors
+ alien.libraries alien.strings alien.syntax combinators
 -gobject-introspection io.encodings.utf8 kernel system
 -vocabs.parser words ;
++gobject-introspection gobject-introspection.standard-types
++io.encodings.utf8 kernel system vocabs.parser words ;
  IN: glib.ffi
  
 +LIBRARY: glib
 +
  <<
  "glib" {
      { [ os winnt? ] [ "libglib-2.0-0.dll" cdecl add-library ] }
  } cond
  >>
  
- IMPLEMENT-STRUCTS: GPollFD GSource GSourceFuncs ;
++
+ TYPEDEF: char gchar
+ TYPEDEF: uchar guchar
+ TYPEDEF: short gshort
+ TYPEDEF: ushort gushort
+ TYPEDEF: long glong
+ TYPEDEF: ulong gulong
+ TYPEDEF: int gint
+ TYPEDEF: uint guint
+ <<
+ int c-type clone
+     [ >c-bool ] >>unboxer-quot
+     [ c-bool> ] >>boxer-quot
+     object >>boxed-class
+ "gboolean" current-vocab create typedef
+ >>
+ TYPEDEF: char gint8
+ TYPEDEF: uchar guint8
+ TYPEDEF: short gint16
+ TYPEDEF: ushort guint16
+ TYPEDEF: int gint32
+ TYPEDEF: uint guint32
+ TYPEDEF: longlong gint64
+ TYPEDEF: ulonglong guint64
+ TYPEDEF: float gfloat
+ TYPEDEF: double gdouble
+ TYPEDEF: long ssize_t
+ TYPEDEF: long time_t
+ TYPEDEF: size_t gsize
+ TYPEDEF: ssize_t gssize
+ TYPEDEF: size_t GType
+ TYPEDEF: void* gpointer
+ TYPEDEF: void* gconstpointer
+ TYPEDEF: guint8 GDateDay
+ TYPEDEF: guint16 GDateYear
+ TYPEDEF: gint GPid
+ TYPEDEF: guint32 GQuark
+ TYPEDEF: gint32 GTime
+ TYPEDEF: glong gintptr
+ TYPEDEF: gint64 goffset
+ TYPEDEF: gulong guintptr
+ TYPEDEF: guint32 gunichar
+ TYPEDEF: guint16 gunichar2
+ TYPEDEF: gpointer pointer
+ REPLACE-C-TYPE: long\sdouble double
+ REPLACE-C-TYPE: any gpointer
+ IMPLEMENT-STRUCTS: GError GPollFD GSource GSourceFuncs ;
  
 +CONSTANT: G_MININT8   HEX: -80
 +CONSTANT: G_MAXINT8   HEX:  7f
 +CONSTANT: G_MAXUINT8  HEX:  ff
 +CONSTANT: G_MININT16  HEX: -8000
 +CONSTANT: G_MAXINT16  HEX:  7fff
 +CONSTANT: G_MAXUINT16 HEX:  ffff
 +CONSTANT: G_MININT32  HEX: -80000000
 +CONSTANT: G_MAXINT32  HEX:  7fffffff
 +CONSTANT: G_MAXUINT32 HEX:  ffffffff
 +CONSTANT: G_MININT64  HEX: -8000000000000000
 +CONSTANT: G_MAXINT64  HEX:  7fffffffffffffff
 +CONSTANT: G_MAXUINT64 HEX:  ffffffffffffffff
 +
  GIR: vocab:glib/GLib-2.0.gir
  
  DESTRUCTOR: g_source_unref
Simple merge
index 2329b06b1304839fb8d7d34478415ff9bcd3daec,e74bfda3ce49672844bb057ba48beef484e28950..dca9345cd1b6e73afb4e6a02e3b460420501a552
@@@ -93,13 -93,13 +93,20 @@@ IN: tools.deploy.shake
          run-file
      ] when ;
  
 +: strip-gobject ( -- )
 +    "gobject-introspection.types" vocab [
 +        "Stripping GObject type info" show
 +        "vocab:tools/deploy/shaker/strip-gobject.factor"
 +        run-file
 +    ] when ;
 +
+ : strip-gtk-icon ( -- )
+     "ui.backend.gtk" vocab [
+         "Stripping GTK icon loading code" show
+         "vocab:tools/deploy/shaker/strip-gtk-icon.factor"
+         run-file
+     ] when ;
  : strip-specialized-arrays ( -- )
      strip-dictionary? "specialized-arrays" vocab and [
          "Stripping specialized arrays" show
@@@ -541,7 -541,7 +548,8 @@@ SYMBOL: deploy-voca
      strip-destructors
      strip-call
      strip-cocoa
 +    strip-gobject
+     strip-gtk-icon
      strip-debugger
      strip-ui-error-hook
      strip-specialized-arrays
index fba30fc15a5a01ffca2eecb0ae4388606efb36ce,c5b1ff9eeb1e4bc738792bb80e944a872106d036..db316120c46c0d0c94cd25f0a7e97f4e6e6156dc
@@@ -2,15 -2,16 +2,19 @@@
  ! See http://factorcode.org/license.txt for BSD license.
  USING: accessors alien.accessors alien.c-types alien.data
  alien.strings arrays assocs classes.struct command-line
 -destructors gdk.ffi gdk.gl.ffi gdk.pixbuf.ffi glib.ffi
 +continuations destructors environment gdk.ffi gdk.gl.ffi
- glib.ffi gobject-introspection.standard-types gobject.ffi
- gtk.ffi gtk.gl.ffi io.encodings.utf8 kernel libc literals locals
- math math.bitwise math.order math.vectors namespaces sequences
- strings system threads ui ui.backend ui.backend.gtk.input-methods
- ui.backend.gtk.io ui.clipboards ui.event-loop ui.gadgets
- ui.gadgets.private ui.gadgets.worlds ui.gestures
- ui.pixel-formats ui.pixel-formats.private ui.private
- vocabs.loader combinators prettyprint io ;
++gdk.pixbuf.ffi glib.ffi
++gobject-introspection.standard-types
+ gobject.ffi gtk.ffi gtk.gl.ffi io.backend
+ io.backend.unix.multiplexers io.encodings.binary
+ io.encodings.utf8 io.files io.thread kernel libc literals
+ locals math math.bitwise math.order math.vectors namespaces
 -sequences strings system threads ui ui.backend ui.clipboards
++sequences strings system threads ui ui.backend ui.backend.gtk.input-methods
++ui.backend.gtk.io ui.clipboards
+ ui.commands ui.event-loop ui.gadgets ui.gadgets.editors
+ ui.gadgets.menus ui.gadgets.private ui.gadgets.worlds
+ ui.gestures ui.pixel-formats ui.pixel-formats.private
 -ui.private ;
++ui.private vocabs.loader combinators io ;
  IN: ui.backend.gtk
  
  SINGLETON: gtk-ui-backend
@@@ -207,14 -177,137 +211,25 @@@ CONSTANT: action-key-code
      drop swap [ key-event>gesture <key-up> ] [ window ] bi*
      propagate-key-gesture t ;
  
 -: on-focus-in ( sender event user-data -- result )
 +: on-focus-in ( win event user-data -- ? )
      2drop window focus-world t ;
  
 -: on-focus-out ( sender event user-data -- result )
 +: on-focus-out ( win event user-data -- ? )
      2drop window unfocus-world t ;
  
 -: on-expose ( sender event user-data -- result )
 -    2drop window relayout t ;
 -
 -: on-configure ( sender event user-data -- result )
 -    drop [ window ] dip GdkEventConfigure memory>struct
 -    [ event-loc >>window-loc ] [ event-dim >>dim  ] bi
 -    relayout-1 f ;
 -
 -: on-delete ( sender event user-data -- result )
 -    2drop window ungraft t ;
 -
 -: init-clipboard ( -- )
 -    selection "PRIMARY"
 -    clipboard "CLIPBOARD"
 -    [
 -        utf8 string>alien gdk_atom_intern_static_string
 -        gtk_clipboard_get <gtk-clipboard> swap set-global
 -    ] 2bi@ ;
 -
 -: io-source-prepare ( source timeout -- result )
 -    2drop f ;
 -
 -: io-source-check ( source -- result )
 -    poll_fds>> 0 g_slist_nth_data GPollFD memory>struct
 -    revents>> 0 = not ;
 -
 -: io-source-dispatch ( source callback user_data -- result )
 -     3drop
 -     0 mx get wait-for-events
 -     yield t ;
 -
 -CONSTANT: poll-fd-events
 -    flags{
 -        G_IO_IN
 -        G_IO_OUT
 -        G_IO_PRI
 -        G_IO_ERR
 -        G_IO_HUP
 -        G_IO_NVAL
 -    }
 -
 -: create-poll-fd ( -- poll-fd )
 -    GPollFD malloc-struct &free
 -        mx get fd>> >>fd
 -        poll-fd-events >>events ;
 -
 -HOOK: init-io-event-source io-backend ( -- )
 -
 -M: f init-io-event-source ;
 -M: c-io-backend init-io-event-source ;
 -
 -M: object init-io-event-source
 -    GSourceFuncs malloc-struct &free
 -        [ io-source-prepare ] GSourceFuncsPrepareFunc >>prepare
 -        [ io-source-check ] GSourceFuncsCheckFunc >>check
 -        [ io-source-dispatch ] GSourceFuncsDispatchFunc >>dispatch
 -    GSource heap-size g_source_new &g_source_unref
 -    [ create-poll-fd g_source_add_poll ]
 -    [ f g_source_attach drop ] bi ;
 -
 -SYMBOL: next-timeout
 -
 -: set-timeout*-value ( alien value -- )
 -    swap 0 set-alien-signed-4 ; inline
 -
 -: timeout-prepare ( source timeout* -- result )
 -    nip next-timeout get-global nano-count [-]
 -    [ 1,000,000 /i set-timeout*-value ] keep 0 = ;
 -
 -: timeout-check ( source -- result )
 -    drop next-timeout get-global nano-count [-] 0 = ;
 -
 -: timeout-dispatch ( source callback user_data -- result )
 -    3drop sleep-time [ 1,000,000,000 ] unless* nano-count +
 -    next-timeout set-global
 -    yield t ;
 -
 -: init-timeout ( -- )
 -    GSourceFuncs malloc-struct &free
 -        [ timeout-prepare ] GSourceFuncsPrepareFunc >>prepare
 -        [ timeout-check ] GSourceFuncsCheckFunc >>check
 -        [ timeout-dispatch ] GSourceFuncsDispatchFunc >>dispatch
 -    GSource heap-size g_source_new &g_source_unref
 -    f g_source_attach drop
 -    nano-count next-timeout set-global ;
 -
+ ! This word gets replaced when deploying. See 'Vocabulary icons'
+ ! in the docs and tools.deploy.shaker.gtk-icon
+ : get-icon-data ( -- byte-array )
+     "resource:misc/icons/Factor_48x48.png" binary file-contents ;
+ : load-icon ( -- )
+     get-icon-data [
+         data>GInputStream &g_object_unref
+         GInputStream>GdkPixbuf gtk_window_set_default_icon
+     ] with-destructors ;
 -M: gtk-ui-backend (with-ui)
 -    [
 -        f f gtk_init
 -        f f gtk_gl_init
 -        load-icon
 -        init-clipboard
 -        start-ui
 -        stop-io-thread
 -        [
 -            init-io-event-source
 -            init-timeout
 -            gtk_main
 -        ] with-destructors
 -    ] ui-running ;
 -
 -: connect-signal-with-data ( object signal-name callback data -- )
 -    [ utf8 string>alien ] 2dip g_signal_connect drop ;
 -
 -: connect-signal ( object signal-name callback -- )
 -    f connect-signal-with-data ;
 -
 -:: connect-signals ( win -- )
 +:: connect-user-input-signals ( win -- )
      win events-mask gtk_widget_add_events
 -    
 -    win "expose-event" [ on-expose yield ]
 -    GtkWidget:expose-event connect-signal
 -    win "configure-event" [ on-configure yield ]
 -    GtkWidget:configure-event connect-signal
      win "motion-notify-event" [ on-motion yield ]
      GtkWidget:motion-notify-event connect-signal
      win "leave-notify-event" [ on-leave yield ]
@@@ -488,27 -574,21 +503,28 @@@ M: gtk-ui-backend bee
      gdk_beep ;
  
  M:: gtk-ui-backend system-alert ( caption text -- )
 -    f GTK_DIALOG_MODAL GTK_MESSAGE_WARNING GTK_BUTTONS_OK
 -    caption utf8 string>alien f gtk_message_dialog_new
 -    [ text utf8 string>alien f gtk_message_dialog_format_secondary_text ]
 -    [ gtk_dialog_run drop ]
 -    [ gtk_widget_destroy ] tri ;
 -
 -M: gtk-clipboard clipboard-contents
      [
 -        handle>> gtk_clipboard_wait_for_text
 -        [ &g_free utf8 alien>string ] [ f ] if*
 +        f GTK_DIALOG_MODAL GTK_MESSAGE_WARNING GTK_BUTTONS_OK
 +        caption utf8 string>alien f
 +        gtk_message_dialog_new &gtk_widget_destroy
 +        [
 +            text utf8 string>alien f
 +            gtk_message_dialog_format_secondary_text
 +        ] [ gtk_dialog_run drop ] bi
      ] with-destructors ;
  
 -M: gtk-clipboard set-clipboard-contents
 -    swap [ handle>> ] [ utf8 string>alien ] bi*
 -    -1 gtk_clipboard_set_text ;
 +M: gtk-ui-backend (with-ui)
 +    [
 +        0 gint <ref> f void* <ref> gtk_init
 +        0 gint <ref> f void* <ref> gtk_gl_init
++        load-icon
 +        init-clipboard
 +        start-ui
 +        [
 +            [ [ gtk_main ] with-timer ] with-event-loop
 +        ] with-destructors
 +    ] ui-running ;
 +
  
  gtk-ui-backend ui-backend set-global
  
Simple merge
Simple merge