// read the toolkit linker flags from the config.mk file
let content = fs::read_to_string(&config_mk)
.expect(&format!("Failed to read {}", config_mk.display()));
+ let mut tokens = vec![];
for line in content.lines() {
if line.starts_with("TK_LDFLAGS += ") || line.starts_with("TK_LDFLAGS = ") {
- let parts: Vec<&str> = line.split_whitespace().collect();
- for token in &parts[2..] {
- if let Some(lib) = token.strip_prefix("-l") {
- println!("cargo:rustc-link-lib={}", lib);
- } else if token.starts_with("-L") {
- let path = &token[2..];
- println!("cargo:rustc-link-search=native={}", path);
- } else if token.starts_with("-R") {
- let path = &token[2..];
- println!("cargo:rustc-link-arg=-Wl,-rpath,{}", path);
- } else {
- println!("cargo:rustc-link-arg={}", token);
- }
+ tokens.extend(line.split_whitespace().skip(2)); // skip "TK_LDFLAGS ="
+ }
+ }
+
+ let mut iter = tokens.iter();
+ while let Some(token) = iter.next() {
+ if let Some(lib) = token.strip_prefix("-l") {
+ println!("cargo:rustc-link-lib={}", lib);
+ } else if token.starts_with("-L") {
+ let path = &token[2..];
+ println!("cargo:rustc-link-search=native={}", path);
+ } else if token.starts_with("-R") {
+ let path = &token[2..];
+ println!("cargo:rustc-link-arg=-Wl,-rpath,{}", path);
+ } else if token == &"-framework" {
+ // The next token is the framework name
+ if let Some(framework) = iter.next() {
+ println!("cargo:rustc-link-lib=framework={}", framework);
}
+ } else {
+ println!("cargo:rustc-link-arg={}", token);
}
}
+
}
* POSSIBILITY OF SUCH DAMAGE.
*/
-#import "Container.h"
+#import "container.h"
#import "GridLayout.h"
@interface BoxContainer : GridLayout
#import "toolkit.h"
-#import "Container.h"
+#import "container.h"
#import <cx/array_list.h>
*/
#import "MainWindow.h"
-#import "Container.h"
+#import "container.h"
#import "GridLayout.h"
#import "BoxContainer.h"
#import "../common/object.h"
* POSSIBILITY OF SUCH DAMAGE.
*/
-#import "Container.h"
+#import "container.h"
@protocol TabView
}
- (void)applicationWillTerminate:(NSNotification *)aNotification {
+ NSLog(@"toolkit applicationWillTerminate");
ui_cocoa_onexit();
}
#import "button.h"
#import "EventData.h"
-#import "Container.h"
+#import "container.h"
#import "image.h"
#import <objc/runtime.h>
CxJsonWriter writer = cxJsonWriterCompact();
CxBuffer buf;
- cxBufferInit(&buf, NULL, NULL, 128, bCX_BUFFER_AUTO_EXTEND);
+ cxBufferInit(&buf, NULL, NULL, 128, CX_BUFFER_AUTO_EXTEND);
cxJsonWrite(&buf, obj, (cx_write_func)cxBufferWrite, &writer);
cxJsonValueFree(obj);
cxBufferTerminate(&buf);
* POSSIBILITY OF SUCH DAMAGE.
*/
-#import "Container.h"
+#import "container.h"
#import "GridLayout.h"
#import "BoxContainer.h"
#import "TabView.h"
*/
#import "toolkit.h"
-#import "Container.h"
+#import "container.h"
#import "../ui/entry.h"
#include "../ui/image.h"
-#include "Container.h"
+#include "container.h"
typedef struct UiImage {
void *nsimage;
*/
#import "label.h"
-#import "Container.h"
+#import "container.h"
#import <string.h>
*/
#import "toolkit.h"
-#import "Container.h"
+#import "container.h"
#import "../ui/list.h"
#import "ListDataSource.h"
COCOAOBJ += MainWindow.o
COCOAOBJ += WindowManager.o
COCOAOBJ += window.o
-COCOAOBJ += Container.o
+COCOAOBJ += container.o
COCOAOBJ += button.o
COCOAOBJ += text.o
COCOAOBJ += menu.o
#import "text.h"
#import "EventData.h"
-#import "Container.h"
+#import "container.h"
#import <objc/runtime.h>
UIWIDGET ui_textarea_create(UiObject *obj, UiTextAreaArgs *args) {
scrollview.hasVerticalScroller = YES;
scrollview.documentView = textview;
+ // store link to the textview
+ // associate it with the textview and the scrollview to support both widgets in ui_textarea_gettextwidget
+ objc_setAssociatedObject(textview, "ui_textarea", textview, OBJC_ASSOCIATION_ASSIGN);
+ objc_setAssociatedObject(scrollview, "ui_textarea", textview, OBJC_ASSOCIATION_ASSIGN);
+
UiLayout layout = UI_INIT_LAYOUT(args);
ui_container_add(obj, scrollview, &layout);
return (__bridge void*)scrollview;
}
+UIWIDGET ui_textarea_gettextwidget(UIWIDGET textarea) {
+ id view = (__bridge id)textarea;
+ id textview = objc_getAssociatedObject(view, "ui_textarea");
+ return (__bridge void*)textview;
+}
/* ------------------- App Init / Event Loop functions ------------------- */
+static AppDelegate *app_delegate;
void ui_init(const char *appname, int argc, char **argv) {
application_name = appname ? strdup(appname) : NULL;
app_argv = (const char**)argv;
uic_init_global_context();
-
+
uic_menu_init();
uic_toolbar_init();
-
+
uic_load_app_properties();
-
+
NSApplication *app = [NSApplication sharedApplication];
- //[app setActivationPolicy:NSApplicationActivationPolicyRegular];
+ [app setActivationPolicy:NSApplicationActivationPolicyRegular];
//[NSBundle loadNibNamed:@"MainMenu" owner:NSApp ];
//[[NSBundle mainBundle] loadNibNamed:@"MainMenu" owner:NSApp topLevelObjects:&topLevelObjects];
+ app_delegate = [[AppDelegate alloc] init];
+
+ if(app.delegate != nil) {
+ printf("app delegate exists\n");
+ } else {
+ printf("app delegate is null\n");
+ }
+ fflush(stdout);
+ app.delegate = app_delegate;
+
+
ui_icon_init();
ui_toolbar_init();
}
-const char* ui_appname() {
+const char* ui_appname(void) {
return application_name;
}
// TODO
}
+void ui_app_quit(void) {
+ [[NSApplication sharedApplication] terminate:nil];
+}
+
/* ------------------- Window Visibility functions ------------------- */
void ui_show(UiObject *obj) {
view.hidden = !visible;
}
+void ui_widget_set_size(UIWIDGET w, int width, int height) {
+ NSView *view = (__bridge NSView*)w;
+ NSRect frame = view.frame;
+ frame.size.width = width;
+ frame.size.height = height;
+ view.frame = frame;
+}
+
UIWIDGET ui_separator_create(UiObject *obj, UiWidgetArgs *args) {
// TODO
#define UI_ICON_GO_DOWN "" // TODO: implement workaround for missing down symbol
#endif /* UI_WINUI */
+
+#ifdef UI_COCOA
+
+#define UI_ICON_HOME "NSImageNameHomeTemplate"
+#define UI_ICON_NEW_WINDOW ""
+#define UI_ICON_REFRESH "NSImageNameRefreshTemplate"
+#define UI_ICON_NEW_FOLDER ""
+#define UI_ICON_ADD "NSImageNameAddTemplate"
+#define UI_ICON_UPLOAD ""
+#define UI_ICON_SAVE_LOCAL ""
+#define UI_ICON_DELETE ""
+#define UI_ICON_DOCK_LEFT ""
+#define UI_ICON_DOCK_RIGHT ""
+#define UI_ICON_GO_BACK "NSImageNameGoLeftTemplate"
+#define UI_ICON_GO_FORWARD "NSImageNameGoRightTemplate"
+#define UI_ICON_GO_UP ""
+#define UI_ICON_GO_DOWN ""
+
+#endif /* UI_COCOA */
UIEXPORT UiIcon* ui_icon(const char* name, size_t size);
UIEXPORT void ui_init(const char *appname, int argc, char **argv);
-UIEXPORT const char* ui_appname();
+UIEXPORT const char* ui_appname(void);
UIEXPORT void ui_add_styledata(const char *styledata, int len);