cocoadock 0.2.0 → 0.3.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/cocoadock/cocoadock.m +72 -0
- data/lib/cocoadock/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 854f6ae805d2626929da28f513cd471e2c252be893a0c062823f52d157b0bb44
|
|
4
|
+
data.tar.gz: 632c33c8faaa92152b5a68a8d9affe598fe8afcbf0b3bc5691f19def81b94ae3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b3688a9af53f4d84559ac1374485dce4a38bf020a86427a0d7f2d5ce19b9eafcca844f7d630a568e42204b3401a4c44e592f95b2b57d19e1581af1474297ebe6
|
|
7
|
+
data.tar.gz: 6547eff88bb43c512e2879439c9891d5dcfed40ae8afe901c0582d6145fa2d6f1974f66360b6d29b41a166892690985e1b8b826c07e041c8c84ad8d040b17c75
|
data/ext/cocoadock/cocoadock.m
CHANGED
|
@@ -8,6 +8,69 @@ VALUE cocoadock_initialize(VALUE self);
|
|
|
8
8
|
VALUE cocoadock_is_app_to_dock(VALUE self, VALUE path);
|
|
9
9
|
VALUE cocoadock_add_app_to_dock(VALUE self, VALUE path);
|
|
10
10
|
VALUE cocoadock_remove_app_from_dock(VALUE self, VALUE path);
|
|
11
|
+
VALUE cocoadock_remove_others_in_dock(VALUE self);
|
|
12
|
+
|
|
13
|
+
NSMutableArray *LoadDockOthers(void) {
|
|
14
|
+
CFArrayRef persistentOthers = CFPreferencesCopyAppValue(
|
|
15
|
+
CFSTR("persistent-others"),
|
|
16
|
+
CFSTR("com.apple.dock")
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
if (!persistentOthers) {
|
|
20
|
+
return [NSMutableArray array];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
NSMutableArray *others =
|
|
24
|
+
[(__bridge NSArray *)persistentOthers mutableCopy];
|
|
25
|
+
|
|
26
|
+
CFRelease(persistentOthers);
|
|
27
|
+
return others;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
void SaveDockOthers(NSArray *others) {
|
|
31
|
+
CFPreferencesSetAppValue(
|
|
32
|
+
CFSTR("persistent-others"),
|
|
33
|
+
(__bridge CFArrayRef)others,
|
|
34
|
+
CFSTR("com.apple.dock")
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
CFPreferencesAppSynchronize(CFSTR("com.apple.dock"));
|
|
38
|
+
|
|
39
|
+
system("killall Dock");
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
BOOL RemoveOthersInDock(void) {
|
|
43
|
+
|
|
44
|
+
int attempts = 0;
|
|
45
|
+
|
|
46
|
+
while (attempts < 3) {
|
|
47
|
+
|
|
48
|
+
NSMutableArray *others = LoadDockOthers();
|
|
49
|
+
|
|
50
|
+
if (others.count == 0) {
|
|
51
|
+
return YES; // Already empty
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
[others removeAllObjects];
|
|
55
|
+
|
|
56
|
+
SaveDockOthers(others);
|
|
57
|
+
|
|
58
|
+
// Give Dock time to restart and commit
|
|
59
|
+
[NSThread sleepForTimeInterval:0.25];
|
|
60
|
+
|
|
61
|
+
// Verify
|
|
62
|
+
NSMutableArray *verify = LoadDockOthers();
|
|
63
|
+
if (verify.count == 0) {
|
|
64
|
+
return YES;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
attempts++;
|
|
68
|
+
[NSThread sleepForTimeInterval:0.1];
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return NO;
|
|
72
|
+
}
|
|
73
|
+
|
|
11
74
|
|
|
12
75
|
BOOL IsAppInDock(NSString *bundleID) {
|
|
13
76
|
if (!bundleID) return NO;
|
|
@@ -236,6 +299,10 @@ void removeAppFromDock(const char* app_path) {
|
|
|
236
299
|
}
|
|
237
300
|
}
|
|
238
301
|
|
|
302
|
+
void removeOthersInDock () {
|
|
303
|
+
RemoveOthersInDock();
|
|
304
|
+
}
|
|
305
|
+
|
|
239
306
|
RUBY_FUNC_EXPORTED void
|
|
240
307
|
Init_cocoadock(void)
|
|
241
308
|
{
|
|
@@ -245,6 +312,7 @@ Init_cocoadock(void)
|
|
|
245
312
|
rb_define_method(rb_mCocoadockClass, "add_app", cocoadock_add_app_to_dock, 1);
|
|
246
313
|
rb_define_method(rb_mCocoadockClass, "app_in_dock?", cocoadock_is_app_to_dock, 1);
|
|
247
314
|
rb_define_method(rb_mCocoadockClass, "remove_app", cocoadock_remove_app_from_dock, 1);
|
|
315
|
+
rb_define_method(rb_mCocoadockClass, "remove_others", cocoadock_remove_others_in_dock, 0);
|
|
248
316
|
}
|
|
249
317
|
|
|
250
318
|
VALUE cocoadock_initialize(VALUE self) {
|
|
@@ -271,3 +339,7 @@ VALUE cocoadock_remove_app_from_dock(VALUE self, VALUE path) {
|
|
|
271
339
|
//NSString *appPath = [[NSString alloc] initWithCString:c_app_path encoding:NSUTF8StringEncoding];
|
|
272
340
|
removeAppFromDock(c_app_path);
|
|
273
341
|
}
|
|
342
|
+
|
|
343
|
+
VALUE cocoadock_remove_others_in_dock(VALUE self) {
|
|
344
|
+
removeOthersInDock();
|
|
345
|
+
}
|
data/lib/cocoadock/version.rb
CHANGED