Hi All,

For some reason.. always wanted to be able to write (and get) perl
applets on web browsers, so attached here is my go at a parrot plugin
for Mozilla :)

The files attached are:
The plugin.tar is the one containing it mainly with some instructions
on how to build it (and test it).

Since I need to pass onto parrot the pointer to the boxing window
(container) for the plugin in Mozilla, I have done this by pointing an
UnManagedStruct to it,  hence the "set_pointer" patch attached for the
UnManagedStruct PMC: 

As well, Gtk2 was used to test the plugin,  so attached is a file with
required gtk.declarations plus a call_list.txt.patch if the signatures
for it are not built "on the fly".

The examples merely display widgets in the Mozilla window as callbacks
to Parrot still need some work (but thats the Parrot side, so applets
will get better as soon as we have these ;)
Have fun :)
StÃphane

PS.: I noticed that somehow recently <events> where added to Parrot, and
somehow this breaks the plugin when hitting reload on Mozilla. Comenting
out Parrot_init_events(interpreter) in interpreter.c resolves the
problem: is the event queue properly cleaned up on Parrot_destroy?




Attachment: plugin.tar.gz
Description: GNU Zip compressed data

Index: unmanagedstruct.pmc
===================================================================
RCS file: /cvs/public/parrot/classes/unmanagedstruct.pmc,v
retrieving revision 1.22
diff -u -r1.22 unmanagedstruct.pmc
--- unmanagedstruct.pmc	4 Nov 2003 18:35:05 -0000	1.22
+++ unmanagedstruct.pmc	29 Dec 2003 18:34:08 -0000
@@ -246,6 +246,10 @@
 	return PMC_data(SELF);
     }
 
+    void set_pointer (void* value) {
+        PMC_data(SELF) = value;
+    }
+
     void set_integer_native(INTVAL value) {
        *(INTVAL *)PMC_data(SELF) = value;
     }
[package]
Gtk

[lib]
libgtk-x11-2.0

[defs]
v gtk_init ii
v gtk_main v

p gtk_calendar_new v

# -- Gtk Widget
#p gtk_widget_new                                  it        # -- Check this (ellipsis)
p gtk_widget_ref                                  p
v gtk_widget_unref                                p
v gtk_widget_destroy                              p
#v gtk_widget_destroyed                            pp        # -- Check this.
#v gtk_widget_set                                  pt        # -- Check this (ellipsis)
v gtk_widget_unparent                             p
v gtk_widget_show                                 p
v gtk_widget_show_now                             p
v gtk_widget_hide                                 p
v gtk_widget_show_all                             p
v gtk_widget_hide_all                             p
v gtk_widget_map                                  p
v gtk_widget_unmap                                p
v gtk_widget_realize                              p
v gtk_widget_unrealize                            p
v gtk_widget_queue_draw                           p
v gtk_widget_queue_resize                         p
v gtk_widget_draw                                 pp
v gtk_widget_size_request                         pp
v gtk_widget_get_child_requisition                pp
v gtk_widget_size_allocate                        pp
v gtk_widget_add_accelerator                      ptpiii
i gtk_widget_remove_accelerator                   ppii
v gtk_widget_set_accel_path                       ptp
p gtk_widget_list_accel_closures                  p
i gtk_widget_event                                pp
i gtk_widget_activate                             p
v gtk_widget_reparent                             pp
i gtk_widget_intersect                            ppp
i gtk_widget_is_focus                             p
v gtk_widget_grab_focus                           p
v gtk_widget_grab_default                         p
v gtk_widget_set_name                             pt
t gtk_widget_get_name                             p
v gtk_widget_set_state                            pi
v gtk_widget_set_sensitive                        pi
v gtk_widget_set_parent                           pp
v gtk_widget_set_parent_window                    pp
p gtk_widget_get_parent_window                    p
v gtk_widget_set_uposition                        pii
v gtk_widget_set_usize                            pii
v gtk_widget_set_events                           pi
v gtk_widget_add_events                           pi
v gtk_widget_set_extension_events                 pi
i gtk_widget_get_extension_events                 p
p gtk_widget_get_toplevel                         p
p gtk_widget_get_ancestor                         pi
p gtk_widget_get_colormap                         p
v gtk_widget_set_colormap                         pp
p gtk_widget_get_visual                           p
i gtk_widget_get_events                           p
v gtk_widget_get_pointer                          pii
i gtk_widget_is_ancestor                          pp
i gtk_widget_translate_coordinates                ppiiii
i gtk_widget_hide_on_delete                       p
v gtk_widget_set_style                            pp
v gtk_widget_ensure_style                         p
p gtk_widget_get_style                            p
v gtk_widget_reset_rc_styles                      p
v gtk_widget_push_colormap                        p
v gtk_widget_pop_colormap                         v
v gtk_widget_set_default_colormap                 p
p gtk_widget_get_default_style                    v
p gtk_widget_get_default_colormap                 v
p gtk_widget_get_default_visual                   v
v gtk_widget_set_direction                        pi
i gtk_widget_get_direction                        p
v gtk_widget_set_default_direction                i
i gtk_widget_get_default_direction                v
v gtk_widget_shape_combine_mask                   ppii
v gtk_widget_path                                 p3TT
v gtk_widget_class_path                           p3TT
t gtk_widget_get_composite_name                   p
v gtk_widget_modify_style                         pp
p gtk_widget_get_modifier_style                   p
v gtk_widget_modify_fg                            pip
v gtk_widget_modify_bg                            pip
v gtk_widget_modify_text                          pip
v gtk_widget_modify_base                          pip
v gtk_widget_modify_font                          pp
p gtk_widget_create_pango_context                 p
p gtk_widget_get_pango_context                    p
p gtk_widget_create_pango_layout                  pt
p gtk_widget_render_icon                          ptit
v gtk_widget_pop_composite_child                  v
v gtk_widget_push_composite_child                 v
v gtk_widget_queue_clear                          p
v gtk_widget_queue_clear_area                     piiii
v gtk_widget_queue_draw_area                      piiii
v gtk_widget_reset_shapes                         p
v gtk_widget_set_app_paintable                    pi
v gtk_widget_set_double_buffered                  pi
v gtk_widget_set_redraw_on_allocate               pi
v gtk_widget_set_composite_name                   pt
i gtk_widget_set_scroll_adjustments               ppp
i gtk_widget_mnemonic_activate                    pi 
v gtk_widget_class_install_style_property         pp
v gtk_widget_class_install_style_property_parser  ppp
p gtk_widget_class_find_style_property            pt
p gtk_widget_class_list_style_properties          p3
p gtk_widget_region_intersect                     pp
i gtk_widget_send_expose                          pp
#v gtk_widget_style_get                            pt     # -- Check this (ellipsis)
#v gtk_widget_style_get_property                   ptp    # -- Check this
#v gtk_widget_style_get_valist                     pt     # -- Check this (ellipsis)
p gtk_widget_get_accessible                       p
i gtk_widget_child_focus                          pi
v gtk_widget_child_notify                         pt
v gtk_widget_freeze_child_notify                  p
i gtk_widget_get_child_visible                    p
p gtk_widget_get_parent                           p
p gtk_widget_get_settings                         p
#p gtk_widget_get_clipboard                        pp     # -- Check this
p gtk_widget_get_display                          p
p gtk_widget_get_root_window                      p
p gtk_widget_get_screen                           p
i gtk_widget_has_screen                           p
v gtk_widget_get_size_request                     p33
v gtk_widget_set_child_visible                    pi
v gtk_widget_set_size_request                     pii
v gtk_widget_thaw_child_notify                    p
p gtk_requisition_copy                            p
v gtk_requisition_free                            p

# -- Gtk Container
v gtk_container_add                               pp
v gtk_container_remove                            pp
#v gtk_container_add_with_properties               ppt    # -- Check this (ellipsis)
i gtk_container_get_resize_mode                   p
v gtk_container_set_resize_mode                   pi
v gtk_container_check_resize                      p
#v gtk_container_foreach                           ppp    # -- Check this (callbacks)
#v gtk_container_foreach_full                      ppppp  # -- Check this (callbacks)
p gtk_container_get_children                      p
v gtk_container_set_reallocate_redraws            pi
v gtk_container_set_focus_child                   pp
p gtk_container_get_focus_vadjustment             p
v gtk_container_set_focus_vadjustment             pp
p gtk_container_get_focus_hadjustment             p
v gtk_container_set_focus_hadjustment             pp
v gtk_container_resize_children                   p
i gtk_container_child_type                        p
#v gtk_container_child_get                         ppt    # -- Check this (ellipsis)
#v gtk_container_child_set                         ppt    # -- Check this (ellipsis)
v gtk_container_child_get_property                pptp
v gtk_container_child_set_property                pptp
#v gtk_container_child_get_valist                  ppt    # -- Check this (ellipsis)
#v gtk_container_child_set_valist                  ppt    # -- Check this (ellipsis)
#v gtk_container_forall                            ppp    # -- Check this (callbacks)
i gtk_container_get_border_width                  p
v gtk_container_set_border_width                  pi
v gtk_container_propagate_expose                  ppp
#i gtk_container_get_focus_chain                   pp     # -- Check this.
v gtk_container_set_focus_chain                   pp
v gtk_container_unset_focus_chain                 p
p gtk_container_class_find_child_property         pt
v gtk_container_class_install_child_property      pip
p gtk_container_class_list_child_properties       p3

# -- Gtk Bin
p gtk_bin_get_child                               p

# -- Gtk Button
p gtk_button_new                                  v
p gtk_button_new_with_label                       t
p gtk_button_new_with_mnemonic                    t
p gtk_button_new_from_stock                       t
v gtk_button_pressed                              p
v gtk_button_released                             p
v gtk_button_clicked                              p
v gtk_button_enter                                p
v gtk_button_leave                                p
v gtk_button_set_relief                           pi
i gtk_button_get_relief                           p
t gtk_button_get_label                            p
v gtk_button_set_label                            pt
i gtk_button_get_use_stock                        p
v gtk_button_set_use_stock                        pi
i gtk_button_get_use_underline                    p
v gtk_button_set_use_underline                    pi

# -- GtkWindow
p gtk_window_new                                  i
v gtk_window_set_title                            pt
v gtk_window_set_wmclass                          ptt
v gtk_window_set_policy                           piii
v gtk_window_set_resizable                        pi
i gtk_window_get_resizable                        p
v gtk_window_add_accel_group                      pp
v gtk_window_remove_accel_group                   pp
i gtk_window_activate_focus                       p
i gtk_window_activate_default                     p
v gtk_window_set_modal                            pi
v gtk_window_set_default_size                     pii
v gtk_window_set_geometry_hints                   pppi
v gtk_window_set_gravity                          pi
i gtk_window_get_gravity                          p
v gtk_window_set_position                         pi
v gtk_window_set_transient_for                    pp
v gtk_window_set_destroy_with_parent              pi
v gtk_window_set_screen                           pp
p gtk_window_get_screen                           p
p gtk_window_list_toplevels                       v
v gtk_window_add_mnemonic                         pip
v gtk_window_remove_mnemonic                      pip
i gtk_window_mnemonic_activate                    pii
p gtk_window_get_focus                            p
v gtk_window_set_focus                            pp
v gtk_window_set_default                          pp
v gtk_window_present                              p
v gtk_window_iconify                              p
v gtk_window_deiconify                            p
v gtk_window_stick                                p
v gtk_window_unstick                              p
v gtk_window_maximize                             p
v gtk_window_unmaximize                           p
v gtk_window_fullscreen                           p
v gtk_window_unfullscreen                         p
v gtk_window_begin_resize_drag                    piiiil
v gtk_window_begin_move_drag                      piiil
v gtk_window_set_decorated                        pi
v gtk_window_set_frame_dimensions                 piiii
v gtk_window_set_has_frame                        pi
v gtk_window_set_mnemonic_modifier                pi
v gtk_window_set_role                             pt
v gtk_window_set_type_hint                        pi
v gtk_window_set_skip_taskbar_hint                pi
v gtk_window_set_skip_pager_hint                  pi
i gtk_window_get_decorated                        p
p gtk_window_get_default_icon_list                v
v gtk_window_get_default_size                     p33
i gtk_window_get_destroy_with_parent              p
v gtk_window_get_frame_dimensions                 p3333
i gtk_window_get_has_frame                        p
p gtk_window_get_icon                             p
p gtk_window_get_icon_list                        p
i gtk_window_get_mnemonic_modifier                p
i gtk_window_get_modal                            p
v gtk_window_get_position                         p33
t gtk_window_get_role                             p
v gtk_window_get_size                             p33
t gtk_window_get_title                            p
p gtk_window_get_transient_for                    p
i gtk_window_get_type_hint                        p
i gtk_window_get_skip_taskbar_hint                p
i gtk_window_get_skip_pager_hint                  p
v gtk_window_move                                 pii
i gtk_window_parse_geometry                       pt
v gtk_window_reshow_with_initial_size             p
v gtk_window_resize                               pii
v gtk_window_set_default_icon_list                p
#i gtk_window_set_default_icon_from_file           tp     # -- check this
v gtk_window_set_icon                             pp
v gtk_window_set_icon_list                        pp
i gtk_window_set_icon_from_file                   ptp
v gtk_window_set_auto_startup_notification        i
v gtk_decorated_window_init                       p
v gtk_decorated_window_calculate_frame_size       p
v gtk_decorated_window_set_title                  pt
v gtk_decorated_window_move_resize_window         piiii
Index: call_list.txt
===================================================================
RCS file: /cvs/public/parrot/src/call_list.txt,v
retrieving revision 1.25
diff -u -r1.25 call_list.txt
--- call_list.txt	28 Dec 2003 23:26:26 -0000	1.25
+++ call_list.txt	29 Dec 2003 18:39:58 -0000
@@ -187,3 +187,32 @@
 i	pPtiiipi
 i	tpiibi
 
+# -- for gtk
+i	ptp
+i	ppp
+i	ppii
+i	ppiiii
+p	t
+p	pt
+p	ptit
+p	p3
+p	pi
+p	pp
+v	pii
+v	piii
+v	piiil
+v	piiiil
+v	pp
+v	ppii
+v	pptp
+v	pt
+v	ptt
+v	ptp
+v	ptpiii
+v	p3TT
+v	p33
+v	p3333
+v	pip
+v	ppp
+v	pppi
+t	p

Attachment: gtk.tar.gz
Description: GNU Zip compressed data

Reply via email to