add webview (Cocoa)

Sat, 25 Oct 2025 21:30:41 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sat, 25 Oct 2025 21:30:41 +0200
changeset 874
33618ae398bd
parent 873
78853bfc47cf
child 875
0575ca45f1bb

add webview (Cocoa)

make/xcode/toolkit/toolkit.xcodeproj/project.pbxproj file | annotate | diff | comparison | revisions
make/xcode/toolkit/toolkit/main.m file | annotate | diff | comparison | revisions
ui/ui/webview.h file | annotate | diff | comparison | revisions
--- a/make/xcode/toolkit/toolkit.xcodeproj/project.pbxproj	Fri Oct 24 15:44:31 2025 +0200
+++ b/make/xcode/toolkit/toolkit.xcodeproj/project.pbxproj	Sat Oct 25 21:30:41 2025 +0200
@@ -53,6 +53,7 @@
 		ED895DAA2EA0CACC00040078 /* TabView.m in Sources */ = {isa = PBXBuildFile; fileRef = ED895DA92EA0CACC00040078 /* TabView.m */; };
 		ED99F04A2E5CBD2E00A4CC97 /* widget.m in Sources */ = {isa = PBXBuildFile; fileRef = ED99F0492E5CBD2E00A4CC97 /* widget.m */; };
 		EDB452C32E302C65006FB12D /* image.m in Sources */ = {isa = PBXBuildFile; fileRef = EDB452C22E302C65006FB12D /* image.m */; };
+		EDBC4D272EAD4BB0005CDF38 /* webview.m in Sources */ = {isa = PBXBuildFile; fileRef = EDBC4D262EAD4BB0005CDF38 /* webview.m */; };
 		EDC315A92E9A739300403776 /* json.c in Sources */ = {isa = PBXBuildFile; fileRef = EDC315A62E9A739300403776 /* json.c */; };
 		EDC315AA2E9A739300403776 /* properties.c in Sources */ = {isa = PBXBuildFile; fileRef = EDC315A72E9A739300403776 /* properties.c */; };
 		EDC315AB2E9A739300403776 /* streams.c in Sources */ = {isa = PBXBuildFile; fileRef = EDC315A82E9A739300403776 /* streams.c */; };
@@ -178,6 +179,8 @@
 		ED99F04C2E5CBE5000A4CC97 /* widget.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = widget.h; path = /Users/olaf/Projekte/toolkit/ui/ui/widget.h; sourceTree = "<absolute>"; };
 		EDB452C12E302C65006FB12D /* image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = image.h; path = /Users/olaf/Projekte/toolkit/ui/cocoa/image.h; sourceTree = "<absolute>"; };
 		EDB452C22E302C65006FB12D /* image.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = image.m; path = /Users/olaf/Projekte/toolkit/ui/cocoa/image.m; sourceTree = "<absolute>"; };
+		EDBC4D252EAD4BB0005CDF38 /* webview.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = webview.h; path = /Users/olaf/Projekte/toolkit/ui/cocoa/webview.h; sourceTree = "<absolute>"; };
+		EDBC4D262EAD4BB0005CDF38 /* webview.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = webview.m; path = /Users/olaf/Projekte/toolkit/ui/cocoa/webview.m; sourceTree = "<absolute>"; };
 		EDC315A32E9A736900403776 /* json.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = json.h; path = /Users/olaf/Projekte/toolkit/ucx/cx/json.h; sourceTree = "<absolute>"; };
 		EDC315A42E9A736900403776 /* properties.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = properties.h; path = /Users/olaf/Projekte/toolkit/ucx/cx/properties.h; sourceTree = "<absolute>"; };
 		EDC315A52E9A736900403776 /* streams.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = streams.h; path = /Users/olaf/Projekte/toolkit/ucx/cx/streams.h; sourceTree = "<absolute>"; };
@@ -320,6 +323,8 @@
 		ED65812E2CFF1A7200F5402F /* cocoa */ = {
 			isa = PBXGroup;
 			children = (
+				EDBC4D252EAD4BB0005CDF38 /* webview.h */,
+				EDBC4D262EAD4BB0005CDF38 /* webview.m */,
 				ED895DA82EA0CACC00040078 /* TabView.h */,
 				ED895DA92EA0CACC00040078 /* TabView.m */,
 				ED83C2BD2E8EA49200054B22 /* BoxContainer.h */,
@@ -497,6 +502,7 @@
 				ED99F04A2E5CBD2E00A4CC97 /* widget.m in Sources */,
 				ED6581252CFF1A3000F5402F /* compare.c in Sources */,
 				ED6581262CFF1A3000F5402F /* hash_key.c in Sources */,
+				EDBC4D272EAD4BB0005CDF38 /* webview.m in Sources */,
 				ED6581272CFF1A3000F5402F /* iterator.c in Sources */,
 				ED6581282CFF1A3000F5402F /* string.c in Sources */,
 				ED6581312CFF1A8800F5402F /* toolkit.m in Sources */,
--- a/make/xcode/toolkit/toolkit/main.m	Fri Oct 24 15:44:31 2025 +0200
+++ b/make/xcode/toolkit/toolkit/main.m	Sat Oct 25 21:30:41 2025 +0200
@@ -30,6 +30,8 @@
 
 #include <ui/ui.h>
 
+#include <ui/webview.h>
+
 typedef struct WindowData {
     UiInteger *tbtoggle;
 } WindowData;
@@ -42,6 +44,7 @@
     UiList *sidebar_list;
     UiList *sidebar_list2;
     UiString *link;
+    UiGeneric *webview;
 } MyDocument;
 
 MyDocument* create_doc(void) {
@@ -78,6 +81,7 @@
     ui_list_append(doc->sidebar_list2, "Item 4");
     
     doc->link = ui_string_new(ctx, "link");
+    doc->webview = ui_generic_new(ctx, "webview");
     
     return doc;
 }
@@ -183,7 +187,9 @@
                 ui_textarea(obj, .fill = TRUE);
             }
             ui_tab(obj, "Tab 2") {
-                ui_button(obj, .label = "Tab 2 Content");
+                //ui_button(obj, .label = "Tab 2 Content");
+                ui_webview(obj, .fill = TRUE, .value = doc->webview);
+                ui_webview_load_url(doc->webview, "https://unixwork.de/");
             }
         }
         
--- a/ui/ui/webview.h	Fri Oct 24 15:44:31 2025 +0200
+++ b/ui/ui/webview.h	Sat Oct 25 21:30:41 2025 +0200
@@ -63,11 +63,11 @@
 
 #define ui_webview(obj, ...) ui_webview_create(obj, &(UiWebviewArgs){ __VA_ARGS__ } )
 
-UIWIDGET ui_webview_create(UiObject *obj, UiWebviewArgs *args);
+UIEXPORT UIWIDGET ui_webview_create(UiObject *obj, UiWebviewArgs *args);
 
-void ui_webview_load_url(UiGeneric *g, const char *url);
+UIEXPORT void ui_webview_load_url(UiGeneric *g, const char *url);
 
-void ui_webview_load_content(
+UIEXPORT void ui_webview_load_content(
         UiGeneric *g,
         const char *uri,
         const char *content,
@@ -76,15 +76,15 @@
         const char *encoding);
 
 
-void ui_webview_reload(UiGeneric *g);
-UiBool ui_webview_can_go_back(UiGeneric *g);
-UiBool ui_webview_can_go_forward(UiGeneric *g);
-void ui_webview_go_back(UiGeneric *g);
-void ui_webview_go_forward(UiGeneric *g);
-const char * ui_webview_get_uri(UiGeneric *g);
-void ui_webview_enable_javascript(UiGeneric *g, UiBool enable);
-void ui_webview_set_zoom(UiGeneric *g, double zoom);
-double ui_webview_get_zoom(UiGeneric *g);
+UIEXPORT void ui_webview_reload(UiGeneric *g);
+UIEXPORT UiBool ui_webview_can_go_back(UiGeneric *g);
+UIEXPORT UiBool ui_webview_can_go_forward(UiGeneric *g);
+UIEXPORT void ui_webview_go_back(UiGeneric *g);
+UIEXPORT void ui_webview_go_forward(UiGeneric *g);
+UIEXPORT const char * ui_webview_get_uri(UiGeneric *g);
+UIEXPORT void ui_webview_enable_javascript(UiGeneric *g, UiBool enable);
+UIEXPORT void ui_webview_set_zoom(UiGeneric *g, double zoom);
+UIEXPORT double ui_webview_get_zoom(UiGeneric *g);
 
 
 #ifdef __cplusplus

mercurial