cocoawebview 0.8.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/cocoawebview/cocoawebview.m +21 -16
- data/lib/cocoawebview/version.rb +1 -1
- data/lib/cocoawebview.rb +10 -0
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: '04608c0171a03a5d898a30d02d21d5603964482927148f21453124888adb8eac'
|
|
4
|
+
data.tar.gz: 3d0fe0a44f12b933675f4006a00348f379b1fea7c22a02d2d726b77218bf6e43
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e2073540674b00372e220c75e4dfa45eac07eb657b9b49fcf43388633831f3190e325f37f46ab9e3fcb8f362cfbc9f2bfe5ae947e6cfe38d901ac8fedf7490c1
|
|
7
|
+
data.tar.gz: 46539b807de6f6dfd67ac4b107ca31100f31a19c9fa31840b8168001bcae98cb820d9bca52135dab32a5e4c3bf3aa23a7cba69d7000781b16bc8b129182fbe60
|
|
@@ -14,6 +14,7 @@ VALUE nsapp_exit(VALUE self);
|
|
|
14
14
|
|
|
15
15
|
VALUE nsmenu_initialize(VALUE self);
|
|
16
16
|
VALUE nsmenu_new_menu_item(VALUE self);
|
|
17
|
+
VALUE nsmenu_new_separator_item(VALUE self);
|
|
17
18
|
VALUE nsmenu_create_menu_item(VALUE self, VALUE title, VALUE tag, VALUE key);
|
|
18
19
|
VALUE nsmenu_new_menu(VALUE self);
|
|
19
20
|
VALUE nsmenu_add_item_to_menu(VALUE self, VALUE item, VALUE menu);
|
|
@@ -117,6 +118,7 @@ VALUE webview_increase_normal_level(VALUE self, VALUE delta);
|
|
|
117
118
|
|
|
118
119
|
@interface AppDelegate : NSObject <NSApplicationDelegate> {
|
|
119
120
|
VALUE app;
|
|
121
|
+
VALUE rb_menu;
|
|
120
122
|
}
|
|
121
123
|
@end
|
|
122
124
|
|
|
@@ -125,28 +127,18 @@ VALUE webview_increase_normal_level(VALUE self, VALUE delta);
|
|
|
125
127
|
- (void)handleMenuAction:(id)sender {
|
|
126
128
|
NSMenuItem *item = (NSMenuItem *)sender;
|
|
127
129
|
NSInteger tag = [item tag];
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
switch (tag) {
|
|
131
|
-
case 100: // New File
|
|
132
|
-
NSLog(@"Creating a new file...");
|
|
133
|
-
break;
|
|
134
|
-
case 101: // Save
|
|
135
|
-
NSLog(@"Saving data...");
|
|
136
|
-
break;
|
|
137
|
-
case 999: // Quit
|
|
138
|
-
[NSApp terminate:nil];
|
|
139
|
-
break;
|
|
140
|
-
default:
|
|
141
|
-
NSLog(@"Clicked: %@", [item title]);
|
|
142
|
-
break;
|
|
143
|
-
}
|
|
130
|
+
VALUE rb_tag = INT2NUM(tag);
|
|
131
|
+
rb_funcall(rb_menu, rb_intern("handle_menu_action"), 1, rb_tag);
|
|
144
132
|
}
|
|
145
133
|
|
|
146
134
|
- (void)setApp:(VALUE)a {
|
|
147
135
|
app = a;
|
|
148
136
|
}
|
|
149
137
|
|
|
138
|
+
- (void)setMenu:(VALUE)m {
|
|
139
|
+
rb_menu = m;
|
|
140
|
+
}
|
|
141
|
+
|
|
150
142
|
- (void)applicationWillTerminate:(NSNotification *)notification {
|
|
151
143
|
rb_funcall(app, rb_intern("app_will_exit"), 0);
|
|
152
144
|
}
|
|
@@ -374,6 +366,7 @@ Init_cocoawebview(void)
|
|
|
374
366
|
rb_define_method(rb_mNSMenuClass, "initialize", nsmenu_initialize, 0);
|
|
375
367
|
rb_define_method(rb_mNSMenuClass, "new_menu", nsmenu_new_menu, 0);
|
|
376
368
|
rb_define_method(rb_mNSMenuClass, "new_menu_item", nsmenu_new_menu_item, 0);
|
|
369
|
+
rb_define_method(rb_mNSMenuClass, "new_separator", nsmenu_new_separator_item, 0);
|
|
377
370
|
rb_define_method(rb_mNSMenuClass, "create_menu_item", nsmenu_create_menu_item, 3);
|
|
378
371
|
rb_define_method(rb_mNSMenuClass, "add_item_to_menu", nsmenu_add_item_to_menu, 2);
|
|
379
372
|
rb_define_method(rb_mNSMenuClass, "set_submenu_to_menu", nsmenu_set_submenu_to_menu, 2);
|
|
@@ -419,9 +412,14 @@ VALUE nsapp_exit(VALUE self) {
|
|
|
419
412
|
|
|
420
413
|
VALUE nsmenu_initialize(VALUE self) {
|
|
421
414
|
rb_iv_set(self, "@var", rb_hash_new());
|
|
415
|
+
rb_iv_set(self, "@bindings", rb_hash_new());
|
|
416
|
+
|
|
422
417
|
Menu *menu = [[Menu alloc] init];
|
|
423
418
|
menu.mainMenu = [NSMenu new];
|
|
424
419
|
|
|
420
|
+
AppDelegate *delegate = application.delegate;
|
|
421
|
+
[delegate setMenu:self];
|
|
422
|
+
|
|
425
423
|
// Wrap the Objective-C pointer into a Ruby object
|
|
426
424
|
VALUE wrapper = TypedData_Wrap_Struct(rb_cObject, &menu_obj_type, menu);
|
|
427
425
|
|
|
@@ -434,6 +432,13 @@ VALUE nsmenu_initialize(VALUE self) {
|
|
|
434
432
|
return self;
|
|
435
433
|
}
|
|
436
434
|
|
|
435
|
+
VALUE nsmenu_new_separator_item(VALUE self) {
|
|
436
|
+
NSMenuItem *menuItem = [NSMenuItem separatorItem];
|
|
437
|
+
// Wrap the Objective-C pointer into a Ruby object
|
|
438
|
+
VALUE wrapper = TypedData_Wrap_Struct(rb_cObject, &menu_obj_type, menuItem);
|
|
439
|
+
return wrapper;
|
|
440
|
+
}
|
|
441
|
+
|
|
437
442
|
VALUE nsmenu_new_menu_item(VALUE self) {
|
|
438
443
|
NSMenuItem *menuItem = [NSMenuItem new];
|
|
439
444
|
// Wrap the Objective-C pointer into a Ruby object
|
data/lib/cocoawebview/version.rb
CHANGED
data/lib/cocoawebview.rb
CHANGED
|
@@ -16,6 +16,11 @@ module CocoaWebview
|
|
|
16
16
|
# Your code goes here...
|
|
17
17
|
|
|
18
18
|
class NSMenu
|
|
19
|
+
def create_menu_item_with(title, tag, key, &block)
|
|
20
|
+
@bindings[tag] = block
|
|
21
|
+
create_menu_item(title, tag, key)
|
|
22
|
+
end
|
|
23
|
+
|
|
19
24
|
def main_menu
|
|
20
25
|
@menu
|
|
21
26
|
end
|
|
@@ -23,6 +28,11 @@ module CocoaWebview
|
|
|
23
28
|
def main_menu_bar
|
|
24
29
|
@menu_bar
|
|
25
30
|
end
|
|
31
|
+
|
|
32
|
+
def handle_menu_action(tag)
|
|
33
|
+
callback = @bindings[tag]
|
|
34
|
+
callback.call
|
|
35
|
+
end
|
|
26
36
|
end
|
|
27
37
|
|
|
28
38
|
class NSApp
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cocoawebview
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 1.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Tommy Jeff
|
|
8
8
|
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2026-02-
|
|
10
|
+
date: 2026-02-07 00:00:00.000000000 Z
|
|
11
11
|
dependencies: []
|
|
12
12
|
description: Webview ruby binding for macOS
|
|
13
13
|
email:
|