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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 52d8ec84cc6c9e3502412e3db650e3c0c352606bf688589ae3fbeb72aac15aac
4
- data.tar.gz: 25bf44fb2a4f47d861ad1a3ed530065e5f71433fc2a1209616160626ccac3777
3
+ metadata.gz: '04608c0171a03a5d898a30d02d21d5603964482927148f21453124888adb8eac'
4
+ data.tar.gz: 3d0fe0a44f12b933675f4006a00348f379b1fea7c22a02d2d726b77218bf6e43
5
5
  SHA512:
6
- metadata.gz: e85e7cf20d08cd51b562c5bd4e9718f0c10e0e019d3d0c2fe219497b7a6e727471107f57a6865c8f8a797b24249874bde6eb36ebc8cbd3ae5b06c5394ce9c261
7
- data.tar.gz: 23658409bdb2faa237762429a1d81ee19155ccd4d5e4298e8036062662ac52ec6e0da945e981e19d4d789df19bd83f919098122c13affa4a16d459d31c6894ba
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
- // Route logic based on the tag
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Cocoawebview
4
- VERSION = "0.8.0"
4
+ VERSION = "1.0.0"
5
5
  end
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.8.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-06 00:00:00.000000000 Z
10
+ date: 2026-02-07 00:00:00.000000000 Z
11
11
  dependencies: []
12
12
  description: Webview ruby binding for macOS
13
13
  email: