Просмотр исходного кода

feat: bind GtkSizeGroup, GtkPasswordEntry and PangoTabArray

Add three modules and two helpers used by upcoming demo ports:

- GtkSizeGroup (+ GtkSizeGroupMode constants)
- GtkPasswordEntry (implements GtkEditable)
- PangoTabArray (boxed tab-stop array, with PangoTabAlign constants)
- GtkButton.gtk_button_new_from_icon_name
- GtkTextView.gtk_text_view_set_tabs / get_tabs
Eric Streit 3 дней назад
Родитель
Сommit
9d8d05c2dd
5 измененных файлов с 177 добавлено и 0 удалено
  1. 4 0
      src/GtkButton.def
  2. 42 0
      src/GtkPasswordEntry.def
  3. 47 0
      src/GtkSizeGroup.def
  4. 7 0
      src/GtkTextView.def
  5. 77 0
      src/PangoTabArray.def

+ 4 - 0
src/GtkButton.def

@@ -15,6 +15,7 @@ FROM SYSTEM IMPORT ADDRESS;
 EXPORT UNQUALIFIED
    GtkButton,
    gtk_button_new, gtk_button_new_with_label, gtk_button_new_with_mnemonic,
+   gtk_button_new_from_icon_name,
    gtk_button_set_label, gtk_button_get_label, gtk_button_set_child;
 
 
@@ -30,6 +31,9 @@ PROCEDURE gtk_button_new_with_label (label: ARRAY OF CHAR) : GtkButton;
 (* GtkWidget *gtk_button_new_with_mnemonic(const char *label) *)
 PROCEDURE gtk_button_new_with_mnemonic (label: ARRAY OF CHAR) : GtkButton;
 
+(* GtkWidget *gtk_button_new_from_icon_name(const char *icon_name) *)
+PROCEDURE gtk_button_new_from_icon_name (icon_name: ARRAY OF CHAR) : GtkButton;
+
 (* void gtk_button_set_label(GtkButton *button, const char *label) *)
 PROCEDURE gtk_button_set_label (button: GtkButton; label: ARRAY OF CHAR);
 

+ 42 - 0
src/GtkPasswordEntry.def

@@ -0,0 +1,42 @@
+DEFINITION MODULE FOR "C" GtkPasswordEntry ;
+
+(*
+   m2-GTK4 - GtkPasswordEntry: an entry that obscures its text and offers
+   a "peek" icon.  Implements GtkEditable.  Mapped onto
+   <gtk/gtkpasswordentry.h>.
+*)
+
+FROM SYSTEM IMPORT ADDRESS;
+
+EXPORT UNQUALIFIED
+   GtkPasswordEntry,
+   gtk_password_entry_new,
+   gtk_password_entry_set_show_peek_icon,
+   gtk_password_entry_get_show_peek_icon,
+   gtk_password_entry_set_extra_menu,
+   gtk_password_entry_get_extra_menu;
+
+TYPE
+   GtkPasswordEntry = ADDRESS;
+
+(* GtkWidget *gtk_password_entry_new(void) *)
+PROCEDURE gtk_password_entry_new () : GtkPasswordEntry;
+
+(* void gtk_password_entry_set_show_peek_icon(GtkPasswordEntry *entry,
+                                              gboolean show_peek_icon) *)
+PROCEDURE gtk_password_entry_set_show_peek_icon (self: GtkPasswordEntry;
+                                                 show_peek_icon: INTEGER);
+
+(* gboolean gtk_password_entry_get_show_peek_icon(GtkPasswordEntry *entry) *)
+PROCEDURE gtk_password_entry_get_show_peek_icon (self: GtkPasswordEntry)
+                                                 : INTEGER;
+
+(* void gtk_password_entry_set_extra_menu(GtkPasswordEntry *entry,
+                                          GMenuModel *model) *)
+PROCEDURE gtk_password_entry_set_extra_menu (self: GtkPasswordEntry;
+                                             model: ADDRESS);
+
+(* GMenuModel *gtk_password_entry_get_extra_menu(GtkPasswordEntry *entry) *)
+PROCEDURE gtk_password_entry_get_extra_menu (self: GtkPasswordEntry) : ADDRESS;
+
+END GtkPasswordEntry.

+ 47 - 0
src/GtkSizeGroup.def

@@ -0,0 +1,47 @@
+DEFINITION MODULE FOR "C" GtkSizeGroup ;
+
+(*
+   m2-GTK4 - GtkSizeGroup: keeps a group of widgets the same size.
+   Mapped onto <gtk/gtksizegroup.h>.
+*)
+
+FROM SYSTEM IMPORT ADDRESS;
+
+EXPORT UNQUALIFIED
+   GtkSizeGroup, GtkSizeGroupMode,
+   GtkSizeGroupHorizontal, GtkSizeGroupVertical, GtkSizeGroupBoth,
+   gtk_size_group_new, gtk_size_group_add_widget,
+   gtk_size_group_remove_widget, gtk_size_group_get_widgets,
+   gtk_size_group_get_mode, gtk_size_group_set_mode;
+
+TYPE
+   GtkSizeGroup = ADDRESS;
+   GtkSizeGroupMode = CARDINAL;
+
+CONST
+   GtkSizeGroupHorizontal = 0;  (* GTK_SIZE_GROUP_HORIZONTAL *)
+   GtkSizeGroupVertical   = 1;  (* GTK_SIZE_GROUP_VERTICAL *)
+   GtkSizeGroupBoth       = 2;  (* GTK_SIZE_GROUP_BOTH *)
+
+(* GtkSizeGroup *gtk_size_group_new(GtkSizeGroupMode mode) *)
+PROCEDURE gtk_size_group_new (mode: GtkSizeGroupMode) : GtkSizeGroup;
+
+(* void gtk_size_group_add_widget(GtkSizeGroup *size_group,
+                                  GtkWidget *widget) *)
+PROCEDURE gtk_size_group_add_widget (self: GtkSizeGroup; widget: ADDRESS);
+
+(* void gtk_size_group_remove_widget(GtkSizeGroup *size_group,
+                                     GtkWidget *widget) *)
+PROCEDURE gtk_size_group_remove_widget (self: GtkSizeGroup; widget: ADDRESS);
+
+(* GSList *gtk_size_group_get_widgets(GtkSizeGroup *size_group) *)
+PROCEDURE gtk_size_group_get_widgets (self: GtkSizeGroup) : ADDRESS;
+
+(* GtkSizeGroupMode gtk_size_group_get_mode(GtkSizeGroup *size_group) *)
+PROCEDURE gtk_size_group_get_mode (self: GtkSizeGroup) : GtkSizeGroupMode;
+
+(* void gtk_size_group_set_mode(GtkSizeGroup *size_group,
+                                GtkSizeGroupMode mode) *)
+PROCEDURE gtk_size_group_set_mode (self: GtkSizeGroup; mode: GtkSizeGroupMode);
+
+END GtkSizeGroup.

+ 7 - 0
src/GtkTextView.def

@@ -23,6 +23,7 @@ EXPORT UNQUALIFIED
    gtk_text_view_set_cursor_visible,
    gtk_text_view_set_wrap_mode, gtk_text_view_get_wrap_mode,
    gtk_text_view_set_monospace, gtk_text_view_get_monospace,
+   gtk_text_view_set_tabs, gtk_text_view_get_tabs,
    gtk_text_view_set_left_margin, gtk_text_view_set_right_margin,
    gtk_text_view_set_top_margin, gtk_text_view_set_bottom_margin,
    gtk_text_view_scroll_to_iter, gtk_text_view_scroll_to_mark;
@@ -67,6 +68,12 @@ PROCEDURE gtk_text_view_get_wrap_mode (text_view: GtkTextView) : GtkWrapMode;
 PROCEDURE gtk_text_view_set_monospace (text_view: GtkTextView;
                                        monospace: INTEGER);
 
+(* void gtk_text_view_set_tabs(GtkTextView *text_view, PangoTabArray *tabs) *)
+PROCEDURE gtk_text_view_set_tabs (text_view: GtkTextView; tabs: ADDRESS);
+
+(* PangoTabArray *gtk_text_view_get_tabs(GtkTextView *text_view) *)
+PROCEDURE gtk_text_view_get_tabs (text_view: GtkTextView) : ADDRESS;
+
 (* gboolean gtk_text_view_get_monospace(GtkTextView *text_view) *)
 PROCEDURE gtk_text_view_get_monospace (text_view: GtkTextView) : [ INTEGER ];
 

+ 77 - 0
src/PangoTabArray.def

@@ -0,0 +1,77 @@
+DEFINITION MODULE FOR "C" PangoTabArray ;
+
+(*
+   m2-GTK4 - PangoTabArray: an array of tab stops (a boxed type) used by
+   gtk_text_view_set_tabs().  Mapped onto <pango/pango-tabs.h>.
+*)
+
+FROM SYSTEM IMPORT ADDRESS;
+
+EXPORT UNQUALIFIED
+   PangoTabArray, PangoTabAlign,
+   PangoTabLeft, PangoTabRight, PangoTabCenter, PangoTabDecimal,
+   pango_tab_array_new, pango_tab_array_get_size, pango_tab_array_resize,
+   pango_tab_array_set_tab, pango_tab_array_get_tab,
+   pango_tab_array_get_tabs, pango_tab_array_get_positions_in_pixels,
+   pango_tab_array_set_positions_in_pixels, pango_tab_array_sort,
+   pango_tab_array_copy, pango_tab_array_free;
+
+TYPE
+   PangoTabArray = ADDRESS;
+   PangoTabAlign = CARDINAL;
+
+CONST
+   PangoTabLeft    = 0;  (* PANGO_TAB_LEFT *)
+   PangoTabRight   = 1;
+   PangoTabCenter  = 2;
+   PangoTabDecimal = 3;
+
+(* PangoTabArray *pango_tab_array_new(gint initial_size,
+                                      gboolean positions_in_pixels) *)
+PROCEDURE pango_tab_array_new (initial_size: INTEGER;
+                               positions_in_pixels: INTEGER) : PangoTabArray;
+
+(* gint pango_tab_array_get_size(PangoTabArray *tab_array) *)
+PROCEDURE pango_tab_array_get_size (self: PangoTabArray) : INTEGER;
+
+(* void pango_tab_array_resize(PangoTabArray *tab_array, gint new_size) *)
+PROCEDURE pango_tab_array_resize (self: PangoTabArray; new_size: INTEGER);
+
+(* void pango_tab_array_set_tab(PangoTabArray *tab_array, gint tab_index,
+                                PangoTabAlign alignment, gint location) *)
+PROCEDURE pango_tab_array_set_tab (self: PangoTabArray; tab_index: INTEGER;
+                                   alignment: PangoTabAlign;
+                                   location: INTEGER);
+
+(* void pango_tab_array_get_tab(PangoTabArray *tab_array, gint tab_index,
+                                PangoTabAlign *alignment, gint *location) *)
+PROCEDURE pango_tab_array_get_tab (self: PangoTabArray; tab_index: INTEGER;
+                                   VAR alignment: PangoTabAlign;
+                                   VAR location: INTEGER);
+
+(* gboolean pango_tab_array_get_tabs(PangoTabArray *tab_array,
+                                     PangoTabAlign **alignments,
+                                     gint **locations) *)
+PROCEDURE pango_tab_array_get_tabs (self: PangoTabArray;
+                                    VAR alignments: ADDRESS;
+                                    VAR locations: ADDRESS) : INTEGER;
+
+(* gboolean pango_tab_array_get_positions_in_pixels(PangoTabArray *tab_array) *)
+PROCEDURE pango_tab_array_get_positions_in_pixels (self: PangoTabArray)
+                                                   : INTEGER;
+
+(* void pango_tab_array_set_positions_in_pixels(PangoTabArray *tab_array,
+                                                 gboolean positions_in_pixels) *)
+PROCEDURE pango_tab_array_set_positions_in_pixels (self: PangoTabArray;
+                                                   positions_in_pixels: INTEGER);
+
+(* void pango_tab_array_sort(PangoTabArray *tab_array) *)
+PROCEDURE pango_tab_array_sort (self: PangoTabArray);
+
+(* PangoTabArray *pango_tab_array_copy(PangoTabArray *src) *)
+PROCEDURE pango_tab_array_copy (self: PangoTabArray) : ADDRESS;
+
+(* void pango_tab_array_free(PangoTabArray *tab_array) *)
+PROCEDURE pango_tab_array_free (self: PangoTabArray);
+
+END PangoTabArray.