mirror of
https://github.com/rn10950/RetroZilla.git
synced 2024-11-16 12:30:13 +01:00
190 lines
5.3 KiB
C++
190 lines
5.3 KiB
C++
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||
|
/* ***** BEGIN LICENSE BLOCK *****
|
||
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||
|
*
|
||
|
* The contents of this file are subject to the Mozilla Public License Version
|
||
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
||
|
* the License. You may obtain a copy of the License at
|
||
|
* http://www.mozilla.org/MPL/
|
||
|
*
|
||
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
||
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||
|
* for the specific language governing rights and limitations under the
|
||
|
* License.
|
||
|
*
|
||
|
* The Original Code is mozilla.org code.
|
||
|
*
|
||
|
* The Initial Developer of the Original Code is
|
||
|
* Netscape Communications Corporation.
|
||
|
* Portions created by the Initial Developer are Copyright (C) 1998
|
||
|
* the Initial Developer. All Rights Reserved.
|
||
|
*
|
||
|
* Contributor(s):
|
||
|
*
|
||
|
* Alternatively, the contents of this file may be used under the terms of
|
||
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||
|
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||
|
* of those above. If you wish to allow use of your version of this file only
|
||
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||
|
* use your version of this file under the terms of the MPL, indicate your
|
||
|
* decision by deleting the provisions above and replace them with the notice
|
||
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||
|
* the provisions above, a recipient may use your version of this file under
|
||
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
||
|
*
|
||
|
* ***** END LICENSE BLOCK ***** */
|
||
|
|
||
|
#include "xp.h"
|
||
|
#include "windowsx.h"
|
||
|
|
||
|
#include "resource.h"
|
||
|
#include "loggerw.h"
|
||
|
#include "profilew.h"
|
||
|
#include "actionnames.h"
|
||
|
|
||
|
extern HINSTANCE hInst;
|
||
|
static char szClassName[] = "NPSpyWindowClass";
|
||
|
|
||
|
BOOL CALLBACK MainDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
||
|
BOOL CALLBACK PauseDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
||
|
|
||
|
LoggerWin::LoggerWin() : Logger(),
|
||
|
hWnd(NULL),
|
||
|
width(0),
|
||
|
height(0),
|
||
|
x(0),
|
||
|
y(0),
|
||
|
bSaveSettings(FALSE)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
LoggerWin::~LoggerWin()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
BOOL LoggerWin::platformInit()
|
||
|
{
|
||
|
WNDCLASS wc;
|
||
|
wc.style = 0;
|
||
|
wc.lpfnWndProc = DefDlgProc;
|
||
|
wc.cbClsExtra = 0;
|
||
|
wc.cbWndExtra = DLGWINDOWEXTRA;
|
||
|
wc.hInstance = hInst;
|
||
|
wc.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON_APP));
|
||
|
wc.hCursor = LoadCursor(0, IDC_ARROW);
|
||
|
wc.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
|
||
|
wc.lpszMenuName = NULL;
|
||
|
wc.lpszClassName = szClassName;
|
||
|
|
||
|
if(!RegisterClass(&wc))
|
||
|
return FALSE;
|
||
|
|
||
|
// restore prefs
|
||
|
ProfileWin profile;
|
||
|
|
||
|
profile.getBool(NPSPY_REG_KEY_ONTOP, &bOnTop);
|
||
|
profile.getBool(NPSPY_REG_KEY_LOGTOWINDOW, &bToWindow);
|
||
|
profile.getBool(NPSPY_REG_KEY_LOGTOCONSOLE, &bToConsole);
|
||
|
profile.getBool(NPSPY_REG_KEY_LOGTOFILE, &bToFile);
|
||
|
profile.getBool(NPSPY_REG_KEY_SPALID, &bSPALID);
|
||
|
profile.getString(NPSPY_REG_KEY_LOGFILENAME, szFile, strlen(szFile));
|
||
|
|
||
|
for(int i = 1; i < TOTAL_NUMBER_OF_API_CALLS; i++)
|
||
|
{
|
||
|
BOOL selected = TRUE;
|
||
|
if(profile.getBool(ActionName[i], &selected))
|
||
|
bMutedCalls[i] = !selected;
|
||
|
}
|
||
|
|
||
|
if(!profile.getSizeAndPosition(&width, &height, &x, &y))
|
||
|
{
|
||
|
width = 0;
|
||
|
height = 0;
|
||
|
x = 0;
|
||
|
y = 0;
|
||
|
}
|
||
|
|
||
|
hWnd = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_DIALOG_MAIN), GetDesktopWindow(), (DLGPROC)MainDlgProc, (LPARAM)this);
|
||
|
if(hWnd == NULL)
|
||
|
{
|
||
|
UnregisterClass(szClassName, hInst);
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
if(bOnTop)
|
||
|
SetWindowPos(hWnd, bOnTop ? HWND_TOPMOST : HWND_NOTOPMOST, 0,0,0,0, SWP_NOMOVE | SWP_NOSIZE);
|
||
|
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
void LoggerWin::platformShut()
|
||
|
{
|
||
|
if(hWnd != NULL)
|
||
|
{
|
||
|
char szLog[] = "--- GOING AWAY... PRESS SPACE BAR TO CONTINUE ---";
|
||
|
HWND hWndOutput = GetDlgItem(hWnd, IDC_MAIN_OUTPUT);
|
||
|
ListBox_AddString(hWndOutput, "");
|
||
|
ListBox_AddString(hWndOutput, szLog);
|
||
|
int count = ListBox_GetCount(hWndOutput);
|
||
|
ListBox_SetCaretIndex(hWndOutput, count - 1);
|
||
|
UpdateWindow(hWndOutput);
|
||
|
|
||
|
DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG_PAUSE), hWnd, (DLGPROC)PauseDlgProc);
|
||
|
|
||
|
ProfileWin profile;
|
||
|
|
||
|
RECT rc;
|
||
|
if(GetWindowRect(hWnd, &rc))
|
||
|
profile.setSizeAndPosition(rc.right - rc.left, rc.bottom - rc.top, rc.left, rc.top);
|
||
|
|
||
|
DestroyWindow(hWnd);
|
||
|
hWnd = NULL;
|
||
|
}
|
||
|
|
||
|
UnregisterClass(szClassName, hInst);
|
||
|
}
|
||
|
|
||
|
void LoggerWin::onDestroyWindow()
|
||
|
{
|
||
|
hWnd = NULL;
|
||
|
}
|
||
|
|
||
|
void LoggerWin::dumpStringToMainWindow(char * string)
|
||
|
{
|
||
|
// listboxes don't want <CR> and <LF> so cut them off if any. The order is important.
|
||
|
char * p = strrchr(string, '\n');
|
||
|
if(p)
|
||
|
*p = '\0';
|
||
|
|
||
|
p = strrchr(string, '\r');
|
||
|
if(p)
|
||
|
*p = '\0';
|
||
|
|
||
|
HWND hWndOutput = GetDlgItem(hWnd, IDC_MAIN_OUTPUT);
|
||
|
ListBox_AddString(hWndOutput, string);
|
||
|
int count = ListBox_GetCount(hWndOutput);
|
||
|
if(count == 32767)
|
||
|
ListBox_ResetContent(hWndOutput);
|
||
|
ListBox_SetCaretIndex(hWndOutput, count - 1);
|
||
|
UpdateWindow(hWndOutput);
|
||
|
}
|
||
|
|
||
|
void LoggerWin::onClear()
|
||
|
{
|
||
|
HWND hWndOutput = GetDlgItem(hWnd, IDC_MAIN_OUTPUT);
|
||
|
ListBox_ResetContent(hWndOutput);
|
||
|
UpdateWindow(hWndOutput);
|
||
|
}
|
||
|
|
||
|
Logger * NewLogger()
|
||
|
{
|
||
|
LoggerWin * res = new LoggerWin();
|
||
|
return res;
|
||
|
}
|
||
|
|
||
|
void DeleteLogger(Logger * logger)
|
||
|
{
|
||
|
if(logger)
|
||
|
delete logger;
|
||
|
}
|