Re: [Gtk2forpascal-devel] How to add gtkhtml into gtk2forpascal?
Brought to you by:
mgaertner
From: Mattias G. <nc-...@ne...> - 2002-11-02 15:52:25
|
On Tue, 29 Oct 2002 10:04:32 +0800 (CST) Zhong Wang <wan...@ya...> wrote: > Hello, every body > > I try to add gtkhtml into gtk2forpascal. I just want > a very simple gtkhtml, > so I only some of the files into pascal and combine to > one file. I can > compile the interface successfully, but when I use it > into my program, the > compiler report some bugs: I just tried your program. I did the mistake to use gtkhtml for gtk 1 and got your errors. No wonder, you can't mix gtk1 and gtk2 libs. Does anyone know about a gtkhtml rpm for gtk 2? Mattias > > specified class size for type `GParamChar' is > specified class size for type > `GParamChar' is smaller than the parent type's > `GParam' class size > specified class size for type `GParamUChar' > isspecified class size for type > `GParamUChar' is smaller than the parent type's > `GParam' class size > specified class size for type `GParamBoolean' > specified class size for type > `GParamBoolean' is smaller than the parent type's > `GParam' class size > specified class size for type `GParamInt' is > sspecified class size for type > `GParamInt' is smaller than the parent type's `GParam' > class size > specified class size for type `GParamUInt' is > specified class size for type > `GParamUInt' is smaller than the parent type's > `GParam' class size > specified class size for type `GParamLong' is > specified class size for type > `GParamLong' is smaller than the parent type's > `GParam' class size > specified class size for type `GParamULong' > isspecified class size for type > `GParamULong' is smaller than the parent type's > `GParam' class size > specified class size for type `GParamInt64' > isspecified class size for type > `GParamInt64' is smaller than the parent type's > `GParam' class size > specified class size for type `GParamUInt64' > ispecified class size for type > `GParamUInt64' is smaller than the parent type's > `GParam' class size > specified class size for type `GParamUnichar' > specified class size for type > `GParamUnichar' is smaller than the parent type's > `GParam' class size > specified class size for type `GParamEnum' is > specified class size for type > `GParamEnum' is smaller than the parent type's > `GParam' class size > specified class size for type `GParamFlags' > isspecified class size for type > `GParamFlags' is smaller than the parent type's > `GParam' class size > specified class size for type `GParamFloat' > isspecified class size for type > `GParamFloat' is smaller than the parent type's > `GParam' class size > specified class size for type `GParamDouble' > ispecified class size for type > `GParamDouble' is smaller than the parent type's > `GParam' class size > specified class size for type `GParamString' > ispecified class size for type > `GParamString' is smaller than the parent type's > `GParam' class size > specified class size for type `GParamParam' > isspecified class size for type > `GParamParam' is smaller than the parent type's > `GParam' class size > specified class size for type `GParamBoxed' > isspecified class size for type > `GParamBoxed' is smaller than the parent type's > `GParam' class size > specified class size for type `GParamPointer' > specified class size for type > `GParamPointer' is smaller than the parent type's > `GParam' class size > specified class size for type > `GParamValueArraspecified class size for type > `GParamValueArray' is smaller than the parent type's > `GParam' class size > specified class size for type `GParamObject' > ispecified class size for type > `GParamObject' is smaller than the parent type's > `GParam' class size > An unhandled exception occurred at 0x403A8DEB : > Access violation > 0x403A8DEB > 0x403AAB95 > 0x403A717A > 0x403A71C0 > 0x4028219D > 0x400F6D7B > 0x400F71A6 > 0x080796AB > 0x0804DC70 > > Can you tell how to modify this program? > > Thank you very much. > Yours, > mili > > >>>>>>> here is the interface file, gtkhtml.pas > >>>>>>> > > unit gtkhtml; > > interface > > uses > gtk2, glib2, gdk2; > > const > gtkhtmllib = 'gtkhtml'; > { I have make a link in /usr/lib to > libgtkhtml.so.20, I am sure > the gtkhtml is encapsulated in this lib because I > used hexedit > to search "gtk_html_get_type" } > > { Pointers to basic pascal types, inserted by h2pas > conversion program.} > type > TGtkHTMLStreamStatus = (GTK_HTML_STREAM_OK, > GTK_HTML_STREAM_ERROR); > > PGtkHTMLStream = ^TGtkHTMLStream; > > TGtkHTMLStreamTypesFunc = function > (stream:PGtkHTMLStream; > user_data:gpointer):ppgchar;cdecl; > TGtkHTMLStreamCloseFunc = procedure > (stream:PGtkHTMLStream; > status:TGtkHTMLStreamStatus; > user_data:gpointer);cdecl; > TGtkHTMLStreamWriteFunc = procedure > (stream:PGtkHTMLStream; buffer:Pgchar; > size:integer; user_data:gpointer);cdecl; > TGtkHTMLSaveReceiverFn = function > (engine:gpointer; data:Pgchar; > len:integer; user_data:gpointer):gboolean;cdecl; > > TGtkHTMLStream = record > write_func : TGtkHTMLStreamWriteFunc; > close_func : TGtkHTMLStreamCloseFunc; > types_func : TGtkHTMLStreamTypesFunc; > user_data : gpointer; > end;//TGtkHTMLStream > > PGtkHTML = ^TGtkHTML; > TGtkHTML = record > layout : TGtkLayout; > editor_bindings : PGtkBindingSet; > iframe_parent : PGtkWidget; > editor_data : gpointer; > pointer_url : pgchar; > hand_cursor : PGdkCursor; > arrow_cursor : PGdkCursor; > ibeam_cursor : PGdkCursor; > selection_x1 : gint; > selection_y1 : gint; > flag0 : word; > hadj_connection : guint; > vadj_connection : guint; > binding_handled : gboolean; > end;//TGtkHTML > > PGtkHTMLClass = ^TGtkHTMLClass; > TGtkHTMLClass = record > parent_class : TGtkLayoutClass; > end;//TGtkHTMLClass > > function GTK_TYPE_HTML : GType; > function GTK_HTML(obj: pointer) : PGtkHTML; > function GTK_HTML_CLASS(klass: pointer) : > PGtkHTMLClass; > function GTK_IS_HTML(obj: pointer) : boolean; > function GTK_IS_HTML_CLASS(klass: pointer) : > boolean; > > { creation } > function gtk_html_get_type:TGtkType;cdecl; external > gtkhtmllib; > procedure gtk_html_construct(html:PGtkWidget);cdecl; > external gtkhtmllib; > function gtk_html_new:PGtkWidget;cdecl; external > gtkhtmllib; > function gtk_html_new_from_string(str:Pgchar; > len:gint):PGtkWidget;cdecl; > external gtkhtmllib; > > { Behavior. } > procedure gtk_html_allow_selection(html:PGtkHTML; > allow:gboolean);cdecl; > external gtkhtmllib; > > { Loading. } > function > gtk_html_begin(html:PGtkHTML):PGtkHTMLStream;cdecl; > external > gtkhtmllib; > function gtk_html_begin_content(html:PGtkHTML; > content_type:Pgchar):PGtkHTMLStream;cdecl; external > gtkhtmllib; > procedure gtk_html_write(html:PGtkHTML; > handle:PGtkHTMLStream; > buffer:Pgchar; size:integer);cdecl; external > gtkhtmllib; > procedure gtk_html_end(html:PGtkHTML; > handle:PGtkHTMLStream; > status:TGtkHTMLStreamStatus);cdecl; external > gtkhtmllib; > procedure gtk_html_load_empty(html:PGtkHTML);cdecl; > external gtkhtmllib; > procedure gtk_html_load_from_string(html:PGtkHTML; > str:Pgchar; > len:gint);cdecl; external gtkhtmllib; > > { Saving. } > function gtk_html_save(html:PGtkHTML; > receiver:TGtkHTMLSaveReceiverFn; > data:gpointer):gboolean;cdecl; external gtkhtmllib; > function gtk_html_export(html:PGtkHTML; _type:Pchar; > receiver:TGtkHTMLSaveReceiverFn; > data:gpointer):gboolean;cdecl; external > gtkhtmllib; > > { Title. } > function > gtk_html_get_title(html:PGtkHTML):pgchar;cdecl; > external > gtkhtmllib; > procedure gtk_html_set_title(html:PGtkHTML; > title:Pchar);cdecl; external > gtkhtmllib; > > { Anchors. } > function gtk_html_jump_to_anchor(html:PGtkHTML; > anchor:Pgchar):gboolean;cdecl; external gtkhtmllib; > > procedure gtk_html_copy(html:PGtkHTML);cdecl; > external gtkhtmllib; > > { misc utils } > procedure > gtk_html_set_default_background_color(html:PGtkHTML; > c:PGdkColor);cdecl; external gtkhtmllib; > procedure > gtk_html_set_default_content_type(html:PGtkHTML; > content_type:Pgchar);cdecl; external gtkhtmllib; > > function gtk_html_get_object_by_id(html:PGtkHTML; > id:Pgchar):gpointer;cdecl; external gtkhtmllib; > > procedure gtk_html_zoom_in(html:PGtkHTML);cdecl; > external gtkhtmllib; > procedure gtk_html_zoom_out(html:PGtkHTML);cdecl; > external gtkhtmllib; > procedure gtk_html_zoom_reset(html:PGtkHTML);cdecl; > external gtkhtmllib; > procedure gtk_html_set_allow_frameset(html:PGtkHTML; > allow:gboolean);cdecl; > external gtkhtmllib; > function > gtk_html_get_allow_frameset(html:PGtkHTML):gboolean;cdecl; > external gtkhtmllib; > > procedure gtk_html_images_ref(html:PGtkHTML);cdecl; > external gtkhtmllib; > procedure > gtk_html_images_unref(html:PGtkHTML);cdecl; external > gtkhtmllib; > > procedure gtk_html_image_ref(html:PGtkHTML; > url:Pgchar);cdecl; external > gtkhtmllib; > procedure gtk_html_image_unref(html:PGtkHTML; > url:Pgchar);cdecl; external > gtkhtmllib; > procedure gtk_html_image_preload(html:PGtkHTML; > url:Pgchar);cdecl; external > gtkhtmllib; > procedure gtk_html_set_blocking(html:PGtkHTML; > block:gboolean);cdecl; > external gtkhtmllib; > > {stream} > function gtk_html_stream_new(html:PGtkHTML; > type_func:TGtkHTMLStreamTypesFunc; > write_func:TGtkHTMLStreamWriteFunc; > close_func:TGtkHTMLStreamCloseFunc; > user_data:gpointer):PGtkHTMLStream;cdecl; > external gtkhtmllib; > procedure > gtk_html_stream_write(stream:PGtkHTMLStream; > buffer:Pgchar; > size:integer);cdecl; external gtkhtmllib; > procedure > gtk_html_stream_destroy(stream:PGtkHTMLStream);cdecl; > external > gtkhtmllib; > procedure > gtk_html_stream_close(stream:PGtkHTMLStream; > status:TGtkHTMLStreamStatus);cdecl; external > gtkhtmllib; > function > gtk_html_stream_get_types(stream:PGtkHTMLStream):ppchar;cdecl; > external gtkhtmllib; > > implementation > > {$IFNDEF KYLIX} > { There is a bug in the compiler. If an external > variable is not used, it > will create code, that can be relocated by the > linker. > So, use them in this hidden procedure. > } > procedure CheckUnusedVariable; [Public]; > begin > if (gtk_major_version<>0) then ; > if (gtk_minor_version<>0) then ; > if (gtk_micro_version<>0) then ; > if (gtk_binary_age<>0) then ; > if (gtk_interface_age<>0) then ; > if (ord(gtk_text_attr_appearance_type)<>0) then ; > end; > {$ENDIF} > > function GTK_TYPE_HTML : GType; > begin > GTK_TYPE_HTML:=gtk_html_get_type; > end;//GTK_TYPE_HTML > > function GTK_HTML(obj: pointer) : PGtkHTML; > begin > > GTK_HTML:=PGtkHTML(GTK_CHECK_CAST(obj,GTK_TYPE_HTML)); > end;//GTK_HTML > > function GTK_HTML_CLASS(klass: pointer) : > PGtkHTMLClass; > begin > > GTK_HTML_CLASS:=PGtkHTMLClass(GTK_CHECK_CLASS_CAST(klass,GTK_TYPE_HTM > L)); > end;//GTK_HTML_CLASS > > function GTK_IS_HTML(obj: pointer) : boolean; > begin > GTK_IS_HTML:=GTK_CHECK_TYPE(obj,GTK_TYPE_HTML); > end;//GTK_IS_HTML > > function GTK_IS_HTML_CLASS(klass: pointer) : > boolean; > begin > > GTK_IS_HTML_CLASS:=GTK_CHECK_CLASS_TYPE(klass,GTK_TYPE_HTML); > end;//GTK_IS_HTML_CLASS > end.//unit gtkhtml > > <<<<<<<<<< end of file gtkhtml.pas <<<<<<<<<<< > > >>>>>>>>>> the test file, test.pp >>>>>>>>>>>>>>>>>> > > program test; > > {$H+} > > uses > glib2, gtk2, gdk2, gtkhtml; > > var > window : PGtkWidget; > sw : PGtkWidget; > html : PGtkWidget; > > procedure destroy (window: PGtkWidget; data: > gpointer); cdecl; > begin > gtk_main_quit(); > end;//destroy > > begin > gtk_init(@argc,@argv); > > window:=gtk_window_new(GTK_WINDOW_TOPLEVEL); > > g_signal_connect(window,'destroy',TGCallback(@destroy),NULL); > > sw:=gtk_scrolled_window_new(NULL,NULL); > gtk_widget_show(sw); > gtk_container_add(PGtkContainer(window),sw); > > html:=gtk_html_new(); > gtk_widget_show(html); > > gtk_scrolled_window_add_with_viewport(PGtkScrolledWindow(sw),html); > > gtk_widget_show(window); > gtk_main(); > end.//test > > <<<<<<<<<< end of file test.pp <<<<<<<<<<< > > > _________________________________________________________ > Do You Yahoo!? > "ÊÇIT¾«Ó¢Âð£¿Ð¡ÊÔÅ£µ¶»ñʱÉд󽱣¡" > http://cn.promo.yahoo.com/cgi-bin/udb/u > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > Gtk2forpascal-devel mailing list > Gtk...@li... > https://lists.sourceforge.net/lists/listinfo/gtk2forpascal-devel |