2006年 11月 02日

Creammonkey Debug mode

diff -ur /Volumes/Creammonkey/Source/CMController.h Creammonkey/CMController.h
--- /Volumes/Creammonkey/Source/CMController.h	2006-03-22 01:07:05.000000000 +0900
+++ Creammonkey/CMController.h	2006-11-02 00:27:29.000000000 +0900
@@ -12,9 +12,12 @@
 	NSMutableArray* scripts_;
 	NSString* scriptDir_;
     NSMutableSet* targetPages_;
+	
+	BOOL isDebug;
 }
 
 - (IBAction) toggleScriptEnable: (id) sender;
+- (IBAction) toggleDebug: (id) sender;
 - (IBAction) uninstallSelected: (id) sender;
 - (IBAction) orderFrontAboutPanel: (id) sender;
 - (IBAction) reloadUserScripts: (id) sender;
diff -ur /Volumes/Creammonkey/Source/CMController.m Creammonkey/CMController.m
--- /Volumes/Creammonkey/Source/CMController.m	2006-07-05 23:28:50.000000000 +0900
+++ Creammonkey/CMController.m	2006-11-02 00:34:43.000000000 +0900
@@ -233,6 +233,9 @@
 		[webView stringByEvaluatingJavaScriptFromString: @"document.body.__creammonkeyed__ = true;"];
     }
 	
+	if (isDebug)
+		[self reloadUserScripts: nil];
+	
     // Eval!
 	NSArray* ary = [self matchedScripts: url];
 	int i;
@@ -248,8 +251,14 @@
     
     [script setEnabled: [sender state] != NSOnState];
     [sender setState: [script isEnabled] ? NSOnState : NSOffState];
-    
-    [self saveScriptsConfig];
+}
+
+- (IBAction) toggleDebug: (id) sender
+{
+	isDebug = !isDebug;
+	[sender setState: isDebug ? NSOnState : NSOffState];
+	
+	[self saveScriptsConfig];
 }
 
 - (IBAction) uninstallSelected: (id) sender
@@ -305,6 +314,8 @@
 	scripts_ = nil;    
     targetPages_ = [[NSMutableSet alloc] init];
 	
+	isDebug = FALSE;
+	
 	[NSBundle loadNibNamed: @"Menu.nib" owner: self];
 	
 	return self;
diff -ur /Volumes/Creammonkey/Source/English.lproj/Menu.nib/classes.nib Creammonkey/English.lproj/Menu.nib/classes.nib
--- /Volumes/Creammonkey/Source/English.lproj/Menu.nib/classes.nib	2006-03-22 01:07:18.000000000 +0900
+++ Creammonkey/English.lproj/Menu.nib/classes.nib	2006-11-02 00:38:41.000000000 +0900
@@ -4,6 +4,7 @@
             ACTIONS = {
                 orderFrontAboutPanel = id; 
                 reloadUserScripts = id; 
+                toggleDebug = id; 
                 toggleScriptEnable = id; 
                 uninstallSelected = id; 
             }; 
@@ -12,7 +13,13 @@
             OUTLETS = {menu = NSMenu; scriptsController = NSArrayController; }; 
             SUPERCLASS = NSObject; 
         }, 
-        {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }
+        {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 
+        {
+            ACTIONS = {toggleDebug = id; }; 
+            CLASS = NSArrayController; 
+            LANGUAGE = ObjC; 
+            SUPERCLASS = NSObjectController; 
+        }
     ); 
     IBVersion = 1; 
 }
¥ No newline at end of file

diff 取りにくいなぁ……このパッチあててもだめかも。手元では動いているけど……

やった変更:

  • Interface Builder で Debug 項目を作成
  • FileOwner の Action に toggleDebug: を追加
  • その二つを connect
  • CMController.{h,m} を編集

これでメニューの Debug にチェックがついているときのみ毎回リロードするようになる。別の言語ファイルとかよくわからんので放置した。

http://lowreal.net/blog/2006/11/02/1