Lazarus

Programming => Widgetset => Other => Topic started by: process_1 on July 20, 2020, 07:55:58 am

Title: GTK3 is ready?
Post by: process_1 on July 20, 2020, 07:55:58 am
Is it GTK3 ready?

According to "Project Roadmap" it is still in Alpha stage, but it is not to trust these info, as it is seldom updated.

https://wiki.lazarus.freepascal.org/Roadmap

Zeljko?
Title: Re: GTK3 is ready?
Post by: trev on July 20, 2020, 08:52:03 am
See GTK3 Interface (https://wiki.lazarus.freepascal.org/GTK3_Interface) last updated April 20, 2020.
Title: Re: GTK3 is ready?
Post by: af0815 on December 06, 2022, 10:23:01 am
Sorry for using this old post (more than 2 yrs old)

But the question ist still actual. Is there any step forward to gtk 3 ? The informations i found are not actual.
Title: Re: GTK3 is ready?
Post by: JuhaManninen on December 06, 2022, 10:51:53 am
But the question ist still actual. Is there any step forward to gtk 3 ? The informations i found are not actual.
The best progress information is in the Git development branch "main".
Do for example:
Code: [Select]
$ git log lcl/interfaces/gtk3/or use one of the GUI tools for Git.
The progress is slow. Nobody actively maintains it. Contributions are welcome.
Title: Re: GTK3 is ready?
Post by: dbannon on December 06, 2022, 12:03:20 pm
af, Qt5 is ready now and qt6 only head back by an upstream problem. This is obviously an huge credit to Zeljko but might also be an indication that GTK3 is just that bit harder too.

Davo
Title: Re: GTK3 is ready?
Post by: PierceNg on December 06, 2022, 12:15:07 pm
https://blog.gtk.org/2020/12/ - GTK4 development started in Oct 2016 and was released in Dec 2020, two years ago.

I have no idea the effort involved in building an LCL widget set interface, but maybe consider going straight to GTK4 and dropping GTK3? Could be better than being always in catch-up mode.
Title: Re: GTK3 is ready?
Post by: JuhaManninen on December 06, 2022, 12:42:55 pm
https://blog.gtk.org/2020/12/ - GTK4 development started in Oct 2016 and was released in Dec 2020, two years ago.
I have no idea the effort involved in building an LCL widget set interface, but maybe consider going straight to GTK4 and dropping GTK3? Could be better than being always in catch-up mode.
Not really. GTK is notorious for changing their API also after a release. During the years their API stabilizes. It is actually a good strategy if developers know it and understand what it means.
For LCL bindings it means we should not jump to the latest GTK version right away.
GTK3 has been stable enough for few years. The slow development of LCL bindings is caused purely by lack of resources. Apparently nobody wants it badly enough.
A (big enough) bounty could help but it is not certain. It still requires somebody with the skills, time and motivation to do it.

Somebody could say that a stable API is the most important priority and GTK should change their API.
OK, a stable API has its merits but what if you continue it for decades? For example Xlib is very stable but how many people want to use it?
Title: Re: GTK3 is ready?
Post by: Bogen85 on December 06, 2022, 03:48:54 pm
A (big enough) bounty could help but it is not certain. It still requires somebody with the skills, time and motivation to do it.

Time I think is the biggest factor for many of us...
Title: Re: GTK3 is ready?
Post by: Tony Stone on December 06, 2022, 11:15:42 pm
A (big enough) bounty could help but it is not certain. It still requires somebody with the skills, time and motivation to do it.

Time I think is the biggest factor for many of us...


I lack the skill.  The motivation for me is there some what.  But time is some what limited also...  I guess I would be willing to put $1000.00 on it if enough other people wanted to chip in and create a large bounty for the right developer.  Maybe every forum member can throw some money into a pot and motivate the properly skilled developer?   :D
Title: Re: GTK3 is ready?
Post by: Leledumbo on December 07, 2022, 03:51:40 am
Looks like Zejlko is only interested in Qt these days, which I'm a user of. I only fallback to GTK when there's no other way, as I find Qt aesthetically more pleasing. Sometimes I got held back by libQt<n>Pas, but it's not for long usually.
Title: Re: GTK3 is ready?
Post by: af0815 on December 07, 2022, 07:09:40 am
BTW it is also a stucked since 2020 Freepascal and Lazarus Foundation Projekt (Source: https://foundation.freepascal.org/projects/complete-gtk3-widgetset )
Title: Re: GTK3 is ready?
Post by: dbannon on December 07, 2022, 08:43:27 am
I think ".... but no actual development has been done" would not be a fair statement, if you watch the commits ( https://gitlab.com/freepascal.org/lazarus/lazarus/-/commits/main/lcl/interfaces/gtk3 ) they do come in but there is an awful lot to be done.

Parts of it are working, just lots and lots of debugging.

Davo
Title: Re: GTK3 is ready?
Post by: 3oheicrw on December 07, 2022, 08:53:02 am
There is still occasionally updates you could check via github.
Title: Re: GTK3 is ready?
Post by: af0815 on December 07, 2022, 09:30:44 am
But it will a good idea to keep this https://wiki.lazarus.freepascal.org/Roadmap more up to date. For QT5 and partly QT6 it is done.

Only looking in the git logs is a good point for developer, but for user of the lcl is is not read/understandable, except the information, here are guys on work.
Title: Re: GTK3 is ready?
Post by: theo on December 07, 2022, 09:58:54 am
There is still occasionally updates you could check via github.

There is no real progress. just a few details here and then.
That's not the kind of progress it really needs.
Even the existing code should be revised from scratch imho.
But that's not easy. Understanding GTK3 / Pango / Cairo is not easy and a deep understanding of the LCL is also necessary.
I think only a talent like Zeljko can do that.  :D
Title: Re: GTK3 is ready?
Post by: Jurassic Pork on December 07, 2022, 11:52:28 am
Hello,
so have a look to this thread (https://forum.lazarus.freepascal.org/index.php/topic,52896.0.html)
Friendly, J.P
Title: Re: GTK3 is ready?
Post by: 3oheicrw on December 11, 2022, 08:27:43 am
Frankly speaking, I hope the there is a MSEGUI widgetset and both FPGUI widgetset and MSEGUI widgetset production ready. There is a FPGUI widgetset available but seems abandoned.
Title: Re: GTK3 is ready?
Post by: JuhaManninen on December 11, 2022, 11:43:00 am
There is no real progress. just a few details here and then.
That's not the kind of progress it really needs.
Even the existing code should be revised from scratch imho.
But that's not easy. Understanding GTK3 / Pango / Cairo is not easy and a deep understanding of the LCL is also necessary.
I think only a talent like Zeljko can do that.  :D
Anton Kavalenka has improved it a lot but he didn't want to become its maintainer either. He has other activities.
I believe any Pascal programmer could learn it after putting in enough time and energy. Yes, the learning curve is steep. The LCL-GTK3 class structure must be understood and then the GTK3 / Pango / Cairo libs as you mentioned.
For example I don't know those things well. I don't plan to learn them well either but I could imagine somebody a little younger maybe could jump in.
Title: Re: GTK3 is ready?
Post by: Bogen85 on December 11, 2022, 02:28:51 pm
There is also this:

Index of deprecated symbols
https://www.manpagez.com/html/gtk3/gtk3-3.22.0/api-index-deprecated.php

Doing a quick scan, it seems like Lazarus is using those deprecated symbols?

I just checked some of the symbols that started with A, did not check B-W, and I'm finding them in the Lazarus source code.

Code: Pascal  [Select][+][-]
  1. [gtk_accessible_connect_widget_destroyed]
  2. [gtk_action_activate]
  3. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13193:procedure gtk_action_activate(action: PGtkAction); cdecl; external;
  4. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17283:  LazGtk3.gtk_action_activate(@self);
  5. [gtk_action_block_activate]
  6. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13194:procedure gtk_action_block_activate(action: PGtkAction); cdecl; external;
  7. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17288:  LazGtk3.gtk_action_block_activate(@self);
  8. [gtk_action_connect_accelerator]
  9. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13195:procedure gtk_action_connect_accelerator(action: PGtkAction); cdecl; external;
  10. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17293:  LazGtk3.gtk_action_connect_accelerator(@self);
  11. [gtk_action_create_icon]
  12. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11251:function gtk_action_create_icon(action: PGtkAction; icon_size: gint): PGtkWidget; cdecl; external;
  13. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17298:  Result := LazGtk3.gtk_action_create_icon(@self, icon_size);
  14. [gtk_action_create_menu]
  15. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11252:function gtk_action_create_menu(action: PGtkAction): PGtkWidget; cdecl; external;
  16. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11253:function gtk_action_create_menu_item(action: PGtkAction): PGtkWidget; cdecl; external;
  17. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17303:  Result := LazGtk3.gtk_action_create_menu(@self);
  18. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17308:  Result := LazGtk3.gtk_action_create_menu_item(@self);
  19. [gtk_action_create_menu_item]
  20. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11253:function gtk_action_create_menu_item(action: PGtkAction): PGtkWidget; cdecl; external;
  21. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17308:  Result := LazGtk3.gtk_action_create_menu_item(@self);
  22. [gtk_action_create_tool_item]                                                                                                                                         share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11254:function gtk_action_create_tool_item(action: PGtkAction): PGtkWidget; cdecl; external;
  23. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17313:  Result := LazGtk3.gtk_action_create_tool_item(@self);
  24. [gtk_action_disconnect_accelerator]
  25. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13196:procedure gtk_action_disconnect_accelerator(action: PGtkAction); cdecl; external;
  26. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17318:  LazGtk3.gtk_action_disconnect_accelerator(@self);
  27. [gtk_action_get_accel_closure]
  28. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11255:function gtk_action_get_accel_closure(action: PGtkAction): PGClosure; cdecl; external;
  29. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17323:  Result := LazGtk3.gtk_action_get_accel_closure(@self);
  30. [gtk_action_get_accel_path]
  31. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11256:function gtk_action_get_accel_path(action: PGtkAction): Pgchar; cdecl; external;
  32. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17328:  Result := LazGtk3.gtk_action_get_accel_path(@self);
  33. [gtk_action_get_always_show_image]
  34. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11257:function gtk_action_get_always_show_image(action: PGtkAction): gboolean; cdecl; external;
  35. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17333:  Result := LazGtk3.gtk_action_get_always_show_image(@self);
  36. [gtk_action_get_gicon]
  37. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11258:function gtk_action_get_gicon(action: PGtkAction): PGIcon; cdecl; external;
  38. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17338:  Result := LazGtk3.gtk_action_get_gicon(@self);
  39. [gtk_action_get_icon_name]
  40. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11259:function gtk_action_get_icon_name(action: PGtkAction): Pgchar; cdecl; external;
  41. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17343:  Result := LazGtk3.gtk_action_get_icon_name(@self);
  42. [gtk_action_get_is_important]
  43. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11260:function gtk_action_get_is_important(action: PGtkAction): gboolean; cdecl; external;
  44. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17348:  Result := LazGtk3.gtk_action_get_is_important(@self);
  45. [gtk_action_get_label]
  46. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11261:function gtk_action_get_label(action: PGtkAction): Pgchar; cdecl; external;
  47. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17353:  Result := LazGtk3.gtk_action_get_label(@self);
  48. [gtk_action_get_name]
  49. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11262:function gtk_action_get_name(action: PGtkAction): Pgchar; cdecl; external;
  50. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17358:  Result := LazGtk3.gtk_action_get_name(@self);
  51. [gtk_action_get_proxies]
  52. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11263:function gtk_action_get_proxies(action: PGtkAction): PGSList; cdecl; external;
  53. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17363:  Result := LazGtk3.gtk_action_get_proxies(@self);
  54. [gtk_action_get_sensitive]
  55. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11264:function gtk_action_get_sensitive(action: PGtkAction): gboolean; cdecl; external;
  56. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17368:  Result := LazGtk3.gtk_action_get_sensitive(@self);
  57. [gtk_action_get_short_label]
  58. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11265:function gtk_action_get_short_label(action: PGtkAction): Pgchar; cdecl; external;
  59. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17373:  Result := LazGtk3.gtk_action_get_short_label(@self);
  60. [gtk_action_get_stock_id]
  61. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11266:function gtk_action_get_stock_id(action: PGtkAction): Pgchar; cdecl; external;
  62. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17378:  Result := LazGtk3.gtk_action_get_stock_id(@self);
  63. [gtk_action_get_tooltip]
  64. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11267:function gtk_action_get_tooltip(action: PGtkAction): Pgchar; cdecl; external;
  65. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17383:  Result := LazGtk3.gtk_action_get_tooltip(@self);
  66. [gtk_action_get_visible]
  67. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11269:function gtk_action_get_visible(action: PGtkAction): gboolean; cdecl; external;
  68. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11270:function gtk_action_get_visible_horizontal(action: PGtkAction): gboolean; cdecl; external;
  69. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11271:function gtk_action_get_visible_vertical(action: PGtkAction): gboolean; cdecl; external;
  70. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17388:  Result := LazGtk3.gtk_action_get_visible(@self);
  71. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17393:  Result := LazGtk3.gtk_action_get_visible_horizontal(@self);
  72. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17398:  Result := LazGtk3.gtk_action_get_visible_vertical(@self);
  73. [gtk_action_get_visible_horizontal]
  74. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11270:function gtk_action_get_visible_horizontal(action: PGtkAction): gboolean; cdecl; external;
  75. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17393:  Result := LazGtk3.gtk_action_get_visible_horizontal(@self);
  76. [gtk_action_get_visible_vertical]
  77. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11271:function gtk_action_get_visible_vertical(action: PGtkAction): gboolean; cdecl; external;
  78. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17398:  Result := LazGtk3.gtk_action_get_visible_vertical(@self);
  79. [gtk_action_group_add_action]
  80. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13197:procedure gtk_action_group_add_action(action_group: PGtkActionGroup; action: PGtkAction); cdecl; external;
  81. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13198:procedure gtk_action_group_add_action_with_accel(action_group: PGtkActionGroup; action: PGtkAction; accelerator: Pgchar); cdecl; external;
  82. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13199:procedure gtk_action_group_add_actions(action_group: PGtkActionGroup; entries: PGtkActionEntry; n_entries: guint; user_data: gpointer); cdecl; external;
  83. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13200:procedure gtk_action_group_add_actions_full(action_group: PGtkActionGroup; entries: PGtkActionEntry; n_entries: guint; user_data: gpointer; destroy_: TGDestroyNotify); cdecl; external;
  84. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17493:  LazGtk3.gtk_action_group_add_action(@self, action);
  85. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17498:  LazGtk3.gtk_action_group_add_action_with_accel(@self, action, accelerator);
  86. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17503:  LazGtk3.gtk_action_group_add_actions(@self, entries, n_entries, user_data);
  87. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17508:  LazGtk3.gtk_action_group_add_actions_full(@self, entries, n_entries, user_data, destroy_);
  88. [gtk_action_group_add_actions]
  89. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13199:procedure gtk_action_group_add_actions(action_group: PGtkActionGroup; entries: PGtkActionEntry; n_entries: guint; user_data: gpointer); cdecl; external;
  90. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13200:procedure gtk_action_group_add_actions_full(action_group: PGtkActionGroup; entries: PGtkActionEntry; n_entries: guint; user_data: gpointer; destroy_: TGDestroyNotify); cdecl; external;
  91. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17503:  LazGtk3.gtk_action_group_add_actions(@self, entries, n_entries, user_data);
  92. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17508:  LazGtk3.gtk_action_group_add_actions_full(@self, entries, n_entries, user_data, destroy_);
  93. [gtk_action_group_add_actions_full]
  94. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13200:procedure gtk_action_group_add_actions_full(action_group: PGtkActionGroup; entries: PGtkActionEntry; n_entries: guint; user_data: gpointer; destroy_: TGDestroyNotify); cdecl; external;
  95. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17508:  LazGtk3.gtk_action_group_add_actions_full(@self, entries, n_entries, user_data, destroy_);
  96. [gtk_action_group_add_action_with_accel]
  97. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13198:procedure gtk_action_group_add_action_with_accel(action_group: PGtkActionGroup; action: PGtkAction; accelerator: Pgchar); cdecl; external;
  98. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17498:  LazGtk3.gtk_action_group_add_action_with_accel(@self, action, accelerator);
  99. [gtk_action_group_add_radio_actions]
  100. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13201:procedure gtk_action_group_add_radio_actions(action_group: PGtkActionGroup; entries: PGtkRadioActionEntry; n_entries: guint; value: gint; on_change: TGCallback; user_data: gpointer); cdecl; external;
  101. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13202:procedure gtk_action_group_add_radio_actions_full(action_group: PGtkActionGroup; entries: PGtkRadioActionEntry; n_entries: guint; value: gint; on_change: TGCallback; user_data: gpointer; destroy_: TGDestroyNotify); cdecl; external;
  102. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17513:  LazGtk3.gtk_action_group_add_radio_actions(@self, entries, n_entries, value, on_change, user_data);
  103. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17518:  LazGtk3.gtk_action_group_add_radio_actions_full(@self, entries, n_entries, value, on_change, user_data, destroy_);
  104. [gtk_action_group_add_radio_actions_full]
  105. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13202:procedure gtk_action_group_add_radio_actions_full(action_group: PGtkActionGroup; entries: PGtkRadioActionEntry; n_entries: guint; value: gint; on_change: TGCallback; user_data: gpointer; destroy_: TGDestroyNotify); cdecl; external;
  106. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17518:  LazGtk3.gtk_action_group_add_radio_actions_full(@self, entries, n_entries, value, on_change, user_data, destroy_);
  107. [gtk_action_group_add_toggle_actions]
  108. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13203:procedure gtk_action_group_add_toggle_actions(action_group: PGtkActionGroup; entries: PGtkToggleActionEntry; n_entries: guint; user_data: gpointer); cdecl; external;
  109. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13204:procedure gtk_action_group_add_toggle_actions_full(action_group: PGtkActionGroup; entries: PGtkToggleActionEntry; n_entries: guint; user_data: gpointer; destroy_: TGDestroyNotify); cdecl; external;
  110. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17523:  LazGtk3.gtk_action_group_add_toggle_actions(@self, entries, n_entries, user_data);
  111. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17528:  LazGtk3.gtk_action_group_add_toggle_actions_full(@self, entries, n_entries, user_data, destroy_);
  112. [gtk_action_group_add_toggle_actions_full]
  113. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13204:procedure gtk_action_group_add_toggle_actions_full(action_group: PGtkActionGroup; entries: PGtkToggleActionEntry; n_entries: guint; user_data: gpointer; destroy_: TGDestroyNotify); cdecl; external;
  114. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17528:  LazGtk3.gtk_action_group_add_toggle_actions_full(@self, entries, n_entries, user_data, destroy_);
  115. [gtk_action_group_get_accel_group]
  116. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11272:function gtk_action_group_get_accel_group(action_group: PGtkActionGroup): PGtkAccelGroup; cdecl; external;
  117. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17533:  Result := LazGtk3.gtk_action_group_get_accel_group(@self);
  118. [gtk_action_group_get_action]
  119. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11273:function gtk_action_group_get_action(action_group: PGtkActionGroup; action_name: Pgchar): PGtkAction; cdecl; external;
  120. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17538:  Result := LazGtk3.gtk_action_group_get_action(@self, action_name);
  121. [gtk_action_group_get_name]
  122. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11274:function gtk_action_group_get_name(action_group: PGtkActionGroup): Pgchar; cdecl; external;
  123. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17543:  Result := LazGtk3.gtk_action_group_get_name(@self);
  124. [gtk_action_group_get_sensitive]
  125. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11275:function gtk_action_group_get_sensitive(action_group: PGtkActionGroup): gboolean; cdecl; external;
  126. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17548:  Result := LazGtk3.gtk_action_group_get_sensitive(@self);
  127. [gtk_action_group_get_visible]
  128. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11277:function gtk_action_group_get_visible(action_group: PGtkActionGroup): gboolean; cdecl; external;
  129. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17553:  Result := LazGtk3.gtk_action_group_get_visible(@self);
  130. [gtk_action_group_list_actions]
  131. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11278:function gtk_action_group_list_actions(action_group: PGtkActionGroup): PGList; cdecl; external;
  132. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17558:  Result := LazGtk3.gtk_action_group_list_actions(@self);
  133. [gtk_action_group_new]
  134. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11279:function gtk_action_group_new(name: Pgchar): PGtkActionGroup; cdecl; external;
  135. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17488:  Result := LazGtk3.gtk_action_group_new(name);
  136. [gtk_action_group_remove_action]
  137. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13205:procedure gtk_action_group_remove_action(action_group: PGtkActionGroup; action: PGtkAction); cdecl; external;
  138. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17563:  LazGtk3.gtk_action_group_remove_action(@self, action);
  139. [gtk_action_group_set_accel_group]
  140. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13206:procedure gtk_action_group_set_accel_group(action_group: PGtkActionGroup; accel_group: PGtkAccelGroup); cdecl; external;
  141. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17568:  LazGtk3.gtk_action_group_set_accel_group(@self, accel_group);
  142. [gtk_action_group_set_sensitive]
  143. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13207:procedure gtk_action_group_set_sensitive(action_group: PGtkActionGroup; sensitive: gboolean); cdecl; external;
  144. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17573:  LazGtk3.gtk_action_group_set_sensitive(@self, sensitive);
  145. [gtk_action_group_set_translate_func]
  146. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13208:procedure gtk_action_group_set_translate_func(action_group: PGtkActionGroup; func: TGtkTranslateFunc; data: gpointer; notify: TGDestroyNotify); cdecl; external;
  147. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17578:  LazGtk3.gtk_action_group_set_translate_func(@self, func, data, notify);
  148. [gtk_action_group_set_translation_domain]
  149. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13209:procedure gtk_action_group_set_translation_domain(action_group: PGtkActionGroup; domain: Pgchar); cdecl; external;
  150. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17583:  LazGtk3.gtk_action_group_set_translation_domain(@self, domain);
  151.  

Quote
https://www.manpagez.com/html/gtk3/gtk3-3.22.0/GtkActionGroup.php#gtk-action-group-set-translation-domain
gtk_action_group_set_translation_domain has been deprecated since version 3.10 and should not be used in newly-written code.

So, Lazarus is does not even have complete Gtk3 support, but is already using many Gtk3 deprecated symbols.
And the above is only some of the symbols starting with A, I left out most from A, and all of B-W.
Title: Re: GTK3 is ready?
Post by: Bogen85 on December 11, 2022, 02:37:48 pm
GTK using introspection (GIR) which is used to generate bindings.

https://www.gtk.org/docs/language-bindings/index

Quote
GTK generates a complete, machine readable description of its API as part of its build; the introspection data is available both as an XML file and as a binary format that can be loaded using a shared library. The introspection data is commonly used to write the language bindings in the list above.

For more information on the introspection data, you can read the GObject Introspection documentation.
https://gi.readthedocs.io/en/latest/

I would think any new effort should be based on auto generation of new bindings, rather than hand coded bindings.
Might take a while to get right, but I don't see any real practical long term solution that does not require several talented developers creating and updating bindings by hand.

It seems like creating bindings by hand is not the way to go with GTK and seems to be prone to a few issues (as I already pointed out with all the deprecated symbols that Lazarus is using, which may just be one problem area).

Title: Re: GTK3 is ready?
Post by: theo on December 11, 2022, 03:36:23 pm
GTK3 bindings are already largely auto-created with gir2pascal.
https://wiki.freepascal.org/gir2pascal

Creating the bindings is not the problem, but you need to change the logic for LCL-GTK3.
Title: Re: GTK3 is ready?
Post by: zeljko on December 11, 2022, 03:59:00 pm
There is also this:

Index of deprecated symbols
https://www.manpagez.com/html/gtk3/gtk3-3.22.0/api-index-deprecated.php

Doing a quick scan, it seems like Lazarus is using those deprecated symbols?

I just checked some of the symbols that started with A, did not check B-W, and I'm finding them in the Lazarus source code.

Code: Pascal  [Select][+][-]
  1. [gtk_accessible_connect_widget_destroyed]
  2. [gtk_action_activate]
  3. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13193:procedure gtk_action_activate(action: PGtkAction); cdecl; external;
  4. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17283:  LazGtk3.gtk_action_activate(@self);
  5. [gtk_action_block_activate]
  6. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13194:procedure gtk_action_block_activate(action: PGtkAction); cdecl; external;
  7. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17288:  LazGtk3.gtk_action_block_activate(@self);
  8. [gtk_action_connect_accelerator]
  9. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13195:procedure gtk_action_connect_accelerator(action: PGtkAction); cdecl; external;
  10. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17293:  LazGtk3.gtk_action_connect_accelerator(@self);
  11. [gtk_action_create_icon]
  12. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11251:function gtk_action_create_icon(action: PGtkAction; icon_size: gint): PGtkWidget; cdecl; external;
  13. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17298:  Result := LazGtk3.gtk_action_create_icon(@self, icon_size);
  14. [gtk_action_create_menu]
  15. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11252:function gtk_action_create_menu(action: PGtkAction): PGtkWidget; cdecl; external;
  16. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11253:function gtk_action_create_menu_item(action: PGtkAction): PGtkWidget; cdecl; external;
  17. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17303:  Result := LazGtk3.gtk_action_create_menu(@self);
  18. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17308:  Result := LazGtk3.gtk_action_create_menu_item(@self);
  19. [gtk_action_create_menu_item]
  20. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11253:function gtk_action_create_menu_item(action: PGtkAction): PGtkWidget; cdecl; external;
  21. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17308:  Result := LazGtk3.gtk_action_create_menu_item(@self);
  22. [gtk_action_create_tool_item]                                                                                                                                         share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11254:function gtk_action_create_tool_item(action: PGtkAction): PGtkWidget; cdecl; external;
  23. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17313:  Result := LazGtk3.gtk_action_create_tool_item(@self);
  24. [gtk_action_disconnect_accelerator]
  25. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13196:procedure gtk_action_disconnect_accelerator(action: PGtkAction); cdecl; external;
  26. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17318:  LazGtk3.gtk_action_disconnect_accelerator(@self);
  27. [gtk_action_get_accel_closure]
  28. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11255:function gtk_action_get_accel_closure(action: PGtkAction): PGClosure; cdecl; external;
  29. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17323:  Result := LazGtk3.gtk_action_get_accel_closure(@self);
  30. [gtk_action_get_accel_path]
  31. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11256:function gtk_action_get_accel_path(action: PGtkAction): Pgchar; cdecl; external;
  32. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17328:  Result := LazGtk3.gtk_action_get_accel_path(@self);
  33. [gtk_action_get_always_show_image]
  34. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11257:function gtk_action_get_always_show_image(action: PGtkAction): gboolean; cdecl; external;
  35. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17333:  Result := LazGtk3.gtk_action_get_always_show_image(@self);
  36. [gtk_action_get_gicon]
  37. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11258:function gtk_action_get_gicon(action: PGtkAction): PGIcon; cdecl; external;
  38. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17338:  Result := LazGtk3.gtk_action_get_gicon(@self);
  39. [gtk_action_get_icon_name]
  40. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11259:function gtk_action_get_icon_name(action: PGtkAction): Pgchar; cdecl; external;
  41. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17343:  Result := LazGtk3.gtk_action_get_icon_name(@self);
  42. [gtk_action_get_is_important]
  43. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11260:function gtk_action_get_is_important(action: PGtkAction): gboolean; cdecl; external;
  44. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17348:  Result := LazGtk3.gtk_action_get_is_important(@self);
  45. [gtk_action_get_label]
  46. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11261:function gtk_action_get_label(action: PGtkAction): Pgchar; cdecl; external;
  47. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17353:  Result := LazGtk3.gtk_action_get_label(@self);
  48. [gtk_action_get_name]
  49. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11262:function gtk_action_get_name(action: PGtkAction): Pgchar; cdecl; external;
  50. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17358:  Result := LazGtk3.gtk_action_get_name(@self);
  51. [gtk_action_get_proxies]
  52. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11263:function gtk_action_get_proxies(action: PGtkAction): PGSList; cdecl; external;
  53. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17363:  Result := LazGtk3.gtk_action_get_proxies(@self);
  54. [gtk_action_get_sensitive]
  55. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11264:function gtk_action_get_sensitive(action: PGtkAction): gboolean; cdecl; external;
  56. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17368:  Result := LazGtk3.gtk_action_get_sensitive(@self);
  57. [gtk_action_get_short_label]
  58. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11265:function gtk_action_get_short_label(action: PGtkAction): Pgchar; cdecl; external;
  59. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17373:  Result := LazGtk3.gtk_action_get_short_label(@self);
  60. [gtk_action_get_stock_id]
  61. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11266:function gtk_action_get_stock_id(action: PGtkAction): Pgchar; cdecl; external;
  62. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17378:  Result := LazGtk3.gtk_action_get_stock_id(@self);
  63. [gtk_action_get_tooltip]
  64. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11267:function gtk_action_get_tooltip(action: PGtkAction): Pgchar; cdecl; external;
  65. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17383:  Result := LazGtk3.gtk_action_get_tooltip(@self);
  66. [gtk_action_get_visible]
  67. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11269:function gtk_action_get_visible(action: PGtkAction): gboolean; cdecl; external;
  68. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11270:function gtk_action_get_visible_horizontal(action: PGtkAction): gboolean; cdecl; external;
  69. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11271:function gtk_action_get_visible_vertical(action: PGtkAction): gboolean; cdecl; external;
  70. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17388:  Result := LazGtk3.gtk_action_get_visible(@self);
  71. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17393:  Result := LazGtk3.gtk_action_get_visible_horizontal(@self);
  72. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17398:  Result := LazGtk3.gtk_action_get_visible_vertical(@self);
  73. [gtk_action_get_visible_horizontal]
  74. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11270:function gtk_action_get_visible_horizontal(action: PGtkAction): gboolean; cdecl; external;
  75. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17393:  Result := LazGtk3.gtk_action_get_visible_horizontal(@self);
  76. [gtk_action_get_visible_vertical]
  77. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11271:function gtk_action_get_visible_vertical(action: PGtkAction): gboolean; cdecl; external;
  78. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17398:  Result := LazGtk3.gtk_action_get_visible_vertical(@self);
  79. [gtk_action_group_add_action]
  80. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13197:procedure gtk_action_group_add_action(action_group: PGtkActionGroup; action: PGtkAction); cdecl; external;
  81. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13198:procedure gtk_action_group_add_action_with_accel(action_group: PGtkActionGroup; action: PGtkAction; accelerator: Pgchar); cdecl; external;
  82. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13199:procedure gtk_action_group_add_actions(action_group: PGtkActionGroup; entries: PGtkActionEntry; n_entries: guint; user_data: gpointer); cdecl; external;
  83. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13200:procedure gtk_action_group_add_actions_full(action_group: PGtkActionGroup; entries: PGtkActionEntry; n_entries: guint; user_data: gpointer; destroy_: TGDestroyNotify); cdecl; external;
  84. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17493:  LazGtk3.gtk_action_group_add_action(@self, action);
  85. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17498:  LazGtk3.gtk_action_group_add_action_with_accel(@self, action, accelerator);
  86. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17503:  LazGtk3.gtk_action_group_add_actions(@self, entries, n_entries, user_data);
  87. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17508:  LazGtk3.gtk_action_group_add_actions_full(@self, entries, n_entries, user_data, destroy_);
  88. [gtk_action_group_add_actions]
  89. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13199:procedure gtk_action_group_add_actions(action_group: PGtkActionGroup; entries: PGtkActionEntry; n_entries: guint; user_data: gpointer); cdecl; external;
  90. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13200:procedure gtk_action_group_add_actions_full(action_group: PGtkActionGroup; entries: PGtkActionEntry; n_entries: guint; user_data: gpointer; destroy_: TGDestroyNotify); cdecl; external;
  91. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17503:  LazGtk3.gtk_action_group_add_actions(@self, entries, n_entries, user_data);
  92. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17508:  LazGtk3.gtk_action_group_add_actions_full(@self, entries, n_entries, user_data, destroy_);
  93. [gtk_action_group_add_actions_full]
  94. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13200:procedure gtk_action_group_add_actions_full(action_group: PGtkActionGroup; entries: PGtkActionEntry; n_entries: guint; user_data: gpointer; destroy_: TGDestroyNotify); cdecl; external;
  95. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17508:  LazGtk3.gtk_action_group_add_actions_full(@self, entries, n_entries, user_data, destroy_);
  96. [gtk_action_group_add_action_with_accel]
  97. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13198:procedure gtk_action_group_add_action_with_accel(action_group: PGtkActionGroup; action: PGtkAction; accelerator: Pgchar); cdecl; external;
  98. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17498:  LazGtk3.gtk_action_group_add_action_with_accel(@self, action, accelerator);
  99. [gtk_action_group_add_radio_actions]
  100. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13201:procedure gtk_action_group_add_radio_actions(action_group: PGtkActionGroup; entries: PGtkRadioActionEntry; n_entries: guint; value: gint; on_change: TGCallback; user_data: gpointer); cdecl; external;
  101. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13202:procedure gtk_action_group_add_radio_actions_full(action_group: PGtkActionGroup; entries: PGtkRadioActionEntry; n_entries: guint; value: gint; on_change: TGCallback; user_data: gpointer; destroy_: TGDestroyNotify); cdecl; external;
  102. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17513:  LazGtk3.gtk_action_group_add_radio_actions(@self, entries, n_entries, value, on_change, user_data);
  103. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17518:  LazGtk3.gtk_action_group_add_radio_actions_full(@self, entries, n_entries, value, on_change, user_data, destroy_);
  104. [gtk_action_group_add_radio_actions_full]
  105. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13202:procedure gtk_action_group_add_radio_actions_full(action_group: PGtkActionGroup; entries: PGtkRadioActionEntry; n_entries: guint; value: gint; on_change: TGCallback; user_data: gpointer; destroy_: TGDestroyNotify); cdecl; external;
  106. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17518:  LazGtk3.gtk_action_group_add_radio_actions_full(@self, entries, n_entries, value, on_change, user_data, destroy_);
  107. [gtk_action_group_add_toggle_actions]
  108. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13203:procedure gtk_action_group_add_toggle_actions(action_group: PGtkActionGroup; entries: PGtkToggleActionEntry; n_entries: guint; user_data: gpointer); cdecl; external;
  109. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13204:procedure gtk_action_group_add_toggle_actions_full(action_group: PGtkActionGroup; entries: PGtkToggleActionEntry; n_entries: guint; user_data: gpointer; destroy_: TGDestroyNotify); cdecl; external;
  110. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17523:  LazGtk3.gtk_action_group_add_toggle_actions(@self, entries, n_entries, user_data);
  111. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17528:  LazGtk3.gtk_action_group_add_toggle_actions_full(@self, entries, n_entries, user_data, destroy_);
  112. [gtk_action_group_add_toggle_actions_full]
  113. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13204:procedure gtk_action_group_add_toggle_actions_full(action_group: PGtkActionGroup; entries: PGtkToggleActionEntry; n_entries: guint; user_data: gpointer; destroy_: TGDestroyNotify); cdecl; external;
  114. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17528:  LazGtk3.gtk_action_group_add_toggle_actions_full(@self, entries, n_entries, user_data, destroy_);
  115. [gtk_action_group_get_accel_group]
  116. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11272:function gtk_action_group_get_accel_group(action_group: PGtkActionGroup): PGtkAccelGroup; cdecl; external;
  117. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17533:  Result := LazGtk3.gtk_action_group_get_accel_group(@self);
  118. [gtk_action_group_get_action]
  119. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11273:function gtk_action_group_get_action(action_group: PGtkActionGroup; action_name: Pgchar): PGtkAction; cdecl; external;
  120. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17538:  Result := LazGtk3.gtk_action_group_get_action(@self, action_name);
  121. [gtk_action_group_get_name]
  122. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11274:function gtk_action_group_get_name(action_group: PGtkActionGroup): Pgchar; cdecl; external;
  123. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17543:  Result := LazGtk3.gtk_action_group_get_name(@self);
  124. [gtk_action_group_get_sensitive]
  125. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11275:function gtk_action_group_get_sensitive(action_group: PGtkActionGroup): gboolean; cdecl; external;
  126. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17548:  Result := LazGtk3.gtk_action_group_get_sensitive(@self);
  127. [gtk_action_group_get_visible]
  128. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11277:function gtk_action_group_get_visible(action_group: PGtkActionGroup): gboolean; cdecl; external;
  129. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17553:  Result := LazGtk3.gtk_action_group_get_visible(@self);
  130. [gtk_action_group_list_actions]
  131. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11278:function gtk_action_group_list_actions(action_group: PGtkActionGroup): PGList; cdecl; external;
  132. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17558:  Result := LazGtk3.gtk_action_group_list_actions(@self);
  133. [gtk_action_group_new]
  134. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:11279:function gtk_action_group_new(name: Pgchar): PGtkActionGroup; cdecl; external;
  135. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17488:  Result := LazGtk3.gtk_action_group_new(name);
  136. [gtk_action_group_remove_action]
  137. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13205:procedure gtk_action_group_remove_action(action_group: PGtkActionGroup; action: PGtkAction); cdecl; external;
  138. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17563:  LazGtk3.gtk_action_group_remove_action(@self, action);
  139. [gtk_action_group_set_accel_group]
  140. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13206:procedure gtk_action_group_set_accel_group(action_group: PGtkActionGroup; accel_group: PGtkAccelGroup); cdecl; external;
  141. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17568:  LazGtk3.gtk_action_group_set_accel_group(@self, accel_group);
  142. [gtk_action_group_set_sensitive]
  143. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13207:procedure gtk_action_group_set_sensitive(action_group: PGtkActionGroup; sensitive: gboolean); cdecl; external;
  144. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17573:  LazGtk3.gtk_action_group_set_sensitive(@self, sensitive);
  145. [gtk_action_group_set_translate_func]
  146. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13208:procedure gtk_action_group_set_translate_func(action_group: PGtkActionGroup; func: TGtkTranslateFunc; data: gpointer; notify: TGDestroyNotify); cdecl; external;
  147. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17578:  LazGtk3.gtk_action_group_set_translate_func(@self, func, data, notify);
  148. [gtk_action_group_set_translation_domain]
  149. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:13209:procedure gtk_action_group_set_translation_domain(action_group: PGtkActionGroup; domain: Pgchar); cdecl; external;
  150. share/lazarus/lcl/interfaces/gtk3/gtk3bindings/lazgtk3.pas:17583:  LazGtk3.gtk_action_group_set_translation_domain(@self, domain);
  151.  

Quote
https://www.manpagez.com/html/gtk3/gtk3-3.22.0/GtkActionGroup.php#gtk-action-group-set-translation-domain
gtk_action_group_set_translation_domain has been deprecated since version 3.10 and should not be used in newly-written code.

So, Lazarus is does not even have complete Gtk3 support, but is already using many Gtk3 deprecated symbols.
And the above is only some of the symbols starting with A, I left out most from A, and all of B-W.

Please stop with nonsenses. I've commited gtk3 about 10 yrs ago with bindings of gtk3 against gtk-3.2 or 3.4. Nobody touched that bindings all those years, so of course there are a lot of deprecated stuff in between 3.2 and 3.22. That's one of the reasons why I lost will in maintaining gtk3 since every minor versions have new deprecations and api changes, so in case of gtk3 and especially gtk4 I must be full time concentrated on gtk3 changes and fix it in lazarus, sorry, no way.
Title: Re: GTK3 is ready?
Post by: dbannon on December 11, 2022, 11:36:48 pm
So, zeljko, that does raise an interesting question. Just how did the development of Qt6 (announced a few weeks ago by zeljko) compare to GTK3 ?

I was personally astounded how you just dropped Qt6 on us, out of the blue and its ready to go (as soon as the distros get over some upstream problems). And it looks good, is a far smaller install than GTK* .....

The difference seems to me (standing a million of miles away) to be that the Qt people understand backward compatibility and change control.

The problem with Gnome is that that do not consider themselves obligated to consider their end users, they are supported (mainly by RedHat) irrespective of the overall user base's acceptance of what they do. Do we want to be involved in a process like that ?

Davo
Title: Re: GTK3 is ready?
Post by: AlexTP on December 12, 2022, 12:05:23 am
I already suggested to Zeljko the donation $200 for polishing the gtk3 until my text editor fully works. He declined, but I may suggest this to others.
Title: Re: GTK3 is ready?
Post by: dbannon on December 12, 2022, 12:20:01 am
I am not sure how Zeljko prices his time nor how many hours would need be committed but my guess would be it might need as many as a hundred of us to put such bounties on the table ....

Davo
Title: Re: GTK3 is ready?
Post by: Tony Stone on December 12, 2022, 02:07:04 am
I think a nice bounty program in place could really accelerate bug fixes and development of the various packages.  It looks like there used to be a half baked effort for bounties in the WIKI but I don't think there has been much activity there.  There is third party escrow type services out there that manage bounty tasks for open source projects.  I am wondering if there is any interest in people putting something together where tasks could be organized and have values placed on them?

There is services like: https://gitpay.me/#/
https://issuehunt.io/
https://bountify.co/

Those are just some I found with a quick web search.  There was one I found about a year ago that looked like it would be great for people to organize bounties on but cannot remember the name.  They had many closed bounties for everything from Gimp to Zoneminder and so on.  Like I said in earlier post, if there was something organized I would gladly make regular contributions.  I think open source software developers should have the ability to be compensated if they want.
Title: Re: GTK3 is ready?
Post by: Bogen85 on December 12, 2022, 02:19:22 am
Please stop with nonsenses. I've commited gtk3 about 10 yrs ago with bindings of gtk3 against gtk-3.2 or 3.4. Nobody touched that bindings all those years, so of course there are a lot of deprecated stuff in between 3.2 and 3.22.
I apologize, I did not intend this as an attack on on your work.

That's one of the reasons why I lost will in maintaining gtk3 since every minor versions have new deprecations and api changes, so in case of gtk3 and especially gtk4 I must be full time concentrated on gtk3 changes and fix it in lazarus, sorry, no way.

That is one of the point's I was trying to make... I apologize that how I said came across as it did. I should have not have pointed out the problem the way I did.


Title: Re: GTK3 is ready?
Post by: s6nonqxt on December 12, 2022, 02:57:00 am
@All dwindows is a clone of GTK1 in the same sense as GNU/Linux is a clone of Unix. dwindows has a very similar API to GTK1 but is not identical (of course, I said just changing gtk_ to dw_ is a bit detached from the reality, sorry everyone :-[). What I really proposed is using dwindows as a thin compatibility layer on top of GTK. This way dwindows served the same purpose as what Qt4Pas for Qt 8)

Bonus: dwindows is a single library, it doesn't depend on other libraries like GTK (no ATK, no GDK, no GObject, GLib,...). It's much easier to deal with than vanilla GTK 8-)

Another point for dwindows is it supports iOS and Android too :-[

Please have a look at my proposal: https://forum.lazarus.freepascal.org/index.php/topic,61549.0.html

I think it's reasonable :-[
Title: Re: GTK3 is ready?
Post by: af0815 on December 12, 2022, 06:23:47 am
I think it's reasonable :-[
But have nothing to do with the question "GTK3 is ready?"
Title: Re: GTK3 is ready?
Post by: theo on December 14, 2022, 09:52:30 am
That's one of the reasons why I lost will in maintaining gtk3 since every minor versions have new deprecations and api changes, so in case of gtk3 and especially gtk4 I must be full time concentrated on gtk3 changes and fix it in lazarus, sorry, no way.
Yes I understand. But GTK3 should be stable now.

I am more interested in the question of whether it is at all possible to bring this binding to a satisfactory state, or whether GTK3 is simply not suitable as an LCL interface.

I would be interested from anyone who has delved deeper into this if there is any point in trying to fix things or if it is just hopeless.
What are the major sticking points?
Title: Re: GTK3 is ready?
Post by: xfnHb7 on December 14, 2022, 11:24:16 am
That's one of the reasons why I lost will in maintaining gtk3 since every minor versions have new deprecations and api changes, so in case of gtk3 and especially gtk4 I must be full time concentrated on gtk3 changes and fix it in lazarus, sorry, no way.
Yes I understand. But GTK3 should be stable now.

I am more interested in the question of whether it is at all possible to bring this binding to a satisfactory state, or whether GTK3 is simply not suitable as an LCL interface.

I would be interested from anyone who has delved deeper into this if there is any point in trying to fix things or if it is just hopeless.
What are the major sticking points?

I'm in no position to talk about it. But, think it yourself. If they could make gtk2 works and worked perfectly, why don't they can't do that with gtk3? If gtk2 is a perfect LCL interface, why gtk3 can't? It's all because the lack of interest.
Title: Re: GTK3 is ready?
Post by: wp on December 14, 2022, 11:33:16 am
It's all because the lack of interest.
You are excused because you are a new user and don't know better. But messages like this normally make me sad and angry simultaneously. Lazarus is developed by people like you in their spare time without any payment, just driven by their own motivation and interest in the subject. So, don't talk of "lack of interest".
Title: Re: GTK3 is ready?
Post by: xfnHb7 on December 14, 2022, 11:41:16 am
It's all because the lack of interest.
You are excused because you are a new user and don't know better. But messages like this normally make me sad and angry simultaneously. Lazarus is developed by people like you in their spare time without any payment, just driven by their own motivation and interest in the subject. So, don't talk of "lack of interest".

I'm sorry. My English was learned from the street. Sometimes what I wrote is not I wanted to mean and sounds impolite or even rude.
Title: Re: GTK3 is ready?
Post by: dbannon on December 14, 2022, 12:58:37 pm
Lets be clear here. We don't have a complete GTK3 because its hard job, lots and lots of things to do, test, debug, fix. 

I run my app up under GTK3 every few months. Every time I do, I am surprised to see more of it working. Every time !  There is a steady flow of new work going into the GTK3 interface all the time and its gradually getting better. There sure is NO lack of interest.

Just now, apart form a few sizing problems, my app almost usable under GTK3. Wow !

Davo
Title: Re: GTK3 is ready?
Post by: theo on December 14, 2022, 04:38:31 pm
My question was not intended as a basis for gossip.
I would like to get more information from people who know about it.
For example by Zeljko, Anton Kavalenka, Juha Manninen, Marco Van de Voort...
I'll try again:

That's one of the reasons why I lost will in maintaining gtk3 since every minor versions have new deprecations and api changes, so in case of gtk3 and especially gtk4 I must be full time concentrated on gtk3 changes and fix it in lazarus, sorry, no way.
Yes I understand. But GTK3 should be stable now.

I am more interested in the question of whether it is at all possible to bring this binding to a satisfactory state, or whether GTK3 is simply not suitable as an LCL interface.

I would be interested from anyone who has delved deeper into this if there is any point in trying to fix things or if it is just hopeless.
What are the major sticking points?
Is it possible to get Synedit working?
Title: Re: GTK3 is ready?
Post by: zeljko on December 14, 2022, 05:47:16 pm
@Theo, yes, everything is possible, primary target to get synedit and painting to work properly is proper implementation of winapi functions (gtk3winapi) and lclintf (gtk3lclintf). After that resizing and other events should be fixed for widgets.
EDIT: Start from simple project with one form and synedit. Enable -dGTK3DEBUGNOTIMPLEMENTED  and see in console what is missing :)
Title: Re: GTK3 is ready?
Post by: dbannon on December 15, 2022, 02:23:33 am
Gossip ?

My "report" was based on my own tests using published (by me) code in my app, about 27K lines of pascal code. Not test cases, user code that runs in Linux, MacOS, Windows, x86_64, i386, Arm (64, el, hf) and ppc64el. See -
https://tracker.debian.org/pkg/tomboy-ng

I'll try again -

Progress is being made !

Davo
TinyPortal © 2005-2018