webengine/osswebengine/WebKitTools/Drosera/win/DebuggerApplication.cpp
changeset 0 dd21522fd290
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/WebKitTools/Drosera/win/DebuggerApplication.cpp	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2007 Apple, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer. 
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution. 
+ * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ *     its contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission. 
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "DebuggerApplication.h"
+
+// ------------------------------------------------------------------------------------------------------------
+// FIXME This whole file needs to be re-written for win. However I'm leaving the functions here so I know
+// what still needs to be done.  Please ignore this code for now I have not looked at it closely.
+// ------------------------------------------------------------------------------------------------------------
+
+//#include <WebKit/WebCoreStatistics.h>
+//void DebuggerApplication::applicationDidFinishLaunching(NSNotification* ) // Get's called after main and the app has been created from the Nibs (called before applicationDidFinishLaunching)
+//{
+//    WebCoreStatistics.setShouldPrintExceptions(true);   //WebKit
+
+    // Adding functions to be associated with notifications?
+    // Need some way to get/handle notifications (JS?)
+//    [[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(serverLoaded:) name:WebScriptDebugServerDidLoadNotification object:nil];
+//    [[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(serverLoaded:) name:WebScriptDebugServerQueryReplyNotification object:nil];
+//    [[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(serverUnloaded:) name:WebScriptDebugServerWillUnloadNotification object:nil];
+//    [[NSDistributedNotificationCenter defaultCenter] postNotificationName:WebScriptDebugServerQueryNotification object:nil];
+
+//#pragma mark -
+//#pragma mark Server Detection Callbacks
+
+void DebuggerApplication::serverLoaded()
+{
+    // Get the process you are debugging
+//    int processId = [notification.userInfo(WebScriptDebugServerProcessIdentifierKey).(intValue);
+    // make sure THIS is not the process
+    //if (processId == [[NSProcessInfo processInfo] processIdentifier])
+    //    return;
+
+    //Get the server info from passed in notification?
+    //check if info is in the server first
+    m_knownServerNames->add(1, "Fake Server"); // setObject:info forKey:[notification object]];
+}
+
+void DebuggerApplication::serverUnloaded()
+{
+    // remove passed in server
+    m_knownServerNames->remove(1);
+}
+
+//#pragma mark -
+//#pragma mark Attach Panel Actions
+
+void DebuggerApplication::attach(int sender)   // actually attach Drosera to the WebKit app.
+{
+    //Check that there are servers
+
+    // get selected server
+    unsigned int row = sender; //[[attachTable selectedRowIndexes] firstIndex];
+    std::string key = m_knownServerNames->get(row);
+
+//    // DebuggerDocument will release on close
+//    DebuggerDocument *document = [[DebuggerDocument alloc] initWithServerName:key];
+//    [document showWindow:sender];
+}
+
+//#pragma mark -
+//#pragma mark Table View Delegate
+
+// How will delegates work in C++?
+//int numberOfRowsInTableView(NSTableView* tableView) // delegate. Returns number of rows in table. duh.
+int DebuggerApplication::numberOfRowsInTableView() const
+{
+    return m_knownServerNames->size();
+}
+
+std::string DebuggerApplication::tableView()//(NSTableView* tableView, NSTableColumn* tableColumn, int row) // delegate. Called when table is displayed
+{
+    return "";
+}
+
+void DebuggerApplication::tableView(/*(NSTableView* tableView, ID cell, NSTableColumn* tableColumn,*/ int row) // delegate. Called when table is displayed, displays the icon in the col/row ?
+{
+    std::string key = m_knownServerNames->get(row);
+//    NSMutableDictionary *info = [m_knownServerNames objectForKey:key];
+//    string *processName = [info objectForKey:WebScriptDebugServerProcessNameKey];
+//    NSImage *icon = [info objectForKey:@"icon"];
+
+//    if (!icon) {
+//        NSString *path = [[NSWorkspace sharedWorkspace] fullPathForApplication:processName];
+//        if (path) icon = [[NSWorkspace sharedWorkspace] iconForFile:path];
+//        if (!icon) icon = [[NSWorkspace sharedWorkspace] iconForFileType:@"app"];
+//        if (icon) [info setObject:icon forKey:@"icon"];
+//        [icon setScalesWhenResized:YES];
+//        [icon setSize:NSMakeSize(32, 32)];
+//    }
+
+//    [cell setImage:icon];
+//    [cell setTitle:processName];
+}
+