On Mon, Aug 16, 2004 at 10:20:46AM +0200, Leopold Toetsch wrote:
> "gtk-signal-connect" or "g-signal-connect"  isn't found here. I can't
> check the symbols of the lib, this dam** OS has symbols stripped. The
> other box has only gtk-1.2.

actually it should run as well against gtk-1.2 if "g_signal_connect"
is renamed "gtk_signal_connect".  Attached here are the files with
that small change, but I've never been able to run any parrot code
against gtk v1.2 as parrot dies complaining:

  /usr/lib/libgtk.so: undefined symbol: gdk_root_window

actually its simply dlopen dumping this.
(btw there parrot displays a misleading ".. No such file or dir.."
caused by the way loadlib lookups for the lib, note for a patch if
I find a nice way to clean it :)

> It returns a PerlUndef.
> Run it with -t.
Attached is the trace output.

> leo
Thanks,
Stephane
# -- Gtk Button Example.

.sub _gtkcallback
  print "Hello\n"
.end

.sub main @MAIN
  .include "gtk.pasm"

  P0 = global "Gtk::gtk_init"
  I5 = 0
  invoke

  P0 = global "Gtk::gtk_window_new"
  null I5
  invoke

  P15 = P5

  P0 = global "Gtk::gtk_button_new_with_label"
  S5 = "Parrot"
  invoke

  # -- Save it.
  P6  = P5
  P11 = P5

  # -- install callback?
  newsub P6, .Sub, _gtkcallback
  new P7, .Integer  # -- just give it something even if dont care
  set P7, 42
  new_callback P5, P6, P7, "U"

  P0 = global "Gtk::gtk_signal_connect"
  S5 = "clicked"
  P6 = P5
  P5 = P11
  invoke
  # -- .

  P5 = P11
  P6 = P11

  P0 = global "Gtk::gtk_widget_show"
  invoke

  # -- Set the container.
  P5 = P15
 
  P0 = global "Gtk::gtk_container_add"
  invoke

  P0 = global "Gtk::gtk_widget_show"
  invoke

  P0 = global "Gtk::gtk_main"
  invoke

  end
.end
saveall
loadlib P1, 'libgtk'
dlfunc P2, P1, 'gtk_init', 'vii'
store_global 'Gtk::gtk_init', P2
dlfunc P2, P1, 'gtk_main', 'vv'
store_global 'Gtk::gtk_main', P2
dlfunc P2, P1, 'gtk_widget_show', 'vp'
store_global 'Gtk::gtk_widget_show', P2
dlfunc P2, P1, 'gtk_container_add', 'vpp'
store_global 'Gtk::gtk_container_add', P2
dlfunc P2, P1, 'gtk_button_new_with_label', 'pt'
store_global 'Gtk::gtk_button_new_with_label', P2
dlfunc P2, P1, 'gtk_window_new', 'pi'
store_global 'Gtk::gtk_window_new', P2
dlfunc P2, P1, 'gtk_signal_connect', 'lptpP'
store_global 'Gtk::gtk_signal_connect', P2
restoreall
$ ./parrot -t gtk.toplevel.button.imc
     8 saveall
     9 loadlib P1, "libgtk-x11-2.0"     - P1=NULL, 
    12 dlfunc P2, P1, "gtk_init", "vii"         - P2=NULL, 
P1=ParrotLibrary=PMC(0x8364108), , 
    17 store_global "Gtk::gtk_init", P2         - , P2=NCI=PMC(0x8364048)
    20 dlfunc P2, P1, "gtk_main", "vv"          - P2=NCI=PMC(0x8364048), 
P1=ParrotLibrary=PMC(0x8364108), , 
       GC
    25 store_global "Gtk::gtk_main", P2         - , P2=NCI=PMC(0x8364030)
    28 dlfunc P2, P1, "gtk_widget_show", "vp"   - P2=NCI=PMC(0x8364030), 
P1=ParrotLibrary=PMC(0x8364108), , 
    33 store_global "Gtk::gtk_widget_show", P2          - , P2=NCI=PMC(0x8364018)
    36 dlfunc P2, P1, "gtk_container_add", "vpp"        - P2=NCI=PMC(0x8364018), 
P1=ParrotLibrary=PMC(0x8364108), , 
    41 store_global "Gtk::gtk_container_a", P2          - , P2=NCI=PMC(0x8364000)
       GC
    44 dlfunc P2, P1, "gtk_button_new_with_", "pt"      - P2=NCI=PMC(0x8364000), 
P1=ParrotLibrary=PMC(0x8364108), , 
    49 store_global "Gtk::gtk_button_new_", P2          - , P2=NCI=PMC(0x8363fe8)
    52 dlfunc P2, P1, "gtk_window_new", "pi"    - P2=NCI=PMC(0x8363fe8), 
P1=ParrotLibrary=PMC(0x8364108), , 
    57 store_global "Gtk::gtk_window_new", P2   - , P2=NCI=PMC(0x8363fd0)
       GC
    60 dlfunc P2, P1, "g_signal_connect", "lptpP"       - P2=NCI=PMC(0x8363fd0), 
P1=ParrotLibrary=PMC(0x8364108), , 
    65 store_global "Gtk::g_signal_connec", P2          - , P2=PerlUndef=PMC(0x8363fb8 
Num:0 Int:0)
    68 restoreall
    69 find_global P0, "Gtk::gtk_init"          - P0=NULL, 
    72 set I5, 0        - I5=0, 
    75 invoke
    76 find_global P0, "Gtk::gtk_window_new"    - P0=NCI=PMC(0x8364048), 
       GC
    79 null I5          - I5=0
    81 invoke
    82 set P15, P5      - P15=NULL, P5=UnManagedStruct=PMC(0x8363fa0)
    85 find_global P0, "Gtk::gtk_button_new_"   - P0=NCI=PMC(0x8363fd0), 
    88 set S5, "Parrot"         - , 
    91 invoke
    92 set P6, P5       - P6=NULL, P5=UnManagedStruct=PMC(0x8363f88)
       GC
    95 set P11, P5      - P11=NULL, P5=UnManagedStruct=PMC(0x8363f88)
    98 newsub P6, 22, -98       - P6=UnManagedStruct=PMC(0x8363f88), , 
   102 new P7, 31       - P7=NULL, 
   105 set P7, 42       - P7=Integer=PMC(0x8363f58), 
   108 new_callback P5, P6, P7, "U"     - P5=UnManagedStruct=PMC(0x8363f88), 
P6=Sub=PMC(0x8363f70 Adr:0x84e6548), P7=Integer=PMC(0x8363f58), 
       GC
   113 find_global P0, "Gtk::g_signal_connec"   - P0=NCI=PMC(0x8363fe8), 
   116 set S5, "clicked"        - S5="Parrot", 
   119 set P5, P11      - P5=UnManagedStruct=PMC(0x8363ef8), 
P11=UnManagedStruct=PMC(0x8363f88)
   122 invoke
get_string() not implemented in class 'UnManagedStruct'\n

Reply via email to