> I suppose also panzoomarea.cc Actually the .cc is less empty, but I think still broken. It contains 189 lines, compared to 575 lines when using _CLASS_GOBJECT. An example of some content it contains:
~~~ static gboolean __CPPNAME___signal_area_motion_callback(__CNAME__* self, GdkEventMotion* p0,void* data) { using namespace Gtk; using SlotType = sigc::slot< bool,GdkEventMotion* >; auto obj = dynamic_cast<__CPPNAME__*>(Glib::ObjectBase::_get_current_wrapper((GObject*) self)); // Do not try to call a signal on a disassociated wrapper. if(obj) { try { if(const auto slot = Glib::SignalProxyNormal::data_to_slot(data)) return static_cast<int>((*static_cast<SlotType*>(slot))(p0)); } catch(...) { Glib::exception_handlers_invoke(); } } using RType = gboolean; return RType(); } ~~~ One difference I notice between the two is that `__CPPNAME__` is apparently not filled in. Again, I'm happy to paste/attach the full output if that would be useful. > Don't you get any kind of warning or error message? Unfortunately I do not get any error message, so I'm at a loss for how to debug on my own :/. > Probably your gmmproc-command can be made much shorter: If I leave off the M4PATH environment variable I get the following errors (for example, using the command line you suggested): ~~~ m4:/usr/lib/x86_64-linux-gnu/gtkmm-3.0/proc/m4/convert_gtk.m4:142: cannot open `convert_atk.m4': No such file or directory m4:/usr/lib/x86_64-linux-gnu/gtkmm-3.0/proc/m4/convert_gtk.m4:143: cannot open `convert_pango.m4': No such file or directory m4:/usr/lib/x86_64-linux-gnu/gtkmm-3.0/proc/m4/convert_gtkmm.m4:26: cannot open `convert_atk.m4': No such file or directory m4:/usr/lib/x86_64-linux-gnu/gtkmm-3.0/proc/m4/convert_gtkmm.m4:29: cannot open `convert_pango.m4': No such file or directory m4 failed with exit code 1. Aborting... ~~~ I tried a few combinations of `M4PATH` and `-I`. Looking at the source for `gmmproc` I figured they would be equivalent, but that does not seem to be the case. When I *DO* include the M4PATH environment variable, the command succeeds with exit status zero and the only output I see on stdout is: ~~~ gmmproc, panzoomarea: Unwrapped functions: gmmproc: gtk_panzoom_area_get_offset gmmproc: gtk_panzoom_area_set_offset ~~~ > You can add a --debug argument to the gmmproc command. Interesting. I gave that I try and I find `gtkmmproc_9536.g1` and `gtkmmproc_9536.g2` in `/tmp`. I'd be happy to paste the full content here but as a first attempt I'll try to point out just the relevant bits. In particular, `.g1` contains the following at the top of the file: ~~~ include(base.m4)dnl _START(panzoomarea,tangent/gtkutil/mm,tangent_gtkutil_mm,2.56.0)dnl //` clang-format off' _PINCLUDE(gtkmm/private/drawingarea_p.h) _PINCLUDE(tangent/gtkutil/mm/private/hack.h) //` clang-format on' #include <glibmm.h> #include <gtkmm/drawingarea.h> _SECTION(SECTION_HEADER2) _NAMESPACE(Gtk)namespace Gtk { _CLASS_START()class PanZoomArea : public Gtk::DrawingArea { _CLASS_GTKOBJECT(PanZoomArea, GtkPanZoomArea, GTK_PANZOOM_AREA, Gtk::DrawingArea, GtkDrawingArea) public: _CTOR_DEFAULT public: //` _WRAP_METHOD(void get_offset(double offset[2]), gtk_panzoom_area_set_offset);' //` _WRAP_METHOD(void get_offset(double offset[2]), gtk_panzoom_area_set_offset);' ... ~~~ Which seems pretty reasonable... Looks like some things where added. But then `.g2` contains: ~~~ #S 0 // Generated by gmmproc 2.56.0 -- DO NOT MODIFY! #ifndef _TANGENT_GTKUTIL_MM_PANZOOMAREA_H #define _TANGENT_GTKUTIL_MM_PANZOOMAREA_H #include <glibmm/ustring.h> #include <sigc++/sigc++.h> // clang-format off // clang-format on #include <glibmm.h> #include <gtkmm/drawingarea.h> namespace Gtk { #endif /* _TANGENT_GTKUTIL_MM_PANZOOMAREA_H */ #S 1 // Generated by gmmproc 2.56.0 -- DO NOT MODIFY! #ifndef _TANGENT_GTKUTIL_MM_PANZOOMAREA_P_H #define _TANGENT_GTKUTIL_MM_PANZOOMAREA_P_H #include <gtkmm/private/drawingarea_p.h> #include <tangent/gtkutil/mm/private/hack.h> #endif /* _TANGENT_GTKUTIL_MM_PANZOOMAREA_P_H */ #S 2 // Generated by gmmproc 2.56.0 -- DO NOT MODIFY! ... ~~~ So it looks like things disappear somewhere between .g1 and .g2. On Sun, May 3, 2020 at 6:24 AM Kjell Ahlstedt <kjellahlst...@gmail.com> wrote: > I don't understand why panzoomarea.h (and I suppose also panzoomarea.cc) > is broken. Don't you get any kind of warning or error message? Probably > your gmmproc-command can be made much shorter: > > /usr/lib/x86_64-linux-gnu/glibmm-2.4/proc/gmmproc -I > /usr/lib/x86_64-linux-gnu/gtkmm-3.0/proc/m4 panzoomarea mm mm > > But I don't expect that to make a difference. > > You can add a --debug argument to the gmmproc command. Some temporary > files are then saved. You will probably find them in the /tmp directory. > > Kjell > On 2020-05-03 02:07, Josh Bialkowski wrote: > > Thanks Kjell, you have a good eye. I tried making the change to > `_CLASS_GTKOBJECT` but I'm not sure what else needs to change. On my system > `class_gtkobject.m4` is installed at > `/usr/lib/x86_64-linux-gnu/gtkmm-3.0/proc/m4`, so I tried the following > execution of gmmproc but the generated .h file is mostly empty: > ~~~ > M4PATH=/usr/lib/x86_64-linux-gnu/gtkmm-3.0/proc/m4:/usr/lib/x86_64-linux-gnu/glibmm-2.4/proc/m4 > /usr/lib/x86_64-linux-gnu/glibmm-2.4/proc/gmmproc -I > /usr/lib/x86_64-linux-gnu/glibmm-2.4/proc/m4 -I > /usr/lib/x86_64-linux-gnu/gtkmm-3.0/proc/m4 panzoomarea mm mm > ~~~ > > The generated `panzoomarea.h` looks broken: > ~~~ > // Generated by gmmproc 2.56.0 -- DO NOT MODIFY! > #ifndef _TANGENT_GTKUTIL_MM_PANZOOMAREA_H > #define _TANGENT_GTKUTIL_MM_PANZOOMAREA_H > > > #include <glibmm/ustring.h> > #include <sigc++/sigc++.h> > > // clang-format off > > > // clang-format on > > #include <glibmm.h> > #include <gtkmm/drawingarea.h> > > namespace Gtk { > > > #endif /* _TANGENT_GTKUTIL_MM_PANZOOMAREA_H */ > ~~~ > > here is the full `panzoomarea.hg`: > ~~~ > // clang-format off > _DEFS(tangent/gtkutil/mm, tangent) > _PINCLUDE(gtkmm/private/drawingarea_p.h) > _PINCLUDE(tangent/gtkutil/mm/private/hack.h) > // clang-format on > > #include <glibmm.h> > #include <gtkmm/drawingarea.h> > > namespace Gtk { > > class PanZoomArea : public Gtk::DrawingArea { > _CLASS_GTKOBJECT(PanZoomArea, GtkPanZoomArea, GTK_PANZOOM_AREA, > Gtk::DrawingArea, GtkDrawingArea) > > public: > _CTOR_DEFAULT > > public: > // _WRAP_METHOD(void get_offset(double offset[2]), > gtk_panzoom_area_set_offset); > // _WRAP_METHOD(void get_offset(double offset[2]), > gtk_panzoom_area_set_offset); > > _WRAP_METHOD(double get_scale(), gtk_panzoom_area_get_scale); > _WRAP_METHOD(void set_scale(double scale), gtk_panzoom_area_set_scale); > _WRAP_METHOD(double get_scale_rate(), gtk_panzoom_area_get_scale_rate); > _WRAP_METHOD(void set_scale_rate(double rate), > gtk_panzoom_area_set_scale_rate); > > // TODO(josh): can't wrap a signal whose default handler has a different > // name than the name of the signal. > _WRAP_SIGNAL(bool area_motion(GdkEventMotion* event), "area-motion"); > _WRAP_SIGNAL(bool area_button(GdkEventButton* event), "area-button"); > > // clang-format off > #m4 _CONVERSION(`CairoContext*',`const ::Cairo::RefPtr< > ::Cairo::Context>&',`::Cairo::RefPtr< ::Cairo::Context>(new > ::Cairo::Context($3, false /* has_reference */))') > #m4 _CONVERSION(`const ::Cairo::RefPtr< > ::Cairo::Context>&',`CairoContext*',`($3)->cobj()') > _WRAP_SIGNAL(bool area_draw(const ::Cairo::RefPtr< ::Cairo::Context>& > cr), > "area-draw"); > // clang-format on > > _WRAP_PROPERTY("offset-x-adjustment", Glib::RefPtr<Gtk::Adjustment>); > _WRAP_PROPERTY("offset-y-adjustment", Glib::RefPtr<Gtk::Adjustment>); > _WRAP_PROPERTY("scale-adjustment", Glib::RefPtr<Gtk::Adjustment>); > _WRAP_PROPERTY("scale-rate-adjustment", Glib::RefPtr<Gtk::Adjustment>); > _WRAP_PROPERTY("active", bool); > _WRAP_PROPERTY("pan-button", int); > _WRAP_PROPERTY("demo-draw-enabled", bool); > }; > > } // namespace Gtk > ~~~ > > Is there something else I need to make the `_CLASS_GTKOBJECT` macro work? > > Thanks for the help, > Josh > > >
_______________________________________________ gtkmm-list mailing list gtkmm-list@gnome.org https://mail.gnome.org/mailman/listinfo/gtkmm-list