add functions for directly setting a linkbutton's label/uri (GTK)

Sat, 23 Aug 2025 07:57:33 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sat, 23 Aug 2025 07:57:33 +0200
changeset 706
2bdf00814cb8
parent 705
a537158b4269
child 707
e9f63774b0e0

add functions for directly setting a linkbutton's label/uri (GTK)

ui/gtk/button.c file | annotate | diff | comparison | revisions
ui/ui/button.h file | annotate | diff | comparison | revisions
--- a/ui/gtk/button.c	Fri Aug 22 19:44:12 2025 +0200
+++ b/ui/gtk/button.c	Sat Aug 23 07:57:33 2025 +0200
@@ -832,3 +832,52 @@
     ui_set(str, value);
     free(value);
 }
+
+
+void ui_linkbutton_set_label(UIWIDGET button, const char *label) {
+    gtk_button_set_label(GTK_BUTTON(button), label);
+}
+
+void ui_linkbutton_set_uri(UIWIDGET button, const char *label) {
+    UiLinkButton *link = g_object_get_data(G_OBJECT(button), "ui_linkbutton");
+    if(link) {
+        linkbutton_set_uri(link, label);
+    } else {
+        fprintf(stderr, "Error: ui_linkbutton_set_label: widget is not a linkbutton\n");
+    }
+}
+
+void ui_linkbutton_set_visited(UIWIDGET button, UiBool visited) {
+    UiLinkButton *link = g_object_get_data(G_OBJECT(button), "ui_linkbutton");
+    if(link) {
+        linkbutton_set_visited(link, visited);
+    } else {
+        fprintf(stderr, "Error: ui_linkbutton_set_label: widget is not a linkbutton\n");
+    }
+}
+
+char* ui_linkbutton_get_label(UIWIDGET button) {
+    const char *label = gtk_button_get_label(GTK_BUTTON(button));
+    return label ? strdup(label) : NULL;
+}
+
+char* ui_linkbutton_get_uri(UIWIDGET button) {
+    UiLinkButton *link = g_object_get_data(G_OBJECT(button), "ui_linkbutton");
+    if(link) {
+        const char *uri = linkbutton_get_uri(link);
+        return uri ? strdup(uri) : NULL;
+    } else {
+        fprintf(stderr, "Error: ui_linkbutton_set_label: widget is not a linkbutton\n");
+    }
+    return NULL;
+}
+
+UiBool ui_linkbutton_get_visited(UIWIDGET button) {
+    UiLinkButton *link = g_object_get_data(G_OBJECT(button), "ui_linkbutton");
+    if(link) {
+        return linkbutton_get_visited(link);
+    } else {
+        fprintf(stderr, "Error: ui_linkbutton_set_label: widget is not a linkbutton\n");
+    }
+    return FALSE;
+}
--- a/ui/ui/button.h	Fri Aug 22 19:44:12 2025 +0200
+++ b/ui/ui/button.h	Sat Aug 23 07:57:33 2025 +0200
@@ -134,6 +134,12 @@
 UIEXPORT void ui_linkbutton_value_set_uri(UiString *str, const char *uri);
 UIEXPORT void ui_linkbutton_value_set_visited(UiString *str, UiBool visited);
 
+UIEXPORT void ui_linkbutton_set_label(UIWIDGET button, const char *label);
+UIEXPORT void ui_linkbutton_set_uri(UIWIDGET button, const char *label);
+UIEXPORT void ui_linkbutton_set_visited(UIWIDGET button, UiBool visited);
+UIEXPORT char* ui_linkbutton_get_label(UIWIDGET button);
+UIEXPORT char* ui_linkbutton_get_uri(UIWIDGET button);
+UIEXPORT UiBool ui_linkbutton_get_visited(UIWIDGET button);
 
 #ifdef	__cplusplus
 }

mercurial