public
Description: A SSB OSX application, which at some point will be able to create a new application which wraps a specific web application, (Think Campfire, Twitter etc) and allows the user to use Ruby to create event handlers to be able support things like Growl or whatever you would like.
Clone URL: git://github.com/alloy/webapp-app.git
Search Repo:
Added tabbed browsing.
alloy (author)
Sun Mar 23 10:28:21 -0700 2008
commit  510c47f2f69ea3a051ecf5893018cf59863d3b4c
tree    5091a5d7be698dc316ccf64ff2ad91e59cfa9c41
parent  894ceec19457fcddb4ad311e151d0e9fda2fc2f7
...
18
19
20
 
 
21
22
23
...
41
42
43
 
44
45
46
...
62
63
64
 
65
66
67
...
88
89
90
 
91
92
93
...
105
106
107
 
108
109
110
...
301
302
303
 
304
305
306
...
310
311
312
 
313
314
315
...
320
321
322
 
323
324
 
325
326
327
...
340
341
342
 
343
344
 
345
346
347
...
18
19
20
21
22
23
24
25
...
43
44
45
46
47
48
49
...
65
66
67
68
69
70
71
...
92
93
94
95
96
97
98
...
110
111
112
113
114
115
116
...
307
308
309
310
311
312
313
...
317
318
319
320
321
322
323
...
328
329
330
331
332
333
334
335
336
337
...
350
351
352
353
354
355
356
357
358
359
0
@@ -18,6 +18,8 @@
0
     514292D10CC66CDC00F9CEEF /* test in Resources */ = {isa = PBXBuildFile; fileRef = 514292CA0CC66CDC00F9CEEF /* test */; };
0
     514292D20CC66CDC00F9CEEF /* vendor in Resources */ = {isa = PBXBuildFile; fileRef = 514292CC0CC66CDC00F9CEEF /* vendor */; };
0
     514292EF0CC6823A00F9CEEF /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 514292ED0CC6823A00F9CEEF /* MainMenu.nib */; };
0
+    517444A20D96B6D70029B58A /* PSMTabBarControl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 517444A10D96B6D70029B58A /* PSMTabBarControl.framework */; };
0
+    517444A50D96B6E00029B58A /* PSMTabBarControl.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 517444A10D96B6D70029B58A /* PSMTabBarControl.framework */; };
0
     5190E7260D730A17000D9E53 /* CTBadge.h in Headers */ = {isa = PBXBuildFile; fileRef = 5190E7240D730A17000D9E53 /* CTBadge.h */; };
0
     5190E7270D730A17000D9E53 /* CTBadge.m in Sources */ = {isa = PBXBuildFile; fileRef = 5190E7250D730A17000D9E53 /* CTBadge.m */; };
0
     5190E72A0D730A3C000D9E53 /* CTGradient.h in Headers */ = {isa = PBXBuildFile; fileRef = 5190E7280D730A3C000D9E53 /* CTGradient.h */; };
0
@@ -41,6 +43,7 @@
0
       dstPath = "";
0
       dstSubfolderSpec = 10;
0
       files = (
0
+        517444A50D96B6E00029B58A /* PSMTabBarControl.framework in Copy Frameworks */,
0
         5190E74D0D7440D9000D9E53 /* HMDTFoundation.framework in Copy Frameworks */,
0
       );
0
       name = "Copy Frameworks";
0
@@ -62,6 +65,7 @@
0
     514292CA0CC66CDC00F9CEEF /* test */ = {isa = PBXFileReference; lastKnownFileType = folder; path = test; sourceTree = "<group>"; };
0
     514292CC0CC66CDC00F9CEEF /* vendor */ = {isa = PBXFileReference; lastKnownFileType = folder; path = vendor; sourceTree = "<group>"; };
0
     514292EE0CC6823A00F9CEEF /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = misc/English.lproj/MainMenu.nib; sourceTree = "<group>"; };
0
+    517444A10D96B6D70029B58A /* PSMTabBarControl.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PSMTabBarControl.framework; path = vendor/frameworks/PSMTabBarControl.framework; sourceTree = "<group>"; };
0
     5190E7240D730A17000D9E53 /* CTBadge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CTBadge.h; path = objc/CTBadge.h; sourceTree = "<group>"; };
0
     5190E7250D730A17000D9E53 /* CTBadge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CTBadge.m; path = objc/CTBadge.m; sourceTree = "<group>"; };
0
     5190E7280D730A3C000D9E53 /* CTGradient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CTGradient.h; path = objc/CTGradient.h; sourceTree = "<group>"; };
0
@@ -88,6 +92,7 @@
0
         4DDCA70D0ACC9A6100E082CE /* RubyCocoa.framework in Frameworks */,
0
         5190E74A0D7440CD000D9E53 /* HMDTFoundation.framework in Frameworks */,
0
         5190E7C90D744333000D9E53 /* Security.framework in Frameworks */,
0
+        517444A20D96B6D70029B58A /* PSMTabBarControl.framework in Frameworks */,
0
       );
0
       runOnlyForDeploymentPostprocessing = 0;
0
     };
0
@@ -105,6 +110,7 @@
0
       isa = PBXGroup;
0
       children = (
0
         5190E7490D7440CD000D9E53 /* HMDTFoundation.framework */,
0
+        517444A10D96B6D70029B58A /* PSMTabBarControl.framework */,
0
         5190E76A0D7441EE000D9E53 /* SRPrefDefaultKeys.h */,
0
         5190E76B0D7441EE000D9E53 /* SRPrefDefaultKeys.m */,
0
         1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
0
@@ -301,6 +307,7 @@
0
         GCC_WARN_ABOUT_RETURN_TYPE = YES;
0
         GCC_WARN_UNUSED_VARIABLE = YES;
0
         PREBINDING = NO;
0
+        SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
0
       };
0
       name = Debug;
0
     };
0
@@ -310,6 +317,7 @@
0
         GCC_WARN_ABOUT_RETURN_TYPE = YES;
0
         GCC_WARN_UNUSED_VARIABLE = YES;
0
         PREBINDING = NO;
0
+        SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
0
       };
0
       name = Release;
0
     };
0
@@ -320,8 +328,10 @@
0
         FRAMEWORK_SEARCH_PATHS = (
0
           "$(inherited)",
0
           "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
0
+          "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_2)",
0
         );
0
         FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/vendor/frameworks\"";
0
+        FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/vendor/frameworks\"";
0
         GCC_DYNAMIC_NO_PIC = NO;
0
         GCC_ENABLE_FIX_AND_CONTINUE = YES;
0
         GCC_MODEL_TUNING = G5;
0
@@ -340,8 +350,10 @@
0
         FRAMEWORK_SEARCH_PATHS = (
0
           "$(inherited)",
0
           "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
0
+          "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_2)",
0
         );
0
         FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/vendor/frameworks\"";
0
+        FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/vendor/frameworks\"";
0
         GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
0
         GCC_MODEL_TUNING = G5;
0
         INFOPLIST_FILE = Info.plist;
...
2
3
4
5
 
 
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
 
 
 
 
34
35
36
37
38
 
 
 
39
40
41
42
43
44
45
 
 
 
 
 
 
 
 
 
46
47
48
49
50
 
 
 
 
 
 
 
 
51
52
53
...
2
3
4
 
5
6
7
8
9
10
11
12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
14
15
 
 
 
16
17
18
19
20
21
22
 
 
 
23
24
25
26
27
 
 
 
 
 
28
29
30
31
32
33
34
35
36
37
38
 
 
 
39
40
41
42
43
44
45
46
47
48
49
0
@@ -2,51 +2,47 @@ $WEBAPP_DEBUG = true
0
 
0
 class ApplicationController < Rucola::RCController
0
   ib_outlet :main_window
0
- ib_outlet :webview
0
+ ib_outlet :tabView
0
+ ib_outlet :tabBarController
0
   
0
   def awakeFromNib
0
     # Make sure that SRAutoFillManager stores/retrieves usernames & passwords.
0
     OSX::NSUserDefaults.standardUserDefaults.registerDefaults({
0
       'autoFillUserPass' => true
0
     })
0
- #p OSX::NSUserDefaults.standardUserDefaults.boolForKey('autoFillUserPass')
0
-
0
- @url = OSX::NSBundle.mainBundle.infoDictionary['WebAppURL']
0
-
0
- @event_handlers = []
0
- event_handler_files = Dir.glob "#{RUBYCOCOA_ROOT + 'lib/event_handlers/'}/campfire.rb"
0
-
0
- event_handler_files.each do |event_handler_file|
0
- require event_handler_file
0
- #p WebApp::EventHandler::event_handlers
0
-
0
- #event_handler = File.constantize(event_handler_file).alloc.init
0
- event_handler = Campfire::Room.alloc.init
0
- event_handler.webView = @webview
0
- @event_handlers << event_handler
0
- end
0
     
0
     WebApp::Plugins.start
0
     
0
- @webview.frameLoadDelegate = self
0
- @webview.policyDelegate = self
0
- @webview.mainFrame.loadRequest OSX::NSURLRequest.requestWithURL(OSX::NSURL.URLWithString(@url))
0
+ setup_tabView!
0
+ setup_tabBarController!
0
+
0
+ @webViewControllers = []
0
+ addWebViewTab
0
   end
0
   
0
- def webView_didFinishLoadForFrame(webView, frame)
0
- OSX::SRAutoFillManager.sharedInstance.fillFormsWithWebView(webView)
0
- @event_handlers.each { |e| e.register_dom_observers! }
0
+ def addWebViewTab(sender = nil)
0
+ @webViewControllers << WebViewController.alloc.init
0
+ @tabView.addTabViewItem @webViewControllers.last.tabViewItem
0
   end
0
   
0
- def webView_decidePolicyForNavigationAction_request_frame_decisionListener(webView, info, request, frame, listener)
0
- log.debug "Request done for: #{request.URL.absoluteString}"
0
- navigationType = info[OSX::WebActionNavigationTypeKey].intValue
0
- OSX::SRAutoFillManager.sharedInstance.registerFormsWithWebView(webView) if navigationType == OSX::WebNavigationTypeFormSubmitted
0
- listener.use
0
+ def tabView_didCloseTabViewItem(tabView, tabViewItem)
0
+ @webViewControllers.reject! { |wvc| wvc.tabViewItem == tabViewItem }
0
+ end
0
+
0
+ private
0
+
0
+ def setup_tabView!
0
+ @tabView.removeTabViewItem(@tabView.tabViewItemAtIndex(0))
0
+ @tabView.delegate = @tabBarController
0
   end
0
   
0
- def webView_decidePolicyForNewWindowAction_request_newFrameName_decisionListener(webView, info, request, newFrameName, listener)
0
- listener.ignore
0
- OSX::NSWorkspace.sharedWorkspace.openURL(request.URL)
0
+ def setup_tabBarController!
0
+ @tabBarController.tabView = @tabView
0
+ @tabBarController.setStyleNamed('Unified')
0
+ @tabBarController.delegate = self
0
+ @tabBarController.showAddTabButton = true
0
+ button = @tabBarController.addTabButton
0
+ button.target = self
0
+ button.action = :addWebViewTab
0
   end
0
 end
0
\ No newline at end of file
...
1
 
2
3
4
5
6
7
8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
10
11
...
22
23
24
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
26
...
 
1
2
3
4
 
 
 
 
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
...
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
0
@@ -1,11 +1,40 @@
0
-class WebViewController < Rucola::RCController
0
+class WebViewController < OSX::NSObject
0
   kvc_accessor :isProcessing, :icon, :iconName, :objectCount
0
   attr_reader :tabViewItem
0
   
0
- def after_init
0
- @webView = OSX::WebView.alloc.init
0
- setup_tab_bar_item_values!
0
- create_tab_view_item!
0
+ def init
0
+ if super_init
0
+ @url = OSX::NSBundle.mainBundle.infoDictionary['WebAppURL']
0
+
0
+ @webView = OSX::WebView.alloc.init
0
+
0
+ setup_tab_bar_item_values!
0
+ create_tab_view_item!
0
+ setup_event_handlers!
0
+
0
+ @webView.frameLoadDelegate = self
0
+ @webView.policyDelegate = self
0
+ @webView.mainFrame.loadRequest OSX::NSURLRequest.requestWithURL(OSX::NSURL.URLWithString(@url))
0
+
0
+ self
0
+ end
0
+ end
0
+
0
+ def webView_didFinishLoadForFrame(webView, frame)
0
+ OSX::SRAutoFillManager.sharedInstance.fillFormsWithWebView(webView)
0
+ @event_handlers.each { |e| e.register_dom_observers! }
0
+ end
0
+
0
+ def webView_decidePolicyForNavigationAction_request_frame_decisionListener(webView, info, request, frame, listener)
0
+ log.debug "Request done for: #{request.URL.absoluteString}"
0
+ navigationType = info[OSX::WebActionNavigationTypeKey].intValue
0
+ OSX::SRAutoFillManager.sharedInstance.registerFormsWithWebView(webView) if navigationType == OSX::WebNavigationTypeFormSubmitted
0
+ listener.use
0
+ end
0
+
0
+ def webView_decidePolicyForNewWindowAction_request_newFrameName_decisionListener(webView, info, request, newFrameName, listener)
0
+ listener.ignore
0
+ OSX::NSWorkspace.sharedWorkspace.openURL(request.URL)
0
   end
0
   
0
   private
0
@@ -22,4 +51,26 @@ class WebViewController < Rucola::RCController
0
     @tabViewItem.label = "Bla: #{object_id}"
0
     @tabViewItem.view = @webView
0
   end
0
+
0
+ def setup_event_handlers!
0
+ @event_handlers = []
0
+ # event_handler_files = Dir.glob "#{RUBYCOCOA_ROOT + 'lib/event_handlers/'}/campfire.rb"
0
+ #
0
+ # event_handler_files.each do |event_handler_file|
0
+ # require event_handler_file
0
+ # #p WebApp::EventHandler::event_handlers
0
+ #
0
+ # #event_handler = File.constantize(event_handler_file).alloc.init
0
+ # event_handler = Campfire::Room.alloc.init
0
+ # p event_handler.methods(false)
0
+ # # event_handler.webView = @webView
0
+ # @event_handlers << event_handler
0
+ # end
0
+
0
+ require Rucola::RCApp.root_path + "/lib/event_handlers/campfire.rb"
0
+ event_handler = Campfire::Room.alloc.init
0
+ event_handler.webView = @webView
0
+ @event_handlers << event_handler
0
+ end
0
+
0
 end
0
\ No newline at end of file
...
43
44
45
46
47
48
49
50
51
52
53
54
55
...
43
44
45
 
 
 
 
 
 
 
46
47
48
0
@@ -43,13 +43,6 @@ module WebApp
0
       @registered_events_for_this_page = []
0
     end
0
     
0
- # Returns the body of the page as a Hpridoct document.
0
- def page_body
0
- # FIXME: check how we can get the complete document instead of only the `body`,
0
- # maybe we should just get it from the WebFrame instance...?
0
- Hpricot(@webView.mainFrame.DOMDocument.body.outerHTML.to_s)
0
- end
0
-
0
     class << self
0
       # Called whenever a page is done loading. It takes 2 arguments, which are the page +url+ and the page +title+.
0
       #
...
21
22
23
 
 
 
 
24
25
26
...
21
22
23
24
25
26
27
28
29
30
0
@@ -21,6 +21,10 @@
0
       <dict>
0
         <key>main_window</key>
0
         <string>id</string>
0
+        <key>tabBarController</key>
0
+        <string>id</string>
0
+        <key>tabView</key>
0
+        <string>id</string>
0
         <key>webview</key>
0
         <string>id</string>
0
       </dict>
...
4
5
6
7
8
9
10
11
...
4
5
6
 
 
7
8
9
0
@@ -4,8 +4,6 @@
0
 <dict>
0
   <key>IBFramework Version</key>
0
   <string>629</string>
0
-  <key>IBLastKnownRelativeProjectPath</key>
0
-  <string>../../../CampfireTest.xcodeproj</string>
0
   <key>IBOldestOS</key>
0
   <integer>5</integer>
0
   <key>IBOpenObjects</key>
...
 
0
...
1
2
0
@@ -0,0 +1 @@
0
+Versions/Current/Headers
0
\ No newline at end of file
...
 
0
...
1
2
0
@@ -0,0 +1 @@
0
+Versions/Current/PSMTabBarControl
0
\ No newline at end of file
...
 
0
...
1
2
0
@@ -0,0 +1 @@
0
+Versions/Current/Resources
0
\ No newline at end of file
...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
0
@@ -0,0 +1,123 @@
0
+//
0
+// PSMTabBarControl.h
0
+// PSMTabBarControl
0
+//
0
+// Created by John Pannell on 10/13/05.
0
+// Copyright 2005 Positive Spin Media. All rights reserved.
0
+//
0
+
0
+/*
0
+ This view provides a control interface to manage a regular NSTabView. It looks and works like the tabbed browsing interface of many popular browsers.
0
+ */
0
+
0
+#import <Cocoa/Cocoa.h>
0
+
0
+#define kPSMTabBarControlHeight 22
0
+// internal cell border
0
+#define MARGIN_X 6
0
+#define MARGIN_Y 3
0
+// padding between objects
0
+#define kPSMTabBarCellPadding 4
0
+// fixed size objects
0
+#define kPSMMinimumTitleWidth 30
0
+#define kPSMTabBarIndicatorWidth 16.0
0
+#define kPSMTabBarIconWidth 16.0
0
+#define kPSMHideAnimationSteps 2.0
0
+
0
+@class PSMOverflowPopUpButton;
0
+@class PSMRolloverButton;
0
+@class PSMTabBarCell;
0
+@protocol PSMTabStyle;
0
+
0
+enum {
0
+ PSMTab_SelectedMask = 1 << 1,
0
+ PSMTab_LeftIsSelectedMask    = 1 << 2,
0
+ PSMTab_RightIsSelectedMask = 1 << 3,
0
+ PSMTab_PositionLeftMask    = 1 << 4,
0
+ PSMTab_PositionMiddleMask    = 1 << 5,
0
+ PSMTab_PositionRightMask    = 1 << 6,
0
+ PSMTab_PositionSingleMask    = 1 << 7
0
+};
0
+
0
+@interface PSMTabBarControl : NSControl {
0
+
0
+ // control basics
0
+ NSMutableArray *_cells; // the cells that draw the tabs
0
+ IBOutlet NSTabView *tabView; // the tab view being navigated
0
+ PSMOverflowPopUpButton *_overflowPopUpButton; // for too many tabs
0
+ PSMRolloverButton *_addTabButton;
0
+
0
+ // drawing style
0
+ id<PSMTabStyle> style;
0
+ BOOL _canCloseOnlyTab;
0
+ BOOL _hideForSingleTab;
0
+ BOOL _showAddTabButton;
0
+ BOOL _sizeCellsToFit;
0
+
0
+ // cell width
0
+ int _cellMinWidth;
0
+ int _cellMaxWidth;
0
+ int _cellOptimumWidth;
0
+
0
+ // animation for hide/show
0
+ int _currentStep;
0
+ BOOL _isHidden;
0
+ BOOL _hideIndicators;
0
+ IBOutlet id partnerView; // gets resized when hide/show
0
+ BOOL _awakenedFromNib;
0
+
0
+ // drag and drop
0
+ NSEvent *_lastMouseDownEvent; // keep this for dragging reference
0
+ BOOL      _allowsDragBetweenWindows;
0
+
0
+ // MVC help
0
+ IBOutlet id delegate;
0
+}
0
+
0
+// control characteristics
0
++ (NSBundle *)bundle;
0
+
0
+// control configuration
0
+- (BOOL)canCloseOnlyTab;
0
+- (void)setCanCloseOnlyTab:(BOOL)value;
0
+- (NSString *)styleName;
0
+- (void)setStyleNamed:(NSString *)name;
0
+- (BOOL)hideForSingleTab;
0
+- (void)setHideForSingleTab:(BOOL)value;
0
+- (BOOL)showAddTabButton;
0
+- (void)setShowAddTabButton:(BOOL)value;
0
+- (int)cellMinWidth;
0
+- (void)setCellMinWidth:(int)value;
0
+- (int)cellMaxWidth;
0
+- (void)setCellMaxWidth:(int)value;
0
+- (int)cellOptimumWidth;
0
+- (void)setCellOptimumWidth:(int)value;
0
+- (BOOL)sizeCellsToFit;
0
+- (void)setSizeCellsToFit:(BOOL)value;
0
+- (BOOL)allowsDragBetweenWindows;
0
+- (void)setAllowsDragBetweenWindows:(BOOL)flag;
0
+
0
+// accessors
0
+- (NSTabView *)tabView;
0
+- (void)setTabView:(NSTabView *)view;
0
+- (id)delegate;
0
+- (void)setDelegate:(id)object;
0
+- (id)partnerView;
0
+- (void)setPartnerView:(id)view;
0
+
0
+// the buttons
0
+- (PSMRolloverButton *)addTabButton;
0
+- (PSMOverflowPopUpButton *)overflowPopUpButton;
0
+- (NSMutableArray *)representedTabViewItems;
0
+
0
+// special effects
0
+- (void)hideTabBar:(BOOL)hide animate:(BOOL)animate;
0
+
0
+@end
0
+
0
+
0
+@interface NSObject (TabBarControlDelegateMethods)
0
+- (BOOL)tabView:(NSTabView *)aTabView shouldCloseTabViewItem:(NSTabViewItem *)tabViewItem;
0
+- (void)tabView:(NSTabView *)aTabView willCloseTabViewItem:(NSTabViewItem *)tabViewItem;
0
+- (void)tabView:(NSTabView *)aTabView didCloseTabViewItem:(NSTabViewItem *)tabViewItem;
0
+@end
0
\ No newline at end of file
...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
0
@@ -0,0 +1,22 @@
0
+<?xml version="1.0" encoding="UTF-8"?>
0
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
0
+<plist version="1.0">
0
+<dict>
0
+  <key>CFBundleDevelopmentRegion</key>
0
+  <string>English</string>
0
+  <key>CFBundleExecutable</key>
0
+  <string>PSMTabBarControl</string>
0
+  <key>CFBundleIdentifier</key>
0
+  <string>com.positivespinmedia.PSMTabBarControlFramework</string>
0
+  <key>CFBundleInfoDictionaryVersion</key>
0
+  <string>6.0</string>
0
+  <key>CFBundlePackageType</key>
0
+  <string>FMWK</string>
0
+  <key>CFBundleSignature</key>
0
+  <string>PSM1</string>
0
+  <key>CFBundleVersion</key>
0
+  <string>1.1</string>
0
+  <key>NSPrincipalClass</key>
0
+  <string>PSMTabBarControl</string>
0
+</dict>
0
+</plist>
...
 
0
...
1
2
0
@@ -0,0 +1 @@
0
+A
0
\ No newline at end of file

Comments

    No one has commented yet.