lablgtk2-2.16.0+dfsg/0000755000175000017500000000000012142154534012416 5ustar sunsunlablgtk2-2.16.0+dfsg/META0000644000175000017500000000524012015403774013072 0ustar sunsundescription = "Bindings for gtk2" requires = "" version = "2.16.0" archive(byte) = "lablgtk.cma" archive(native) = "lablgtk.cmxa" archive(byte,mt) += "gtkThread.cmo" archive(native,mt) += "gtkThread.cmx" package "auto-init" ( exists_if = "gtkInit.cmo,gtkInit.cmx" description = "Auto-initialization of GTK" requires = "lablgtk2" archive(byte) = "gtkInit.cmo" archive(native) = "gtkInit.cmx" ) package "gl" ( exists_if = "lablgtkgl.cma,lablgtkgl.cmxa,lablgtkgl.cmxs" description = "Bindings for gtkGL" requires = "lablgtk2" archive(byte) = "lablgtkgl.cma" archive(native) = "lablgtkgl.cmxa" ) package "glade" ( exists_if = "lablglade.cma,lablglade.cmxa,lablglade.cmxs" description = "Bindings for glade" requires = "lablgtk2" archive(byte) = "lablglade.cma" archive(native) = "lablglade.cmxa" ) package "gnomecanvas" ( exists_if = "lablgnomecanvas.cma,lablgnomecanvas.cmxa,lablgnomecanvas.cmxs" description = "Bindings for gnomecanvas" requires = "lablgtk2" archive(byte) = "lablgnomecanvas.cma" archive(native) = "lablgnomecanvas.cmxa" ) package "gnomehtml" ( exists_if = "lablgnome.cma,lablgnome.cmxa,lablgnome.cmxs" description = "Bindings for gnome html" requires = "lablgtk2" archive(byte) = "lablgnome.cma" archive(native) = "lablgnome.cmxa" ) package "gnomeui" ( exists_if = "lablgnomeui.cma,lablgnomeui.cmxa,lablgnomeui.cmxs" description = "Bindings for gnomeui" requires = "lablgtk2" archive(byte) = "lablgnomeui.cma" archive(native) = "lablgnomeui.cmxa" ) package "gtkspell" ( exists_if = "lablgtkspell.cma,lablgtkspell.cmxa,lablgtkspell.cmxs" description = "Bindings for gtkspell" requires = "lablgtk2" archive(byte) = "lablgtkspell.cma" archive(native) = "lablgtkspell.cmxa" ) package "panel" ( exists_if = "lablpanel.cma,lablpanel.cmxa,lablpanel.cmxs" description = "Bindings for panelapplet" requires = "lablgtk2" archive(byte) = "lablpanel.cma" archive(native) = "lablpanel.cmxa" ) package "rsvg" ( exists_if = "lablrsvg.cma,lablrsvg.cmxa,lablrsvg.cmxs" description = "Bindings for rsvg" requires = "lablgtk2" archive(byte) = "lablrsvg.cma" archive(native) = "lablrsvg.cmxa" ) package "sourceview" ( exists_if = "lablgtksourceview.cma,lablgtksourceview.cmxa,lablgtksourceview.cmxs" description = "Bindings for gtksourceview" requires = "lablgtk2" archive(byte) = "lablgtksourceview.cma" archive(native) = "lablgtksourceview.cmxa" ) package "sourceview2" ( exists_if = "lablgtksourceview2.cma,lablgtksourceview2.cmxa,lablgtksourceview2.cmxs" description = "Bindings for gtksourceview2" requires = "lablgtk2" archive(byte) = "lablgtksourceview2.cma" archive(native) = "lablgtksourceview2.cmxa" ) lablgtk2-2.16.0+dfsg/CHANGES0000644000175000017500000013205712015403774013423 0ustar sunsunLablGTK changes log In Lablgtk-2.16.0: 2012.08.23 [Jacques] * update Windows port, compiles fine on mingw with ./configure --disable-gtktest * lablgtk2 script does not load extra libraries by default (use flag -all to load all extensions) 2012.08.17 [Jacques] * generate correct lablgtk2 script for findlib. * add old-uninstall target. * support threaded toplevel with Quartz backend, using gtkThTop.ml (runs the toplevel loop in another thread) * remove GtkThInit from META (not portable) * avoid busy waiting by using g_main_context_set_poll_func to make polling non-blocking. busy waiting is still needed for VM threads, and can be activated by setting the environment variable LABLGTK_BUSY_WAIT. 2012.08.16 [Jacques] * update applications/browser for OCaml 4.00 * update applications/camlirc to use GText instead of GBroken.text 2012.07.26 [Pierre-Marie] * improvements to GtkSourceView2. * add cast and assignation functions to GText.nocopy_iter. * add Gtk 2.10 missing key modifiers. 2012.07.24 [Jacques] * can still install using old-install. 2012.06.19 [Adrien] * add a high-level API to create keyboard shortcuts. 2012.06.12 [Adrien] * add several #as_foo methods: entry, notebook, range * new signals for notebook: select_page, reorder_tab, change_current_page, move_focus_out, page_{added,removed,reordered} * add gtk_container_child_{set,get}_property * add gtk_notebook_{set,get}_tab_reorderable * add gtk_signal_new which can be used to create custom keyboard shortcuts * add g_signal_list and g_signal_query * add functions to connect to notify::foo signals which indicate when an object property changes * add foo#connect#notify_bar methods to add callbacks on changes of the "bar" property of the object "foo". 2012.04.11 [Maxence] * use findlib to install (see README for the list of installed packages) 2012.06.05 [Jacques] * merge GtkSourceView2 additions by Pierre-Marie Pedrot 2012.03.07 [Jacques] * add Make_Val_option to wrappers.h 2011.07.20 [Jacques] * add gtk_accelerator_name/get_label (for Pierre Boutillier) * add gtk_accel_map_foreach/change_entry (ibid) * add gdk_window_clear_area (for DDR) * make gtk_tree_view_get_visible_range version dependent (Thomas Ripoche) In Lablgtk-2.14.2: 2010.09.09 [Jacques] * add GtkCurve (but it is deprecated since 2.20) 2010.08.16 [Jacques] * rename g_value_{get,set}_variant, as the name is used by recent versions of glib (reported by Florent Monnier) 2010.07.25 [Jacques] * add changed signal to cell_renderer_combo (reported by Dmitry Bely) 2010.07.23 [Jacques] * copy GtkTreePath arguments in callbacks, as reported by Benjamin. 2010.06.25 [Jacques] * remove gtkInit.cmo from gdk_pixbuf_mlsource, no need to initialize Gtk as Gobject is sufficient * protect GtkThread callbacks against exceptions, and provide a function to process messages inside a different main loop. * add -nothinit option to lablgtk2, since Quartz cannot run the main loop in a different thread (one should just call GtkThread.main). See dialog-thread.ml for an example. 2010.06.08 [Jacques] * correct interfaces due to the fixing of an unsoundness bug in ocaml 3.12 (cf. http://caml.inria.fr/mantis/view.php?id=4824) In Lablgtk-2.14.1: 2010.05.20 [Jacques] * update unison patch to 2.40.16 (for Quartz users) 2010.05.18 [Jacques] * rename gtkSignal.ml to gtkSignal.ml4 and fix depend target * move Glib.Utf8 code to gutf8.ml, so that it can be used in xml_lexer to fix a bug report by Pascal Brisset (multibyte entities of the form ● in glade files). 2010.04.08 [Jacques] * remove useless methods (discovered by ocaml 3.12) 2010.01.14 [Benjamin] * Apply patch from Mike Spivey to support get_visible range in Gtree * Fixed incorrect target labgtkspell.cmxs in Makefile 2009.10.01 [Jacques] * Correct wrong module name SourceViewEnums -> SourceView2Enums In Lablgtk-2.14.0: 2009.09.25 [Jacques] * Ensure compilation under windows 2009.09.22 [Benjamin] * Restore compatibility with pre-3.11 OCaml versions 2009.09.01 [Benjamin] * Apply patch from Mike Spivey: * Access to StyleSchemeManager objects * Some attributes are strings and not string options. This seems sensible. * Languages and style schemes are treated alike in creating buffers: both arguments are wrapped. * draw_spaces deals with a list of flags, not a single flag. * Mark categories can have priorities, icons and backgrounds * Some attributes of languages are accessed by methods instead of properties to work around a GTK bug. 2009.09.01 [Benjamin] * Support for GtkSourceView 2.6 in library "lablgtksourceview2" * Support for GtkSourceView 1.x is still available in library "lablgtksourceview" but it is no longer linked into the lablgtk2 default toplevel as it is not linkable with "lablgtksourceview2". 2009.05.21 [Jacques] * Apply Anil Madhavapeddy patch for lablgladecc2 -hide-default 2009.05.18 [Benjamin] * Make and install dynamic cmxs objects when available. * Fix compilation bug for ml_panel.c (Richard Jones message of 2009-02-06) 2009.05.12 [Jacques] * Merge new tooltip support from Moutinho's branch r1365 (sorry for 1.5y delay...) * Merge tree DND from Moutinho's branch r1387 (1y delay...) 2009.05.08 [Jacques] * Add Gdk.Windowing.platform for platform dependent applications * Fix bug in Clist.set_pixmap when no mask given 2009.04.20 [Jacques] * Print backtrace if available when exception raised in signal callback. Requires ocaml 3.11. (suggested by Bart Jacobs) * Use "val virtual obj" in generated code. Requires ocaml 3.10. 2009.03.19 [Jacques] * In GtkAboutDialog, change internal property from "name" to "program-name" if version >= 2.12. The OO interface is left unchanged, since there is no conflict with #misc#name anyway. 2009.02.09 [Benjamin] * fix linking bug for older than 2.2 Gtk with g_io_channel_read_chars 2009.01.20 [Benjamin] * change handling of non existent properties. [Not_found] is no longer raised and [Invalid_argument prop_name] is used instead. No exception is raised by unknown dynamic property setters and a GLib warning is emitted. See the comments in src/gobject.mli in the local Property module. 2009.01.13 [Benjamin] * fix compilation issues with Gtk 2.4 In Lablgtk-2.12.0: 2008.12.20 [Jacques] * fix build process for ocaml 3.11 on MSVC and mingw. 2008.12.09 [Jacques] * fix ml_gtk_source_buffer_create_marker 2008.10.30 [Benjamin] * Support Gtk Quartz backend compilation (thanks to Pascal Cuoq) 2008.10.07 [Benjamin] * Revert last change on GEdit.entry_completion according to M. Clasen. Keeping the new type for the callback match_selected. 2008.10.05 [Benjamin] * Change type of model contained in GEdit.entry_completion from model to model_filter see http://bugzilla.gnome.org/show_bug.cgi?id=555087. 2008.09.10 [Benjamin] * Many custom tree model bugs fixed. 2008.09.04 [Benjamin] * First attempt to support custom_tree_models in GTree. I need some feedback on ways to improve the safety. An example of usage is given in examples/custom_tree.ml Part of the code comes from Robert Schneck: he agreed by private mail on relicensing it for lablgtk2. 2008.08.20 [Jacques] * Move model to head of properties in ComboBox (bug reported by Pierre-Marie Pedrot) 2008.08.03 [Benjamin] * Support for wrapped signal of GEdit.spin_button (Gtk 2.10) 2008.08.01 [Benjamin] * Support for GtkRendererAccel of Gtk 2.10 2008.07.26 [Benjamin] * Add a few 2.10 properties GAction.icon_name, GButton.image_position, 2008.07.25 [Olivier] * don't use G_QUEUE_INIT (dependency on glib 2.14) 2008.07.25 [Jacques] * Add [widget] to Gtk.file_chooser * configure did not work on FreeBSD 2008.05.09 [Benjamin] * Add Glib.Io.read_chars. Other g_io_* function could be added... 2008.04.14 [Olivier] * use Gc.create_alarm to delay GObject finalization instead of an idle function 2008.03.31 [Benjamin] * Support mingw compilation with OCaml 3.11. Still tricky... 2008.03.25 [Jacques] * add GtkWindow properties * add GMain.Event * add GtkMenu.Menu.popup_at 2008.03.22 [Benjamin] * prepare gtksourceview 2.1 support In lablgtk-2.10.1: 2008.02.26 [Jacques] * fix wrong type in GContainer.mli (could not compile with 3.10.2) 2007.12.01 [Jacques] * revert to setting LC_NUMERIC to C (ocaml still uses strtod) 2007.11.28 [Jacques] * Fix Val_GType/GType_val (use Val_addr/Addr_val) 2007.10.09 [Benjamin] * add ui_manager#as_ui_manager 2007.09.27 [Jacques] * Fix examples. In lablgtk-2.10.0: 2007.09.25 [Jacques] * Various preparations for release. * Use the "Glade for Windows" distribution for win32, supporting glade and rsvg. 2007.08.17 [Jacques] * some more patch by Julien Moutinho (style and Rc). * do not set LC_NUMERIC to C (ocaml is now ok) (Volker Grabsch). * avoid some warnings in ml_gdkpixbuf and ml_glib. 2007.08.09 [Benjamin] * GtkImage : clear support 2007.08.08 [Benjamin] * Fix typo in property "wrap-license" (was "wrap-licence") of GtkAboutDialog * Add GtkFileChooser "do-confirm-overwrite" property support and "confirm-overwrite" signal * GWindow "urgency-hint" property support 2007.08.07 [Benjamin] * Add Glib.usleep * Add Stock icons for Gtk 2.10 and 2.8 * Add has_selection and cursor_position properties in GText.buffer 2007.08.06 [Benjamin] * Add support for GtkAssistant of Gtk 2.10 2007.06.18 [Jacques] * merge patches by Julien Moutinho for GdkDisplay and gtk_tree_view_get_cell_area. 2007.06.08 [Benjamin] * Add support for gtk_link_button 2007.06.07 [Benjamin] * gtksourceview support 2007.05.27 [Benjamin] * fixed bug in GWindow.about_dialog whose callbacks raised an uncaught Not_found. The default Close button now responds `CANCEL and not `CLOSE. 2006.11.19 [Olivier] * add some missing properties in GtkIconView (in module GTree) (2.6) * add some missing properties in GtkButton (2.4, 2.6) 2006.11.03 [Olivier] * move GtkSocket code from ml_gtkbin.c to ml_gtk.c since it is wrapped in GWindow. 2006.10.27 [Jacques] * add Gdk.Cursor.get_image * remove Gdk.Cursor.destroy (could be dangerous) * add new methods to GData.clipboard (partly from SooHyoung Oh) 2006.10.13 [Jacques] * add GDraw.drawable#colormap,gc,set_gc 2006.09.15 [Olivier] * wrap GtkMenuToolButton (2.6) In lablgtk2-20060908: 2006.08.08 [RobertR] * export copy_memblock_indirected and ml_lookup_flags_getter for Windows 2006.07.06 [Jacques] * make ABSVALUE=1 to use a custom mlvalues.h where value is abstract 2006.05.13 [Jacques] * delay finalization functions when they may trigger a callback 2006.02.03 [Jacques] * add GLayout#bin_window 2005.12.19 [Jacques] * lablgladecc : apply Keita Yamaguchi's patch 2005.12.02 [Benjalin] * lablgladecc : support for GtkAboutDialog 2005.11.10 [Olivier] * wrap gtk_tree_view_expand_to_path (2.2) 2005.11.03 [Benjamin] * lablgladecc : emit w#toplevel#misc#show_all instead of w#toplevel#show in check_all, because some toplevel widgets (gMenu for example) do not have a show method 2005.10.28 [Jacques] * add windows support for rsvg In lablgtk2-20051027 (2.6.0): 2005.10.25 [Jacques] * fix GtkThread.sync (Robert Schneck-McConnell) 2005.10.17 [Jacques] * new recompilation approach for Windows 2005.10.03 [Olivier] * fix refcounting of pixbufs in GdkPixbuf 2005.09.24 [Olivier] * wrap gdk_cursor_new_from_pixbuf 2005.08.25 [Olivier] * gtk_about_dialog_set_{url,email}_hook are not methods : fix the external type declaration and remove from the GWindow.about_dialog class. 2005.08.18 [Olivier] * add special sort_column_id values in GTree to select default sort function or disable sorting * add a couple of utility functions in Glib : - getenv, setenv, unsetenv (2.4) - get_user_data_dir, etc. (2.6) * change the generated code of gdk-pixbuf-mlsource a bit. In lablgtk2-20050701: 2005.06.30 [Jacques] * export same symbols under unix and windows In lablgtk2-20050613: 2005.06.13 [Jacques] * define GText.buffer_skel and GText.view_skel 2005.06.02 [Jacques] * export all macro-generated functions (robertr) * change --rpath to -rpath (better done in ocamlmklib?) 2005.05.03 [Olivier] * wrap GdkPixbuf.get_file_info (2.4) * support serialization and deserialization of GdkPixbuf.pixbuf values * add a gdk-pixbuf-mlsource tool to help compiling images into programs. 2005.03.20 [Jacques] * add Gobject.Data.wrap to create new conversions 2005.03.07 [Olivier] * add GEdit.entry#xalign property (2.4) * make configure fail if GTK+ cannot be found In lablgtk2-20050218: 2005.02.18 [Jacques] * add GObj.event_signals#scroll and other missing wevents (Hendrik Tews) 2005.02.17 [Jacques] * allow using vmthreads 2005.02.07 [Olivier] * GTree.Path.is_prev now returns bool (T. Kurt Bond) 2005.01.08 [Olivier] * add a use_markup optional argument to GEdit.combo_box_text. 2005.01.04 [Olivier] (2.6) * new stock items * add PangoEllipsizeMode for PangoLayout * new GtkLabel properties * new GtkProgressbar::ellipsize property * new GtkTreeView properties and separator rows 2005.01.02 [Olivier] * 2.6 improvements to GtkComboBox (separators and a couple of new properties) 2004.12.05 [Olivier] * add GtkFileChooserButton (2.6) 2004.12.04 [Jacques] * fix constraint in GUtil.memo 2004.12.02 [Olivier] * add GtkAboutDialog (2.6) 2004.12.02 [Jacques] * fix Michael Furr's bug reports 2004.11.24 [Olivier] * add GMisc.statusbar#has_resize_grip and #set_has_resize_grip GMisc.statusbar now inherits from GPack.box * add GtkIconView (2.6) 2004.11.22 [Olivier] * add GtkCellRendererCombo (2.6) * add GtkCellRendererProgress (2.6) In lablgtk2-20041119: 2004.11.17 [Jacques] * fix make depend * cleanup lablgtk2.in 2004.11.15 [Olivier] * add max-position and min-position in GPack.paned (2.4) * add GtkSpell interface (http://gtkspell.sf.net/) 2004.11.10 [Olivier] * add GPack.paned#position * allow multiple conditions per watch in Glib.Io.add_watch 2004.10.24 [Olivier] * add a .mli for GnoDruid, reorganize gnoDruid.ml a bit * add the single-paragraph-mode property in GtkCellRendererText 2004.10.05 [Jacques] * revise Timeout.add and Idle.add for compatibility (optional arguments must be followed by a non-labeled argument) 2004.10.02 [Jacques] * 2.2 compatibility fixes (G_STRFUNC only defined in 2.4) 2004.09.21 [Olivier] * add optional priority argument for timeouts and idle callbacks in Glib * get rid of the print handler in Glib.Message (it's not used by libraries) * get rid of the Glib.Critical exception (callbacks should never raise exceptions) * add Glib.Message.log and a couple other functions related to logging * generally prevent exceptions from escaping callbacks 2004.09.18 [Jacques] * revert to using `OTHER in Gobject.data_kind 2004.09.17 [Olivier] * more unicode fixes, add a Utf8.to_unichar_validated function 2004.09.17 [Jacques] * Gobject.Data.boxed parameterized by the real type, to be able to create tree store columns from it. Gobject.fundamental_type modified accordingly. 2004.09.15 [Olivier] * add GText.buffer#select_range 2004.09.14 [Olivier] * add a few unicode-related functions 2004.09.08 [Olivier] * add GAction.ui_manager#add_ui * have #get_widget and #get_action raise Not_found instead of Null_pointer. 2004.09.03 [Olivier] * in GAction.action_group, do not merge #add_action and #add_action_with_accel in a single method because they have different behaviour. Fixes a bug where stock items accelerators were not connected. * add the padding properties of GBin.alignment (2.4) 2004.08.27 [Olivier] * add GTree.cell_layout#reorder and GTree.cell_layout#set_cell_data_func * add a couple of utility functions in Glib * decimate ml_gtkmisc.c, add a couple of things to GtkCalendar and GtkLabel 2004.08.24 [Olivier] * add GWindow.message_dialog#set_markup (2.4) * add override of default signal handlers (GtkSignal.override_class_closure, GtkSignal.chain_from_overridden) 2004.08.23 [Olivier] * wrap some 2.4 additions in GdkPixbuf (from_file_at_size, save_to_buffer). Add some Ocamldoc comments. * add 2.4 stock items in GtkStock 2004.08.20 [Jacques] * fix GdkPixbuf.render_to_drawable * support gtk-2.0.1 * add examples/GL/texturesurf.ml with texture from pixbuf 2004.08.19 [Olivier] * add 'active' property of ComboBox as a constructor parameter. * qualify conversion tables as 'const' (so they end up in read-only pages) * add some ocamldoc comments 2004.08.11 [Olivier] * have GAction.ui_manager#add_ui_from_string raise an exception in case of error. * add Glib.Markup.Error exception. * avoid memory leaks in Glib.Convert. * remove some dead code (GtkPreview). In lablgtk2-20040716 (2.4.0): 2004.07.16 [Jacques] * add GLib.Io.remove and Glib.Io.read, works under windows too 2004.07.09 [Olivier] * Rewrite Xml_lexer so that it is more conformant. 2004.07.08 [Olivier] * fix the support of SVGZ files for older versions of librsvg where the header is not always present. 2004.07.05 [Olivier] * add ocamldoc comments for some optional parameters. * add some optional parameters to the GtkFileFilter constructor. 2004.06.28 [Olivier] * support SVGZ files in Rsvg, fix for render_from_file on Win32, fix memory leak. 2004.06.22 [Olivier] * extend GtkComboBox convenience API to GtkComboBoxEntry. 2004.06.15 [Olivier] * fix the ocamldoc generator for ocaml 3.08 * silence some GCC 3.4 warnings 2004.06.10 [Olivier] * add #event method for GtkComboBox (and descendants), and GtkFileChooserWidget 2004.06.06 [Olivier] * changed methods returning a char* or NULL in GFile: now they return string option instead of converting NULL into "". 2004.06.02 [Olivier] * add some properties for the GnomeCanvasText item, introduce a GnoCanvas.text class with getters for text height and width * relax type constraint in GUtil.memo so that it can work for non-widget gobjects * add Glib.Markup.escape_text (useful for dealing with pango markup) 2004.06.01 [Olivier] * export a couple of properties in GButton.button_skel 2004.05.09 [Olivier] * extended toolbar API (2.4) * update GtkAction* widgets to the final API 2004.04.04 [Olivier] * re-implement Gobject.Data.caml (correctly this time) 2004.03.26 [Olivier] * Add a common supertype for canvas items: GnoCanvas.base_item. * Improve the signatures of canvas, group and item classes in GnoCanvas (no more low-level Gtk.obj) 2004.03.23 [Olivier] * generic handling of GError on the C side * added exception Glib.Convert.Error In lablgtk2-20040319: 2004.03.18 [Jacques] * move GTree.tree to GBroken.tree (really broken in 2.4?) * add GBroken.text * add GContainer#all_children * add GUtil.print_widget 2004.03.17 [Olivier] * add GFile.filter#add_custom * add special methods for adding open/save button in GWindow.file_chooser_dialog 2004.03.15 [Jacques] * allow destroying pixmaps manually * update GdkPixbuf support * PangoLayout corrections (incompatible with previous snapshot) 2004.03.10 [Olivier] * update several 2.4 widgets to the latest API (ComboBox, TreeView, FileChooser). * add a convenience function GTree.store_of_list * change the type of #iter_n_children and #iter_children in GTree.model 2004.03.05 [Olivier] * gtk_dialog->action_area is a GtkHButtonBox * add gtk_button_box_{set,get}_child_secondary (2.4) * misc. additions and cleanups in GPack.box and GPack.button_box In lablgtk2-20040304: 2004.03.04 [Jacques] * fix dependencies in src/Makefile * fix #layout in GDraw.{drawable,pixmap} * fix typing problems in 3.06 and 3.07+14 2004.03.01 [Jacques] * add Pango.Layout and GDraw.drawable#layout 2004.02.29 [Olivier] * add Gobject.Data.caml to store caml values in GtkTreeModels. * add signal emitting gtk_tree_model_row_changed 2004.02.15 [Olivier] * change type of gdk_drag_status: argument is drag_action option instead of drag_action list 2004.01.27 [Jacques] * add GWindow.dialog_any (for glade) * restructure dialog code 2004.01.21 [Olivier] * GtkColorButton and GtkFontButton (2.4) 2004.01.15 [Olivier] * add gtk_tree_view_column_set_cell_data_func * log error messages if ml_gtktree callbacks raise exceptions * fix the types of some callbacks in GtkTreeSortable and GtkTreeModelFilter In lablgtk2-20040113: 2004.01.13 [Jacques] * revert to GWindow.window_skel/window * prepare snapshot 2004.01.08 [Olivier] * GtkTreeModel{Sort,Filter} fixes * added some missing GtkTreeModel methods (get_iter_first, iter_has_child, iter_n_children, flags, foreach) * in wrappers, added a function for converting a C flags value into a variant list (the reverse of the Make_Flags_val macro) 2004.01.04 [Olivier] * support for GtkEntryCompletion (2.4) 2003.12.21 [Olivier] * add event-after signal for widgets 2003.12.20 [Olivier] * make the comparison function use gtk_tree_path_compare for Gtk.tree_path values. 2003.12.19 [Olivier] * added support for GtkTreeSortable, GtkTreeModelSort and GtkTreeModelFilter (2.4) * fixes for GtkComboBox * GTree.view_column inherit from GTree.cell_layout, add a few methods to GTree.view_column 2003.12.17 [Jacques] * some additions/improvements to lablgladecc 2003.12.13 [Olivier] * More GTK 2.4 support: Action-based menus and toolbars * added GtkData.AccelGroup.parse 2003.12.10 [Olivier] * support for GTK 2.4 widgets: GtkComboBox, GtkExpander, GtkFileChooser 2003.11.30 [Olivier] * move event method of GRange.scrollbar in GRange.range (GtkScale widgets also receive events), removed GRange.scrollbar class * added event method in GTree.view, GRange.ruler 2003.10.30 [Jacques] * add GWindow.file_selection#dir_list (Francois Pessaux) * move GBin.socket to GWindow.socket (this wasn't a bin) * add GWindow.plug_signals 2003.10.28 [Olivier] * make Panel.applet inherit GContainer.bin; remove the unit arg for getters 2003.10.20 [Jacques] * add bin class for #child 2003.10.13 [Olivier] * autoconf support for lablGL location 2003.10.09 [Olivier] * wrap GtkButton label property in button_skel In lablgtk-2.2.0: 2003.10.10 [Jacques] * merge Makefile.nt into Makefile, check for msvc 2003.10.09 [Benjamin] * doc: correct GtkAjustement link to the right Gtk doc * doc: fix Makefile for doc (use of OCAML instead of CAMLC and mkdir ../doc/html) 2003.10.07 [Jacques] * add Gpointer.{peek,poke}_nativeint 2003.09.27 [Olivier] * remove `NONE response in dialogs * improved ocamldoc documentation (custom generator with links to GTK+ API reference) 2003.09.22 [Jacques] (request F.Pottier) * add window#maximize/fulscreen/stick * add GTree.row_reference and GTree.Path 2003.09.17 [Olivier] * GNOME libpanelapplet support. Now we can write panel applets in caml. 2003.09.11 [Olivier] * configure script prints a summary of the libraries that will be built. * in the output of pkg-config, filter out the options that ocamlmklib doesn't like. 2003.08.28 [Benjamin] * mnemonic support for all kind of menus. Defaults to true in factory. 2003.08.18 [Olivier] * wrap GtkNotebook::switch_page instead of change_current_page 2003.08.15 [Jacques] * split gtk.props in small pieces, to allow more generation 2003.08.06 [Olivier] * in GWindow: color_selection_dialog, file_selection and font_selection_dialog now inherit from GWindow.dialog 2003.08.05 [Olivier] * Added some libgnomeui bindings (Druids) * some new things in Gdkpixbuf : save, fill, subpixbuf, saturate_and_pixelate gdkpixbuf-specific errors 2003.07.18 [Benjamin] * New Glib.Unichar module 2003.07.17 [Benjamin] * Fix Win32 compilation 2003.07.09 [Jun Furuse] Improvements of lablgladecc: * Internal widgets are now also accessible by instance variables. The user can use simply widget names inside sub-class definitions, instead writing self#widget_name. * A flag -hide-default hides all the widget with default names come from glade, like label123. * Added check_all function to the output so that one can check all the widgets really exist. * reparent method is added to facilitate to embed one glade toplevel widget into a container. 2003.07.09 [Jacques] * ?width and ?height in GWindow back to setting size_request (default size did not work properly) * backward compatibility: GMisc.label has two exclusive parameters, ?text and ?markup (and no ?use_markup). 2003.07.07 [Benjamin] * Fixed confusion between text/label in a Label. Now GMisc.label expects ~label instead of ~text. This is consistant with the semantic of text and label properties (label may contain pango makups/text never do) In lablgtk2-20030707: 2003.07.05 [Jacques] * #misc#set_geometry renamed in #misc#set_size_request * ?width and ?height in GWindow set default size rather than size request 2003.07.02 [Jacques] * fix configure (split PKG_CHECK_MODULES for GTK and GTKALL) * fix name of gtk_gl_area_swap_buffers 2003.06.24 [Benjamin] * Fix deps in Makefile * Fix generation of an incorrect lablgtk2 when debug is enabled * Fix Gtk 2.0 compatibility 2003.06.24 [Jacques] * finish going to generation, add missing signals * wrap clipboard and cell renderers * add GMain.init to avoid "open GMain" 2003.06.23 [Jacques] * Lots of changes: generate signals and externals too. 2003.06.19 [Jacques] * Add GData.clipboard. * Properties for GtkCellRenderer. * Towards canvas properties. 2003.06.18 [Jacques] * Massive change: generate properties automatically. Probable incompatibilities: inform immediately. 2003.06.17 [Benjamin] * Fix Gtk 2.0 compatibility 2003.06.16 [Benjamin] * Fix dependencies in Makefile. Now make -j works. * Add "world" target in Makefile. 2003.06.15 [Jacques] * Starting automatic generation of code. Should reduce need to write wrappers and externals manually. 2003.06.13 [Benjamin] * Experimental g_type_register_static: not to be used at this time 2003.06.11 [Jacques] * changes in object properties (GtkBase.Tables, ...) * add check_externals utility, fix some bugs * additions in GtkWindow.ml 2003.06.10 [Jacques] * changes in object properties (gobject.ml, gtkTree.ml) 2003.06.06 [Jacques] * new #misc#get_flag to get misc widget info * font_desc handling in Pango 2003.06.04 [Jacques] * GtkDialog cleanup * add applications/osiris (just started) 2003.05.29 [Jacques] * fixed GtkTree.TreeView.Properties.model * fixed ml_gobject.{get,set}_value to assume interfaces are objects 2003.05.26 [Jun Furuse] * msvc port is done! 2003.05.24 [Jun Furuse] * added Window.get_visual 2003.05.23 [Benjamin] * fixed incorrect type of trreview#connect#row_activated 2003.05.21 [Jun Furuse] * fixed a problem of SpinButton.get_value_as_int for the case of the value is minus' src/gtkEdit.ml 2003.05.14 [Benjamin] * Glib.Convert convert_with_fallback support 2003.05.12 [Benjamin] * GtkData.AccelMap support * GtkImageMenuItem support * MenuFactory accel_map support by default * GtkStock.Item.lookup support 2003.05.01 [Maxence] * srcdoc target added to generate HTML doc in src/doc/index.html (I did not test on Windows) In lablgtk2-20030423: 2003.04.22 [Jacques] * GtkThread.thread_main automatically switches to gui thread. 2003.04.21 [Benjamin] * GRange.progress_bar updated. Old functions deprecated. 2003.04.12 [Olivier] * add GWindow.message_dialog, add methods in GWindow.dialog 2003.04.11 [Jun] * add GtkWindow.Window.resize and its C interface 2003.04.08 [Jacques] * lots of change in GtkTree*, add examples/tree_store.ml 2003.04.02 [Jacques] * finish? GtkTreeView In lablgtk2-20030326: 2003.03.20 [Olivier] * add stocks and mnemonics for buttons * add icon factories 2003.03.19 [Jacques] * more property support (phantom type like for signals) 2003.03.18 [Jacques] * lots of GtkTree* additions * small changes in ml_glibc, gObj.ml 2003.03.17 [Benjamin] * Restore Variant and stretch properties in GtkText * GTK 2.0 fixes in GtkTree 2003.03.16 [Olivier] * GnomeCanvas: avoid duplicate properties type declaration 2003.03.15 * changes in Gobject.Property and Gobject.Value.set (use set_boxed in ml_gobject.c for automatic copying) * adapt text and gnome-canvas (no need to build g_values) In lablgtk2-beta: 2003.03.14 * libgnomecanvas support [Olivier] * prepare for release, and fix makefiles [Jacques] 2003.03.13 * Add Idle support 2003.02.26 [Benjamin] * Use mnemonics by default in factories 2003.02.25 [Benjamin] * GMenu new methods * Support for mnemonic in labels. * First patch to correct alloca problem in insert_text* 2003.02.25 * copy_block_indirected allocates in old generation * disable compaction in gtkMain.ml * copy young strings to the stack when needed * free lists obtained from Gtk 2003.02.24 * replace alloc_final by alloc_custom (wrapper.h) * better gtk-2.0 support (ml_gdk.c) 2003.02.21 * Support for GTK 2.0 and librsvg 2.0 compilation (O. Andrieu) [Benjamin] In lablgtk2-20030221: 2003.02.21 * add GObj.misc_ops#set_size_chars * applications/browser only works with CVS version of ocaml * bug fixes 2003.02.20 * additions to Pango [Jacques] [Benjamin]: * added set_stock to GMisc.image * In GMisc.label_skel : added : #set_markup #set_markup_with_mnemonic #label changed : semantic of #text (returns text with markups and mnemonics) old semantic available with #label. * In GText.iter : add #language 2003.02.19 * GdkDrawable is also a GObject * split GText.iter/nocopy_iter (Benjamin) * finish split (Jacques) 2003.02.14 * Added librsvg support (contributed by Olivier Andrieu) * Ported applications/browser * GText.iter#forward/backward return self 2003.02.13 * Starting to add GtkTreeView. See tree2.ml. 2003.02.12 * API changes and bug fixes in GText (Jacques) 2003.02.11 * API changes in GText (Jacques) * Many bug fix in GText (Benjamin) In lablgtk2-20030210: 2003.02.10 * merge trunk * Add gtkgl-2.0 and libglade-2.0 support 2003.01.22 * Support for interaction between GtkTextBuffer and GtkClipboard. (Benjamin) * Support for search functions in GtkTextIter. (Benjamin) 2002.01.16 * fix memory management in ml_gdk.h * GObject and GtkObject are different! fix gtk.ml 2002.01.15 * added GtkAccelGroup and GtkClipboard support (Jacques) * suppress Gdk.Tags.selection (use Gdk.Atom.primary/secondary/clipboard) * time is 32-bit! (Benjamin) In lablgtk2-alpha: 2002.12.26 * lots of changes to adapt to gtk2 * callback handling and property support completely rewritten * many API changes * new text widget interfaced by Benjamin Monate * Gtk2 automatically calls setlocale in gtk_init, but we revert LC_NUMERIC to C immediately after In trunk: 2003.04.14 * fix Glib.IO (Henri Dubois-Ferriere) 2003.01.22 * GtkThread.main switches GtkMain.Main.main to call GtkThread.thread_main 2003.01.10 * added GList.clist#get_row_state and GWindow.file_selection#file_list (by Francois Pessaux) 2002.11.18 * added META (by Stefano Zacchiroli) * fixed applications/camlirc (Tim Freeman) 2002.10.31 * add gdk_property_* 2002.10.26 * fix GdkPixbuf.create_pixmap * add GdkEventClient (requested by Didier le Botlan) 2002.08.26 * add Gdk.Window.get_pointer_location (Tim Freeman) In lablgtk-1.2.5: 2002.08.19 * add GWindow.toplevel (Tim Freeman report) 2002.08.09 * Makefile and tictactoe patches (Tim Freeman) 2002.08.07 * add GtkThread.sync and GtkThread.async to post calls to GTK from different threads on windows (GTK/win32 is not reentrant) In lablgtk-1.2.4: 2002.07.15 * add dll support to windows port 2002.07.13 * install dlls to stublibs directory 2002.07.06 * add g_io_add_watch support in GMain.Io (requested by Maxence) 2002.07.04 * add rpm spec (Ben Martin) 2002.07.01 * add GdkPixbuf support 2002.06.20 * add all color settings in GtkData.Style/GObj.style (requested by N. Raynaud) * add GMain.Rc 2002.06.19 * add Gpointer.region, to handle bigarray/string/Raw.t in an uniform way 2002.06.18 * add Gdk.Rgb.draw_image (requested by F. Dellaert) 2002.05.30 * change typing of GtkSignal.t 2002.05.28 * move GtkData.Selection to GtkBase.Selection * add actual selection handling * add Gdk.Atom 2002.04.30 * added button#set_relief, paned#pack1/pack2/set_position, Gdk.Window.set_cursor (requested by malc) 2002.02.25 * add GtkPreview support (by Lauri Alanko) * add applications/camlirc (by Noabuaki Yoshida) 2002.01.25 * correct ml_gtk_spin_button_set_update_policy * update Makefile for gtkxmhtml In lablgtk-1.2.3: 2001.12.12 * add GToolbox utility module (contributed by Maxence Guesdon) 2001.12.10 * add Adjustment.set_bounds (Alan Schmitt) 2001.11.22 * add parameters to handle_box and color_selection (Maxence Guesdon) 2001.11.01 * adapt to ocaml 3.03a+2 dlls. In lablgtk-1.2.2: 2001.10.09 * GList.clist returns a monomorphic "string clist", use GList.clist_poly for a polymorphic clist. 2001.10.04 * add Gdk.Window.get_colormap * change APIs in Gdk.Pixmap/Bitmap and GDraw.create_pixmap* (window parameter is not strictly necessary) 2001.09.13 * improve dll-ization * add patch for unison-2.7.1 2001.09.06 * merge strict labels * attempt dll-ization In lablgtk-1.2.1: 2001.08.10 * change ?nolocale to ?setlocale, defaulting to false. Setting the locale must be required explicitly, by setting the environment variable GTK_SETLOCALE for instance * release version 1.2.1 2001.07.04 * add signals to GList.liste 2001.05.22 * add ?nolocale parameter to Main.init (cf. ocaml PR#275) * remove Main.flush (enough to have it as Gdk.X.flush) * include [main] and [quit] in GMain, so you can now write GMain.main rather than GMain.Main.main * move glade examples to examples/glade 2001.05.18 * add -trace flag to lablgladecc, to trace handler calls 2001.05.17 * add GRange.ruler * improve lablgladecc, support all widgets * add -root and -embed flags to lablgladecc 2001.05.16 * add lablgladecc, a libglade wrapper compiler 2001.04.16 * clipping patch by Michael Welsh 2001.03.13 * support GTK 1.2.3 2001.03.12 * released 1.2.0 * merged in variance annotations * added gears example by Eric Cooper In lablgtk-1.2.0: 2001.02.27 * add extractors to Gdk.Image * slight API change in GDraw.drawing#put_{image,pixmap} 2001.02.21 * add size-allocate signal 2001.02.15 * changed directory structure: sources moved to src/ * updated Makefile.nt, made Win32 port work with gtk-1.3 of 2000-12-26 * remove gutter_size in GtkPack.Paned, since it disappeared in 1.3 2001.02.13 * relax some types in Gdk.Window, to allow all drawables * support for (dangerous?) callbacks in libglade 2001.02.10 * added preliminary support for libglade 2000.12.20 * add Filesection.complete (Sven Luther's patch) 2000.12.07 * merge wakita's patch for gdk_draw_pixmap rename GDraw.drawable#image/pixmap to #put_image/put_pixma 2000.11.29 * remove unison port, since unison already works with this snapshot 2000.11.16 * internal change: switch from var2def/var2conv to varcc, and split ml_gtk.c in smaller files 2000.8.29 * bugs in color selection reported by Nicolas George * changed the license 2000.8.21 * correct GtkStyle.set_font bug reported by Patrick Doane 2000.7.27 * changed GUtil.signal and GUtil.variable for better usability * suppressed obsolete color settings in tooltips 2000.6.19 * patch by Michael Welsh for Gdk regions 2000.6.15 * add CList.set_cell_style/set_row_style * change set_usize/set_uposition into set_geometry * return an option rather than raise an exception for null pointers * map empty strings to NULL when meaningful * Gdk.Font.get_type/ascent/descent 2000.6.14 * add GDraw.optcolor for functions with a default (Jerome suggested) 2000.6.8 * apply Jerome Vouillon's patch * changes in GtkSignal and GtkArgv.ml 2000.6.7 * create #misc#connect for widget generic signals 2000.6.6 * move notebook from GMisc to GPack * #connect#event, #add_event, #misc#event, #misc#set_events_extension transferred to #event su-bobject. * #connect#drag -> #drag#connect. * #get_type, #connect#disconnect, #connect#stop_emit transferred to #misc. 2000.5.25 * split misc.ml into gaux.ml and gpointer.ml 2000.5.23 * add GMisc.notebook#get_{tab,menu}_label. Rename nth_page to get_nth_page. * modified ML signals in GUtil, to allow signals without widget. 2000.5.22 * Incompatible!: Change default for ~expand in Box.pack, Pack.build_options, Table.build_options. Now defaults to false/`NONE. This means that all options default to false/`NONE, except ~show (true for all widgets except windows) and ~fill (always true but effect controlled by ~expand). * add GtkArgv.get_nativeint and GtkArgv.set_nativeint. * make offset and length optional in GtkArgv.string_at_pointer. 2000.5.10 * rename GtkFrame to GtkBin and GFrame to GBin * move socket to GBin 2000.5.9 * add arrow and image classes to GMisc * add list and set_item_string methods to GEdit.combo * add socket and plug classes to GContainer and GWindow * two new examples: combo.ml and socket.ml 2000.4.28 * add GUtil.variable 2000.4.27 * add GtkXmHTML widget In lablgtk-1.00: 2000.4.24 * merge in changes for ocaml 3.00: label and syntax changes, autolink * added better visual and colormap handling to Gdk * GdkObj renamed to GDraw, GtkPixmap moved to GMisc * Initialize Gtk in gtkInit.cmo/cmx, start a thread in gtkInitThread.cmo. These are only included in toplevels, link them explicitely or call GMain.Main.init and GtkThread.start otherwise. * install to caml standard library * many other forgotten changes... 2000.3.02 * move locale setting inside GtkMain.init, since it requires an X display 2000.2.24 * add checks in add methods, to avoid critical errors 2000.2.23 * add dcalendar.ml (submitted by Ken Wakita) and csview.ml * correct bug in GdkObj.pixmap#line 1999.12.19 * release lablGTK beta2 1999.12.16 * upgraded unison to version 1.169 * radio groups are of type {radio_menu_item,radio_button} obj option, otherwise you could not use them several times 1999.12.13 * added GtkEdit::{insert_text,delete_text} signals * better syntax highlighting and ergonomy in the browser's shell 1999.11... * switched to Objective Caml 3 * constructors are no longer classes, but simple functions 1999.10.29 * changed GtkArgv.get_{string,pointer,object} to return option types 1999.10.27 * added radtest/CHANGES for cooperative editing on radtest 1999.10.21 * added a UI for unison (ask bcpierce@saul.cis.upenn.edu about how to get unison) 1999.10.20 * corrected CList signals * moved initialization out of the library, in gtkInit.cmo 1999.10.15 * release lablGTK beta1 1999.10.13 * improved gtkThread.ml (no timer) * modify Sys.argv in place (gtkMain.ml) * add set_row_data and get_row_data for GtkCList 1999.10.11 * bugfixes in Makefile, radtest and lv 1999.10.6 * added Gdk.X.flush and Gdk.X.beep * Gdk.X.flush is exported in GtkMain.Main 1999.9.9 * added font selection dialog 1999.8.25 * re-added connect#draw 1999.8.10 * reduced the number of methods in widget * moved disconnect and stop_emit to object_signals * moved ?:after to each signal * more functions in applications/browser 1999.8.9 * Major change: created one set_param method by parameter, rather than grouping them and using options. You can get previous versions with tag "changing_set" * corrected examples, radtest and browser for these changes * a bit of clean-up in radtest (treew.ml and Makefile) 1999.8.5 * corrected a bad bug with indirected pointers in caml heap 1999.7.15 * add GdkKeysyms for exotic keysyms 1999.7.14 * moved Truecolor inside Gdk * added COPYING * prepared for release 1999.7.12 * clean up drag-and-drop 1999.7.9 * corrected bug in Container.children * added ML signal support in GUtil 1999.7.6 * added DnD, improved radtest (Hubert) * small corrections (Jacques) 1999.7.1 * added some gdk functions related window and ximage * also added applications/lv, "labl image viewer" with the camlimage library. (JPF) 1999.7.1 * added applications/lablglade (Koji) 1999.6.28 * added applications/radtest (Hubert) 1999.6.23 * improved variant conversions for space. 1999.6.22 * updated olabl.patch. With this new version you can access fields of records without opening modules. You can also use several times the same label in one module. * examples/GL/morph3d.ml uses it. 1999.6.21 * moved event functions to GdkEvent 1999.6.20 * new example: radtest.ml (Hubert) 1999.6.18 * added GL extension 1999.6.15 * grouped set methods into set_ * added width and height option to all classes * windows not shown are automatically destroyed by the GC 1999.6.14 * added GPack.layout, GPack.packer, GPack.paned, GMisc.notebook, GRange.scale, GMisc.calendar * added 3 examples * #add_events only available on windowed widgets 1999.6.11 * added CList widget in GList module, and examples/clist.ml * improved pixmap abstraction in GdkObj / GPix 1999.6.10 * suppressed almost all raw pointers from the code. Pointers are now either boxed (second field of an abstract block) or marked (lowest bit set to 1). 1999.6.9 * added GtkBase.Object.get_id and GObj.gtkobj#get_id to get an unique identifier to gtk objects. Nice for hash-tables, etc... * GUtil.memo is such an hash-table, allowing you to recover an object's wrapper. * added a show option to all classes, commanding whether the widget should be shown immediately. It is by default true on all widgets except in module GWindow. * moved non-OO examples to examples/old. Do "cvs update -d old" to get them. * changes in Gdk/GtkData/GObj about styles. 1999.6.8 * updated olabl.patch 1999.6.7 * split gtk.ml into gtk*.ml 1999.6.5 * grouped Container focus operations in a "focus" subwidget 1999.6.4 * slightly reorganized widget grouping 1999.6.3 * disabled gtk_caller * subtle hack to have GTree get the right interface * switched completely to the new widget scheme (including examples) * added olabl.patch to apply to olabl-2.02 to compile new sources 1999.6.2 * integrated changes from Hubert in Gtk, GtkObj and testgtk.ml * added G* modules to replace GtkObj. "make lablgtk2" for it 1999.6.1 * added experimental GtkMenu for a cleaner approach to OO (Jacques) 1999.5.31 * GtkObj: list, tree and menu_shell inherit from item_container (Jacques) * Argv.get_{string,pointer,object} may raise Null_pointer (Jacques) * Support for creating new widgets (Hubert) 1999.5.28 * a few stylistic corrections * added Packer in gtk.ml 1999.5.27 * new Gtk.Main.main Gtk.Main.quit and GtkThread.main (for modal windows) * added x: and y: to Window.setter * new methods: object#get_type widget#misc#lock_accelerators widget#misc#visible widget#misc#parent container#set_focus#vadjustment container#set_focus#hadjustment (could be container#set_focus#adjustment with a dir param) window#set_modal window#set_position window#set_default_size window#set_transient_for menu#set_accel_group * new classes: handle_box_skel handle_box_signals handle_box bbox color_selection color_selection_dialog toolbar and the corresponding modules in gtk.ml new class type: is_window and method as_window * new param tearoff: in new_menu_item new param x: and y: modal: in Window.setter * Widget.event and Widget.activate return bool * new example: examples/testgtk.ml and test.xpm (Hubert) 1999.5.25 * upgraded to gtk+-1.2.3 (all examples work) * suppressed deprecated function calls and corrected examples * added a patch to use toplevel threads in olabl-2.02 1998.12.13 * upgraded to olabl-2.01 1998.12.9 * replicated Main, Timeout and Grab to GtkObj (no need to open Gtk anymore) * moved some non standard classes to GtkExt 1998.12.8 * added the first application, xxaplay, Playstation audio track player for linux. (How architecture specific!) (Furuse) 1998.12.8 * more widgets in GtkObj * refined memory management * all variants in upper case 1998.12.7 * after deeper thought, re-introduced the connect sub-object * simplified GtkObj: use simple inheritance and allow easy subtyping * updated olabl.diffs for bugs in class functions parsing and printing * add ThreadObj for concurrent object programming (Jacques) 1998.12.3 * pousse.ml is now a reversi game (idea for strategy ?) * solved startup bug (a value checker for ocaml is now available) (Jacques) 1998.12.2 * added GdkObj for high level drawing primitives (Jacques) 1998.11.30 * removed cast checking for NULL valued widgets (ml_gtk.[ch]) * module Arg is renamed as GtkArg because of the name corrision with the module Arg in the standard library * Makefile : native code compilation added (Furuse) 1998.11.29 * renamed widget_ops sub-object to misc * various improvements of set functions (Jacques) 1998.11.28 * switched to object-oriented model. GtkObj is now the standard way to access the library, but not all objects are ready (see README) * removed inheritance in gtk.ml (Jacques) 1998.11.24 * added inheritance in gtk.ml 1998.11.22 * added gtkObj.ml and examples/*_obj.ml * various modifications in gtk.ml lablgtk2-2.16.0+dfsg/LGPL0000644000175000017500000006350412015403774013111 0ustar sunsun GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! lablgtk2-2.16.0+dfsg/CHANGES.API0000644000175000017500000000372612015403774014033 0ustar sunsunAPI CHANGES ----------- GPack.notebook#append_page and GPack.notebook#insert_page : return int instead of unit GAction.action_group#add_action : removed `accel' optional parameter GBin.alignment : add `padding' optional parameter GEdit.combo_box, combo_box_entry, combo_box_text, combo_box_entry_text : add `active' optional parameter GMain.Idle.add, Glib.Idle.add : add a `prio' optional argument GMain.Io.add_watch, Glib.Io.add_watch : use a list of `conditions' insted of a single one GTree.column_list : replace method `kinds' by `types' GWindow.message_dialog : add `use_markup' optional argument Glib : remove exception `Critical' and Glib.Message.handle_criticals remove Glib.Message.set_print_handler changed type of Glib.Message.set_log_handler Gobject.Data : boxed, unsafe_boxed, unsafe_boxed_option : take an additional `g_type' parameter replace `get_fundamental' by `get_type' GnoDruid : replace druid_page by druid_page_skel API ADDITIONS ------------- Glib.usleep GAssistant.* GWindow.about_dialog (set_)?wrap_licence GSourceView GButton.link_button GAction.action_skel#set_accel_group GAction.action_group#add_action_with_accel GAction.ui_manager#new_merge_id GAction.ui_manager#add_ui GBin.alignment#{set_,}{top,bottom,left,right}_padding GMisc.calendar#{set_,}{day,month,year} GMisc.calendar#is_day_marked GMisc.calendar#num_marked_dates GMisc.label_skel#selection_bounds GMisc.label_skel#select_region GPack.paned#{max_,min_,}position GText.buffer#select_range GTree.cell_layout#reorder GTree.cell_layout#{unset,set}_cell_data_func GWindow.message_dialog#set_markup GdkPixbuf.from_file_at_size GdkPixbuf.save_to_callback GdkPixbuf.save_to_buffer Glib.int_of_priority Glib.Message.log Glib.Utf8 : a bunch of unicode-related functions Glib.Markup.Error (exception) Glib : a couple of misc. utility functions (get_home_dir, find_program_in_path, etc.) GtkSignal.override_class_closure GtkSignal.chain_from_overridden GtkSpell lablgtk2-2.16.0+dfsg/Makefile0000644000175000017500000000173212015403774014063 0ustar sunsun# Toplevel makefile for LablGtk2 all opt doc install uninstall byte world old-install old-uninstall: config.make all opt doc install uninstall byte clean depend world old-install old-uninstall: $(MAKE) -C src $@ arch-clean: @rm -f config.status config.make config.cache config.log @rm -f \#*\# *~ aclocal.m4 @rm -rf autom4te*.cache configure: configure.in aclocal autoconf config.make: config.make.in @echo config.make is not up to date. Execute ./configure first. @exit 2 .PHONY: all opt doc install byte world clean depend arch-clean headers headers: find examples -name "*.ml" -exec headache -h header_examples {} \; find applications -name "*.ml" -exec headache -h header_apps {} \; find applications -name "*.mli" -exec headache -h header_apps {} \; find src -name "*.ml" -exec headache -h header {} \; find src -name "*.mli" -exec headache -h header {} \; find src -name "*.c" -exec headache -h header {} \; find src -name "*.h" -exec headache -h header {} \;lablgtk2-2.16.0+dfsg/examples/0000755000175000017500000000000012142154525014234 5ustar sunsunlablgtk2-2.16.0+dfsg/examples/dialog-thread.ml0000644000175000017500000000263312015403774017300 0ustar sunsun(**************************************************************************) (* Lablgtk - Examples *) (* *) (* There is no specific licensing policy, but you may freely *) (* take inspiration from the code, and copy parts of it in your *) (* application. *) (* *) (**************************************************************************) (* $Id$ *) (* lablgtk2 -thread -nothinit dialog-thread.ml *) let window = GWindow.window ~border_width: 10 () let button = GButton.button ~label:"Open Dialog" ~packing: window#add () let mythread = Thread.create (fun () -> while true do Thread.delay 2.0; prerr_endline "running." done) () let main () = Glib.Timeout.add ~ms:100 ~callback:GtkThread.do_jobs; window#connect#destroy ~callback:GMain.quit; button#connect#clicked ~callback:(fun () -> let dialog = GWindow.message_dialog ~title:"Quit ?" ~message_type:`QUESTION ~message:"Quit the application ?" ~buttons:GWindow.Buttons.yes_no () in match dialog#run () with `YES -> GMain.quit () | `NO | `DELETE_EVENT -> dialog#destroy ()); window#show (); GtkThread.main () let _ = Printexc.print main () lablgtk2-2.16.0+dfsg/examples/about.ml0000644000175000017500000000223512015403774015704 0ustar sunsun(**************************************************************************) (* Lablgtk - Examples *) (* *) (* There is no specific licensing policy, but you may freely *) (* take inspiration from the code, and copy parts of it in your *) (* application. *) (* *) (**************************************************************************) (* ocamlc -g -I ../src lablgtk.cma about.ml -o about *) let show () = let dialog = GWindow.about_dialog ~name:"Name" ~authors:["Me" ; "Myself"; ] ~copyright:"Copyright: copyleft" ~license:"Open" ~website:"http://www.world.com" ~website_label:"Questions and support" ~version:"0.0" () in ignore (dialog#connect#response ~callback:(fun _ -> dialog#show () )); ignore (dialog#run ()) let () = GMain.Main.init (); show () lablgtk2-2.16.0+dfsg/examples/combo.ml0000644000175000017500000000250012015403774015664 0ustar sunsun(**************************************************************************) (* Lablgtk - Examples *) (* *) (* There is no specific licensing policy, but you may freely *) (* take inspiration from the code, and copy parts of it in your *) (* application. *) (* *) (**************************************************************************) (* $Id$ *) open GMain let make_arrow_label combo ~label ~string = let item = GList.list_item () in (* no packing here, it blocks GTK *) let hbox = GPack.hbox ~spacing:3 ~packing:item#add () in GMisc.arrow ~kind:`RIGHT ~shadow:`OUT ~packing:hbox#pack (); GMisc.label ~text:label ~packing:hbox#pack (); combo#set_item_string item string; combo#list#add item; item let main () = let window = GWindow.window ~border_width:10 () in window#connect#destroy ~callback:Main.quit; let combo = GEdit.combo ~packing:window#add () in make_arrow_label combo ~label:"First item" ~string:"1st item"; make_arrow_label combo ~label:"Second item" ~string:"2nd item"; window#show (); Main.main () let _ = main () lablgtk2-2.16.0+dfsg/examples/custom_list_generic.ml0000644000175000017500000001352012015403774020632 0ustar sunsun(**************************************************************************) (* Lablgtk - Examples *) (* *) (* There is no specific licensing policy, but you may freely *) (* take inspiration from the code, and copy parts of it in your *) (* application. *) (* *) (**************************************************************************) (* ../src/lablgtk2 -localdir custom_list_generic.ml *) let debug = false let () = if debug then begin Gc.set { (Gc.get()) with Gc.verbose = 0x00d; space_overhead = 0 }; ignore (Gc.create_alarm (fun () -> let s = Gc.stat () in Format.printf "blocks=%d words=%d@." s.Gc.live_blocks s.Gc.live_words)) end module MAKE(A:sig type t val custom_value: Gobject.g_type -> t -> column:int -> Gobject.basic val column_list:GTree.column_list end) = struct type custom_list = {finfo: A.t; fidx: int (* invariant: root.(fidx)==myself *) } module H = Hashtbl let inbound i a = i>=0 && i None method custom_flags = [`LIST_ONLY] method custom_get_iter (path:Gtk.tree_path) : custom_list option = let indices: int array = GTree.Path.get_indices path in match indices with | [||] -> None | [|i|] -> self#find_opt i | _ -> failwith "Invalid Path of depth > 1 in a list" method custom_get_path (row:custom_list) : Gtk.tree_path = GTree.Path.create [row.fidx] method custom_value (t:Gobject.g_type) (row:custom_list) ~column = A.custom_value t row.finfo ~column method custom_iter_next (row:custom_list) : custom_list option = let nidx = succ row.fidx in self#find_opt nidx method custom_iter_children (rowopt:custom_list option) :custom_list option = match rowopt with | None -> self#find_opt 0 | Some _ -> None method custom_iter_has_child (row:custom_list) : bool = false method custom_iter_n_children (rowopt:custom_list option) : int = match rowopt with | None -> H.length roots | Some _ -> assert false method custom_iter_nth_child (rowopt:custom_list option) (n:int) : custom_list option = match rowopt with | None -> self#find_opt n | _ -> None method custom_iter_parent (row:custom_list) : custom_list option = None method insert (t:A.t) = let e = {finfo=t; fidx= last_idx } in self#custom_row_inserted (GTree.Path.create [last_idx]) e; H.add roots last_idx e; last_idx <- last_idx+1; end let custom_list () = new custom_list_class A.column_list end module L=struct type t = {mutable checked: bool; mutable lname: string; } (** The columns in our custom model *) let column_list = new GTree.column_list ;; let col_full = (column_list#add Gobject.Data.caml: t GTree.column);; let col_bool = column_list#add Gobject.Data.boolean;; let col_int = column_list#add Gobject.Data.int;; let custom_value _ t ~column = match column with | 0 -> (* col_full *) `CAML (Obj.repr t) | 1 -> (* col_bool *) `BOOL false | 2 -> (* col_int *) `INT 0 | _ -> assert false end module MODEL=MAKE(L) let fill_model t = for i= 0 to 10 do t#insert {L.lname = "Elt "^string_of_int i; checked=i mod 2 = 0} done let create_view_and_model () : GTree.view = let custom_list = MODEL.custom_list () in fill_model custom_list; let view = GTree.view ~model:custom_list () in let renderer = GTree.cell_renderer_text [] in let col_name = GTree.view_column ~title:"Name" ~renderer:(renderer,[]) () in col_name#set_cell_data_func renderer (fun model row -> try let data = model#get ~row ~column:L.col_full in match data with | {L.lname = s} -> renderer#set_properties [ `TEXT s ]; with exn -> let s = GtkTree.TreePath.to_string (model#get_path row) in Format.printf "Accessing %s, got '%s' @." s (Printexc.to_string exn)); ignore (view#append_column col_name); let renderer = GTree.cell_renderer_toggle [] in let col_tog = GTree.view_column ~title:"Check me" ~renderer:(renderer,[]) () in col_tog#set_cell_data_func renderer (fun model row -> try let {L.checked = b} = model#get ~row ~column:L.col_full in renderer#set_properties [ `ACTIVE b ] with exn -> let s = GtkTree.TreePath.to_string (model#get_path row) in Format.printf "Accessing %s, got '%s' @." s (Printexc.to_string exn)); ignore(renderer#connect#toggled (fun path -> let row = custom_list#custom_get_iter path in match row with | Some {MODEL.finfo=l} -> l.L.checked <- not l.L.checked | _ -> ())); ignore (view#append_column col_tog); Glib.Timeout.add ~ms:10000 ~callback:(fun () -> fill_model custom_list; false); view let _ = ignore (GtkMain.Main.init ()); let window = GWindow.window ~width:200 ~height:400 () in ignore (window#event#connect#delete ~callback:(fun _ -> exit 0)); let scrollwin = GBin.scrolled_window ~packing:window#add () in let view = create_view_and_model () in scrollwin#add view#coerce; window#show (); GtkMain.Main.main () lablgtk2-2.16.0+dfsg/examples/counter.ml0000644000175000017500000000322412015403774016250 0ustar sunsun(**************************************************************************) (* Lablgtk - Examples *) (* *) (* There is no specific licensing policy, but you may freely *) (* take inspiration from the code, and copy parts of it in your *) (* application. *) (* *) (**************************************************************************) (* $Id$ *) let w = GWindow.window () let vb = GPack.vbox ~packing:w#add () let lbl = GMisc.label ~packing:vb#pack () let hb = GPack.hbox ~packing:vb#pack () let decB = GButton.button ~label:"Dec" ~packing:hb#add () let incB = GButton.button ~label:"Inc" ~packing:hb#add () let adj = GData.adjustment ~lower:0. ~upper:100. ~step_incr:1. ~page_incr:10. () let sc = GRange.scale `HORIZONTAL ~adjustment:adj ~draw_value:false ~update_policy:`DISCONTINUOUS ~packing:vb#pack () let counter = new GUtil.variable 0 open GMain let _ = decB#connect#clicked ~callback:(fun () -> adj#set_value (float(counter#get-1))); incB#connect#clicked ~callback:(fun () -> adj#set_value (float(counter#get+1))); sc#connect#change_value ~callback:(fun _ v -> Printf.printf "drag: %i\n%!" (truncate v)); adj#connect#value_changed ~callback:(fun () -> counter#set (truncate adj#value)); counter#connect#changed ~callback:(fun n -> lbl#set_text (string_of_int n)); counter#set 0; w#connect#destroy ~callback:Main.quit; w#show (); Main.main () lablgtk2-2.16.0+dfsg/examples/runthread.ml0000644000175000017500000000135112015403774016564 0ustar sunsun(* runthread.ml: Test threads *) (* lablgtk2 -localdir -thread -noinit runthread.ml *) open GtkThread let locale = GMain.init () let w = GWindow.window () let vbox = GPack.vbox ~packing:w#add () let start = GButton.button ~label:"Start" ~packing:vbox#pack () let stop = GButton.button ~label:"Stop" ~packing:vbox#pack () let text = GEdit.entry ~packing:vbox#pack () let cont = ref true let n = ref 0 let body () = prerr_endline "started"; while !cont do incr n; async text#set_text (string_of_int !n); Thread.delay 1. done let () = start#connect#clicked (fun () -> cont:= true; ignore (Thread.create body ())); stop#connect#clicked (fun () -> cont := false); w#connect#destroy GMain.quit; w#show (); main () lablgtk2-2.16.0+dfsg/examples/gnome-fs-regular.png0000644000175000017500000000340312015403774020116 0ustar sunsun‰PNG  IHDR04Ģ“»‘bKGDłC»øIDATxŚÕšKoWDZCŚ4³Š*HtEŹ¢,‚RBĆ+ŚO€Ō]Yõ#šP%XtQ‰Hx4< ‚Ą’MT‰v”‡`ÄĵöÜӅ3ž;wī±SPŅ+dß¹w|’ó?ēĢ5Ąw€,„«»»ūéśõėśN`u ¹wļžč£P(Č|Œb±(cccrōčQ_©õĄ{@*VÜŗuKDDfffފ@J©†®r¹,ÅbQ¦¦¦dttŌWā“8%R¼ƒ!"ˆHĆū*• ="“ɰyóf._¾ šX“Łä MlŻŗu^×G¹\ ££ƒ-[¶044Dkk«S‰Š—Ū·oĻ‹ąž~abb„™L†M›6qņä :::¬J¤ęĆāŗĄś~…ēy58yžGww77~ŹńćĒM85ĶBsÜ&0ˆ” ”J%¦¦¦øsēccc\½z•R©Ä† ݜ:u ą{`©O±Ķ&„ā”hDh÷ŚŖ ¶y_”#GŽP,Q¾”Y±¢‹={ö| ü€Jó¦žu.Ć÷D„„¾¾>–/_N.—£Xü‡\īćććœ8qĀßødF…¦Ł<zl”P ½½=Qp׿F¬_]+³Ÿ!•JQ©T˜žžęįƤÓiņł<££·8vģĄ.ą`ŅŹB.Œ»‚ĻÄrTčćzĄ*„jó"Uęń¼Źģž* õō|ĘōtžŽŽ/éééń·7łš“,÷6¬`”Š*ؔŖyšŒ5Įż¶¶¶ČS›u¶mŪ¦YEę„å8Œ›Źxž2Œ¢“õ¾šÕø(fhnnv—"Āčč(©TŹbéĻd’2Ė&Į=ĻSšš¢Į‰Š_‰+W.ÓŽžÕtĶ67×ļѬEĚę½@ż{ō·õ}I9'”ķŪæØeĀ$,»•±1²qĄ>veOīŽżł|ž„jTøyóétŗXDļ)U½|·ūŠšĢD›W³óÕDXLö€Ż2,\kƒ‹ł“I‚5¶¬ŽÆŗ $;wīä͛׆2Ńų.Nf“`Ā%¬ØX!+"ģŻ»ēϟ%AHø~ż:--­šūUH€*Ó(“H„I|hDĘ„°bŗg.\8ϲeˁŠ^õ@ĆĘ$f€Ū˜M÷€ÉLÅ&@H)”··—R©T³ŠæŃ,®¢Źˆ5ł…ƒÜF™6Į%ĀBū÷ —›LNd×®żĘāŋ5H ±B8i™ī×į\žĘLńń«N³Zsē†éźZ™ÄzpŚł\źźõBĢ^'‰³Ä¶C’zXH±k×. …£$p?Ԝ”k’³÷qµUUŽxņ$!„ō²ÕUŪē}fr1IŲāRc³°šbķŽDĆĆgYµjM2 éÖņ» [’j«ƒ\Lb&-[IaÖWīJ !śśv“ĻOŠgwe+äģl$k KżYbbāqR"S\ŗ4Bgē’cų–šk•(Yęžšš(Da©Æ:ĆźÕk“šhŪhņr“­“¹ßÖø»˜%źMkÕ!€žž~^¾|Q³F”“Åљ¹ß8؊ðĮÄ)“/Ē”Cƒd³'×B##æ²tiFK(n&ŃŻļ×6īīMBJ†ė&Sč(„Īž=Ú5%ēążŒ$ZŪäńØ«%¶s‹ė«yµЁpŁźn)MеCg9n[÷śrpš0'CČ/[£Ü«×*ŹŹ"ўXOnQ|“b"ąĢ™_X»v]r°„ńzP›ŌóvŪž’Ļ!B™xß¾żärO-Ör»}®‚ŪāŵopškĘĒ’JnźĻŸ?GW× ė›ć(LpŁzhĖø[X™Ó§fŻŗ“=”Ó$0†;‰¹--uŸ34rźČ˜œœpŌžāĢŲs=Ł©WšĆ‡æI†ĆĆC¬\¹Ś€L“·¹æ‘ą‹Ā.~}]rõ©IļeŽ…Å)€ū÷ļĀĄĄ!ž<ÉZš”xś{ŪƝ#55… ”Ķfķ˜œœdff†±±ßgON<Ņé4 eܽū'Łl–WÆ^YoĮü_ØĪėG`Õū“Ś÷9š>Š¢Ÿ.Ą!Ąką)0įŸCõč¾H’š€P*MZ0/dĮmŠ(€¶Cžś@eIEND®B`‚lablgtk2-2.16.0+dfsg/examples/slide_show.ml0000644000175000017500000000451012015403774016730 0ustar sunsun(**************************************************************************) (* Lablgtk - Examples *) (* *) (* There is no specific licensing policy, but you may freely *) (* take inspiration from the code, and copy parts of it in your *) (* application. *) (* *) (**************************************************************************) (* $Id$ *) (* let get_pixbuf ~file = try GdkPixbuf.from_file file with GdkPixbuf.GdkPixbufError(_,msg) as exn -> let d = GWindow.message_dialog ~message:msg ~message_type:`ERROR ~buttons:GWindow.Buttons.close ~show:true () in d#run (); raise exn *) class directory ~path = object (self) val d = Unix.opendir path method read = path ^"/"^ Unix.readdir d method rewind = Unix.rewinddir d method close = Unix.closedir d method read_file = let f = self#read in if (Unix.stat f).Unix.st_kind = Unix.S_REG then f else self#read_file method next_file = try self#read_file with End_of_file -> self#rewind; self#read_file method read_pix = let f = self#read_file in try GdkPixbuf.from_file f with GdkPixbuf.GdkPixbufError _ -> self#read_pix end let () = let w = GWindow.window () in let da = GMisc.drawing_area ~packing:w#add () in da#misc#realize (); let dw = new GDraw.drawable da#misc#window in let dir = new directory "." in let pm = ref None in let set_pm pxm = Gaux.may (fun pm -> Gdk.Pixmap.destroy pm) !pm; pm := Some pxm; dw#put_pixmap ~x:0 ~y:0 pxm in let set_pix pix = let pxm, _ = GdkPixbuf.create_pixmap pix and width = GdkPixbuf.get_width pix and height = GdkPixbuf.get_height pix in w#set_default_size ~width ~height; set_pm pxm in let pix = dir#read_pix in set_pix pix; da#event#connect#expose ~callback: (fun _ -> Gaux.may (dw#put_pixmap ~x:0 ~y:0) !pm; true); GMain.Timeout.add ~ms:2000 ~callback: (fun () -> try let pix = try dir#read_pix with End_of_file -> dir#rewind; dir#read_pix in set_pix pix; true with _ -> false); w#connect#destroy GMain.quit; w#show (); GMain.main () lablgtk2-2.16.0+dfsg/examples/text/0000755000175000017500000000000012142154525015220 5ustar sunsunlablgtk2-2.16.0+dfsg/examples/text/Makefile0000644000175000017500000000060312015403774016661 0ustar sunsunall: unicode_table unicode_viewer unicode_table: unicode_table.ml ocamlfind ocamlc -package lablgtk2 -linkpkg -o unicode_table $< unicode_table.opt: unicode_table.ml ocamlfind ocamlopt -package lablgtk2 -linkpkg -o unicode_table $< unicode_viewer: unicode_viewer.ml ocamlfind ocamlc -package lablgtk2 -linkpkg -o unicode_viewer $< clean: rm *.cm* *.o unicode_viewer unicode_table lablgtk2-2.16.0+dfsg/examples/text/unicode_viewer.ml0000644000175000017500000000243112015403774020563 0ustar sunsun(**************************************************************************) (* Lablgtk - Examples *) (* *) (* There is no specific licensing policy, but you may freely *) (* take inspiration from the code, and copy parts of it in your *) (* application. *) (* *) (**************************************************************************) let file_name = try Sys.argv.(1) with _ -> prerr_endline "Usage : unicode_viewer "; exit 1 ;; GtkMain.Main.init ();; let f_to_string n = let ic = open_in_bin n in let s = ref "" in try while true do s:= !s ^ (input_line ic) ^ "\n" done; !s with End_of_file -> close_in ic ; !s let main () = let w = GWindow.window ~width:640 ~height:480 ~title:"Unicode Viewer" () in let sw = GBin.scrolled_window ~packing:(w#add) () in let b = GText.buffer () in let s = f_to_string file_name in b#set_text s; let tv = GText.view ~buffer:b ~packing:(sw#add) () in w#show ();; main () ;; GMain.Main.main ();; lablgtk2-2.16.0+dfsg/examples/text/gtk-logo-rgb.gif0000644000175000017500000001443312015403774020211 0ustar sunsunGIF89akŒē’’’ļūõļōóŖ«¹ŌÄčŌÜŌ˜ø­Ę¹ÅÄ/L”\lĄu’x 4# "7čÕļ„x¤:Z¬5d Y$]'+4 ."dŖ¢Ü»Ņ¼-E76Z7nNdlG7]9$7L 5(4…=`Ūėą-LE*48  ; &M–=rį2fĘpˆz$L-Mø>vā!C‚ĢåŚ %<’/e®o{,D“9MG 'Žõē=WW +T›,[Ÿ’Ŗ¬43\Ē,  7gÓOkw1U» ĆøDVr¦” ‚¤Œ=!2kFZūīś&Rl #4Td\Ś¾Ų³˜JmĶ ,š~¬ÕĢā($;DL&p,X%I 5'iU!¤):ÉFA9GDjÓŌÖÕe²)<9 H ŲFE‚,)7 ėIKj)%6#&Ø89;4P 4E&¶@4˜āŽ•pA ąYhPJ,A‡~(Ūt,0ńC&Ī—"ŠCĪwÅa„…†Œ9ńŽˆŻ Ū” @”ƒƒ¼5¤ŚqGZp¤X@QHń"\Ö6eS“d–¦Xä–:¼b„˜R\T„Ž 2AdvP0CMą  ąp%‘õ ‰ƒ„„ŻpŹRBY±D‡ŽMwŁlBL‘å h6„l5„¢zP §žÜ10abK%qE‹9JY‚@+ĄŖõĀ,Ų6儳ęGĮ‚[j7°•¢2YŠ€ėt»Vaā-œ:®ł…›#š,4!*}Ł51‚¬„a° ü™ė”šČ"¶łmĘB„Nh[æ•V0…vCś0A ø†TIZ“p&š:ŗ *ƒLˆ(®ø³"›,øh: ­‰¼1ŃBłÅ’[ąŠ˜?8„[ū;B: ¬ĆLÖ­;n|ĆpĪ—ƒ¢$#F*`EÉĀuY ‚>ØC·ćF9āĄB«čCŻJÕ7Ō ōƒC#‰ę(ŖØ–įŽ0BBøŗĀGÉ@­fĶąžœCd6t·uCŽsł®yNDWAš†[ÖĶzv'»%Ō ­ŠĶÖ7\]¼šå‡‡‰€īœsSѹQTżaÜ[É`hRš"€Œ.ŁYśšÅe-d¦,Ł Ė÷BÓ”¬āJAĀēqA“v`0@i,ĀUAģ½<¶ń@æ™Ų\b‰ā'×^ʐcDʝQÖP†«pņ6"˜Įł †ł›zkÖ|øU)<ŠKō)\ *ŊõaI ĄOæ6S³Ų¹ź~EĢJšEźM˜ĆNžU»e-RrŹĮļJӊ…(!'€AŠT6 ¬{ZŚŽun7®”脞*ŖŁ£ęě{ÉęC.H`ŠRø%­ĢÆčŠ@œ0ƒ<1RĄ€ ä¶DMM-NCS| '·4įY?`ĀŲ„šUˆ&Ü[‘ģW4øĄBčŠf ƒ#\ąją€āÖ½ļõīY`€Ų‡(@ø½”h°MŲ\0„ļOwK$]œb!‹Ö•`!Ć,† °” nxCą ¼qP€_ķz'‰Ģn#ćXHG ‰7“€B,j±† Ų!Vąc Ō9́lČbtšAAn Tdī FFüĘjģ© ÷øHF&īm :ø.fÄ |ČBģšĮ”wžĄCĢt€@ ,\Ц€|u°š½¹Ÿų@׃’±xDœ#oذ† HF»čD x ģį4ąCü€<üpį¢Ę»¬1!Œp] ‹4©ŖmljōC刄ˆĘ‚ hĄŅP2ōĀ6øĄ/:ŗ…#Šą€DIń 3¹čÓ4Ÿ§p;Žż€GŗŲ"Õņƒ–q>č¤ÅL ¤įĄ†\…A‚ #(yĢ B ˆ©ā!„‚‹.PƒB”Ƨ>0\ ƒ&™ön`CųĮ¦bv™`ņƒ½ó->`Čࠐk0ˆA aÜ@ Å@H‘†#š!Ŗ~Åž"ųY>Ø ōÓRWŪ‚&ĶQ>ŽT™ŻzGĀéJWXĮ†(c“¤%-%JP āŠäxjb[R? įE|@¬$@:·‹\c÷ō‡± @A—åÕĆVpOXĀn~I{Œ°i€"NЁ Œ”»xšĆ"PśĒ#`€ X«oü6Į(ĮnKĄ ®¤I¹źVGøĮŻē7н@2ˆšA¤REp ńĒI! .X£‰˜ ·`+c,ųAC‡Ę?qQąrƔO~€‹ÖĄ% ĘŲotõ«ŒDŖAyiÄBڇĖ ^ęN ½śŒ@’®ėŲžˆ$®$ą°æŌĮ"ó„,C椅.t™ŸR$$Š Š`æĀ dƒŌĄ‡4”į€(Š‚tš&ÖvŅęė Œ°„ Ōµk‰ń]f¬vÄ^Ć©>¢Šx ĆS£łā#Ą”Uõ Ķ<Ō1±Ž`"7{“N#Č SĪ5±‰ń쌷\pˆŽA•Š ‡{ݐH$Š‹$ŠKGZįPPÖ I$ӇqąyŻå¬8hłįw±um– ÜąW‚Ї~čŠCą ĒP‹K° ·§ƒĖVZo!A @ŽęHW¦l˜{Ą!q` [s –Ąār|šÜEøŒŻµ ‹F·”ą ųыK@o2Ø}ѵrˆpqö #—<Ęø÷“ t@~EAM)^ˆĮo`un "ems ž H†œ`а Żpޤ„ y|–ŽpŹšqŹŠ€~¦0°ų’Ū[ßą’€$x_—Hˆ~4ą¤7Uƒ` 6Šr„ “؃Į  Ł`6P”r—_#W ątśÕ < ‘3@2›€É7UtPcA”}‚x° !„„0Uß6Œø``†`ą §gįW `Ž„ęĒdŒO@2Ü@}YR‘Pc€t&¢ˆj 16„°`|pxš ‹`Oƒž¹ ½Č)• l9jį 2$ mIZaš°0°o± ß@|~… ¬Ųš•öG~ž· „p ąP×ų ƒ@A€‘ęČ $0oė°“£¶{ź Ėą™ŃUœpńlJ/Ą nĄ†  X•.²Lmą~š€ąߐ‡øQrŁ`Yšä™ ĀrÄ  ģUQ™qŽ.҃‘ś)ĪųŸ±õ8˜ŁiJā@Rt āŁ‹A€™¶G Ż`6P”%Īš; ]Ź€‚įR ¹ˆbō lĻRÜ  j0ÕmĄ—o€łväš~ā飊@jŹ`‡H¦`ą †€ %F‘łAȐ _hbU†wÉŠ¤叛 „{Xm„ kjt¦Ōr’Pžtʦ ڐAY`žÄ l†b)Z!7¦pqeŒq¬ć"›° µY|‚ „żČł4Un``pˆ`pØj™Ž6ą fšĢ` ĢĄ ĀU–•ŹC”`r ”'ä/łyH [čW5 O w̉·óh*¤Ź°<„$°łØoq‹Ą«Qš"}PUTJ¬(•F÷”S% `”ŽZŸdZ¦%œ0޵.Apg2 ĆĶ®OšG›–`›.§ ¢Zl°m÷Ų®K€6ƤeæŁ!7° °Ī`‘ś£»š“GWĪÖ¤N:Š©–pž®.7Į^üX‹v{ZRnpl¦&f²ˆAĖp Yą ŠĶŗ­(†ō€²dņ",+Å÷ į¢嚮®Ł•Œł®fŁ_Ś!ĪĄ cˆ+äɛ¹Ų“`Š­õĄI°œŠ° [m3$Š+~@séz]źW‘šŽ—£¶™BėP™!KąžÉ æyŚ€²€&Xäš‹·°VJ ^PkmöW[ģZi ŚZbG‰+4`>š2š\ō©lėą!GP (+`µEp[hXWR·„7+[€ĄŠ"y›’f™o 2 !‹”…g] ”€²Q žDŪ`Ÿ–|€µ G^Éf7ą}Ź ¢ˆ1™Ė›¾ĆŁ–£u¾>š” !•0h}šj`¹¹km»ĖšÉZ|tp­% øł•o¢žŸœ‚&¾Š…ŃU¤„j a½ęu›[m~ /˾Õö ,§ (V$P¦©{`wŗŗ% Į Q 7``ē€ k°»„qšĢC6pgxv“•¦7Ł‹©[f0²Ź¶ f2%`)Į‚ŇŸ7ņb`Å÷Wt A$0Ÿ£f¤ā¢·c¦ YYą“&ę `H7p‰ !`&PܲŸēä w…ꠟɎĀłžŲP­ ł›#\)Ē`Ę¤å Ø¢ °vƒĘē ĒźēWTL·3[ūkU˜Pž lbzˆ•ŠĖ‹Ųˆ÷źT7œ £M…А’o å!¾ ĮΜM”ǰ DMŻrI 7ø„īą× £ Āē¹Z^h‚%ģ “‰× źĄ;ŗ\Xę;°ī°L3ķ棬 -ŅĖ됔^m¾ k6)ÅĘ!F@ ļ GēéķćEč4ŽĒt