- Tree cleanups proposed on the mailing list. Move all non-Core OS modules to rosapps. Tests were already moved by Fireball to rostests.

svn path=/trunk/; revision=26032
This commit is contained in:
Alex Ionescu 2007-03-08 18:59:45 +00:00
parent a90321860f
commit ad07a1e58f
529 changed files with 2 additions and 96682 deletions

View file

@ -13,30 +13,15 @@
<directory name="cmdutils">
<xi:include href="cmdutils/cmdutils.rbuild" />
</directory>
<directory name="devmgr">
<xi:include href="devmgr/devmgr.rbuild" />
</directory>
<directory name="downloader">
<xi:include href="downloader/downloader.rbuild" />
<directory name="control">
<xi:include href="control/control.rbuild" />
</directory>
<directory name="games">
<xi:include href="games/games.rbuild" />
</directory>
<directory name="getfirefox">
<xi:include href="getfirefox/getfirefox.rbuild" />
</directory>
<directory name="gettype">
<xi:include href="gettype/gettype.rbuild" />
</directory>
<directory name="hostname">
<xi:include href="hostname/hostname.rbuild" />
</directory>
<directory name="ibrowser">
<xi:include href="ibrowser/ibrowser.rbuild" />
</directory>
<directory name="imagesoft">
<xi:include href="imagesoft/imagesoft.rbuild" />
</directory>
<directory name="msconfig">
<xi:include href="msconfig/msconfig.rbuild" />
</directory>
@ -52,21 +37,12 @@
<directory name="regedit">
<xi:include href="regedit/regedit.rbuild" />
</directory>
<directory name="reporterror">
<xi:include href="reporterror/reporterror.rbuild" />
</directory>
<directory name="sc">
<xi:include href="sc/sc.rbuild" />
</directory>
<directory name="sm">
<xi:include href="sm/sm.rbuild" />
</directory>
<directory name="screensavers">
<xi:include href="screensavers/screensavers.rbuild" />
</directory>
<directory name="screenshot">
<xi:include href="screenshot/screenshot.rbuild" />
</directory>
<directory name="shutdown">
<xi:include href="shutdown/shutdown.rbuild" />
</directory>
@ -76,18 +52,9 @@
<directory name="taskmgr">
<xi:include href="taskmgr/taskmgr.rbuild" />
</directory>
<directory name="winefile">
<xi:include href="winefile/winefile.rbuild" />
</directory>
<directory name="wordpad">
<xi:include href="wordpad/wordpad.rbuild" />
</directory>
<directory name="control">
<xi:include href="control/control.rbuild" />
</directory>
<directory name="utils">
<xi:include href="utils/utils.rbuild" />
</directory>
<directory name="winver">
<xi:include href="winver/winver.rbuild" />
</directory>

View file

@ -1,730 +0,0 @@
/* Device manager
* (C) 2005 - Hervé Poussineau (hpoussin@reactos.org)
* GUI: Michael Fritscher (michael@fritscher.net)
*
*/
#define INITGUID
#include <windows.h>
#include <setupapi.h>
#include <stdio.h>
#include <tchar.h>
#include <commctrl.h>
#include <windows.h>
#include <commctrl.h>
#if defined (__GNUC__)
#include <winioctl.h>
#endif
/* FIXME: should be in cfgmgr32.h */
typedef DWORD CONFIGRET;
typedef DWORD DEVINST, *PDEVINST;
#define CM_DRP_DEVICEDESC 0x00000001
#define MAX_DEVICE_ID_LEN 200
#define MAX_CLASS_NAME_LEN 32
#define CR_SUCCESS 0x00000000
#define CR_NO_SUCH_DEVINST 0x0000000D
#define CR_NO_SUCH_VALUE 0x00000025
#ifdef _UNICODE
typedef WCHAR *DEVINSTID_W;
CONFIGRET WINAPI CM_Get_DevNode_Registry_PropertyW(DEVINST, ULONG, PULONG, PVOID, PULONG, ULONG);
CONFIGRET WINAPI CM_Locate_DevNodeW(PDEVINST, DEVINSTID_W, ULONG);
#define CM_Get_DevNode_Registry_Property CM_Get_DevNode_Registry_PropertyW
#define CM_Locate_DevNode CM_Locate_DevNodeW
#else
typedef CHAR *DEVINSTID_A;
CONFIGRET WINAPI CM_Get_DevNode_Registry_PropertyA(DEVINST, ULONG, PULONG, PVOID, PULONG, ULONG);
CONFIGRET WINAPI CM_Locate_DevNodeA(PDEVINST, DEVINSTID_A, ULONG);
#define CM_Get_DevNode_Registry_Property CM_Get_DevNode_Registry_PropertyA
#define CM_Locate_DevNode CM_Locate_DevNodeA
#endif
CONFIGRET WINAPI CM_Enumerate_Classes(ULONG, LPGUID, ULONG);
CONFIGRET WINAPI CM_Get_Child(PDEVINST, DEVINST, ULONG);
CONFIGRET WINAPI CM_Get_Sibling(PDEVINST, DEVINST, ULONG);
/* end of cfgmgr32.h */
/**************************************************************************
Function Prototypes
**************************************************************************/
BOOL InitApplication(HINSTANCE);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);
void CreateListView(HINSTANCE, HWND);
void ResizeListView(HWND);
BOOL InitListView();
void InsertIntoListView(int, LPTSTR, LPTSTR);
LRESULT ListViewNotify(HWND, LPARAM);
void SwitchView(HWND, DWORD);
BOOL DoContextMenu(HWND, WPARAM, LPARAM);
void UpdateMenu(HWND, HMENU);
BOOL InsertListViewItems();
void PositionHeader();
void CreateButtons(HINSTANCE hInstance, HWND hwndParent);
void ListByClass();
/**************************************************************************
Global Variables
**************************************************************************/
HINSTANCE g_hInst;
TCHAR g_szClassName[] = TEXT("VListVwClass");
HWND hWnd;
HWND hwndListView;
HWND hwndButtonListByClass;
HWND hwndButtonListByConnection;
HWND hwndButtonListByInterface;
HWND hwndButtonExit;
TCHAR temp [255];
HDC hDC;
TCHAR empty [255] = TEXT(" ");
void ListByClass()
{
GUID ClassGuid;
TCHAR ClassDescription[MAX_PATH];
TCHAR ClassName[MAX_CLASS_NAME_LEN];
TCHAR PropertyBuffer[256];
HKEY KeyClass;
HDEVINFO hDevInfo;
SP_DEVINFO_DATA DeviceInfoData;
int i = 0, j;
long Size;
long rc;
SendMessage(hwndListView, WM_SETREDRAW, FALSE, 0);
(void)ListView_DeleteAllItems(hwndListView);
while (1)
{
CONFIGRET res;
res = CM_Enumerate_Classes(i, &ClassGuid, 0);
if (res == CR_NO_SUCH_VALUE)
break;
i++;
ClassName[0] = '\0';
if (!SetupDiClassNameFromGuid(
&ClassGuid,
ClassName,
sizeof(ClassName) / sizeof(ClassName[0]),
NULL))
{
_tprintf(_T("SetupDiClassNameFromGuid() failed with status 0x%lx\n"), GetLastError());
continue;
}
/* Get class description */
KeyClass = SetupDiOpenClassRegKey(
&ClassGuid,
KEY_READ);
if (KeyClass == INVALID_HANDLE_VALUE)
{
_tprintf(_T("SetupDiOpenClassRegKey() failed with status 0x%lx\n"), GetLastError());
continue;
}
Size = sizeof(ClassDescription);
rc = RegQueryValue(KeyClass, NULL, ClassDescription, &Size);
if (rc == ERROR_SUCCESS)
{
InsertIntoListView(i,ClassDescription,ClassName);
TextOut(hDC, 200, 40, empty, (int) strlen(empty));
TextOut(hDC, 200, 40, ClassDescription, (int) strlen(ClassDescription));
_tprintf(_T("%d %s (%s)\n"), i, ClassName, ClassDescription);
}
else
_tprintf(_T("RegQueryValue() failed with status 0x%lx\n"), rc);
RegCloseKey(KeyClass);
/* Enumerate devices in the class */
hDevInfo = SetupDiGetClassDevs(
&ClassGuid,
NULL, /* Enumerator */
NULL, /* hWnd parent */
DIGCF_PRESENT);
if (hDevInfo == INVALID_HANDLE_VALUE)
continue;
j = 0;
while (1)
{
DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
if (!SetupDiEnumDeviceInfo(
hDevInfo,
j,
&DeviceInfoData))
{
break;
}
j++;
if (SetupDiGetDeviceRegistryProperty(
hDevInfo,
&DeviceInfoData,
SPDRP_DEVICEDESC,
NULL, /* Property reg data type */
(PBYTE)PropertyBuffer,
sizeof(PropertyBuffer),
NULL) /* Required size */)
{
_tprintf(_T("- %s\n"), PropertyBuffer);
InsertIntoListView(0,PropertyBuffer," ");
}
else if (SetupDiGetDeviceRegistryProperty(
hDevInfo,
&DeviceInfoData,
SPDRP_PHYSICAL_DEVICE_OBJECT_NAME,
NULL, /* Property reg data type */
(PBYTE)PropertyBuffer,
sizeof(PropertyBuffer),
NULL) /* Required size */)
{
_tprintf(_T("- %s\n"), PropertyBuffer);
InsertIntoListView(0,PropertyBuffer," ");
TextOut(hDC, 200, 40, empty, (int) strlen(empty));
TextOut(hDC, 200, 40, PropertyBuffer, (int) strlen(PropertyBuffer));
}
else
_tprintf(_T("SetupDiGetDeviceRegistryProperty() failed with status 0x%lx\n"), GetLastError());
}
SetupDiDestroyDeviceInfoList(hDevInfo);
}
SendMessage(hwndListView, WM_SETREDRAW, TRUE, 0);
}
CONFIGRET GetDeviceName(DEVINST DevInst, LPTSTR Buffer, DWORD BufferLength)
{
ULONG BufferSize = BufferLength * sizeof(TCHAR);
CONFIGRET cr;
cr = CM_Get_DevNode_Registry_Property(DevInst, CM_DRP_DEVICEDESC, NULL, Buffer, &BufferSize, 0);
if (cr != CR_SUCCESS)
{
_tprintf(_T("CM_Get_DevNode_Registry_Property() failed, cr= 0x%lx\n"), cr);
}
return cr;
}
CONFIGRET ListSubNodes(DEVINST parent, DWORD Level)
{
CONFIGRET cr;
DEVINST child;
cr = CM_Get_Child(&child, parent, 0);
if (cr == CR_NO_SUCH_DEVINST)
return CR_SUCCESS;
else if (cr != CR_SUCCESS)
{
_tprintf(_T("CM_Get_Child() failed, cr= 0x%lx\n"), cr);
return cr;
}
do
{
#define DISPLAY_LENGTH (MAX_PATH + MAX_DEVICE_ID_LEN)
DWORD DisplayLength = DISPLAY_LENGTH;
TCHAR DisplayName[DISPLAY_LENGTH];
ULONG i = Level;
TCHAR LevelSpaces [ 255 ];
cr = GetDeviceName(child, DisplayName, DisplayLength);
LevelSpaces[0] = '\0';
while (i-- != 0)
{
_tprintf(_T(" "));
sprintf(LevelSpaces,"%s%s",LevelSpaces," ");
}
if (cr == CR_SUCCESS)
{
_tprintf(_T("%s\n"), DisplayName);
sprintf(temp,"%s%s",LevelSpaces,DisplayName);
InsertIntoListView(0,temp," ");
TextOut(hDC, 200, 40, empty, (int) strlen(empty));
TextOut(hDC, 200, 40, DisplayName, (int) strlen(DisplayName));
}
else
{
_tprintf(_T("(unknown device)\n"));
sprintf(temp,"%s%s",LevelSpaces,"(unknown device)");
InsertIntoListView(0,temp," ");
TextOut(hDC, 200, 40, empty, (int) strlen(empty));
TextOut(hDC, 200, 40, "(unknown device)", (int) strlen("(unknown device)"));
}
cr = ListSubNodes(child, Level + 1);
if (cr != CR_SUCCESS)
return cr;
cr = CM_Get_Sibling(&child, child, 0);
if (cr != CR_SUCCESS && cr != CR_NO_SUCH_DEVINST)
{
_tprintf(_T("CM_Get_Sibling() failed, cr= 0x%lx\n"), cr);
return cr;
}
} while (cr == CR_SUCCESS);
return CR_SUCCESS;
}
int ListByConnection()
{
CONFIGRET cr;
DEVINST root;
(void)ListView_DeleteAllItems(hwndListView);
cr = CM_Locate_DevNode(&root, TEXT("Root\\*PNP0A03\\0000"), 0);
if (cr != CR_SUCCESS)
{
_tprintf(_T("CM_Locate_DevNode() failed, cr= 0x%lx\n"), cr);
return 1;
}
SendMessage(hwndListView, WM_SETREDRAW, FALSE, 0);
cr = ListSubNodes(root, 0);
SendMessage(hwndListView, WM_SETREDRAW, TRUE, 0);
if (cr != CR_SUCCESS)
return 2;
return 0;
}
int ListByInterface(const GUID* guid)
{
HDEVINFO hDevInfo;
CHAR Buffer[sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA) + 0x100];
PSP_DEVICE_INTERFACE_DETAIL_DATA DeviceInterfaceDetailData;
DWORD i;
SP_DEVICE_INTERFACE_DATA DeviceInterfaceData;
(void)ListView_DeleteAllItems(hwndListView);
DeviceInterfaceDetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA)Buffer;
DeviceInterfaceDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
hDevInfo = SetupDiGetClassDevs(
guid,
NULL, /* Enumerator */
NULL, /* hwndParent */
DIGCF_DEVICEINTERFACE);
if (hDevInfo == INVALID_HANDLE_VALUE)
{
printf("SetupDiGetClassDevs() failed with status 0x%lx\n", GetLastError());
return 1;
}
i = 0;
DeviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
SendMessage(hwndListView, WM_SETREDRAW, FALSE, 0);
while (TRUE)
{
if (!SetupDiEnumDeviceInterfaces(
hDevInfo,
NULL,
guid,
i,
&DeviceInterfaceData))
{
if (GetLastError() != ERROR_NO_MORE_ITEMS)
printf("SetupDiEnumDeviceInterfaces() failed with status 0x%lx\n", GetLastError());
break;
}
i++;
if (SetupDiGetDeviceInterfaceDetail(hDevInfo, &DeviceInterfaceData, DeviceInterfaceDetailData, sizeof(Buffer), NULL, NULL))
{
_tprintf(_T("- device %-2ld: %s\n"), i, DeviceInterfaceDetailData->DevicePath);
TextOut(hDC, 200, 40, empty, (int) strlen(empty));
TextOut(hDC, 200, 40, DeviceInterfaceDetailData->DevicePath, (int) strlen(DeviceInterfaceDetailData->DevicePath));
InsertIntoListView(i,DeviceInterfaceDetailData->DevicePath," ");
}
else
{
_tprintf(_T("- device %ld\n"), i);
InsertIntoListView(i," "," ");
}
}
SendMessage(hwndListView, WM_SETREDRAW, TRUE, 0);
SetupDiDestroyDeviceInfoList(hDevInfo);
return 0;
}
/*int main(void)
{
ListByClass();
ListByInterface(&GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR);
ListByConnection();
return 0;
}*/
//GUI
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
UNREFERENCED_PARAMETER(lpCmdLine);
UNREFERENCED_PARAMETER(hInstance);
g_hInst = hInstance;
if(!hPrevInstance)
if(!InitApplication(hInstance))
return FALSE;
//required to use the common controls
InitCommonControls();
/* Perform initializations that apply to a specific instance */
if (!InitInstance(hInstance, nCmdShow))
return FALSE;
/* Acquire and dispatch messages until a WM_QUIT uMessage is received. */
while(GetMessage( &msg, NULL, 0x00, 0x00))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
BOOL InitApplication(HINSTANCE hInstance)
{
WNDCLASSEX wcex;
ATOM aReturn;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = 0;
wcex.lpfnWndProc = (WNDPROC)MainWndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW );
wcex.lpszMenuName = 0;
wcex.lpszClassName = g_szClassName;
wcex.hIcon = 0;
wcex.hIconSm = 0;
aReturn = RegisterClassEx(&wcex);
if(0 == aReturn)
{
WNDCLASS wc;
wc.style = 0;
wc.lpfnWndProc = (WNDPROC)MainWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = 0;
wc.hCursor = 0;
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW);
wc.lpszMenuName = 0;
wc.lpszClassName = g_szClassName;
aReturn = RegisterClass(&wc);
}
return aReturn;
}
BOOL InitInstance( HINSTANCE hInstance,
int nCmdShow)
{
HWND hWnd;
TCHAR szTitle[MAX_PATH] = TEXT("Device viewer");
g_hInst = hInstance;
/* Create a main window for this application instance. */
hWnd = CreateWindowEx( 0,
g_szClassName,
szTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
/* If window could not be created, return "failure" */
if (!hWnd)
return FALSE;
/* Make the window visible; update its client area; and return "success" */
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
hDC = GetDC(hWnd);
return TRUE;
}
LRESULT CALLBACK MainWndProc( HWND hWnd,
UINT uMessage,
WPARAM wParam,
LPARAM lParam)
{
switch (uMessage)
{
case WM_CREATE:
// create the TreeView control
CreateListView(g_hInst, hWnd);
//initialize the TreeView control
InitListView();
CreateButtons(g_hInst, hWnd);
TextOut(hDC, 200, 40, empty, (int) strlen(empty));
break;
case WM_SIZE:
ResizeListView(hWnd);
break;
case WM_DESTROY:
ReleaseDC(hWnd, hDC);
PostQuitMessage(0);
break;
case WM_COMMAND:
if (HIWORD(wParam) == BN_CLICKED &&
(HWND) lParam == hwndButtonListByClass)
{
ListByClass();
}
if (HIWORD(wParam) == BN_CLICKED &&
(HWND) lParam == hwndButtonListByConnection)
{
ListByConnection();
}
if (HIWORD(wParam) == BN_CLICKED &&
(HWND) lParam == hwndButtonListByInterface)
{
ListByInterface(&GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR);
}
if (HIWORD(wParam) == BN_CLICKED &&
(HWND) lParam == hwndButtonExit)
{
/* Close the window. */
DestroyWindow (hWnd);
} return 0;
break;
default:
break;
}
return DefWindowProc(hWnd, uMessage, wParam, lParam);
}
void CreateListView(HINSTANCE hInstance, HWND hwndParent)
{
DWORD dwStyle;
UNREFERENCED_PARAMETER(hInstance);
dwStyle = WS_TABSTOP |
WS_CHILD |
WS_BORDER |
WS_VISIBLE |
LVS_AUTOARRANGE |
LVS_REPORT ;//|
//LVS_OWNERDATA;
hwndListView = CreateWindowEx( WS_EX_CLIENTEDGE, // ex style
WC_LISTVIEW, // class name - defined in commctrl.h
TEXT(""), // dummy text
dwStyle, // style
0, // x position
0, // y position
0, // width
0, // height
hwndParent, // parent
0,//(HMENU)ID_LISTVIEW, // ID
g_hInst, // instance
NULL); // no extra data
ResizeListView(hwndParent);
}
void ResizeListView(HWND hwndParent)
{
RECT rc;
GetClientRect(hwndParent, &rc);
MoveWindow( hwndListView,
rc.left,
rc.top+60,
rc.right - rc.left,
rc.bottom - rc.top-60,
TRUE);
}
void PositionHeader()
{
HWND hwndHeader = GetWindow(hwndListView, GW_CHILD);
DWORD dwStyle = GetWindowLong(hwndListView, GWL_STYLE);
/*To ensure that the first item will be visible, create the control without
the LVS_NOSCROLL style and then add it here*/
dwStyle |= LVS_NOSCROLL;
SetWindowLong(hwndListView, GWL_STYLE, dwStyle);
//only do this if we are in report view and were able to get the header hWnd
if(((dwStyle & LVS_TYPEMASK) == LVS_REPORT) && hwndHeader)
{
RECT rc;
HD_LAYOUT hdLayout;
WINDOWPOS wpos;
GetClientRect(hwndListView, &rc);
hdLayout.prc = &rc;
hdLayout.pwpos = &wpos;
(void)Header_Layout(hwndHeader, &hdLayout);
SetWindowPos( hwndHeader,
wpos.hwndInsertAfter,
wpos.x,
wpos.y,
wpos.cx,
wpos.cy,
wpos.flags | SWP_SHOWWINDOW);
(void)ListView_EnsureVisible(hwndListView, 0, FALSE);
}
}
BOOL InitListView()
{
LV_COLUMN lvColumn;
int i;
TCHAR szString[3][20] = {TEXT("#"), TEXT("Name"), TEXT("Intern name")};
//empty the list
(void)ListView_DeleteAllItems(hwndListView);
//initialize the columns
lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvColumn.fmt = LVCFMT_LEFT;
i=0;
lvColumn.cx = 20;
lvColumn.pszText = szString[i];
(void)ListView_InsertColumn(hwndListView, i, &lvColumn);
i=1;
lvColumn.cx = 400;
lvColumn.pszText = szString[i];
(void)ListView_InsertColumn(hwndListView, i, &lvColumn);
i=2;
lvColumn.cx = 150;
lvColumn.pszText = szString[i];
(void)ListView_InsertColumn(hwndListView, i, &lvColumn);
return TRUE;
}
typedef struct tagLINE_INFO
{
DWORD dwValType;
LPTSTR name;
void* val;
size_t val_len;
} LINE_INFO, *PLINE_INFO;
void InsertIntoListView(int typ, LPTSTR name, LPTSTR intern_name)
{
//MessageBox(hWnd, "You just pressed Ctrl+a", "Hotkey", MB_OK | MB_ICONINFORMATION);
TCHAR temp[ 255 ];
//LINE_INFO* linfo;
LVITEM item;
int index;
//linfo->name = Name;
item.mask = LVIF_TEXT;
item.iItem = 9999;
item.iSubItem = 0;
item.state = 0;
//item.statemask = 0;
item.pszText = (char*) malloc(10);
if (typ>=1)
{
sprintf(temp,"%i",typ);
item.pszText = temp;
}
else
item.pszText = "";
item.cchTextMax = (int) _tcslen(item.pszText);
if (item.cchTextMax == 0)
item.pszText = LPSTR_TEXTCALLBACK;
item.iImage = 0;
//item.iIdent = 0;
//item.iGroupId = 0;
//item.cColumns = 0 ;
//item.puColumns = 0;
//item.lParam = (LPARAM)linfo;
index = ListView_InsertItem(hwndListView, &item);
ListView_SetItemText(hwndListView, index, 1, name);
ListView_SetItemText(hwndListView, index, 2, intern_name);
}
void CreateButtons(HINSTANCE hInstance, HWND hwndParent)
{
UNREFERENCED_PARAMETER(hInstance);
hwndButtonListByClass = CreateWindowEx (
0,
"button", /* Builtin button class */
"List by Class",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
0, 0, 190, 30,
hwndParent, /* Parent is this window. */
0, /* Control ID: 1 */
g_hInst,
NULL
);
hwndButtonListByConnection = CreateWindowEx (
0,
"button", /* Builtin button class */
"List by Connection (PCI)",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
200, 0, 190, 30,
hwndParent, /* Parent is this window. */
0, /* Control ID: 1 */
g_hInst,
NULL
);
hwndButtonListByInterface = CreateWindowEx (
0,
"button", /* Builtin button class */
"List by Interface",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
400, 0, 190, 30,
hwndParent, /* Parent is this window. */
0, /* Control ID: 1 */
g_hInst,
NULL
);
hwndButtonExit = CreateWindowEx (
0,
"button", /* Builtin button class */
"Exit",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
0, 30, 190, 30,
hwndParent, /* Parent is this window. */
0, /* Control ID: 1 */
g_hInst,
NULL
);
}

View file

@ -1,15 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
<module name="devmgrapp" type="win32gui" installbase="system32" installname="devmgr.exe">
<define name="__USE_W32API" />
<define name="DEFINE_GUID" />
<library>ntdll</library>
<library>setupapi</library>
<library>gdi32</library>
<library>kernel32</library>
<library>user32</library>
<library>comctl32</library>
<library>advapi32</library>
<file>devmgr.c</file>
<efile>devmgr.rc</efile>
</module>

View file

@ -1,6 +0,0 @@
/* $Id$ */
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS W32 Device Manager Utility\0"
#define REACTOS_STR_INTERNAL_NAME "devmgr\0"
#define REACTOS_STR_ORIGINAL_FILENAME "devmgr.exe\0"
#include <reactos/version.rc>

View file

@ -1,303 +0,0 @@
/* PROJECT: ReactOS Downloader (was GetFirefox)
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base/applications/downloader/download.c
* PURPOSE: Displaying a download dialog
* COPYRIGHT: Copyright 2001 John R. Sheets (for CodeWeavers)
* Copyright 2004 Mike McCormack (for CodeWeavers)
* Copyright 2005 Ge van Geldorp (gvg@reactos.org)
*/
/*
* Based on Wine dlls/shdocvw/shdocvw_main.c
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#define COBJMACROS
#define WIN32_NO_STATUS
#include <windows.h>
#include <commctrl.h>
#include <shlobj.h>
#include <shlwapi.h>
#include <urlmon.h>
#include "resources.h"
#include "structures.h"
#define NDEBUG
#include <debug.h>
extern struct Application* SelectedApplication;
extern WCHAR Strings [STRING_COUNT][MAX_STRING_LENGHT];
typedef struct _IBindStatusCallbackImpl
{
const IBindStatusCallbackVtbl *vtbl;
LONG ref;
HWND hDialog;
BOOL *pbCancelled;
} IBindStatusCallbackImpl;
static HRESULT WINAPI
dlQueryInterface(IBindStatusCallback* This, REFIID riid, void** ppvObject)
{
if (NULL == ppvObject)
{
return E_POINTER;
}
if (IsEqualIID(riid, &IID_IUnknown) ||
IsEqualIID(riid, &IID_IBindStatusCallback))
{
IBindStatusCallback_AddRef( This );
*ppvObject = This;
return S_OK;
}
return E_NOINTERFACE;
}
static ULONG WINAPI
dlAddRef(IBindStatusCallback* iface)
{
IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface;
return InterlockedIncrement(&This->ref);
}
static ULONG WINAPI
dlRelease(IBindStatusCallback* iface)
{
IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface;
DWORD ref = InterlockedDecrement(&This->ref);
if( !ref )
{
DestroyWindow( This->hDialog );
HeapFree(GetProcessHeap(), 0, This);
}
return ref;
}
static HRESULT WINAPI
dlOnStartBinding(IBindStatusCallback* iface, DWORD dwReserved, IBinding* pib)
{
DPRINT1("OnStartBinding not implemented\n");
return S_OK;
}
static HRESULT WINAPI
dlGetPriority(IBindStatusCallback* iface, LONG* pnPriority)
{
DPRINT1("GetPriority not implemented\n");
return S_OK;
}
static HRESULT WINAPI
dlOnLowResource( IBindStatusCallback* iface, DWORD reserved)
{
DPRINT1("OnLowResource not implemented\n");
return S_OK;
}
static HRESULT WINAPI
dlOnProgress(IBindStatusCallback* iface, ULONG ulProgress,
ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText)
{
IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface;
HWND Item;
LONG r;
WCHAR OldText[100];
Item = GetDlgItem(This->hDialog, IDC_PROGRESS);
if (NULL != Item && 0 != ulProgressMax)
{
SendMessageW(Item, PBM_SETPOS, (ulProgress * 100) / ulProgressMax, 0);
}
Item = GetDlgItem(This->hDialog, IDC_STATUS);
if (NULL != Item && NULL != szStatusText)
{
SendMessageW(Item, WM_GETTEXT, sizeof(OldText) / sizeof(OldText[0]),
(LPARAM) OldText);
if (sizeof(OldText) / sizeof(OldText[0]) - 1 <= wcslen(OldText) ||
0 != wcscmp(OldText, szStatusText))
{
SendMessageW(Item, WM_SETTEXT, 0, (LPARAM) szStatusText);
}
}
SetLastError(0);
r = GetWindowLongPtrW(This->hDialog, GWLP_USERDATA);
if (0 != r || 0 != GetLastError())
{
*This->pbCancelled = TRUE;
DPRINT("Cancelled\n");
return E_ABORT;
}
return S_OK;
}
static HRESULT WINAPI
dlOnStopBinding(IBindStatusCallback* iface, HRESULT hresult, LPCWSTR szError)
{
DPRINT1("OnStopBinding not implemented\n");
return S_OK;
}
static HRESULT WINAPI
dlGetBindInfo(IBindStatusCallback* iface, DWORD* grfBINDF, BINDINFO* pbindinfo)
{
DPRINT1("GetBindInfo not implemented\n");
return S_OK;
}
static HRESULT WINAPI
dlOnDataAvailable(IBindStatusCallback* iface, DWORD grfBSCF,
DWORD dwSize, FORMATETC* pformatetc, STGMEDIUM* pstgmed)
{
DPRINT1("OnDataAvailable implemented\n");
return S_OK;
}
static HRESULT WINAPI
dlOnObjectAvailable(IBindStatusCallback* iface, REFIID riid, IUnknown* punk)
{
DPRINT1("OnObjectAvailable implemented\n");
return S_OK;
}
static const IBindStatusCallbackVtbl dlVtbl =
{
dlQueryInterface,
dlAddRef,
dlRelease,
dlOnStartBinding,
dlGetPriority,
dlOnLowResource,
dlOnProgress,
dlOnStopBinding,
dlGetBindInfo,
dlOnDataAvailable,
dlOnObjectAvailable
};
static IBindStatusCallback*
CreateDl(HWND Dlg, BOOL *pbCancelled)
{
IBindStatusCallbackImpl *This;
This = HeapAlloc(GetProcessHeap(), 0, sizeof(IBindStatusCallbackImpl));
This->vtbl = &dlVtbl;
This->ref = 1;
This->hDialog = Dlg;
This->pbCancelled = pbCancelled;
return (IBindStatusCallback*) This;
}
static DWORD WINAPI
ThreadFunc(LPVOID Context)
{
//static const WCHAR szUrl[] = DownloadUrl;
IBindStatusCallback *dl;
HWND Dlg = ((struct lParamDownload*)Context)->Dlg;
DWORD r;
BOOL bCancelled = FALSE;
dl = CreateDl(Dlg, &bCancelled);
r = URLDownloadToFileW(NULL, ((struct lParamDownload*)Context)->URL, ((struct lParamDownload*)Context)->File, 0, dl);
if (NULL != dl)
{
IBindStatusCallback_Release(dl);
}
if (S_OK != r)
{
MessageBoxW(0,Strings[IDS_DOWNLOAD_ERROR],0,0);
}
EndDialog(Dlg, 0);
return 0;
}
INT_PTR CALLBACK
DownloadProc(HWND Dlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
HANDLE Thread;
DWORD ThreadId;
HWND Item;;
switch (Msg)
{
case WM_INITDIALOG:/*
Icon = LoadIconW((HINSTANCE) GetWindowLongPtr(Dlg, GWLP_HINSTANCE),
MAKEINTRESOURCEW(IDI_ICON_MAIN));
if (NULL != Icon)
{
SendMessageW(Dlg, WM_SETICON, ICON_BIG, (LPARAM) Icon);
SendMessageW(Dlg, WM_SETICON, ICON_SMALL, (LPARAM) Icon);
}*/
SetWindowLongPtrW(Dlg, GWLP_USERDATA, 0);
Item = GetDlgItem(Dlg, IDC_PROGRESS);
if (NULL != Item)
{
SendMessageW(Item, PBM_SETRANGE, 0, MAKELPARAM(0,100));
SendMessageW(Item, PBM_SETPOS, 0, 0);
}/*
Item = GetDlgItem(Dlg, IDC_REMOVE);
if (NULL != Item)
{
if (GetShortcutName(ShortcutName) &&
INVALID_FILE_ATTRIBUTES != GetFileAttributesW(ShortcutName))
{
SendMessageW(Item, BM_SETCHECK, BST_CHECKED, 0);
}
else
{
SendMessageW(Item, BM_SETCHECK, BST_UNCHECKED, 0);
ShowWindow(Item, SW_HIDE);
}
}*/
((struct lParamDownload*)lParam)->Dlg = Dlg;
Thread = CreateThread(NULL, 0, ThreadFunc, (LPVOID)lParam, 0, &ThreadId);
if (NULL == Thread)
{
return FALSE;
}
CloseHandle(Thread);
return TRUE;
case WM_COMMAND:
if (wParam == IDCANCEL)
{
SetWindowLongPtrW(Dlg, GWLP_USERDATA, 1);
PostMessage(Dlg, WM_CLOSE, 0, 0);
}
return FALSE;
case WM_CLOSE:
EndDialog(Dlg, 0);
return TRUE;
default:
return FALSE;
}
}

View file

@ -1,34 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
<directory name="packagetree">
<xi:include href="packagetree/packagetree.rbuild" />
</directory>
<module name="downloader" type="win32gui" installbase="system32" installname="downloader.exe">
<include base="downloader">.</include>
<include base="expat">.</include>
<define name="UNICODE" />
<define name="_UNICODE" />
<define name="__USE_W32API" />
<define name="WINVER">0x0501</define>
<define name="_WIN32_IE>0x0600</define>
<library>kernel32</library>
<library>advapi32</library>
<library>ntdll</library>
<library>user32</library>
<library>gdi32</library>
<library>shell32</library>
<library>comctl32</library>
<library>msimg32</library>
<library>shlwapi</library>
<library>urlmon</library>
<library>uuid</library>
<library>expat</library>
<file>main.c</file>
<file>xml.c</file>
<file>download.c</file>
<file>script.c</file>
<file>downloader.rc</file>
</module>

View file

@ -1,10 +0,0 @@
#include <windows.h>
#include "resources.h"
#define REACTOS_STR_FILE_DESCRIPTION "Download !\0"
#define REACTOS_STR_INTERNAL_NAME "downloader\0"
#define REACTOS_STR_ORIGINAL_FILENAME "downloader.exe\0"
#include <reactos/version.rc>
#include "rsrc.rc"

View file

@ -1,538 +0,0 @@
/* PROJECT: ReactOS Downloader
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base/applications/downloader/xml.c
* PURPOSE: Main program
* PROGRAMMERS: Maarten Bosma, Lester Kortenhoeven
*/
#include <windows.h>
#include <commctrl.h>
#include <richedit.h>
#include <stdio.h>
#include <shlwapi.h>
#include <wchar.h>
#include "resources.h"
#include "structures.h"
#define XML_PATH "tree.xml"
HWND hwnd, hCategories, hApps, hDownloadButton, hUninstallButton, hUpdateButton, hHelpButton;
HBITMAP hLogo, hUnderline;
CHAR* CmdLine;
WCHAR* DescriptionHeadline = L"";
WCHAR* DescriptionText = L"";
WCHAR ApplicationText[0xA04]; // MAX_STRING_LENGHT + Version + \n + MAX_STRING_LENGHT + Licence + \n + MAX_STRING_LENGHT + Maintainer + \n\n + Description
// 0x100 + 0x100 + 1 + 0x100 + 0x100 + 1 + 0x100 + 0x100 + 2 + 0x400 = 0xA04
struct Category Root;
struct Application* SelectedApplication;
INT_PTR CALLBACK DownloadProc (HWND, UINT, WPARAM, LPARAM);
DWORD WINAPI InstallThreadFunc(LPVOID);
DWORD WINAPI UninstallThreadFunc(LPVOID);
BOOL ProcessXML (const char* filename, struct Category* Root);
char* addDML (const char*);
VOID FreeTree (struct Category* Node);
WCHAR Strings [STRING_COUNT][MAX_STRING_LENGHT];
BOOL getUninstaller(struct Application* CurrentApplication, WCHAR* Uninstaller) {
DWORD ArraySize = 0x100;
HKEY hKey1;
HKEY hKey2;
DWORD Type = 0;
WCHAR Value[ArraySize];
WCHAR KeyName[ArraySize];
DWORD Size = ArraySize;
LONG i = 0;
if (CurrentApplication->RegName[0] == L'\0') {
return FALSE;
}
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall",0,KEY_READ,&hKey1) == ERROR_SUCCESS) {
if (RegOpenKeyExW(hKey1,CurrentApplication->RegName,0,KEY_READ,&hKey2) == ERROR_SUCCESS) {
if (RegQueryValueExW(hKey2,L"UninstallString",0,&Type,(LPBYTE)Uninstaller,&Size) == ERROR_SUCCESS) {
RegCloseKey(hKey2);
RegCloseKey(hKey1);
return TRUE;
} else {
RegCloseKey(hKey2);
RegCloseKey(hKey1);
return FALSE;
}
}
while (RegEnumKeyExW(hKey1,i,KeyName,&Size,NULL,NULL,NULL,NULL) == ERROR_SUCCESS) {
++i;
RegOpenKeyExW(hKey1,KeyName,0,KEY_READ,&hKey2);
Size = sizeof(Value);
if (RegQueryValueExW(hKey2,L"DisplayName",0,&Type,(LPBYTE)Value,&Size) == ERROR_SUCCESS) {
Size = ArraySize;
if (!wcscmp(Value,CurrentApplication->RegName)) {
if (RegQueryValueExW(hKey2,L"UninstallString",0,&Type,(LPBYTE)Uninstaller,&Size) == ERROR_SUCCESS) {
RegCloseKey(hKey2);
RegCloseKey(hKey1);
return TRUE;
} else {
RegCloseKey(hKey2);
RegCloseKey(hKey1);
return FALSE;
}
}
}
RegCloseKey(hKey2);
Size = ArraySize;
}
RegCloseKey(hKey1);
}
return FALSE;
}
void ShowMessage (WCHAR* title, WCHAR* message)
{
DescriptionHeadline = title;
DescriptionText = message;
InvalidateRect(hwnd,NULL,TRUE);
UpdateWindow(hwnd);
}
void AddItems (HWND hwnd, struct Category* Category, struct Category* Parent)
{
TV_INSERTSTRUCTW Insert;
Insert.item.lParam = (UINT)Category;
Insert.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE|TVIF_SELECTEDIMAGE;;
Insert.item.pszText = Category->Name;
Insert.item.cchTextMax = lstrlenW(Category->Name);
Insert.item.iImage = Category->Icon;
Insert.item.iSelectedImage = Category->Icon;
Insert.hInsertAfter = TVI_LAST;
Insert.hParent = Category->Parent ? Category->Parent->TreeviewItem : TVI_ROOT;
Category->TreeviewItem = (HTREEITEM)SendMessage(hwnd, TVM_INSERTITEM, 0, (LPARAM)&Insert);
if(Category->Next)
AddItems (hwnd,Category->Next,Parent);
if(Category->Children)
AddItems (hwnd,Category->Children,Category);
}
void CategoryChoosen (HWND hwnd, struct Category* Category)
{
struct Application* CurrentApplication;
TV_INSERTSTRUCTW Insert;
SelectedApplication = NULL;
if(Category->Children && !Category->Apps)
ShowMessage(Category->Name, Strings[IDS_CHOOSE_SUB]);
else if(!Category->Children && Category->Apps)
ShowMessage(Category->Name, Strings[IDS_CHOOSE_APP]);
else if(Category->Children && Category->Apps)
ShowMessage(Category->Name, Strings[IDS_CHOOSE_BOTH]);
else
ShowMessage(Category->Name, Strings[IDS_NO_APPS]);
(void)TreeView_DeleteItem(hwnd, TVI_ROOT);
(void)TreeView_DeleteItem(hwnd, TVI_ROOT); // Delete twice to bypass bug in windows
Insert.item.mask = TVIF_TEXT|TVIF_PARAM|TVIF_IMAGE;
Insert.hInsertAfter = TVI_LAST;
Insert.hParent = TVI_ROOT;
CurrentApplication = Category->Apps;
while(CurrentApplication)
{
Insert.item.lParam = (UINT)CurrentApplication;
Insert.item.pszText = CurrentApplication->Name;
Insert.item.cchTextMax = lstrlenW(CurrentApplication->Name);
if(getUninstaller(CurrentApplication, NULL)) {
Insert.item.iImage = 9;
} else {
Insert.item.iImage = 10;
}
SendMessage(hwnd, TVM_INSERTITEM, 0, (LPARAM)&Insert);
CurrentApplication = CurrentApplication->Next;
}
}
BOOL SetupControls (HWND hwnd)
{
TV_INSERTSTRUCTW Insert = {0};
HIMAGELIST hImageList;
HINSTANCE hInstance = GetModuleHandle(NULL);
// Parse the XML file
if (ProcessXML (XML_PATH, &Root) == FALSE)
return FALSE;
// Set up the controls
hCategories = CreateWindowExW(0, WC_TREEVIEWW, L"Categories", WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS|TVS_SHOWSELALWAYS,
0, 0, 0, 0, hwnd, NULL, hInstance, NULL);
hApps = CreateWindowExW(0, WC_TREEVIEWW, L"Applications", WS_CHILD|WS_VISIBLE|WS_BORDER|TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS|TVS_SHOWSELALWAYS,
0, 0, 0, 0, hwnd, NULL, hInstance, NULL);
hLogo = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_LOGO));
hUnderline = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_UNDERLINE));
hHelpButton = CreateWindowW (L"Button", L"", WS_CHILD|WS_VISIBLE|BS_BITMAP, 550, 10, 40, 40, hwnd, 0, hInstance, NULL);
hUpdateButton = CreateWindowW (L"Button", L"", WS_CHILD|WS_VISIBLE|BS_BITMAP, 500, 10, 40, 40, hwnd, 0, hInstance, NULL);
hDownloadButton = CreateWindowW (L"Button", L"", WS_CHILD|WS_VISIBLE|BS_BITMAP, 330, 505, 140, 35, hwnd, 0, hInstance, NULL);
hUninstallButton = CreateWindowW (L"Button", L"", WS_CHILD|WS_VISIBLE|BS_BITMAP, 260, 505, 140, 35, hwnd, 0, hInstance, NULL);
SendMessageW(hHelpButton, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)(HANDLE)LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_HELP)));
SendMessageW(hUpdateButton, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP,(LPARAM)(HANDLE)LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_UPDATE)));
SendMessageW(hDownloadButton, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP,(LPARAM)(HANDLE)LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_DOWNLOAD)));
SendMessageW(hUninstallButton, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP,(LPARAM)(HANDLE)LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_UNINSTALL)));
ShowWindow(hUninstallButton, SW_HIDE);
// Set deflaut entry for hApps
Insert.item.mask = TVIF_TEXT|TVIF_IMAGE;
Insert.item.pszText = Strings[IDS_CHOOSE_CATEGORY];
Insert.item.cchTextMax = lstrlenW(Strings[IDS_CHOOSE_CATEGORY]);
Insert.item.iImage = 0;
SendMessage(hApps, TVM_INSERTITEM, 0, (LPARAM)&Insert);
// Create Tree Icons
hImageList = ImageList_Create(16, 16, ILC_COLORDDB, 1, 1);
SendMessageW(hCategories, TVM_SETIMAGELIST, TVSIL_NORMAL, (LPARAM)(HIMAGELIST)hImageList);
SendMessageW(hApps, TVM_SETIMAGELIST, TVSIL_NORMAL, (LPARAM)(HIMAGELIST)hImageList);
ImageList_Add(hImageList, LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_0)), NULL);
ImageList_Add(hImageList, LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_1)), NULL);
ImageList_Add(hImageList, LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_2)), NULL);
ImageList_Add(hImageList, LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_3)), NULL);
ImageList_Add(hImageList, LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_4)), NULL);
ImageList_Add(hImageList, LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_5)), NULL);
ImageList_Add(hImageList, LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_6)), NULL);
ImageList_Add(hImageList, LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_7)), NULL);
ImageList_Add(hImageList, LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_8)), NULL);
ImageList_Add(hImageList, LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_9)), NULL);
ImageList_Add(hImageList, LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_TREEVIEW_ICON_10)), NULL);
// Fill the TreeViews
AddItems (hCategories, Root.Children, NULL);
return TRUE;
}
static void ResizeControl (HWND hwnd, int x1, int y1, int x2, int y2)
{
// Make resizing a little easier
MoveWindow(hwnd, x1, y1, x2-x1, y2-y1, TRUE);
}
static void DrawBitmap (HDC hdc, int x, int y, HBITMAP hBmp)
{
BITMAP bm;
HDC hdcMem = CreateCompatibleDC(hdc);
SelectObject(hdcMem, hBmp);
GetObject(hBmp, sizeof(bm), &bm);
TransparentBlt(hdc, x, y, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, bm.bmWidth, bm.bmHeight, 0xFFFFFF);
DeleteDC(hdcMem);
}
static void DrawDescription (HDC hdc, RECT DescriptionRect)
{
int i;
HFONT Font;
RECT Rect = {DescriptionRect.left+5, DescriptionRect.top+3, DescriptionRect.right-2, DescriptionRect.top+22};
// Backgroud
Rectangle(hdc, DescriptionRect.left, DescriptionRect.top, DescriptionRect.right, DescriptionRect.bottom);
// Underline
for (i=DescriptionRect.left+1;i<DescriptionRect.right-1;i++)
DrawBitmap(hdc, i, DescriptionRect.top+22, hUnderline); // less code then stretching ;)
// Headline
Font = CreateFont(-16 , 0, 0, 0, FW_EXTRABOLD, FALSE, FALSE, FALSE, ANSI_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, L"Arial");
SelectObject(hdc, Font);
DrawTextW(hdc, DescriptionHeadline, lstrlenW(DescriptionHeadline), &Rect, DT_SINGLELINE|DT_NOPREFIX);
DeleteObject(Font);
// Description
Font = CreateFont(-13 , 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, L"Arial");
SelectObject(hdc, Font);
Rect.top += 40;
Rect.bottom = DescriptionRect.bottom-2;
DrawTextW(hdc, DescriptionText, lstrlenW(DescriptionText), &Rect, DT_WORDBREAK|DT_NOPREFIX); // ToDo: Call TabbedTextOut to draw a nice table
DeleteObject(Font);
}
void showUninstaller() {
int Split_Vertical = 200;
RECT Rect;
GetClientRect(hwnd,&Rect);
ShowWindow(hUninstallButton,SW_SHOW);
MoveWindow(hDownloadButton,(Split_Vertical+Rect.right-Rect.left)/2,Rect.bottom-Rect.top-45,140,35,TRUE);;
}
void hideUninstaller() {
int Split_Vertical = 200;
RECT Rect;
GetClientRect(hwnd,&Rect);
ShowWindow(hUninstallButton,SW_HIDE);
MoveWindow(hDownloadButton,(Split_Vertical+Rect.right-Rect.left)/2-70,Rect.bottom-Rect.top-45,140,35,TRUE);
}
void searchApp(const WCHAR* AppName, struct Category* Node) {
struct Application* CurrentApplication;
if (Node->Children)
searchApp(AppName, Node->Children);
if (Node->Next)
searchApp(AppName, Node->Next);
CurrentApplication = Node->Apps;
while((SelectedApplication == NULL) && (CurrentApplication != NULL)) {
if(wcscmp(CurrentApplication->Name,AppName)==0)
SelectedApplication = CurrentApplication;
CurrentApplication = CurrentApplication->Next;
}
}
void ShowSelectedApplication() {
ApplicationText[0]=L'\0';
if(SelectedApplication->Version[0] != L'\0') {
StrCatW(ApplicationText, Strings[IDS_VERSION]);
StrCatW(ApplicationText, SelectedApplication->Version);
StrCatW(ApplicationText, L"\n");
}
if(SelectedApplication->Licence[0] != L'\0') {
StrCatW(ApplicationText, Strings[IDS_LICENCE]);
StrCatW(ApplicationText, SelectedApplication->Licence);
StrCatW(ApplicationText, L"\n");
}
if(SelectedApplication->Maintainer[0] != L'\0') {
StrCatW(ApplicationText, Strings[IDS_MAINTAINER]);
StrCatW(ApplicationText, SelectedApplication->Maintainer);
StrCatW(ApplicationText, L"\n");
}
if((SelectedApplication->Licence[0] != L'\0') || (SelectedApplication->Version[0] != L'\0') || (SelectedApplication->Maintainer[0] != L'\0'))
StrCatW(ApplicationText, L"\n");
StrCatW(ApplicationText, SelectedApplication->Description);
ShowMessage(SelectedApplication->Name, ApplicationText);
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
static RECT DescriptionRect;
switch (Message)
{
case WM_CREATE:
{
WCHAR wAppName[0x100] = L"";
if (strncmp(CmdLine,"add ",4)==0) {
CmdLine = CmdLine+4;
if(CmdLine[0]==L'\"') {
CmdLine++;
CmdLine[strlen(CmdLine)-1]=L'\0';
}
char* aAppName = addDML(CmdLine);
MultiByteToWideChar(CP_UTF8, 0, aAppName, -1, wAppName, 0x100);
} else if (strncmp(CmdLine,"show ",5)==0) {
MultiByteToWideChar(CP_UTF8, 0, CmdLine+5, -1, wAppName, 0x100);
}
if(!SetupControls(hwnd))
return -1;
if(wAppName[0]!=L'\0')
searchApp(wAppName, &Root);
if(SelectedApplication == NULL) {
ShowMessage(Strings[IDS_WELCOME_TITLE], Strings[IDS_WELCOME]);
} else {
ShowSelectedApplication();
if(getUninstaller(SelectedApplication, NULL))
showUninstaller();
else
hideUninstaller();
}
}
break;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
HDC BackbufferHdc = CreateCompatibleDC(hdc);
HBITMAP BackbufferBmp = CreateCompatibleBitmap(hdc, ps.rcPaint.right, ps.rcPaint.bottom);
SelectObject(BackbufferHdc, BackbufferBmp);
FillRect(BackbufferHdc, &ps.rcPaint, CreateSolidBrush(RGB(235,235,235)));
DrawBitmap(BackbufferHdc, 10, 12, hLogo);
DrawDescription(BackbufferHdc, DescriptionRect);
BitBlt(hdc, 0, 0, ps.rcPaint.right, ps.rcPaint.bottom, BackbufferHdc, 0, 0, SRCCOPY);
DeleteObject(BackbufferBmp);
DeleteDC(BackbufferHdc);
EndPaint(hwnd, &ps);
}
break;
case WM_COMMAND:
{
if(HIWORD(wParam) == BN_CLICKED)
{
if (lParam == (LPARAM)hDownloadButton)
{
if(SelectedApplication) {
DWORD ThreadId;
CreateThread(NULL, 0, InstallThreadFunc, SelectedApplication, 0, &ThreadId);
} else
ShowMessage(Strings[IDS_NO_APP_TITLE], Strings[IDS_NO_APP]);
}
else if (lParam == (LPARAM)hUninstallButton)
{
if(SelectedApplication) {
DWORD ThreadId;
CreateThread(NULL, 0, UninstallThreadFunc, SelectedApplication, 0, &ThreadId);
hideUninstaller();
} else
ShowMessage(Strings[IDS_NO_APP_TITLE], Strings[IDS_NO_APP]);
}
else if (lParam == (LPARAM)hUpdateButton)
{
ShowMessage(Strings[IDS_UPDATE_TITLE], Strings[IDS_UPDATE]);
}
else if (lParam == (LPARAM)hHelpButton)
{
ShowMessage(Strings[IDS_HELP_TITLE], Strings[IDS_HELP]);
}
}
}
break;
case WM_NOTIFY:
{
LPNMHDR data = (LPNMHDR)lParam;
if(data->code == TVN_SELCHANGED)
{
BOOL bShowUninstaller = FALSE;
if(data->hwndFrom == hCategories)
{
struct Category* Category = (struct Category*) ((LPNMTREEVIEW)lParam)->itemNew.lParam;
CategoryChoosen (hApps, Category);
}
else if(data->hwndFrom == hApps)
{
SelectedApplication = (struct Application*) ((LPNMTREEVIEW)lParam)->itemNew.lParam;
if(SelectedApplication)
{
ShowSelectedApplication();
if(getUninstaller(SelectedApplication, NULL)) {
bShowUninstaller = TRUE;
}
}
}
if (bShowUninstaller)
showUninstaller();
else
hideUninstaller();
}
}
break;
case WM_SIZING:
{
LPRECT pRect = (LPRECT)lParam;
if (pRect->right-pRect->left < 520)
pRect->right = pRect->left + 520;
if (pRect->bottom-pRect->top < 300)
pRect->bottom = pRect->top + 300;
}
break;
case WM_SIZE:
{
int Split_Hozizontal = (HIWORD(lParam)-(45+60))/2 + 60;
int Split_Vertical = 200;
ResizeControl(hCategories, 10, 60, Split_Vertical, HIWORD(lParam)-10);
ResizeControl(hApps, Split_Vertical+5, 60, LOWORD(lParam)-10, Split_Hozizontal);
RECT Rect = {Split_Vertical+5, Split_Hozizontal+5, LOWORD(lParam)-10, HIWORD(lParam)-50};
DescriptionRect = Rect;
MoveWindow(hHelpButton, LOWORD(lParam)-50, 10, 40, 40, TRUE);
MoveWindow(hUpdateButton, LOWORD(lParam)-100, 10, 40, 40, TRUE);
if(IsWindowVisible(hUninstallButton))
MoveWindow(hDownloadButton, (Split_Vertical+LOWORD(lParam))/2, HIWORD(lParam)-45, 140, 35, TRUE);
else
MoveWindow(hDownloadButton, (Split_Vertical+LOWORD(lParam))/2-70, HIWORD(lParam)-45, 140, 35, TRUE);
MoveWindow(hUninstallButton, (Split_Vertical+LOWORD(lParam))/2-140, HIWORD(lParam)-45, 140, 35, TRUE);
}
break;
case WM_DESTROY:
{
DeleteObject(hLogo);
if(Root.Children)
FreeTree(Root.Children);
PostQuitMessage(0);
return 0;
}
break;
}
return DefWindowProc (hwnd, Message, wParam, lParam);
}
INT WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInst,
LPSTR lpCmdLine, INT nCmdShow)
{
int i;
WNDCLASSEXW WndClass = {0};
MSG msg;
InitCommonControls();
CmdLine = lpCmdLine;
// Load strings
for(i=0; i<STRING_COUNT; i++)
LoadStringW(hInstance, i, Strings[i], MAX_STRING_LENGHT); // if you know a better method please tell me.
// Create the window
WndClass.cbSize = sizeof(WNDCLASSEX);
WndClass.lpszClassName = L"Downloader";
WndClass.lpfnWndProc = WndProc;
WndClass.hInstance = hInstance;
WndClass.style = CS_HREDRAW | CS_VREDRAW;
WndClass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MAIN));
WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
RegisterClassExW(&WndClass);
hwnd = CreateWindowW(L"Downloader",
Strings[IDS_WINDOW_TITLE],
WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN,
CW_USEDEFAULT,
CW_USEDEFAULT,
600, 550,
NULL, NULL,
hInstance,
NULL);
// Show it
ShowWindow(hwnd, SW_SHOW);
UpdateWindow(hwnd);
// Message Loop
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}

View file

@ -1,4 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
<installfile base="packagetree/internet/browser">firefox1509.dml</installfile>
<installfile base="packagetree/internet/browser">firefox2001.dml</installfile>

View file

@ -1,7 +0,0 @@
<application name="Firefox 1.5" target="internet\browser\firefox.1.5.0.9.dml">
<regname>Mozilla Firefox (1.5)</regname>
<licence>MPL/GPL/LGPL</licence>
<version>1.5.0.9</version>
<description>The most popular and one of the best free WebBrowsers out there.</description>
<location>http://ftp-mozilla.netscape.com/pub/mozilla.org/firefox/releases/1.5.0.9/win32/en-US/Firefox%20Setup%201.5.0.9.exe</location>
</application>

View file

@ -1,7 +0,0 @@
<application name="Firefox 2.0" target="internet\browser\firefox.2.0.0.1.dml">
<regname>Mozilla Firefox (2.0.0.1)</regname>
<licence>MPL/GPL/LGPL</licence>
<version>2.0.0.1</version>
<description>The most popular and one of the best free WebBrowsers out there.</description>
<location>http://ftp-mozilla.netscape.com/pub/mozilla.org/firefox/releases/latest/win32/en-US/Firefox%20Setup%202.0.0.1.exe</location>
</application>

View file

@ -1,54 +0,0 @@
<category name="Internet &amp; Network" icon="1">
<import folder="internet\browser" />
<import folder="internet\email" />
<import folder="internet\ftp" />
<import folder="internet\chat" />
<import folder="internet\filesharing" />
<import folder="internet\remotecontrol" />
<import folder="internet\server" />
<import folder="internet\monitoring" />
<import folder="internet\security" />
<import folder="internet\streaming" />
<import folder="internet\other" />
<application name="Thunderbird">
<regname>Mozilla Thunderbird (1.5)</regname>
<licence>MPL/GPL/LGPL</licence>
<version>1.5.0.9</version>
<description>The most popular and one of the best free MailClients out there.</description>
<location>http://ftp-mozilla.netscape.com/pub/mozilla.org/thunderbird/releases/latest/win32/en-US/Thunderbird%20Setup%201.5.0.9.exe</location>
</application>
<application name="SeaMonkey">
<regname>SeaMonkey (1.0.7)</regname>
<version>1.0.7</version>
<description>Mozilla Suite is alive. This is the one and only Browser, Mail, Chat, Composer bundle you will ever need.</description>
<location>http://ftp-mozilla.netscape.com/pub/mozilla.org/seamonkey/releases/1.0.7/seamonkey-1.0.7.en-US.win32.installer.exe</location>
</application>
<application name="Mozilla ActiveX Control">
<regname>Mozilla ActiveX Control v1.7.12 (ReactOS special)</regname>
<version>1.7.12</version>
<description>Essential Component to get ReactOS Explorer's and other application's Internet Browsing feature running.</description>
<location>http://ovh.dl.sourceforge.net/sourceforge/reactos/MozillaControl1712-ReactOS.exe</location>
</application>
<application name="Off By One Browser">
<regname>The Off By One Web Browser</regname>
<description>The Off By One Browser is a very small and fast web browser with full HTML 3.2 support.</description>
<location>http://offbyone.com/offbyone/images/OffByOneSetup.exe</location>
</application>
<application name="Samba TNG">
<description>This tool allows you to access your Windows shared folders/printers with ReactOS.</description>
<location>http://svn.reactos.org/packages/samba-tng.exe</location>
</application>
<application name="Miranda IM">
<regname>Miranda IM</regname>
<version>0.5.1</version>
<description>Open source multiprotocol instant messaging application - May not work completely.</description>
<location>http://ovh.dl.sourceforge.net/sourceforge/miranda/miranda-im-v0.5.1-unicode.exe</location>
</application>
<application name="Putty">
<regname>PuTTY version 0.59</regname>
<licence>MIT</licence>
<version>0.59</version>
<description>A free SSH, Telnet, rlogin, and raw TCP client.</description>
<location>http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.59-installer.exe</location>
</application>
</category>

View file

@ -1,6 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
<directory name="browser">
<xi:include href="browser/browser.rbuild" />
</directory>
<installfile base="packagetree/internet">category.xml</installfile>

View file

@ -1,9 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
<directory name="internet">
<xi:include href="internet/internet.rbuild" />
</directory>
<directory name="script">
<xi:include href="script/script.rbuild" />
</directory>
<installfile base="packagetree">tree.xml</installfile>

View file

@ -1,5 +0,0 @@
<script>
<download url="%location%" file="%TEMP%\%location_file%" />
<exec file="%TEMP%\%location_file%" />
<del file="%TEMP%\%location_file%" />
</script>

View file

@ -1 +0,0 @@
<exec file="%regname_uninstaller%" />

View file

@ -1,3 +0,0 @@
<?xml version="1.0"?>
<installfile base="packagetree/script">default_install.xml</installfile>
<installfile base="packagetree/script">default_uninstall.xml</installfile>

View file

@ -1,142 +0,0 @@
<tree Version="1"> <!-- Application version this tree is made for -->
<import file="internet\category.xml" />
<category name="Office" icon="2">
<application name="Abiword">
<regname>"AbiWord 2.4.1 (remove only)"</regname>
<version>2.4.1</version>
<description>Word processor.</description>
<location>http://www.abiword.org/downloads/abiword/2.4.1/Windows/abiword-setup-2.4.1.exe</location>
</application>
<application name="OpenOffice">
<regname>OpenOffice.org 2.1</regname>
<version>2.1.0</version>
<description>THE Open Source Office Suite.</description>
<location>http://ftp.tu-chemnitz.de/pub/openoffice-extended//stable/2.1.0/OOo_2.1.0_Win32Intel_install_en-US.exe</location>
</application>
</category>
<category name="Graphics" icon="3">
<application name="IrfanView">
<regname>IrfanView (remove only)</regname>
<version>3.99</version>
<description>Viewer for all kinds of graphics/audio files/video files.</description>
<location>http://gd.tuwien.ac.at/graphics/irfanview/iview399.exe</location>
</application>
<application name="IrfanView Plugins">
<version>3.99</version>
<description>Additional Plugins for supporting more file types.</description>
<location>http://irfanview.tuwien.ac.at/plugins/irfanview_plugins_399.exe</location>
</application>
<application name="TuxPaint">
<regname>Tux Paint 0.9.16</regname>
<version>0.9.16</version>
<description>An open source bitmap graphics editor geared towards young children.</description>
<location>http://ovh.dl.sourceforge.net/sourceforge/tuxpaint/tuxpaint-0.9.16-win32-installer.exe</location>
</application>
</category>
<category name="Multimedia" icon="4">
</category>
<category name="Development" icon="5">
<application name="ReactOS Build Environment">
<regname>ReactOS Build Environment 0.3.4</regname>
<version>0.3.4</version>
<description>Allows you to build the ReactOS Source. For more instructions see ReactOS wiki.</description>
<location>http://ovh.dl.sourceforge.net/sourceforge/reactos/RosBE-0.3.4.exe</location>
</application>
<application name="MinGW">
<regname>MinGW 5.1.3</regname>
<version>5.1.3</version>
<description>A Port of the GNU toolchain with GCC, GDB, GNU make, etc.</description>
<location>http://puzzle.dl.sourceforge.net/sourceforge/mingw/MinGW-5.1.3.exe</location>
</application>
<application name="FreeBASIC">
<regname>FreeBASIC 0.16b</regname>
<version>0.16b</version>
<description>Open Source Basic Compiler. The Basic syntax is compatible to QBASIC.</description>
<location>http://switch.dl.sourceforge.net/sourceforge/fbc/FreeBASIC-v0.16b-win32.exe</location>
</application>
</category>
<category name="Games &amp; Fun" icon="6">
<application name="ScummVM">
<regname>ScummVM 0.9.1</regname>
<version>0.9.1</version>
<description>SamNMax, Day of Tentacle, etc on ReactOS</description>
<location>http://ovh.dl.sourceforge.net/sourceforge/scummvm/scummvm-0.9.1-win32.exe</location>
</application>
<application name="Tile World">
<description>Nice Clone of Chip's Challenge originally made for the Atari Lynx. Includes free CCLP2 Graphics Pack, so you dont need the copyrighted Original.</description>
<location>http://www.muppetlabs.com/~breadbox/pub/software/tworld/tworld-1.3.0-win32-CCLP2.exe</location>
</application>
<application name="OpenTTD">
<regname>OpenTTD 0.5.0</regname>
<version>0.5.0-RC5</version>
<description>Open-source-clone of the "Transport Tycoon Deluxe" game-engine. You need a copy of Transport Tycoon.</description>
<location>http://ovh.dl.sourceforge.net/sourceforge/openttd/openttd-0.5.0-RC5-win32.exe</location>
</application>
<application name="LBreakout2">LBreakout2 2.4.1
<regname>LBreakout2 2.4.1</regname>
<version>2.4.1</version>
<description>Breakout Clone using SDL libs.</description>
<location>http://switch.dl.sourceforge.net/sourceforge/lgames/lbreakout2-2.4.1-win32.exe</location>
</application>
<application name="LGeneral">
<regname>LGeneral 1.1</regname>
<version>1.1</version>
<description>Panzer General Clone using SDL libs.</description>
<location>http://kent.dl.sourceforge.net/sourceforge/lgames/lgeneral-1.1-win32.exe</location>
</application>
<application name="LMarbles">
<regname>LMarbles 1.0.6</regname>
<version>1.0.6</version>
<description>Atomix Clone using SDL libs.</description>
<location>http://heanet.dl.sourceforge.net/sourceforge/lgames/lmarbles-1.0.6-win32.exe</location>
</application>
</category>
<category name="Tools" icon="7">
<application name="7-Zip">
<regname>7-Zip 4.42</regname>
<version>4.42</version>
<description>Utility to create and open 7zip, zip, tar, rar and other archive files.</description>
<location>http://ovh.dl.sourceforge.net/sourceforge/sevenzip/7z442.exe</location>
</application>
<application name="uTorrent">
<regname>uTorrent</regname>
<version>1.6</version>
<description>Small and fast Torrent Client.</description>
<location>http://download.utorrent.com/1.6/uTorrent-1.6-install.exe</location>
</application>
<application name="Audio Grabber">
<regname>Audiograbber 1.83 SE </regname>
<version>1.83 SE</version>
<description>A very good CD Ripper/Audio File Converter.</description>
<location>http://www.audiograbber.de/files/342677432/agsetup183se.exe</location>
</application>
</category>
<category name="Others" icon="8">
<application name="Simple Direct Media Layer (SDL) Runtime">
<regname>SDL Runtime</regname>
<version>1.2.11</version>
<description>Needed for many Open Source Games to run. You need 7-Zip or a similar Utility to extract it.</description>
<location>http://ovh.dl.sourceforge.net/sourceforge/libsdl/SDL-1.2.11-win32.zip</location>
<installscript>
<load file="test.xml" />
<unzip />
<download url="%location%" file="%TEMP%\%location_file%" />
<unzip file="%TEMP%\%location_file%" outdir="%SystemRoot%\System32" />
<exec file="notepad %SystemRoot%\System32\README-SDL.txt" />
<del file="%TEMP%\%location_file%" />
<adduninstaller regname="%regname%" file="downloader.exe show %name%" />
</installscript>
<uninstallscript>
<del file="%SystemRoot%\System32\SDL.dll" />
<del file="%SystemRoot%\System32\README-SDL.txt" />
<removeuninstaller regname="%regname%" />
<message text="Uninstall complete." />
</uninstallscript>
</application>
<application name="DOSBox">
<version>0.65</version>
<description>DOSBox is a DOS emulator.</description>
<location>http://puzzle.dl.sourceforge.net/sourceforge/dosbox/DOSBox0.65-win32-installer.exe</location>
</application>
</category>
</tree>

View file

@ -1,48 +0,0 @@
#define IDI_MAIN 0x0
#define IDB_UNDERLINE 0x100
#define IDB_LOGO 0x101
#define IDB_HELP 0x102
#define IDB_UPDATE 0x103
#define IDB_DOWNLOAD 0x104
#define IDB_UNINSTALL 0x105
#define IDB_TREEVIEW_ICON_0 0x900
#define IDB_TREEVIEW_ICON_1 0x901
#define IDB_TREEVIEW_ICON_2 0x902
#define IDB_TREEVIEW_ICON_3 0x903
#define IDB_TREEVIEW_ICON_4 0x904
#define IDB_TREEVIEW_ICON_5 0x905
#define IDB_TREEVIEW_ICON_6 0x906
#define IDB_TREEVIEW_ICON_7 0x907
#define IDB_TREEVIEW_ICON_8 0x908
#define IDB_TREEVIEW_ICON_9 0x909
#define IDB_TREEVIEW_ICON_10 0x910
#define IDD_DOWNLOAD 0x100
#define IDC_PROGRESS 0x1000
#define IDC_STATUS 0x1001
#define IDC_REMOVE 0x1002
#define IDS_WINDOW_TITLE 0
#define IDS_WELCOME_TITLE 1
#define IDS_WELCOME 2
#define IDS_NO_APP_TITLE 3
#define IDS_NO_APP 4
#define IDS_UPDATE_TITLE 5
#define IDS_UPDATE 6
#define IDS_HELP_TITLE 7
#define IDS_HELP 8
#define IDS_NO_APPS 9
#define IDS_CHOOSE_APP 10
#define IDS_CHOOSE_SUB 11
#define IDS_CHOOSE_CATEGORY 12
#define IDS_CHOOSE_BOTH 13
#define IDS_XMLERROR_1 14
#define IDS_XMLERROR_2 15
#define IDS_DOWNLOAD_ERROR 16
#define IDS_UNZIP_ERROR 17
#define IDS_VERSION 18
#define IDS_LICENCE 19
#define IDS_MAINTAINER 20
#define STRING_COUNT 21
#define MAX_STRING_LENGHT 0x100

Binary file not shown.

Before

Width:  |  Height:  |  Size: 822 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 822 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 824 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 822 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 822 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 822 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 822 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 822 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 822 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 822 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 824 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -1,27 +0,0 @@
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IDI_MAIN ICON DISCARDABLE "resources/main.ico"
IDB_LOGO BITMAP DISCARDABLE "resources/logo.bmp"
IDB_HELP BITMAP DISCARDABLE "resources/help.bmp"
IDB_UPDATE BITMAP DISCARDABLE "resources/update.bmp"
IDB_DOWNLOAD BITMAP DISCARDABLE "resources/download.bmp"
IDB_UNINSTALL BITMAP DISCARDABLE "resources/uninstall.bmp"
IDB_UNDERLINE BITMAP DISCARDABLE "resources/underline.bmp"
IDB_TREEVIEW_ICON_0 BITMAP DISCARDABLE "resources/0.bmp"
IDB_TREEVIEW_ICON_1 BITMAP DISCARDABLE "resources/1.bmp"
IDB_TREEVIEW_ICON_2 BITMAP DISCARDABLE "resources/2.bmp"
IDB_TREEVIEW_ICON_3 BITMAP DISCARDABLE "resources/3.bmp"
IDB_TREEVIEW_ICON_4 BITMAP DISCARDABLE "resources/4.bmp"
IDB_TREEVIEW_ICON_5 BITMAP DISCARDABLE "resources/5.bmp"
IDB_TREEVIEW_ICON_6 BITMAP DISCARDABLE "resources/6.bmp"
IDB_TREEVIEW_ICON_7 BITMAP DISCARDABLE "resources/7.bmp"
IDB_TREEVIEW_ICON_8 BITMAP DISCARDABLE "resources/8.bmp"
IDB_TREEVIEW_ICON_9 BITMAP DISCARDABLE "resources/9.bmp"
IDB_TREEVIEW_ICON_10 BITMAP DISCARDABLE "resources/10.bmp"
#include "translations/de.rc"
#include "translations/en.rc"
#include "translations/fr.rc"
#include "translations/id.rc"
#include "translations/it.rc"

View file

@ -1,246 +0,0 @@
/* PROJECT: ReactOS Downloader
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base/applications/downloader/script.c
* PURPOSE: Run (un/)installscript
* PROGRAMMERS: Lester Kortenhoeven
*/
#include <windows.h>
#include "resources.h"
#include "structures.h"
extern BOOL getUninstaller(struct Application*, WCHAR*);
extern INT_PTR CALLBACK DownloadProc (HWND, UINT, WPARAM, LPARAM);
extern WCHAR Strings [STRING_COUNT][MAX_STRING_LENGHT];
static void DownloadScriptFunc (WCHAR* URL, WCHAR* File) {
struct lParamDownload* lParam;
lParam = malloc(sizeof(struct lParamDownload));
lParam->URL = URL;
lParam->File = File;
DialogBoxParamW(GetModuleHandle(NULL), MAKEINTRESOURCEW(IDD_DOWNLOAD), 0, DownloadProc, (LPARAM)lParam);
free(lParam);
}
static void ExecScriptFunc(WCHAR* Arg) {
STARTUPINFOW si;
PROCESS_INFORMATION pi;
memset(&si, 0, sizeof(si));
si.cb=sizeof(si);
CreateProcessW(NULL,Arg,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
CloseHandle(pi.hThread);
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
}
static void DelScriptFunc(WCHAR* Arg) {
DeleteFileW(Arg);
}
static BOOL UnzipScriptFunc(WCHAR* File, WCHAR* Outdir) {
HKEY hKey;
DWORD Type = 0;
WCHAR ExecStr[0x100];
DWORD currentlengt = 0x100;
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,L"SOFTWARE\\7-Zip",0,KEY_READ,&hKey) == ERROR_SUCCESS) {
if (RegQueryValueExW(hKey,L"Path",0,&Type,(LPBYTE)ExecStr,&currentlengt) == ERROR_SUCCESS) {
if (File[0] != L'\0') {
wcsncat(ExecStr,L"\\7z.exe x ",0x100-currentlengt);
currentlengt = lstrlenW(ExecStr);
wcsncat(ExecStr,File,0x100-currentlengt);
currentlengt = lstrlenW(ExecStr);
wcsncat(ExecStr,L" -o",0x100-currentlengt);
currentlengt = lstrlenW(ExecStr);
wcsncat(ExecStr,Outdir,0x100-currentlengt);
ExecScriptFunc(ExecStr);
RegCloseKey(hKey);
}
return TRUE;
}
RegCloseKey(hKey);
}
MessageBoxW(0,Strings[IDS_UNZIP_ERROR],0,0);
return FALSE;
}
static void AddUninstallerScriptFunc(WCHAR* RegName, WCHAR* File) {
HKEY hKey1;
HKEY hKey2;
LPDWORD dispos = NULL;
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall",0,KEY_WRITE,&hKey1) == ERROR_SUCCESS)
if (RegCreateKeyEx(hKey1,RegName,0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&hKey2,dispos) == ERROR_SUCCESS) {
RegSetValueExW(hKey2,L"DisplayName",0,REG_SZ,(BYTE*)RegName,(lstrlen(RegName)+1)*sizeof(WCHAR));
RegSetValueExW(hKey2,L"UninstallString",0,REG_SZ,(BYTE*)File,(lstrlen(File)+1)*sizeof(WCHAR));
}
RegCloseKey(hKey2);
RegCloseKey(hKey1);
}
static void RemoveUninstallerScriptFunc(WCHAR* RegName) {
HKEY hKey1;
HKEY hKey2;
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE,L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall",0,KEY_WRITE,&hKey1) == ERROR_SUCCESS) {
if (RegOpenKeyExW(hKey1,RegName,0,KEY_WRITE,&hKey2) == ERROR_SUCCESS) {
RegDeleteValueW(hKey2,L"DisplayName");
RegDeleteValueW(hKey2,L"UninstallString");
RegCloseKey(hKey2);
}
// RegDeleteKeyW(hKey1,RegName);
}
RegCloseKey(hKey1);
}
static void MessageScriptFunc(WCHAR* Text) {
MessageBoxW(0,Text,Strings[IDS_WINDOW_TITLE],0);
}
extern void LoadScriptFunc(WCHAR*, struct ScriptElement*);
static void RunScript(struct Application* App, struct ScriptElement* Script) {
BOOL bRun = TRUE;
struct ScriptElement* p = Script;
INT SizeB = 0x100;
INT SizeA = sizeof(p->Arg)/sizeof(*(p->Arg));
INT i;
int currentlengt = 0;
WCHAR ArgBuffer[SizeA][SizeB];
WCHAR BufferA[SizeB];
WCHAR BufferB[SizeB];
WCHAR BufferC[SizeB];
WCHAR* Pos1;
WCHAR* Pos2;
WCHAR* Pos3 = NULL;
BOOL bNext;
while(bRun && (p != NULL)) {
for(i=0; i<SizeA; i++) {
bNext = TRUE;
wcscpy(BufferA, p->Arg[i]);
Pos1 = BufferA;
Pos2 = wcschr(Pos1, L'%');
if(!Pos2) {
wcscpy(ArgBuffer[i], Pos1);
break;
}
Pos2[0] = L'\0';
wcscpy(BufferB, Pos1);
Pos1 = Pos2 + 1;
Pos2 = wcschr(Pos1, L'%');
while (Pos2) {
Pos2[0] = L'\0';
if(bNext) {
if (wcscmp(Pos1, L"name") == 0) {
Pos3 = App->Name;
} else if (wcscmp(Pos1, L"regname") == 0) {
Pos3 = App->RegName;
} else if (wcscmp(Pos1, L"version") == 0) {
Pos3 = App->Version;
} else if (wcscmp(Pos1, L"maintainer") == 0) {
Pos3 = App->Maintainer;
} else if (wcscmp(Pos1, L"licence") == 0) {
Pos3 = App->Licence;
} else if (wcscmp(Pos1, L"description") == 0) {
Pos3 = App->Description;
} else if (wcscmp(Pos1, L"location") == 0) {
Pos3 = App->Location;
} else if (wcscmp(Pos1, L"regname_uninstaller") == 0) {
if (!getUninstaller(App, BufferC)) {
BufferC[0] = '\0';
}
Pos3 = BufferC;
} else if (wcscmp(Pos1, L"location_file") == 0) {
Pos3 = wcsrchr(App->Location, L'/');
if(Pos3 == NULL) {
BufferC[0] = '\0';
Pos3 = BufferC;
} else {
Pos3++;
}
} else {
Pos3 = _wgetenv(Pos1);
}
bNext = !(Pos3);
if (bNext) {
Pos3 = Pos1;
currentlengt = lstrlenW(BufferB);
wcsncat(BufferB, L"%", SizeB-currentlengt);
}
} else {
Pos3 = Pos1;
bNext = TRUE;
}
currentlengt = lstrlenW(BufferB);
wcsncat(BufferB, Pos3, SizeB-currentlengt);
Pos1 = Pos2 + 1;
Pos2 = wcschr(Pos1, L'%');
}
if (bNext) {
wcsncat(BufferB, L"%", SizeB-currentlengt);
}
currentlengt = lstrlenW(BufferB);
wcsncat(BufferB, Pos1, SizeB-currentlengt);
wcscpy(ArgBuffer[i], BufferB);
}
if (wcscmp(p->Func, L"download") == 0) {
DownloadScriptFunc(ArgBuffer[0], ArgBuffer[1]);
} else if (wcscmp(p->Func, L"exec") == 0) {
ExecScriptFunc(ArgBuffer[0]);
} else if (wcscmp(p->Func, L"del") == 0) {
DelScriptFunc(ArgBuffer[0]);
} else if (wcscmp(p->Func, L"unzip") == 0) {
bRun = UnzipScriptFunc(ArgBuffer[0], ArgBuffer[1]);
} else if (wcscmp(p->Func, L"adduninstaller") == 0) {
AddUninstallerScriptFunc(ArgBuffer[0], ArgBuffer[1]);
} else if (wcscmp(p->Func, L"removeuninstaller") == 0) {
RemoveUninstallerScriptFunc(ArgBuffer[0]);
} else if (wcscmp(p->Func, L"message") == 0) {
MessageScriptFunc(ArgBuffer[0]);
} else if (wcscmp(p->Func, L"load") == 0) {
LoadScriptFunc(ArgBuffer[0],p);
}
p = p->Next;
}
}
DWORD WINAPI InstallThreadFunc(LPVOID Context) {
struct Application* App = (struct Application*)Context;
if(App->InstallScript == NULL){
/* Default UninstallScript */
struct ScriptElement* Current;
Current = malloc(sizeof(struct ScriptElement));
App->InstallScript = Current;
memset(Current, 0, sizeof(struct ScriptElement));
wcscpy(Current->Func, L"load");
wcscpy(Current->Arg[0], L"script/default.install.xml");
}
RunScript(App, App->InstallScript);
return 0;
}
DWORD WINAPI UninstallThreadFunc(LPVOID Context){
struct Application* App = (struct Application*)Context;
if(App->UninstallScript == NULL){
/* Default UninstallScript */
struct ScriptElement* Current;
Current = malloc(sizeof(struct ScriptElement));
App->UninstallScript = Current;
memset(Current, 0, sizeof(struct ScriptElement));
wcscpy(Current->Func, L"load");
wcscpy(Current->Arg[0], L"script/default.uninstall.xml");
}
RunScript(App, App->UninstallScript);
return 0;
}

View file

@ -1,40 +0,0 @@
struct Application
{
WCHAR Name[0x100];
WCHAR RegName[0x100];
WCHAR Version[0x100];
WCHAR Maintainer[0x100];
WCHAR Licence[0x100];
WCHAR Description[0x400];
WCHAR Location[0x100];
struct Application* Next;
struct ScriptElement* InstallScript;
struct ScriptElement* UninstallScript;
};
struct Category
{
WCHAR Name[0x100];
//WCHAR Description[0x100];
int Icon;
HANDLE TreeviewItem;
struct Application* Apps;
struct Category* Next;
struct Category* Children;
struct Category* Parent;
};
struct ScriptElement
{
WCHAR Func[0x100];
WCHAR Arg[2][0x100];
struct ScriptElement* Next;
};
struct lParamDownload
{
HWND Dlg;
WCHAR* URL;
WCHAR* File;
};

View file

@ -1,36 +0,0 @@
LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT
IDD_DOWNLOAD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Download..."
FONT 8, "MS Shell Dlg"
{
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
PUSHBUTTON "Cancel", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
}
STRINGTABLE DISCARDABLE
BEGIN
IDS_WINDOW_TITLE "Download ! - ReactOS Downloader"
IDS_WELCOME_TITLE "Willkommen im ReactOS Downloader"
IDS_WELCOME "Bitte wählen Sie links eine Kategorie. Dies ist Version 1.0."
IDS_NO_APP_TITLE "Keine Anwendung ausgewählt"
IDS_NO_APP "Bitte wählen Sie eine Anwendung, bevor Sie die Download-Schaltfläche betätigen. Wenn Sie Hilfe benötigen, drücken Sie die Hilfe-Schaltfläche in der oberen rechten Ecke."
IDS_UPDATE_TITLE "Update"
IDS_UPDATE "Diese Funktion wurde noch nicht implementiert."
IDS_HELP_TITLE "Hilfe"
IDS_HELP "Wählen Sie links eine Kategorie, wählen Sie eine Anwendung und drücken Sie die Download-Schaltfläche. Um die Anwendungsinformationen zu aktualisieren, drücken Sie die Schaltfläche neben der Hilfe-Schaltfläche."
IDS_NO_APPS "In dieser Kategorie sind bisher noch keine Anwendungen. Sie können helfen, indem Sie Anwendungen hinzufügen."
IDS_CHOOSE_APP "Bitte wählen Sie eine Anwendung."
IDS_CHOOSE_SUB "Bitte wählen Sie eine Unterkategorie."
IDS_CHOOSE_CATEGORY "Bitte wählen Sie eine Kategorie."
IDS_CHOOSE_BOTH "Bitte wählen Sie eine Unterkategorie oder eine Anwendung."
IDS_XMLERROR_1 "XML Datei nicht gefunden!"
IDS_XMLERROR_2 "XML Datei kann nicht verarbeitet werden!"
IDS_DOWNLOAD_ERROR "Die Datei konnte nicht runtergeladen werden.\nBitte prüfen sie, ob eine Verbindung zum Internet besteht."
IDS_UNZIP_ERROR "7-Zip nicht gefunden.\nBitte installieren Sie 7-Zip."
IDS_VERSION "Version: "
IDS_LICENCE "Lizenz: "
IDS_MAINTAINER "Maintainer: "
END

View file

@ -1,36 +0,0 @@
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
IDD_DOWNLOAD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Download..."
FONT 8, "MS Shell Dlg"
{
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
PUSHBUTTON "Cancel", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
}
STRINGTABLE DISCARDABLE
BEGIN
IDS_WINDOW_TITLE "Download ! - ReactOS Downloader"
IDS_WELCOME_TITLE "Welcome to the ReactOS Downloader"
IDS_WELCOME "Please choose a category on the left. This is version 1.0."
IDS_NO_APP_TITLE "No application selected"
IDS_NO_APP "Please select a Application before you click the download button, if you need assistance please click on the question mark button on the top right corner."
IDS_UPDATE_TITLE "Update"
IDS_UPDATE "Sorry this feature is not implemented yet."
IDS_HELP_TITLE "Help"
IDS_HELP "Choose a category on the left, then choose a application and click the download button. To update the application information click the button next to the help button."
IDS_NO_APPS "Sorry, there no applications in this category yet. You can help and add more applications."
IDS_CHOOSE_APP "Please choose an application."
IDS_CHOOSE_SUB "Please choose a subcategory."
IDS_CHOOSE_CATEGORY "Please choose a category."
IDS_CHOOSE_BOTH "Please choose a subcategory or an application."
IDS_XMLERROR_1 "Could not find the xml file !"
IDS_XMLERROR_2 "Could not parse the xml file !"
IDS_DOWNLOAD_ERROR "Unable to download the file.\nPlease check you internet connection."
IDS_UNZIP_ERROR "7-Zip not found.\nPlease install 7-Zip"
IDS_VERSION "Version: "
IDS_LICENCE "Licence: "
IDS_MAINTAINER "Maintainer: "
END

View file

@ -1,36 +0,0 @@
LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
IDD_DOWNLOAD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Téléchargement..."
FONT 8, "MS Shell Dlg"
{
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
PUSHBUTTON "Annuler", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
}
STRINGTABLE DISCARDABLE
BEGIN
IDS_WINDOW_TITLE "Télécharger ! - Téléchargeur de ReactOS"
IDS_WELCOME_TITLE "Bienvenue dans le Téléchargeur de ReactOS"
IDS_WELCOME "Veuillez choisir une catégorie sur la droite. C'est la version 1.0."
IDS_NO_APP_TITLE "Aucune application selectionnée"
IDS_NO_APP "Veuillez sélectionner une application avant de cliquer sur le bouton Télécharger, si vous avez besoin d'aide, veuillez cliquer sur le point d'interrogation dans le coin supérieur droit."
IDS_UPDATE_TITLE "Mise à jour"
IDS_UPDATE "Désolé, cette fonctionnalité n'est pas encore implémentée."
IDS_HELP_TITLE "Aide"
IDS_HELP "Choisissez une catégorie sur la droite, puis choisissez une application et cliquez sur le bouton Télécharger. Pour mettre à jour les informations sur l'application, cliquez sur le bouton à côté du bouton d'aide."
IDS_NO_APPS "Désolé, il n'y a pas encore d'application dans cette catégorie. Vous pouvez contribuer et ajouter plus d'applications."
IDS_CHOOSE_APP "Veuillez choisir une application."
IDS_CHOOSE_SUB "Veuillez choisir une sous-catégorie."
IDS_CHOOSE_CATEGORY "Veuillez choisir une catégorie."
IDS_CHOOSE_BOTH "Veuillez choisir une sous-catégorie ou une application."
IDS_XMLERROR_1 "Impossible de trouver le fichier xml !"
IDS_XMLERROR_2 "Impossible d'analyser le fichier xml !"
IDS_DOWNLOAD_ERROR "Impossible de télécharger le fichier.\nVeuillez vérifier votre connexion Internet."
IDS_UNZIP_ERROR "7-Zip not found.\nPlease install 7-Zip"
IDS_VERSION "Version: "
IDS_LICENCE "Licence: "
IDS_MAINTAINER "Maintainer: "
END

View file

@ -1,36 +0,0 @@
LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT
IDD_DOWNLOAD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Download..."
FONT 8, "MS Shell Dlg"
{
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
PUSHBUTTON "Batal", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
}
STRINGTABLE DISCARDABLE
BEGIN
IDS_WINDOW_TITLE "Download ! - ReactOS Downloader"
IDS_WELCOME_TITLE "Selamat datang di ReactOS Downloader"
IDS_WELCOME "Silahkan pilih kategori di sebelah kanan. Ini versi 1.0."
IDS_NO_APP_TITLE "Tidak ada aplikasi yang dipilih"
IDS_NO_APP "Silahkan pilih Aplikasi sebelum anda mengklik tombol download, jika anda membutuhkan asistensi silahkan klik pada tombol di sudut kanan atas."
IDS_UPDATE_TITLE "Mutakhirkan"
IDS_UPDATE "Maaf fitur ini belum diimplementasikan."
IDS_HELP_TITLE "Bantuan"
IDS_HELP "Pilih kategori di sisi kiri, lalu pilih aplikasi dan klik tombol download. Untuk memutakhirkan informasi aplikasi klik tombol disebelah tombol bantuan."
IDS_NO_APPS "Maaf, belum ada aplikasi dalam kategori ini. Anda dapat membantu dan menambahkan aplikasi lebih banyak."
IDS_CHOOSE_APP "Silahkan pilih aplikasi."
IDS_CHOOSE_SUB "Silahkan pilih subkategori."
IDS_CHOOSE_CATEGORY "Silahkan pilih kategori."
IDS_CHOOSE_BOTH "Silahkan pilih subkategori atau aplikasi."
IDS_XMLERROR_1 "Tidak dapat menemukan file xml !"
IDS_XMLERROR_2 "Tidak dapat mengurai file xml !"
IDS_DOWNLOAD_ERROR "Tidak bisa mendownload file.\nSilahkan periksa koneksi internet anda."
IDS_UNZIP_ERROR "7-Zip not found.\nPlease install 7-Zip"
IDS_VERSION "Versi: "
IDS_LICENCE "Lisensi: "
IDS_MAINTAINER "Pemelihara: "
END

View file

@ -1,36 +0,0 @@
LANGUAGE LANG_ITALIAN, SUBLANG_ITALIAN
IDD_DOWNLOAD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Download..."
FONT 8, "MS Shell Dlg"
{
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
PUSHBUTTON "Cancel", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
}
STRINGTABLE DISCARDABLE
BEGIN
IDS_WINDOW_TITLE "Download ! - ReactOS Downloader"
IDS_WELCOME_TITLE "Benvenuto al ReactOS Downloader"
IDS_WELCOME "Scegli una categoria a destra. Questa è la versione 1.0."
IDS_NO_APP_TITLE "Nessuna applicazione selezionata"
IDS_NO_APP "Scegli una Applicazione prima di premere il bottone di download, se serve assistenza clicca sul punto di domanda nell'angolo in alto a destra."
IDS_UPDATE_TITLE "Aggiona"
IDS_UPDATE "Funzione non ancora implementata."
IDS_HELP_TITLE "Aiuto"
IDS_HELP "Scegli una categoria a destra, poi scegli una applicazione e clicca il bottone download. Per aggiornare le informazioni sulla applicazione clicca il bottone accanto a quello di aiuto."
IDS_NO_APPS "Non ci sono ancora applicazioni in questa categoria. Puoi aiutare aggiungendone altre."
IDS_CHOOSE_APP "Scegli una applicazione."
IDS_CHOOSE_SUB "Scegli una sottocategoria."
IDS_CHOOSE_CATEGORY "Scegli una categoria."
IDS_CHOOSE_BOTH "Scegli una sottocategoria o una applicazione."
IDS_XMLERROR_1 "File xml non trovato !"
IDS_XMLERROR_2 "Impossibile trattare il contenuto del file xml !"
IDS_DOWNLOAD_ERROR "Download del file impossibile.\nVerifica la connessione a Internet."
IDS_UNZIP_ERROR "7-Zip not found.\nPlease install 7-Zip"
IDS_VERSION "Version: "
IDS_LICENCE "Licence: "
IDS_MAINTAINER "Maintainer: "
END

View file

@ -1,525 +0,0 @@
/* PROJECT: ReactOS Downloader
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base\applications\downloader\xml.c
* PURPOSE: Parsing of application information xml files
* PROGRAMMERS: Maarten Bosma, Lester Kortenhoeven
*/
#include <libs/expat/expat.h>
#include <string.h>
#include <stdio.h>
#include <windows.h>
#include <shlwapi.h>
#include <io.h>
#include "structures.h"
#include "resources.h"
BOOL TagOpen;
BOOL InstallScriptOpen;
BOOL UninstallScriptOpen;
struct Category* Current;
struct Application* CurrentApplication;
struct ScriptElement* CurrentScript;
char DML_Name[0x100];
char DML_Target[0x100];
char Path [0x100];
char CurrentTag [0x100];
extern WCHAR Strings [STRING_COUNT][MAX_STRING_LENGHT];
BOOL ImportXML (const char*);
void ImportFolder (const char* folder)
{
WCHAR buffer[0x100];
char buffer2[0x100];
struct _wfinddata_t Finddata;
DWORD Findhandle;
buffer[0]='\0';
strcpy(buffer2, Path);
strncat(buffer2, folder, 0x100-strlen(buffer2));
strncat(buffer2, "\\*.dml", 0x100-strlen(buffer2));
MultiByteToWideChar(CP_UTF8, 0, buffer2, -1, buffer, 0x100);
if((Findhandle=_wfindfirst(buffer, &Finddata)) == -1)
return;
do {
buffer[0]='\0';
MultiByteToWideChar(CP_UTF8, 0, folder, -1, buffer, 0x100);
wcsncat(buffer, L"\\", 0x100-wcslen(buffer));
wcsncat(buffer, Finddata.name, 0x100-wcslen(buffer));
WideCharToMultiByte(CP_UTF8, 0, buffer, -1, buffer2, 0x100, NULL, FALSE);
ImportXML(buffer2);
} while(_wfindnext(Findhandle, &Finddata)==0);
_findclose(Findhandle);
}
void Script_tag_opened (void* usrdata, const char* tag, const char** arg)
{
int i;
if (!strcmp(tag, "script")) {
return;
} else if (InstallScriptOpen && (CurrentScript == NULL)) {
CurrentApplication->InstallScript = malloc(sizeof(struct ScriptElement));
CurrentScript = CurrentApplication->InstallScript;
} else if (UninstallScriptOpen && (CurrentScript == NULL)) {
CurrentApplication->UninstallScript = malloc(sizeof(struct ScriptElement));
CurrentScript = CurrentApplication->UninstallScript;
} else if (CurrentScript != NULL) {
CurrentScript->Next = malloc(sizeof(struct ScriptElement));
CurrentScript = CurrentScript->Next;
} else {
return;
}
memset(CurrentScript, 0, sizeof(struct ScriptElement));
if (!strcmp(tag, "download")) {
wcscpy(CurrentScript->Func, L"download");
for (i=0; arg[i]; i+=2) {
if(!strcmp(arg[i], "file")) {
MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentScript->Arg[1], 0x100);
} else if(!strcmp(arg[i], "url")) {
MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentScript->Arg[0], 0x100);
}
}
} else if (!strcmp(tag, "exec")) {
wcscpy(CurrentScript->Func, L"exec");
for (i=0; arg[i]; i+=2) {
if(!strcmp(arg[i], "file")) {
MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentScript->Arg[0], 0x100);
}
}
} else if (!strcmp(tag, "del")) {
wcscpy(CurrentScript->Func, L"del");
for (i=0; arg[i]; i+=2) {
if(!strcmp(arg[i], "file")) {
MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentScript->Arg[0], 0x100);
}
}
} else if (!strcmp(tag, "unzip")) {
wcscpy(CurrentScript->Func, L"unzip");
for (i=0; arg[i]; i+=2) {
if(!strcmp(arg[i], "file")) {
MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentScript->Arg[0], 0x100);
} else if(!strcmp(arg[i], "outdir")) {
MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentScript->Arg[1], 0x100);
}
}
} else if (!strcmp(tag, "adduninstaller")) {
wcscpy(CurrentScript->Func, L"adduninstaller");
for (i=0; arg[i]; i+=2) {
if(!strcmp(arg[i], "regname")) {
MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentScript->Arg[0], 0x100);
} else if(!strcmp(arg[i], "file")) {
MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentScript->Arg[1], 0x100);
}
}
} else if (!strcmp(tag, "removeuninstaller")) {
wcscpy(CurrentScript->Func, L"removeuninstaller");
for (i=0; arg[i]; i+=2) {
if(!strcmp(arg[i], "regname")) {
MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentScript->Arg[0], 0x100);
}
}
} else if (!strcmp(tag, "message")) {
wcscpy(CurrentScript->Func, L"message");
for (i=0; arg[i]; i+=2) {
if(!strcmp(arg[i], "text")) {
MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentScript->Arg[0], 0x100);
}
}
} else if (!strcmp(tag, "load")) {
wcscpy(CurrentScript->Func, L"load");
for (i=0; arg[i]; i+=2) {
if(!strcmp(arg[i], "file")) {
MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentScript->Arg[0], 0x100);
}
}
} else
MessageBoxW(0,Strings[IDS_XMLERROR_2],0,0);
}
void tag_opened (void* usrdata, const char* tag, const char** arg)
{
int i;
if(!strcmp(tag, "import"))
{
for (i=0; arg[i]; i+=2)
{
if(!strcmp(arg[i], "file"))
{
ImportXML(arg[i+1]);
}
else if(!strcmp(arg[i], "folder"))
{
ImportFolder(arg[i+1]);
}
}
}
else if(!strcmp(tag, "tree") && !CurrentApplication)
{
// check version
}
else if(!strcmp(tag, "category") && !CurrentApplication)
{
if (!Current)
{
Current = malloc(sizeof(struct Category));
memset(Current, 0, sizeof(struct Category));
}
else if (TagOpen)
{
Current->Children = malloc(sizeof(struct Category));
memset(Current->Children, 0, sizeof(struct Category));
Current->Children->Parent = Current;
Current = Current->Children;
}
else
{
Current->Next = malloc(sizeof(struct Category));
memset(Current->Next, 0, sizeof(struct Category));
Current->Next->Parent = Current->Parent;
Current = Current->Next;
}
TagOpen = TRUE;
for (i=0; arg[i]; i+=2)
{
if(!strcmp(arg[i], "name"))
{
MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, Current->Name, 0x100);
}
if(!strcmp(arg[i], "icon"))
{
Current->Icon = atoi(arg[i+1]);
}
}
}
else if(!strcmp(tag, "application") && !CurrentApplication)
{
if(Current->Apps)
{
CurrentApplication = Current->Apps;
while(CurrentApplication->Next)
CurrentApplication = CurrentApplication->Next;
CurrentApplication->Next = malloc(sizeof(struct Application));
memset(CurrentApplication->Next, 0, sizeof(struct Application));
CurrentApplication = CurrentApplication->Next;
}
else
{
Current->Apps = malloc(sizeof(struct Application));
memset(Current->Apps, 0, sizeof(struct Application));
CurrentApplication = Current->Apps;
}
for (i=0; arg[i]; i+=2)
{
if(!strcmp(arg[i], "name"))
{
MultiByteToWideChar(CP_UTF8, 0, arg[i+1], -1, CurrentApplication->Name, 0x100);
}
}
}
else if (CurrentApplication)
{
if (!strcmp(tag, "installscript")) {
InstallScriptOpen = TRUE;
} else if (!strcmp(tag, "uninstallscript")) {
UninstallScriptOpen = TRUE;
} else {
Script_tag_opened(usrdata, tag, arg);
if (CurrentScript == NULL) {
strncpy(CurrentTag, tag, 0x100);
}
}
}
else
MessageBoxW(0,Strings[IDS_XMLERROR_2],0,0);
}
void text (void* usrdata, const char* data, int len)
{
if (!CurrentApplication)
return;
if(!strcmp(CurrentTag, "maintainer"))
{
int currentlengt = lstrlenW(CurrentApplication->Maintainer);
MultiByteToWideChar(CP_UTF8, 0, data, len, &CurrentApplication->Maintainer[currentlengt], 0x100-currentlengt);
}
else if(!strcmp(CurrentTag, "regname"))
{
int currentlengt = lstrlenW(CurrentApplication->RegName);
MultiByteToWideChar(CP_UTF8, 0, data, len, &CurrentApplication->RegName[currentlengt], 0x100-currentlengt);
}
else if(!strcmp(CurrentTag, "description"))
{
int currentlengt = lstrlenW(CurrentApplication->Description);
MultiByteToWideChar(CP_UTF8, 0, data, len, &CurrentApplication->Description[currentlengt], 0x400-currentlengt);
}
else if(!strcmp(CurrentTag, "location"))
{
int currentlengt = lstrlenW(CurrentApplication->Location);
MultiByteToWideChar(CP_UTF8, 0, data, len, &CurrentApplication->Location[currentlengt], 0x100-currentlengt);
}
else if(!strcmp(CurrentTag, "version"))
{
int currentlengt = lstrlenW(CurrentApplication->Version);
MultiByteToWideChar(CP_UTF8, 0, data, len, &CurrentApplication->Version[currentlengt], 0x400-currentlengt);
}
else if(!strcmp(CurrentTag, "licence"))
{
int currentlengt = lstrlenW(CurrentApplication->Licence);
MultiByteToWideChar(CP_UTF8, 0, data, len, &CurrentApplication->Licence[currentlengt], 0x100-currentlengt);
}
}
void tag_closed (void* tree, const char* tag)
{
CurrentTag[0] = 0;
if(!strcmp(tag, "category"))
{
if (TagOpen)
{
TagOpen = FALSE;
}
else
{
Current = Current->Parent;
}
}
else if(!strcmp(tag, "application"))
{
CurrentApplication = NULL;
}
else if(!strcmp(tag, "installscript") || !strcmp(tag, "uninstallscript"))
{
CurrentScript = NULL;
InstallScriptOpen = FALSE;
UninstallScriptOpen = FALSE;
}
}
BOOL ImportXML (const char* filename)
{
int done = 0;
char buffer[0x100];
FILE* file;
XML_Parser parser;
strcpy(buffer, Path);
strncat(buffer, filename, 0x100-strlen(buffer));
file = fopen(buffer, "r");
if(!file)
{
MessageBoxW(0,Strings[IDS_XMLERROR_1],0,0);
return FALSE;
}
parser = XML_ParserCreate(NULL);
XML_SetElementHandler(parser, tag_opened, tag_closed);
XML_SetCharacterDataHandler(parser, text);
while (!done)
{
size_t len = fread (buffer, 1, sizeof(buffer), file);
done = len < sizeof(buffer);
buffer[len] = 0;
if(!XML_Parse(parser, buffer, len, done))
{
MessageBoxW(0,Strings[IDS_XMLERROR_2],0,0);
return FALSE;
}
}
XML_ParserFree(parser);
fclose(file);
return TRUE;
}
BOOL ProcessXML (const char* filename, struct Category* Root)
{
FILE* file;
file = fopen(filename, "r");
if(file)
{
Path[0]='\0';
fclose(file);
}
else
{
strncpy(Path, getenv("SystemRoot"), 0x100-13);
strcat(Path, "\\packagetree\\");
}
if(Current)
return FALSE;
Current = Root;
CurrentApplication = NULL;
CurrentScript = NULL;
TagOpen = TRUE;
InstallScriptOpen = FALSE;
UninstallScriptOpen = FALSE;
return ImportXML(filename);
}
void DML_tag_opened (void* usrdata, const char* tag, const char** arg)
{
int i;
if(!strcmp(tag, "application"))
{
for (i=0; arg[i]; i+=2)
{
if(!strcmp(arg[i], "name"))
{
strncpy(DML_Name, arg[i+1], 0x100);
}
else if(!strcmp(arg[i], "target"))
{
strncpy(DML_Target, arg[i+1], 0x100);
}
}
}
}
void NOP_text (void* usrdata, const char* data, int len)
{
}
void NOP_tag_closed (void* tree, const char* tag)
{
}
char* addDML (const char* filename)
{
int done = 0;
char buffer[0x100];
FILE* file;
XML_Parser parser;
DML_Target[0] = '\0';
file = fopen(filename, "r");
if(!file)
{
MessageBoxW(0,Strings[IDS_XMLERROR_1],0,0);
return NULL;
}
parser = XML_ParserCreate(NULL);
XML_SetElementHandler(parser, DML_tag_opened, NOP_tag_closed);
XML_SetCharacterDataHandler(parser, NOP_text);
while (!done)
{
size_t len = fread (buffer, 1, sizeof(buffer), file);
done = len < sizeof(buffer);
buffer[len] = 0;
if(!XML_Parse(parser, buffer, len, done))
{
MessageBoxW(0,Strings[IDS_XMLERROR_2],0,0);
return NULL;
}
}
XML_ParserFree(parser);
fclose(file);
if(DML_Target[0]=='\0')
{
MessageBoxW(0,Strings[IDS_XMLERROR_2],0,0);
return NULL;
}
strcpy(buffer, getenv("SystemRoot"));
strncat(buffer, "\\packagetree\\", 0x100-strlen(buffer));
strncat(buffer, DML_Target, 0x100-strlen(buffer));
CopyFileA(filename, buffer, FALSE);
return DML_Name;
}
void LoadScriptFunc(WCHAR* filenameW, struct ScriptElement* Script)
{
int done = 0;
char buffer[0x100];
char filenameA[0x100];
FILE* file;
XML_Parser parser;
struct ScriptElement* NextElement = Script->Next;
wcscpy(Script->Func,L"NOP");
CurrentScript = Script;
WideCharToMultiByte(CP_UTF8, 0, filenameW, -1, filenameA, 0x100, NULL, FALSE);
strcpy(buffer, Path);
strncat(buffer, filenameA, 0x100-strlen(buffer));
file = fopen(buffer, "r");
if(!file)
{
MessageBoxW(0,Strings[IDS_XMLERROR_1],0,0);
return;
}
parser = XML_ParserCreate(NULL);
XML_SetElementHandler(parser, Script_tag_opened, NOP_tag_closed);
XML_SetCharacterDataHandler(parser, NOP_text);
while (!done)
{
size_t len = fread (buffer, 1, sizeof(buffer), file);
done = len < sizeof(buffer);
buffer[len] = 0;
if(!XML_Parse(parser, buffer, len, done))
{
MessageBoxW(0,Strings[IDS_XMLERROR_2],0,0);
CurrentScript->Next = NextElement;
return;
}
}
XML_ParserFree(parser);
fclose(file);
CurrentScript->Next = NextElement;
return;
}
void FreeScript (struct ScriptElement* Script)
{
if (Script->Next != NULL)
FreeScript(Script->Next);
free(Script);
}
void FreeApps (struct Application* Apps)
{
if (Apps->Next)
FreeApps(Apps->Next);
if (Apps->InstallScript)
FreeScript(Apps->InstallScript);
if (Apps->UninstallScript)
FreeScript(Apps->UninstallScript);
free(Apps);
}
void FreeTree (struct Category* Node)
{
if (Node->Children)
FreeTree(Node->Children);
if (Node->Next)
FreeTree(Node->Next);
if (Node->Apps)
FreeApps(Node->Apps);
free(Node);
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

View file

@ -1,387 +0,0 @@
/*
* PROJECT: ReactOS utilities
* LICENSE: GPL - See COPYING in the top level directory
* FILE: apps/utils/getfirefox/getfirefox.c
* PURPOSE: Main program
* COPYRIGHT: Copyright 2001 John R. Sheets (for CodeWeavers)
* Copyright 2004 Mike McCormack (for CodeWeavers)
* Copyright 2005 Ge van Geldorp (gvg@reactos.org)
*/
/*
* Based on Wine dlls/shdocvw/shdocvw_main.c
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <precomp.h>
#define NDEBUG
#include <debug.h>
#define DOWNLOAD_URL L"http://links.reactos.org/getfirefox"
typedef struct _IBindStatusCallbackImpl
{
const IBindStatusCallbackVtbl *vtbl;
LONG ref;
HWND hDialog;
BOOL *pbCancelled;
} IBindStatusCallbackImpl;
static HRESULT WINAPI
dlQueryInterface(IBindStatusCallback* This, REFIID riid, void** ppvObject)
{
if (NULL == ppvObject)
{
return E_POINTER;
}
if (IsEqualIID(riid, &IID_IUnknown) ||
IsEqualIID(riid, &IID_IBindStatusCallback))
{
IBindStatusCallback_AddRef( This );
*ppvObject = This;
return S_OK;
}
return E_NOINTERFACE;
}
static ULONG WINAPI
dlAddRef(IBindStatusCallback* iface)
{
IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface;
return InterlockedIncrement(&This->ref);
}
static ULONG WINAPI
dlRelease(IBindStatusCallback* iface)
{
IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface;
DWORD ref = InterlockedDecrement(&This->ref);
if( !ref )
{
DestroyWindow( This->hDialog );
HeapFree(GetProcessHeap(), 0, This);
}
return ref;
}
static HRESULT WINAPI
dlOnStartBinding(IBindStatusCallback* iface, DWORD dwReserved, IBinding* pib)
{
DPRINT1("OnStartBinding not implemented\n");
return S_OK;
}
static HRESULT WINAPI
dlGetPriority(IBindStatusCallback* iface, LONG* pnPriority)
{
DPRINT1("GetPriority not implemented\n");
return S_OK;
}
static HRESULT WINAPI
dlOnLowResource( IBindStatusCallback* iface, DWORD reserved)
{
DPRINT1("OnLowResource not implemented\n");
return S_OK;
}
static HRESULT WINAPI
dlOnProgress(IBindStatusCallback* iface, ULONG ulProgress,
ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText)
{
IBindStatusCallbackImpl *This = (IBindStatusCallbackImpl *) iface;
HWND Item;
LONG r;
WCHAR OldText[100];
Item = GetDlgItem(This->hDialog, IDC_PROGRESS);
if (NULL != Item && 0 != ulProgressMax)
{
SendMessageW(Item, PBM_SETPOS, (ulProgress * 100) / ulProgressMax, 0);
}
Item = GetDlgItem(This->hDialog, IDC_STATUS);
if (NULL != Item && NULL != szStatusText)
{
SendMessageW(Item, WM_GETTEXT, sizeof(OldText) / sizeof(OldText[0]),
(LPARAM) OldText);
if (sizeof(OldText) / sizeof(OldText[0]) - 1 <= wcslen(OldText) ||
0 != wcscmp(OldText, szStatusText))
{
SendMessageW(Item, WM_SETTEXT, 0, (LPARAM) szStatusText);
}
}
SetLastError(0);
r = GetWindowLongPtrW(This->hDialog, GWLP_USERDATA);
if (0 != r || 0 != GetLastError())
{
*This->pbCancelled = TRUE;
DPRINT("Cancelled\n");
return E_ABORT;
}
return S_OK;
}
static HRESULT WINAPI
dlOnStopBinding(IBindStatusCallback* iface, HRESULT hresult, LPCWSTR szError)
{
DPRINT1("OnStopBinding not implemented\n");
return S_OK;
}
static HRESULT WINAPI
dlGetBindInfo(IBindStatusCallback* iface, DWORD* grfBINDF, BINDINFO* pbindinfo)
{
DPRINT1("GetBindInfo not implemented\n");
return S_OK;
}
static HRESULT WINAPI
dlOnDataAvailable(IBindStatusCallback* iface, DWORD grfBSCF,
DWORD dwSize, FORMATETC* pformatetc, STGMEDIUM* pstgmed)
{
DPRINT1("OnDataAvailable implemented\n");
return S_OK;
}
static HRESULT WINAPI
dlOnObjectAvailable(IBindStatusCallback* iface, REFIID riid, IUnknown* punk)
{
DPRINT1("OnObjectAvailable implemented\n");
return S_OK;
}
static const IBindStatusCallbackVtbl dlVtbl =
{
dlQueryInterface,
dlAddRef,
dlRelease,
dlOnStartBinding,
dlGetPriority,
dlOnLowResource,
dlOnProgress,
dlOnStopBinding,
dlGetBindInfo,
dlOnDataAvailable,
dlOnObjectAvailable
};
static IBindStatusCallback*
CreateDl(HWND Dlg, BOOL *pbCancelled)
{
IBindStatusCallbackImpl *This;
This = HeapAlloc(GetProcessHeap(), 0, sizeof(IBindStatusCallbackImpl));
This->vtbl = &dlVtbl;
This->ref = 1;
This->hDialog = Dlg;
This->pbCancelled = pbCancelled;
return (IBindStatusCallback*) This;
}
static BOOL
GetShortcutName(LPWSTR ShortcutName)
{
if (! SHGetSpecialFolderPathW(0, ShortcutName, CSIDL_PROGRAMS, FALSE))
{
return FALSE;
}
if (NULL == PathAddBackslashW(ShortcutName))
{
return FALSE;
}
if (0 == LoadStringW(GetModuleHandle(NULL), IDS_START_MENU_NAME,
ShortcutName + wcslen(ShortcutName),
MAX_PATH - wcslen(ShortcutName)))
{
return FALSE;
}
if (MAX_PATH - 5 < wcslen(ShortcutName))
{
return FALSE;
}
wcscat(ShortcutName, L".lnk");
return TRUE;
}
static DWORD WINAPI
ThreadFunc(LPVOID Context)
{
static const WCHAR szUrl[] = DOWNLOAD_URL;
IBindStatusCallback *dl;
WCHAR path[MAX_PATH], ShortcutName[MAX_PATH];
LPWSTR p;
STARTUPINFOW si;
PROCESS_INFORMATION pi;
HWND Dlg = (HWND) Context;
DWORD r;
BOOL bCancelled = FALSE;
BOOL bTempfile = FALSE;
/* built the path for the download */
p = wcsrchr(szUrl, L'/');
if (NULL == p)
{
goto end;
}
if (! GetTempPathW(MAX_PATH, path))
{
goto end;
}
wcscat(path, p + 1);
/* download it */
bTempfile = TRUE;
dl = CreateDl(Context, &bCancelled);
r = URLDownloadToFileW(NULL, szUrl, path, 0, dl);
if (NULL != dl)
{
IBindStatusCallback_Release(dl);
}
if (S_OK != r || bCancelled )
{
goto end;
}
ShowWindow(Dlg, SW_HIDE);
/* run it */
memset(&si, 0, sizeof(si));
si.cb = sizeof(si);
r = CreateProcessW(path, NULL, NULL, NULL, 0, 0, NULL, NULL, &si, &pi);
if (0 == r)
{
goto end;
}
CloseHandle(pi.hThread);
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
if (BST_CHECKED == SendMessageW(GetDlgItem(Dlg, IDC_REMOVE), BM_GETCHECK,
0, 0) &&
GetShortcutName(ShortcutName))
{
DeleteFileW(ShortcutName);
}
end:
if (bTempfile)
{
DeleteFileW(path);
}
EndDialog(Dlg, 0);
return 0;
}
static INT_PTR CALLBACK
dlProc(HWND Dlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
HANDLE Thread;
DWORD ThreadId;
HWND Item;
HICON Icon;
WCHAR ShortcutName[MAX_PATH];
switch (Msg)
{
case WM_INITDIALOG:
Icon = LoadIconW((HINSTANCE) GetWindowLongPtr(Dlg, GWLP_HINSTANCE),
MAKEINTRESOURCEW(IDI_ICON_MAIN));
if (NULL != Icon)
{
SendMessageW(Dlg, WM_SETICON, ICON_BIG, (LPARAM) Icon);
SendMessageW(Dlg, WM_SETICON, ICON_SMALL, (LPARAM) Icon);
}
SetWindowLongPtrW(Dlg, GWLP_USERDATA, 0);
Item = GetDlgItem(Dlg, IDC_PROGRESS);
if (NULL != Item)
{
SendMessageW(Item, PBM_SETRANGE, 0, MAKELPARAM(0,100));
SendMessageW(Item, PBM_SETPOS, 0, 0);
}
Item = GetDlgItem(Dlg, IDC_REMOVE);
if (NULL != Item)
{
if (GetShortcutName(ShortcutName) &&
INVALID_FILE_ATTRIBUTES != GetFileAttributesW(ShortcutName))
{
SendMessageW(Item, BM_SETCHECK, BST_CHECKED, 0);
}
else
{
SendMessageW(Item, BM_SETCHECK, BST_UNCHECKED, 0);
ShowWindow(Item, SW_HIDE);
}
}
Thread = CreateThread(NULL, 0, ThreadFunc, Dlg, 0, &ThreadId);
if (NULL == Thread)
{
return FALSE;
}
CloseHandle(Thread);
return TRUE;
case WM_COMMAND:
if (wParam == IDCANCEL)
{
SetWindowLongPtrW(Dlg, GWLP_USERDATA, 1);
PostMessage(Dlg, WM_CLOSE, 0, 0);
}
return FALSE;
case WM_CLOSE:
EndDialog(Dlg, 0);
return TRUE;
default:
return FALSE;
}
}
/***********************************************************************
* Main program
*/
int WINAPI
WinMain(HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
InitCommonControls();
DialogBoxW(hThisInstance, MAKEINTRESOURCEW(IDD_GETFIREFOX), 0,
dlProc);
return 0;
}

View file

@ -1,21 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
<module name="getfirefox" type="win32gui" installbase="system32" installname="getfirefox.exe">
<include base="getfirefox">.</include>
<define name="UNICODE" />
<define name="_UNICODE" />
<define name="__USE_W32API" />
<define name="WINVER">0x0501</define>
<define name="_WIN32_IE>0x0600</define>
<library>comctl32</library>
<library>ntdll</library>
<library>shell32</library>
<library>shlwapi</library>
<library>urlmon</library>
<library>user32</library>
<library>kernel32</library>
<library>uuid</library>
<pch>precomp.h</pch>
<file>getfirefox.c</file>
<file>getfirefox.rc</file>
</module>

View file

@ -1,22 +0,0 @@
/*
* PROJECT: ReactOS utilities
* LICENSE: GPL - See COPYING in the top level directory
* FILE: apps/utils/getfirefox/getfirefox.rc
* PURPOSE: Language-independent resources
* COPYRIGHT: Copyright 2005 Ge van Geldorp (gvg@reactos.org)
*/
#include <windows.h>
#include "resource.h"
#define REACTOS_STR_FILE_DESCRIPTION "Firefox downloader\0"
#define REACTOS_STR_INTERNAL_NAME "getfirefox\0"
#define REACTOS_STR_ORIGINAL_FILENAME "getfirefox.exe\0"
#include <reactos/version.rc>
#include "rsrc.rc"

View file

@ -1,44 +0,0 @@
/*
* PROJECT: ReactOS utilities
* LICENSE: GPL - See COPYING in the top level directory
* FILE: apps/utils/getfirefox/En.rc
* PURPOSE: English resources
* COPYRIGHT: Copyright 2004 Mike McCormack for CodeWeavers
* Copyright 2005 Ge van Geldorp (gvg@reactos.org)
*/
/*
* Based on Wine dlls/shdocvw/En.rc
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT
IDD_GETFIREFOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Lade Firefox herunter"
FONT 8, "MS Shell Dlg"
{
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
CHECKBOX "Entferne ""Get Firefox"" nach Fertigstellung aus dem Startmenü", IDC_REMOVE,
10, 44, 200, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Abbrechen", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
}
STRINGTABLE
BEGIN
IDS_START_MENU_NAME "Get Firefox"
END

View file

@ -1,44 +0,0 @@
/*
* PROJECT: ReactOS utilities
* LICENSE: GPL - See COPYING in the top level directory
* FILE: apps/utils/getfirefox/En.rc
* PURPOSE: English resources
* COPYRIGHT: Copyright 2004 Mike McCormack for CodeWeavers
* Copyright 2005 Ge van Geldorp (gvg@reactos.org)
*/
/*
* Based on Wine dlls/shdocvw/En.rc
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
IDD_GETFIREFOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Downloading Firefox"
FONT 8, "MS Shell Dlg"
{
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
CHECKBOX "Remove ""Get Firefox"" from Start Menu when done", IDC_REMOVE,
10, 44, 200, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancel", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
}
STRINGTABLE
BEGIN
IDS_START_MENU_NAME "Get Firefox"
END

View file

@ -1,45 +0,0 @@
/*
* PROJECT: ReactOS utilities
* LICENSE: GPL - See COPYING in the top level directory
* FILE: apps/utils/getfirefox/En.rc
* PURPOSE: French resources
* COPYRIGHT: Copyright 2004 Mike McCormack for CodeWeavers
* Copyright 2005 Ge van Geldorp (gvg@reactos.org)
* Copyright 2005 G. Maton (mustang9@gmail.com) - French translation
*/
/*
* Based on Wine dlls/shdocvw/En.rc
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT
IDD_GETFIREFOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Téléchargement de Firefox"
FONT 8, "MS Shell Dlg"
{
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
CHECKBOX "Supprimer ""Obtenir Firefox"" du Menu démarrer une fois terminé", IDC_REMOVE,
10, 44, 200, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Annuler", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
}
STRINGTABLE
BEGIN
IDS_START_MENU_NAME "Obtenir Firefox"
END

View file

@ -1,45 +0,0 @@
/*
* PROJECT: ReactOS utilities
* LICENSE: GPL - See COPYING in the top level directory
* FILE: apps/utils/getfirefox/En.rc
* PURPOSE: English resources
* COPYRIGHT: Copyright 2004 Mike McCormack for CodeWeavers
* Copyright 2005 Ge van Geldorp (gvg@reactos.org)
* Copyright 2005 Robert Horvath (talley@cubeclub.hu) - Hungarian translation
*/
/*
* Based on Wine dlls/shdocvw/En.rc
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
IDD_GETFIREFOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "A Firefox letöltése"
FONT 8, "MS Shell Dlg"
{
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
CHECKBOX "A ""Szerezd meg a Firefoxot"" elvátolítása a Start Menübõl befejezés után", IDC_REMOVE,
10, 44, 200, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Mégse", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
}
STRINGTABLE
BEGIN
IDS_START_MENU_NAME "Szerezd meg Firefoxot"
END

View file

@ -1,28 +0,0 @@
/*
* PROJECT: ReactOS utilities
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base/applications/getfirefox/lang/id-ID.rc
* PURPOSE: Indonesian resources
* COPYRIGHT: Copyright 2004 Mike McCormack for CodeWeavers
* Copyright 2005 Ge van Geldorp (gvg@reactos.org)
* Copyright 2007 Zaenal Mutaqin (ade999@gmail.com) Indonesian translation
*/
LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT
IDD_GETFIREFOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Mendownload Firefox"
FONT 8, "MS Shell Dlg"
{
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
CHECKBOX "Hapus ""Dapatkan Firefox"" dari Menu Start bila selesai", IDC_REMOVE,
10, 44, 200, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Batal", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
}
STRINGTABLE
BEGIN
IDS_START_MENU_NAME "Dapatkan Firefox"
END

View file

@ -1,44 +0,0 @@
/*
* PROJECT: ReactOS utilities
* LICENSE: GPL - See COPYING in the top level directory
* FILE: apps/utils/getfirefox/It.rc
* PURPOSE: Italian resources
* COPYRIGHT: Copyright 2004 Mike McCormack for CodeWeavers
* Copyright 2005 Ge van Geldorp (gvg@reactos.org)
*/
/*
* Based on Wine dlls/shdocvw/En.rc
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
IDD_GETFIREFOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Scaricando Firefox"
FONT 8, "MS Shell Dlg"
{
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
CHECKBOX "Rimuovere ""Ottieni Firefox"" dal Menù di Avvio", IDC_REMOVE,
10, 44, 200, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Cancel", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
}
STRINGTABLE
BEGIN
IDS_START_MENU_NAME "Ottieni Firefox"
END

View file

@ -1,44 +0,0 @@
/*
* PROJECT: ReactOS utilities
* LICENSE: GPL - See COPYING in the top level directory
* FILE: apps/utils/getfirefox/En.rc
* PURPOSE: Norwegian resources
* COPYRIGHT: Copyright 2004 Mike McCormack for CodeWeavers
* Copyright 2005 Ge van Geldorp (gvg@reactos.org)
*/
/*
* Based on Wine dlls/shdocvw/En.rc
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL
IDD_GETFIREFOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "laster ned Firefox"
FONT 8, "MS Shell Dlg"
{
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
CHECKBOX "Fjern 'Last Ned Firefox' fra startmenyen", IDC_REMOVE,
10, 44, 200, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Avbryt", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
}
STRINGTABLE
BEGIN
IDS_START_MENU_NAME "Få Firefox"
END

View file

@ -1,44 +0,0 @@
/*
* PROJECT: ReactOS utilities
* LICENSE: GPL - See COPYING in the top level directory
* FILE: apps/utils/getfirefox/Nl.rc
* PURPOSE: Dutch resources
* COPYRIGHT: Copyright 2004 Mike McCormack for CodeWeavers
* Copyright 2005 Ge van Geldorp (gvg@reactos.org)
*/
/*
* Based on Wine dlls/shdocvw/En.rc
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
LANGUAGE LANG_DUTCH, SUBLANG_DUTCH
IDD_GETFIREFOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Bezig met downloaden van Firefox"
FONT 8, "MS Shell Dlg"
{
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
CHECKBOX "Verwijder ""Get Firefox"" uit het start menu wanneer de download compleet is", IDC_REMOVE,
10, 44, 200, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Annuleren", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
}
STRINGTABLE
BEGIN
IDS_START_MENU_NAME "Get Firefox"
END

View file

@ -1,18 +0,0 @@
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
IDD_GETFIREFOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Ñêà÷èâàíèå Firefox"
FONT 8, "MS Shell Dlg"
{
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
CHECKBOX "Óäàëèòü ""Ñêà÷àòü Firefox"" èç ìåíþ ""Ïóñê"" ïðè çàâåðøåíèè", IDC_REMOVE,
10, 44, 200, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Îòìåíà", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
}
STRINGTABLE
BEGIN
IDS_START_MENU_NAME "Ñêà÷àòü Firefox"
END

View file

@ -1,46 +0,0 @@
/*
* PROJECT: ReactOS utilities
* LICENSE: GPL - See COPYING in the top level directory
* FILE: apps/utils/getfirefox/Sv.rc
* PURPOSE: Swedish resources
* COPYRIGHT: Copyright 2004 Mike McCormack for CodeWeavers
* Copyright 2005 Ge van Geldorp (gvg@reactos.org)
* Copyright 2006 Andreas Bjerkeholt (harteex@gmail.com)
*/
/*
* Based on Wine dlls/shdocvw/En.rc
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
LANGUAGE LANG_SWEDISH, SUBLANG_SWEDISH
IDD_GETFIREFOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Hämtar Firefox"
FONT 8, "MS Shell Dlg"
{
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
CHECKBOX "Ta bort ""Hämta Firefox"" från startmenyn när nedladdningen är klar", IDC_REMOVE,
10, 44, 200, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Avbryt", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
}
STRINGTABLE
BEGIN
IDS_START_MENU_NAME "Hämta Firefox"
END

View file

@ -1,28 +0,0 @@
/*
* PROJECT: ReactOS utilities
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base/applications/getfirefox/lang/th-TH.rc
* PURPOSE: Thai resources
* COPYRIGHT: Copyright 2004 Mike McCormack for CodeWeavers
* Copyright 2005 Ge van Geldorp (gvg@reactos.org)
* Copyright 2006 Sumath Aowsakulsutthi (Thai translation)
*/
LANGUAGE LANG_THAI, SUBLANG_DEFAULT
IDD_GETFIREFOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "´ÒǹìâËÅ´ Firefox"
FONT 8, "MS Shell Dlg"
{
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
CHECKBOX "à¤Å×è͹ÂéÒÂ""¹Óà¢éÒâ»Ãá¡ÃÁ Firefox"" àÃÔèÁµé¹¨Ò¡ÃÒ¡ÒÃËÅÑ¡", IDC_REMOVE,
10, 44, 200, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
PUSHBUTTON "¡àÅÔ¡", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
}
STRINGTABLE
BEGIN
IDS_START_MENU_NAME "¹Óà¢éÒâ»Ãá¡ÃÁ Firefox"
END

View file

@ -1,38 +0,0 @@
/*
* getfirefox (Ukrainian resources)
*
* Copyright 2006 Artem Reznikov
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
IDD_GETFIREFOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Çàâàíòàæåííÿ Firefox"
FONT 8, "MS Shell Dlg"
{
CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
CHECKBOX "Âèäàëèòè ""Çàâàíòàæèòè Firefox"" ç ìåíþ ""Ïóñê"" ï³ñëÿ çàâåðøåííÿ", IDC_REMOVE,
10, 44, 200, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
PUSHBUTTON "Ñêàñóâàòè", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
}
STRINGTABLE
BEGIN
IDS_START_MENU_NAME "Çàâàíòàæèòè Firefox"
END

View file

@ -1,17 +0,0 @@
/*
* PROJECT: ReactOS utilities
* LICENSE: GPL - See COPYING in the top level directory
* FILE: apps/utils/getfirefox/precomp.h
* PURPOSE: Precompiled header file
* COPYRIGHT: Copyright 2005 Ge van Geldorp (gvg@reactos.org)
*/
#define COBJMACROS
#define WIN32_NO_STATUS
#include <windows.h>
#include <commctrl.h>
#include <shlobj.h>
#include <shlwapi.h>
#include <urlmon.h>
#include "resource.h"

View file

@ -1,17 +0,0 @@
/*
* PROJECT: ReactOS utilities
* LICENSE: GPL - See COPYING in the top level directory
* FILE: apps/utils/getfirefox/resource.h
* PURPOSE: Resource constants
* COPYRIGHT: Copyright 2005 Ge van Geldorp (gvg@reactos.org)
*/
#define IDI_ICON_MAIN 1
#define IDD_GETFIREFOX 100
#define IDC_PROGRESS 1000
#define IDC_STATUS 1001
#define IDC_REMOVE 1002
#define IDS_START_MENU_NAME 1100

View file

@ -1,31 +0,0 @@
#include <windows.h>
#include "resource.h"
/*
* Note: this icon is the "default logo" referenced here:
* http://www.mozilla.org/foundation/trademarks/faq.html (under "What are the
* Mozilla Trademarks and Logos?"). Don't use the official Firefox logo as it
* is trademarked.
*/
1 ICON "firefox.ico"
/* define language neutral resources */
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
/* include localised resources */
#include "lang/de-DE.rc"
#include "lang/en-US.rc"
#include "lang/fr-FR.rc"
#include "lang/hu-HU.rc"
#include "lang/id-ID.rc"
#include "lang/it-IT.rc"
#include "lang/nl-NL.rc"
#include "lang/nb-NO.rc"
#include "lang/ru-RU.rc"
#include "lang/sv-SE.rc"
#include "lang/th-TH.rc"
#include "lang/uk-UA.rc"

View file

@ -1,394 +0,0 @@
/*
* ReactOS Win32 Applications
* Copyright (C) 2005 ReactOS Team
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS arp utility
* FILE: apps/utils/gettype/gettype.c
* PURPOSE:
* PROGRAMMERS: Brandon Turner (turnerb7@msu.edu)
* REVISIONS:
* GM 30/10/05 Created
*
* FIXME: gettype only supports local computer.
*/
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <lm.h>
#include <shellapi.h>
enum
{
GETTYPE_ROLE = 0x001,
GETTYPE_HELP = 0x002,
GETTYPE_SP = 0x004,
GETTYPE_VER = 0x008,
GETTYPE_MINV = 0x010,
GETTYPE_MAJV = 0x020,
GETTYPE_TYPE = 0x040,
GETTYPE_BUILD = 0x080
};
INT
GetVersionNumber(BOOL bLocal, LPOSVERSIONINFOEX osvi, LPSERVER_INFO_102 pBuf102)
{
INT VersionNumber = 255;
if(pBuf102 != NULL && !bLocal)
{
VersionNumber = pBuf102->sv102_version_major * 1000;
VersionNumber += (pBuf102->sv102_version_minor * 100);
}
else if(bLocal)
{
VersionNumber = osvi->dwMajorVersion * 1000;
VersionNumber += (osvi->dwMinorVersion * 100);
}
return VersionNumber;
}
INT
GetMajValue(BOOL Major, BOOL bLocal, LPOSVERSIONINFOEX osvi, LPSERVER_INFO_102 pBuf102)
{
INT VersionNumber = 255;
if(pBuf102 != NULL && !bLocal)
{
if(Major)
VersionNumber = pBuf102->sv102_version_major * 1000;
else
VersionNumber = pBuf102->sv102_version_minor * 100;
}
else
{
if(Major)
VersionNumber = osvi->dwMajorVersion * 1000;
else
VersionNumber = osvi->dwMinorVersion * 100;
}
return VersionNumber;
}
INT
GetSystemRole(BOOL bLocal, LPOSVERSIONINFOEX osvi, LPSERVER_INFO_102 pBuf102)
{
if(pBuf102 != NULL && !bLocal)
{
if ((pBuf102->sv102_type & SV_TYPE_DOMAIN_CTRL) ||
(pBuf102->sv102_type & SV_TYPE_DOMAIN_BAKCTRL))
return 1;
else if(pBuf102->sv102_type & SV_TYPE_SERVER_NT)
return 2;
else
return 3;
}
else
{
if(osvi->wProductType == VER_NT_DOMAIN_CONTROLLER)
return 1;
else if(osvi->wProductType == VER_NT_SERVER)
return 2;
else if(osvi->wProductType == VER_NT_WORKSTATION)
return 3;
}
return 255;
}
INT
GetServicePack(BOOL bLocal, LPOSVERSIONINFOEX osvi, LPSERVER_INFO_102 pBuf102, TCHAR * Server)
{
INT SPNumber = 255;
if(!bLocal)
{
/* FIXME: Use Registry to get value */
}
else
{
SPNumber = osvi->wServicePackMajor;
}
return SPNumber;
}
INT
GetBuildNumber(BOOL bLocal, LPOSVERSIONINFOEX osvi, LPSERVER_INFO_102 pBuf102)
{
INT BuildNum = 255;
if(!bLocal)
{
/* FIXME: Use Registry to get value */
}
else
{
BuildNum = osvi->dwBuildNumber;
}
return BuildNum;
}
INT GetType(BOOL bLocal, LPOSVERSIONINFOEX osvi, LPSERVER_INFO_102 pBuf102)
{
if(bLocal)
{
if(osvi->dwMajorVersion == 5)
{
if(osvi->dwMinorVersion == 1)
{
if(osvi->wSuiteMask & VER_SUITE_PERSONAL)
return 1;
else
return 2;
}
else if(osvi->dwMinorVersion == 2)
{
if(osvi->wSuiteMask & VER_SUITE_BLADE)
return 6;
else if(osvi->wSuiteMask & VER_SUITE_DATACENTER)
return 5;
else if(osvi->wSuiteMask & VER_SUITE_ENTERPRISE)
return 4;
else
return 3;
}
}
}
else
{
/* FIXME: Get this value from registry */
}
return 255;
}
VOID
GetBasicInfo(LPOSVERSIONINFOEX osvi, TCHAR * HostName, TCHAR * OSName, TCHAR * Version, TCHAR * Role, TCHAR * Components)
{
/* Host Name - COMPUTERNAME*/
DWORD bufCharCount = 1024;
GetComputerName(HostName, &bufCharCount);
/* OSName - Windows XP Home Editition */
if(osvi->dwMajorVersion == 4)
{
_tcscpy(OSName, _T("Microsoft Windows NT 4.0 "));
}
else if(osvi->dwMajorVersion == 5)
{
if(osvi->dwMajorVersion == 0)
{
_tcscpy(OSName, _T("Microsoft Windows 2000 "));
}
else if(osvi->dwMinorVersion == 1)
{
_tcscpy(OSName, _T("Microsoft Windows XP "));
}
else if(osvi->dwMinorVersion == 2)
{
_tcscpy(OSName, _T("Microsoft Windows Server 2003 "));
}
}
else if(osvi->dwMajorVersion == 6)
{
_tcscpy(OSName, _T("Microsoft Windows Vista "));
}
else
{
_tcscpy(OSName, _T("Microsoft Windows "));
}
if(osvi->wSuiteMask & VER_SUITE_BLADE)
_tcscat(OSName, _T("Web Edition"));
if(osvi->wSuiteMask & VER_SUITE_DATACENTER)
_tcscat(OSName, _T("Datacenter"));
if(osvi->wSuiteMask & VER_SUITE_ENTERPRISE)
_tcscat(OSName, _T("Enterprise"));
if(osvi->wSuiteMask & VER_SUITE_EMBEDDEDNT)
_tcscat(OSName, _T("Embedded"));
if(osvi->wSuiteMask & VER_SUITE_PERSONAL)
_tcscat(OSName, _T("Home Edition"));
if(osvi->wSuiteMask & VER_SUITE_SMALLBUSINESS_RESTRICTED && osvi->wSuiteMask & VER_SUITE_SMALLBUSINESS)
_tcscat(OSName, _T("Small Bussiness Edition"));
/* Version - 5.1 Build 2600 Serivce Pack 2 */
_stprintf(Version, _T("%d.%d Build %d %s"),(int)osvi->dwMajorVersion,(int)osvi->dwMinorVersion,(int)osvi->dwBuildNumber, osvi->szCSDVersion);
/* Role - Workgroup / Server / Domain Controller */
if(osvi->wProductType == VER_NT_DOMAIN_CONTROLLER)
_tcscpy(Role, _T("Domain Controller"));
else if(osvi->wProductType == VER_NT_SERVER)
_tcscpy(Role, _T("Server"));
else if(osvi->wProductType == VER_NT_WORKSTATION)
_tcscpy(Role, _T("Workgroup"));
/* Components - FIXME: what is something that might be installed? */
_tcscat(Components, _T("Not Installed"));
}
INT
main (VOID)
{
DWORD Operations = 0;
INT ret = 255;
INT i = 0;
INT argc = 0;
/* True if the target is local host */
BOOL bLocal = TRUE;
DWORD nStatus = 0;
TCHAR ServerName[32];
TCHAR RemoteResource[32];
TCHAR UserName[32] = _T("");
TCHAR Password[32] = _T("");
LPOSVERSIONINFOEX osvi = NULL;
LPSERVER_INFO_102 pBuf102 = NULL;
LPTSTR * argv;
osvi = (LPOSVERSIONINFOEX)malloc(sizeof(LPOSVERSIONINFOEX));
pBuf102 = (LPSERVER_INFO_102)malloc(sizeof(LPSERVER_INFO_102));
/* Get the command line correctly since it is unicode */
argv = CommandLineToArgvW(GetCommandLineW(), &argc);
/* Process flags */
if(argc)
{
for (i = 1; i < argc; i++)
{
if(!_tcsicmp(argv[i], _T("/ROLE")) && !Operations)
Operations |= GETTYPE_ROLE;
else if(!_tcsicmp(argv[i], _T("/VER")) && !Operations)
Operations |= GETTYPE_VER;
else if(!_tcsicmp(argv[i], _T("/MAJV")) && !Operations)
Operations |= GETTYPE_MAJV;
else if(!_tcsicmp(argv[i], _T("/MINV")) && !Operations)
Operations |= GETTYPE_MINV;
else if(!_tcsicmp(argv[i], _T("/SP")) && !Operations)
Operations |= GETTYPE_SP;
else if(!_tcsicmp(argv[i], _T("/BUILD")) && !Operations)
Operations |= GETTYPE_BUILD;
else if(!_tcsicmp(argv[i], _T("/TYPE")) && !Operations)
Operations |= GETTYPE_TYPE;
else if(!_tcsicmp(argv[i], _T("/?")) && !Operations)
Operations |= GETTYPE_HELP;
else if(!_tcsicmp(argv[i], _T("/S")) && i + 1 < argc)
{
_tcscpy(ServerName,argv[++i]);
bLocal = FALSE;
}
else if(!wcsicmp(argv[i], L"/U") && i + 1 < argc)
_tcscpy(UserName,argv[++i]);
else if(!wcsicmp(argv[i], L"/P") && i + 1 < argc)
_tcscpy(Password,argv[++i]);
else
{
wprintf(L"Error in paramters, please see usage\n");
return 255;
}
}
}
/* Some debug info */
//_tprintf(_T("%s - %s - %s - %d"), ServerName, UserName, Password, (int)Operations);
if(!bLocal)
{
NETRESOURCE nr;
/* \\*IP or Computer Name*\*Share* */
_stprintf(RemoteResource, _T("\\\\%s\\IPC$"), ServerName);
nr.dwType = RESOURCETYPE_ANY;
nr.lpLocalName = NULL;
nr.lpProvider= NULL;
nr.lpRemoteName = RemoteResource;
/* open a connection to the server with difference user/pass. */
nStatus = WNetAddConnection2(&nr, UserName[0]?UserName:NULL,Password[0]?Password:NULL, CONNECT_INTERACTIVE | CONNECT_COMMANDLINE);
if(nStatus != NO_ERROR)
{
_tprintf(_T("Error:%d-%d\n"),(int)nStatus,GetLastError());
return 255;
}
}
/* Use GetVersionEx for anything that we are looking for locally */
if(bLocal)
{
osvi->dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
if(!GetVersionEx((LPOSVERSIONINFO)osvi))
{
_tprintf(_T("Failed to get local information\n"));
return 255;
}
}
else
{
nStatus = NetServerGetInfo(NULL,102,(LPBYTE *)&pBuf102);
if (nStatus != NERR_Success)
{
_tprintf(_T("Failed to connection to remote machine\n"));
return 255;
}
}
if(Operations & GETTYPE_VER)
{
ret = GetVersionNumber(bLocal, osvi, pBuf102);
}
else if(Operations & GETTYPE_MAJV)
{
ret = GetMajValue(TRUE, bLocal, osvi, pBuf102);
}
else if(Operations & GETTYPE_MINV)
{
ret = GetMajValue(FALSE, bLocal, osvi, pBuf102);
}
else if(Operations & GETTYPE_ROLE)
{
ret = GetSystemRole(bLocal, osvi, pBuf102);
}
else if(Operations & GETTYPE_SP)
{
ret = GetServicePack(bLocal, osvi, pBuf102, ServerName);
}
else if(Operations & GETTYPE_BUILD)
{
ret = GetBuildNumber(bLocal, osvi, pBuf102);
}
else if(Operations & GETTYPE_TYPE)
{
ret = GetType(bLocal, osvi, pBuf102);
}
else if(Operations & GETTYPE_HELP)
{
wprintf(L"GETTYPE [/ROLE | /SP | /VER | /MAJV | /MINV | /TYPE | /BUILD]");
ret = 0;
}
else if(!Operations && bLocal)
{
/* FIXME: what happens when no flags except remote machine, does it
it print this info for the remote server? */
TCHAR HostName[1024] = _T("");
TCHAR OSName[1024] = _T("");
TCHAR VersionInfo[1024] = _T("");
TCHAR Role[1024] = _T("");
TCHAR Components[1024] = _T("");
GetBasicInfo(osvi, HostName, OSName, VersionInfo, Role, Components);
_tprintf(_T("\nHostname: %s\nName: %s\nVersion:%s\n") ,HostName, OSName, VersionInfo);
_tprintf(_T("Role: %s\nComponent: %s\n"), Role, Components);
ret = 0;
}
/* Clean up some stuff that that was opened */
if(pBuf102)
NetApiBufferFree(pBuf102);
LocalFree(argv);
if(!bLocal)
{
WNetCancelConnection2(RemoteResource,0,TRUE);
}
return ret;
}

View file

@ -1,12 +0,0 @@
<module name="gettype" type="win32cui" installbase="system32" installname="gettype.exe">
<include base="gettype">.</include>
<define name="_WIN32_WINNT">0x0501</define>
<define name="__USE_W32API" />
<define name="UNICODE" />
<define name="_UNICODE" />
<library>kernel32</library>
<library>shell32</library>
<library>mpr</library>
<library>netapi32</library>
<file>gettype.c</file>
</module>

View file

@ -1,68 +0,0 @@
#
# ROS Internet Web Browser
#
# Makefile.MinGW
#
CC = gcc
CXX = g++
LINK = g++
CFLAGS = -DWIN32 -D_WIN32_IE=0x0600 -D_WIN32_WINNT=0x0501 -DWINVER=0x0500 -fexceptions -Wall -Wno-unused-value -I. -I$(EXPAT_INC)
RCFLAGS = -DWIN32 -D__WINDRES__
LFLAGS = -Wl,--subsystem,windows
ifdef DEBUG
CFLAGS += -D_DEBUG -g
RCFLAGS += -D_DEBUG
LFLAGS += -g
else
CFLAGS += -DNDEBUG -Os
RCFLAGS += -DNDEBUG
LFLAGS += -s
endif
ifndef UNICODE
UNICODE = 1
endif
ifeq ($(UNICODE),1)
CFLAGS += -DUNICODE
# LFLAGS+= -Wl,--entry,_wWinMain@16
RCFLAGS += -DUNICODE
endif
CXXFLAGS = $(CFLAGS)
EXEC_SUFFIX = .exe
RES_SUFFIX = .coff
VPATH = utility
PROGRAM = ibrowser
TARGET = $(PROGRAM)$(EXEC_SUFFIX)
OBJECTS = \
utility.o \
window.o \
ibrowser.o \
webchild.o \
mainframe.o \
favorites.o \
xs-native.o \
xmlstorage.o
LIBS = gdi32 comctl32 shell32 ole32 uuid oleaut32
all: $(TARGET)
$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)
$(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS)) $(addprefix -l,$(DELAYIMPORTS))
ibrowser$(RES_SUFFIX): $(PROGRAM)_intres.rc res/*.bmp res/*.ico
windres $(RCFLAGS) -o $@ $(PROGRAM)_intres.rc
clean:
rm -f $(TARGET) $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) \
desktop/*.o dialogs/*.o shell/*.o taskbar/*.o utility/*.o

View file

@ -1,73 +0,0 @@
#
# ROS Internet Web Browser
#
# Makefile-precomp
#
# MinGW Makefile with precompiled header support
#
CC = gcc
CXX = g++
LINK = g++
CFLAGS = -DWIN32 -D_WIN32_IE=0x0600 -D_WIN32_WINNT=0x0501 -DWINVER=0x0500 -fexceptions -Wall -Wno-unused-value -I. -I$(EXPAT_INC)
RCFLAGS = -DWIN32 -D__WINDRES__
LFLAGS = -Wl,--subsystem,windows
ifdef DEBUG
CFLAGS += -D_DEBUG -g
RCFLAGS += -D_DEBUG
LFLAGS += -g
else
CFLAGS += -DNDEBUG -Os -march=pentium4
RCFLAGS += -DNDEBUG
LFLAGS += -s
endif
ifndef UNICODE
UNICODE = 1
endif
ifeq ($(UNICODE),1)
CFLAGS += -DUNICODE
# LFLAGS+= -Wl,--entry,_wWinMain@16
RCFLAGS += -DUNICODE
endif
CXXFLAGS = $(CFLAGS)
EXEC_SUFFIX = .exe
RES_SUFFIX = .coff
VPATH = utility
PROGRAM = ibrowser
TARGET = $(PROGRAM)$(EXEC_SUFFIX)
OBJECTS = \
utility.o \
window.o \
ibrowser.o \
webchild.o \
mainframe.o \
favorites.o \
xs-native.o \
xmlstorage.o
LIBS = gdi32 comctl32 shell32 ole32 oleaut32 uuid
all: precomp.h.gch $(TARGET)
precomp.h.gch: *.h utility/*.h
$(CXX) $(CFLAGS) precomp.h
$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)
$(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS)) $(addprefix -l,$(DELAYIMPORTS))
ibrowser$(RES_SUFFIX): $(PROGRAM)_intres.rc res/*.bmp res/*.ico
windres $(RCFLAGS) -o $@ $(PROGRAM)_intres.rc
clean:
rm -f $(TARGET) $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) precomp.h.gch \
utility/*.o

View file

@ -1,148 +0,0 @@
//Microsoft Developer Studio generated resource script.
//
#include "ibrowser_intres.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include <windows.h>
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// German (Germany) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
#ifdef _WIN32
LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"ibrowser_intres.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include <windows.h>\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"#ifndef _ROS_\r\n"
"LANGUAGE LANG_GERMAN, SUBLANG_GERMAN\r\n"
"STRINGTABLE DISCARDABLE \r\n"
"BEGIN\r\n"
"#ifdef UNICODE\r\n"
"IDS_IBROWSER_VERSION_STR ""ROS IBrowser%0s""\r\n"
"#else\r\n"
"IDS_IBROWSER_VERSION_STR ""ROS IBrowser Ansi%0s""\r\n"
"#endif\r\n"
"END\r\n"
"#endif\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDM_SDIFRAME MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&Datei"
BEGIN
MENUITEM "&Beenden", ID_FILE_EXIT
END
POPUP "&Ansicht"
BEGIN
MENUITEM "&Toolbar", ID_VIEW_TOOL_BAR
MENUITEM "S&ide Bar", ID_VIEW_SIDE_BAR, GRAYED
MENUITEM "&Status Bar", ID_VIEW_STATUSBAR
MENUITEM SEPARATOR
MENUITEM "&Aktualisieren\tF5", ID_REFRESH
MENUITEM "&Vollbild\tCtrl+Shift+S", ID_VIEW_FULLSCREEN
END
POPUP "&Hilfe"
BEGIN
MENUITEM "IBrowser &FAQ...", ID_IBROWSER_FAQ
MENUITEM "&Über IBrowser...", ID_ABOUT_IBROWSER
MENUITEM "Über &OS...", ID_ABOUT_WINDOWS
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUT_IBROWSER DIALOG DISCARDABLE 0, 0, 199, 106
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "About ReactOS Web Browser"
FONT 10, "MS Sans Serif"
BEGIN
LTEXT "ReactOS Web Browser",IDC_ROS_IBROWSER,91,13,104,11
LTEXT "V 0.9",IDC_VERSION_TXT,91,27,104,8
LTEXT "(c) 2005 Martin Fuchs",IDC_STATIC,91,42,104,8
LTEXT "",IDC_WIN_VERSION,91,58,98,22
LTEXT "http://www.sky.franken.de/explorer/",IDC_WWW,17,84,129,
8
CONTROL "&OK",IDOK,"Button",BS_OWNERDRAW | BS_FLAT | WS_GROUP,
154,90,38,12
END
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
BEGIN
IDS_TITLE "Reactos Internet Web Browser"
IDS_EMPTY "(Empty)"
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_ABOUT_IBROWSER "&Über..."
END
#endif // German (Germany) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#ifndef _ROS_
LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
STRINGTABLE DISCARDABLE
BEGIN
#ifdef UNICODE
IDS_IBROWSER_VERSION_STR "ROS IBrowser%0s"
#else
IDS_IBROWSER_VERSION_STR "ROS IBrowser Ansi%0s"
#endif
END
#endif
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View file

@ -1,161 +0,0 @@
//Microsoft Developer Studio generated resource script.
//
#include "ibrowser_intres.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include <windows.h>
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// German (Germany) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
#ifdef _WIN32
LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"ibrowser_intres.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include <windows.h>\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"#ifndef _ROS_\r\n"
"LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US\r\n"
"STRINGTABLE DISCARDABLE \r\n"
"BEGIN\r\n"
"#ifdef UNICODE\r\n"
"IDS_IBROWSER_VERSION_STR ""ROS IBrowser%0s""\r\n"
"#else\r\n"
"IDS_IBROWSER_VERSION_STR ""ROS IBrowser Ansi%0s""\r\n"
"#endif\r\n"
"END\r\n"
"#endif\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#endif // German (Germany) resources
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDM_SDIFRAME MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&File"
BEGIN
MENUITEM "&Open", ID_FILE_OPEN
MENUITEM "E&xit", ID_FILE_EXIT
END
POPUP "&View"
BEGIN
MENUITEM "&Toolbar", ID_VIEW_TOOL_BAR
MENUITEM "S&ide Bar", ID_VIEW_SIDE_BAR, GRAYED
MENUITEM "&Status Bar", ID_VIEW_STATUSBAR
MENUITEM SEPARATOR
MENUITEM "&Refresh\tF5", ID_REFRESH
MENUITEM "F&ull Screen\tCtrl+Shift+S", ID_VIEW_FULLSCREEN
END
POPUP "&Help"
BEGIN
MENUITEM "IBrowser &FAQ...", ID_IBROWSER_FAQ
MENUITEM "&About IBrowser...", ID_ABOUT_IBROWSER
MENUITEM "About &OS...", ID_ABOUT_WINDOWS
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUT_IBROWSER DIALOG DISCARDABLE 0, 0, 199, 106
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "About ReactOS Web Browser"
FONT 10, "MS Sans Serif"
BEGIN
LTEXT "ReactOS Web Browser",IDC_ROS_IBROWSER,91,13,104,11
LTEXT "V 0.9",IDC_VERSION_TXT,91,27,104,8
LTEXT "(c) 2005 Martin Fuchs",IDC_STATIC,91,42,104,8
LTEXT "",IDC_WIN_VERSION,91,58,98,22
LTEXT "http://www.sky.franken.de/explorer/",IDC_WWW,17,84,129,
8
CONTROL "&OK",IDOK,"Button",BS_OWNERDRAW | BS_FLAT | WS_GROUP,
154,90,38,12
END
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
BEGIN
IDS_TITLE "Reactos Internet Web Browser"
IDS_EMPTY "(Empty)"
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_ABOUT_IBROWSER "&About..."
END
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#ifndef _ROS_
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
STRINGTABLE DISCARDABLE
BEGIN
#ifdef UNICODE
IDS_IBROWSER_VERSION_STR "ROS IBrowser%0s"
#else
IDS_IBROWSER_VERSION_STR "ROS IBrowser Ansi%0s"
#endif
END
#endif
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View file

@ -1,122 +0,0 @@
//Microsoft Developer Studio generated resource script.
//
#include "ibrowser_intres.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include <windows.h>
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// German (Germany) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
#ifdef _WIN32
LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"ibrowser_intres.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include <windows.h>\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"#ifndef _ROS_\r\n"
"LANGUAGE LANG_SPANISH, SUBLANG_SPANISH\r\n"
"STRINGTABLE DISCARDABLE \r\n"
"BEGIN\r\n"
"#ifdef UNICODE\r\n"
"IDS_IBROWSER_VERSION_STR ""Nevegador de Web ReactOS%0s""\r\n"
"#else\r\n"
"IDS_IBROWSER_VERSION_STR ""Nevegador de Web ReactOS Ansi%0s""\r\n"
"#endif\r\n"
"END\r\n"
"#endif\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#endif // German (Germany) resources
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// Spanish (Castilian) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESP)
#ifdef _WIN32
LANGUAGE LANG_SPANISH, SUBLANG_SPANISH
#pragma code_page(1252)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDM_SDIFRAME MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&Archivo"
BEGIN
MENUITEM "S&alir", ID_FILE_EXIT
END
POPUP "&Ver"
BEGIN
MENUITEM "&Barra de Herramientas", ID_VIEW_TOOL_BAR
MENUITEM "Barra &Lateral", ID_VIEW_SIDE_BAR, GRAYED
MENUITEM "Barra de &Estado", ID_VIEW_STATUSBAR
MENUITEM SEPARATOR
MENUITEM "&Actualizar\tF5", ID_REFRESH
MENUITEM "P&antalla Completa\tCtrl+Shift+S", ID_VIEW_FULLSCREEN
END
POPUP "&Ayuda"
BEGIN
MENUITEM "IBrowser &FAQ...", ID_IBROWSER_FAQ
MENUITEM "&Acerca de IBrowser...", ID_ABOUT_IBROWSER
MENUITEM "Acerca de &OS...", ID_ABOUT_WINDOWS
END
END
#endif // Spanish (Castilian) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#ifndef _ROS_
LANGUAGE LANG_SPANISH, SUBLANG_SPANISH
STRINGTABLE DISCARDABLE
BEGIN
#ifdef UNICODE
IDS_IBROWSER_VERSION_STR "Nevegador de Web ReactOS%0s"
#else
IDS_IBROWSER_VERSION_STR "Nevegador de Web ReactOS Ansi%0s"
#endif
END
#endif
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View file

@ -1,496 +0,0 @@
/*
* Copyright 2004 Martin Fuchs
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
//
// Explorer and Desktop clone
//
// favorites.cpp
//
// Martin Fuchs, 04.04.2004
//
#include <precomp.h>
String DecodeURLString(const char* s)
{
TCHAR buffer[BUFFER_LEN];
LPTSTR o = buffer;
for(const char* p=s; *p; ++p)
if (*p == '%') {
if (!strncmp(p+1, "20", 2)) {
*o++ = ' ';
p += 2;
} else
*o++ = *p;
} else
*o++ = *p;
return String(buffer, o-buffer);
}
/// read .URL file
bool Bookmark::read_url(LPCTSTR path)
{
char line[BUFFER_LEN];
tifstream in(path);
while(in.good()) {
in.getline(line, BUFFER_LEN);
const char* p = line;
while(isspace(*p))
++p;
const char* keyword = p;
const char* eq = strchr(p, '=');
if (eq) {
const char* cont = eq + 1;
while(isspace(*cont))
++cont;
if (!strnicmp(keyword, "URL", 3))
_url = DecodeURLString(cont);
else if (!strnicmp(keyword, "IconFile", 8))
_icon_path = DecodeURLString(cont);
}
}
return true;
}
/// convert XBEL bookmark node
bool Bookmark::read(const_XMLPos& pos)
{
_url = pos.get("href").c_str();
if (pos.go_down("title")) {
_name = pos->get_content();
pos.back();
}
if (pos.go_down("desc")) {
_description = pos->get_content();
pos.back();
}
if (pos.go_down("info")) {
const_XMLChildrenFilter metadata(pos, "metadata");
for(const_XMLChildrenFilter::const_iterator it=metadata.begin(); it!=metadata.end(); ++it) {
const XMLNode& node = **it;
const_XMLPos sub_pos(&node);
if (node.get("owner") == "ros-explorer") {
if (sub_pos.go_down("icon")) {
_icon_path = sub_pos.get("path").c_str();
_icon_idx = XS_toi(sub_pos.get("index"));
sub_pos.back(); // </icon>
}
}
}
pos.back(); // </metadata>
pos.back(); // </info>
}
return !_url.empty(); // _url is mandatory.
}
/// write XBEL bookmark node
void Bookmark::write(XMLPos& pos) const
{
pos.create("bookmark");
pos["href"] = _url.c_str();
if (!_name.empty()) {
pos.create("title");
pos->set_content(_name);
pos.back();
}
if (!_description.empty()) {
pos.create("desc");
pos->set_content(_description);
pos.back();
}
if (!_icon_path.empty()) {
pos.create("info");
pos.create("metadata");
pos["owner"] = "ros-explorer";
pos.create("icon");
pos["path"] = _icon_path.c_str();
pos["index"].printf(XS_TEXT("%d"), _icon_idx);
pos.back(); // </icon>
pos.back(); // </metadata>
pos.back(); // </info>
}
pos.back();
}
/// read bookmark folder from XBEL formated XML tree
void BookmarkFolder::read(const_XMLPos& pos)
{
if (pos.go_down("title")) {
_name = pos->get_content();
pos.back();
}
if (pos.go_down("desc")) {
_description = pos->get_content();
pos.back();
}
_bookmarks.read(pos);
}
/// write bookmark folder content from XBEL formated XML tree
void BookmarkFolder::write(XMLPos& pos) const
{
pos.create("folder");
if (!_name.empty()) {
pos.create("title");
pos->set_content(_name);
pos.back();
}
if (!_description.empty()) {
pos.create("desc");
pos->set_content(_description);
pos.back();
}
_bookmarks.write(pos);
}
BookmarkNode::BookmarkNode()
: _type(BMNT_NONE)
{
_pbookmark = NULL;
}
BookmarkNode::BookmarkNode(const Bookmark& bm)
: _type(BMNT_BOOKMARK)
{
_pbookmark = new Bookmark(bm);
}
BookmarkNode::BookmarkNode(const BookmarkFolder& bmf)
: _type(BMNT_FOLDER)
{
_pfolder = new BookmarkFolder(bmf);
}
BookmarkNode::BookmarkNode(const BookmarkNode& other)
: _type(other._type)
{
if (other._type == BMNT_BOOKMARK)
_pbookmark = new Bookmark(*other._pbookmark);
else if (other._type == BMNT_FOLDER)
_pfolder = new BookmarkFolder(*other._pfolder);
else
_pbookmark = NULL;
}
BookmarkNode::~BookmarkNode()
{
if (_type == BMNT_BOOKMARK)
delete _pbookmark;
else if (_type == BMNT_FOLDER)
delete _pfolder;
}
BookmarkNode& BookmarkNode::operator=(const Bookmark& bm)
{
clear();
_pbookmark = new Bookmark(bm);
return *this;
}
BookmarkNode& BookmarkNode::operator=(const BookmarkFolder& bmf)
{
clear();
_pfolder = new BookmarkFolder(bmf);
return *this;
}
BookmarkNode& BookmarkNode::operator=(const BookmarkNode& other)
{
clear();
_type = other._type;
if (other._type == BMNT_BOOKMARK)
_pbookmark = new Bookmark(*other._pbookmark);
else if (other._type == BMNT_FOLDER)
_pfolder = new BookmarkFolder(*other._pfolder);
return *this;
}
void BookmarkNode::clear()
{
if (_type == BMNT_BOOKMARK) {
delete _pbookmark;
_pbookmark = NULL;
}
else if (_type == BMNT_FOLDER) {
delete _pfolder;
_pfolder = NULL;
}
_type = BMNT_NONE;
}
/// read bookmark list from XBEL formated XML tree
void BookmarkList::read(const_XMLPos& pos)
{
const XMLNode::Children& children = pos->get_children();
for(XMLNode::Children::const_iterator it=children.begin(); it!=children.end(); ++it) {
const XMLNode& node = **it;
const_XMLPos sub_pos(&node);
if (node == "folder") {
BookmarkFolder folder;
folder.read(sub_pos);
push_back(folder);
} else if (node == "bookmark") {
Bookmark bookmark;
if (bookmark.read(sub_pos))
push_back(bookmark);
}
}
}
/// write bookmark list into XBEL formated XML tree
void BookmarkList::write(XMLPos& pos) const
{
for(const_iterator it=begin(); it!=end(); ++it) {
const BookmarkNode& node = *it;
if (node._type == BookmarkNode::BMNT_FOLDER) {
const BookmarkFolder& folder = *node._pfolder;
folder.write(pos);
pos.back();
} else if (node._type == BookmarkNode::BMNT_BOOKMARK) {
const Bookmark& bookmark = *node._pbookmark;
if (!bookmark._url.empty())
bookmark.write(pos);
}
}
}
/// fill treeview control with bookmark tree content
void BookmarkList::fill_tree(HWND hwnd, HTREEITEM parent, HIMAGELIST himagelist, HDC hdc_wnd) const
{
TV_INSERTSTRUCT tvi;
tvi.hParent = parent;
tvi.hInsertAfter = TVI_LAST;
TV_ITEM& tv = tvi.item;
tv.mask = TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE|TVIF_PARAM;
for(const_iterator it=begin(); it!=end(); ++it) {
const BookmarkNode& node = *it;
tv.lParam = (LPARAM)&node;
if (node._type == BookmarkNode::BMNT_FOLDER) {
const BookmarkFolder& folder = *node._pfolder;
tv.pszText = (LPTSTR)folder._name.c_str();
tv.iImage = 3; // folder
tv.iSelectedImage = 4; // open folder
HTREEITEM hitem = TreeView_InsertItem(hwnd, &tvi);
folder._bookmarks.fill_tree(hwnd, hitem, himagelist, hdc_wnd);
} else if (node._type == BookmarkNode::BMNT_BOOKMARK) {
const Bookmark& bookmark = *node._pbookmark;
tv.pszText = (LPTSTR)bookmark._name.c_str();
tv.iImage = 1; // bookmark
tv.iSelectedImage = 2; // selected bookmark
if (!bookmark._icon_path.empty()) {
const Icon& icon = g_icon_cache.extract(bookmark._icon_path, bookmark._icon_idx);
if ((ICON_ID)icon != ICID_NONE)
tv.iImage = tv.iSelectedImage = icon.add_to_imagelist(himagelist, hdc_wnd);
}
(void)TreeView_InsertItem(hwnd, &tvi);
}
}
}
/*@@
/// import Internet Explorer bookmarks from Favorites folder into bookmark list
void BookmarkList::import_IE_favorites(ShellDirectory& dir, HWND hwnd)
{
TCHAR path[MAX_PATH], ext[_MAX_EXT];
dir.smart_scan(SORT_NAME, SCAN_FILESYSTEM);
for(Entry*entry=dir._down; entry; entry=entry->_next) {
if (entry->_shell_attribs & SFGAO_HIDDEN) // ignore files like "desktop.ini"
continue;
String name;
if (entry->_etype == ET_SHELL)
name = dir._folder.get_name(static_cast<ShellEntry*>(entry)->_pidl);
else
name = entry->_display_name;
if (entry->_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
BookmarkFolder new_folder;
new_folder._name = DecodeXMLString(name);
if (entry->_etype == ET_SHELL) {
ShellDirectory new_dir(dir._folder, static_cast<ShellEntry*>(entry)->_pidl, hwnd);
new_folder._bookmarks.import_IE_favorites(new_dir, hwnd);
} else {
entry->get_path(path);
ShellDirectory new_dir(GetDesktopFolder(), path, hwnd);
new_folder._bookmarks.import_IE_favorites(new_dir, hwnd);
}
push_back(new_folder);
} else {
Bookmark bookmark;
bookmark._name = DecodeXMLString(name);
entry->get_path(path);
_tsplitpath(path, NULL, NULL, NULL, ext);
if (!_tcsicmp(ext, TEXT(".url"))) {
bookmark.read_url(path);
push_back(bookmark);
} else {
///@todo read shell links
//assert(0);
}
}
}
}
*/
/// read XBEL bookmark file
bool Favorites::read(LPCTSTR path)
{
XMLDoc xbel;
if (!xbel.read(path))
/*@@ if (xbel._last_error == XML_ERROR_NO_ELEMENTS)
return false;
else */
MessageBox(0/*@@g_Globals._hwndDesktop*/, xbel._errors.str(),
TEXT("ROS Explorer - reading bookmark file"), MB_OK);
const_XMLPos pos(&xbel);
if (!pos.go_down("xbel"))
return false;
super::read(pos);
pos.back();
return true;
}
/// write XBEL bookmark file
void Favorites::write(LPCTSTR path) const
{
XMLDoc xbel;
XMLPos pos(&xbel);
pos.create("xbel");
super::write(pos);
pos.back();
xbel._format._doctype._name = "xbel";
xbel._format._doctype._public = "//IDN python.org//DTD XML Bookmark Exchange Language 1.0//EN//XML";
xbel._format._doctype._system = "http://www.python.org/topics/xml/dtds/xbel-1.0.dtd";
xbel.write(path);
}
/*@@
/// import Internet Explorer bookmarks from Favorites folder
bool Favorites::import_IE_favorites(HWND hwnd)
{
WaitCursor wait;
StartMenuShellDirs dirs;
try {
dirs.push_back(ShellDirectory(GetDesktopFolder(), SpecialFolderPath(CSIDL_COMMON_FAVORITES, hwnd), hwnd));
dirs.push_back(ShellDirectory(GetDesktopFolder(), SpecialFolderPath(CSIDL_FAVORITES, hwnd), hwnd));
} catch(COMException&) {
}
for(StartMenuShellDirs::iterator it=dirs.begin(); it!=dirs.end(); ++it) {
StartMenuDirectory& smd = *it;
ShellDirectory& dir = smd._dir;
try {
super::import_IE_favorites(dir, hwnd);
} catch(COMException&) {
}
}
return true;
}
*/

View file

@ -1,104 +0,0 @@
/*
* Copyright 2004 Martin Fuchs
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
//
// Explorer and Desktop clone
//
// favorites.h
//
// Martin Fuchs, 04.04.2004
//
extern String DecodeURLString(const char* s);
struct Bookmark
{
Bookmark() : _icon_idx(0) {}
String _name;
String _description;
String _url;
String _icon_path;
int _icon_idx;
bool read_url(LPCTSTR path);
bool read(const_XMLPos& pos);
void write(XMLPos& pos) const;
};
struct BookmarkFolder;
struct BookmarkNode
{
BookmarkNode();
BookmarkNode(const Bookmark& bm);
BookmarkNode(const BookmarkFolder& bmf);
BookmarkNode(const BookmarkNode& other);
~BookmarkNode();
BookmarkNode& operator=(const Bookmark& bm);
BookmarkNode& operator=(const BookmarkFolder& bmf);
BookmarkNode& operator=(const BookmarkNode& other);
void clear();
enum BOOKMARKNODE_TYPE {
BMNT_NONE, BMNT_BOOKMARK, BMNT_FOLDER
};
BOOKMARKNODE_TYPE _type;
union {
Bookmark* _pbookmark;
BookmarkFolder* _pfolder;
};
};
struct BookmarkList : public list<BookmarkNode>
{
void import_IE_favorites(struct ShellDirectory& dir, HWND hwnd);
void read(const_XMLPos& pos);
void write(XMLPos& pos) const;
void fill_tree(HWND hwnd, HTREEITEM parent, HIMAGELIST, HDC hdc_wnd) const;
};
struct BookmarkFolder
{
String _name;
String _description;
BookmarkList _bookmarks;
void read(const_XMLPos& pos);
void write(XMLPos& pos) const;
};
struct Favorites : public BookmarkList
{
typedef BookmarkList super;
bool read(LPCTSTR path);
void write(LPCTSTR path) const;
bool import_IE_favorites(HWND hwnd);
};

View file

@ -1,161 +0,0 @@
//Microsoft Developer Studio generated resource script.
//
#include "ibrowser_intres.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include <windows.h>
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// German (Germany) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
#ifdef _WIN32
LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"ibrowser_intres.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include <windows.h>\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"#ifndef _ROS_\r\n"
"LANGUAGE LANG_FRENCH, SUBLANG_FRENCH\r\n"
"STRINGTABLE DISCARDABLE \r\n"
"BEGIN\r\n"
"#ifdef UNICODE\r\n"
"IDS_IBROWSER_VERSION_STR ""Navigateur Internet de ReactOS%0s""\r\n"
"#else\r\n"
"IDS_IBROWSER_VERSION_STR ""Navigateur Internet de ReactOS Ansi%0s""\r\n"
"#endif\r\n"
"END\r\n"
"#endif\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#endif // German (Germany) resources
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
#pragma code_page(1252)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDM_SDIFRAME MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&Fichier"
BEGIN
MENUITEM "&Ouvrir", ID_FILE_OPEN
MENUITEM "&Quitter", ID_FILE_EXIT
END
POPUP "&Affichage"
BEGIN
MENUITEM "Barre d'ou&tils", ID_VIEW_TOOL_BAR
MENUITEM "Pann&eau latéral", ID_VIEW_SIDE_BAR, GRAYED
MENUITEM "&Barre d'état", ID_VIEW_STATUSBAR
MENUITEM SEPARATOR
MENUITEM "Actualise&r\tF5", ID_REFRESH
MENUITEM "&Plein éran\tCtrl+Shift+S", ID_VIEW_FULLSCREEN
END
POPUP "&Aide"
BEGIN
MENUITEM "&FAQ de IBrowser...", ID_IBROWSER_FAQ
MENUITEM "À propos de IBrowser...", ID_ABOUT_IBROWSER
MENUITEM "À propos de React&OS...", ID_ABOUT_WINDOWS
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUT_IBROWSER DIALOG DISCARDABLE 0, 0, 199, 106
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "About ReactOS Web Browser"
FONT 10, "MS Sans Serif"
BEGIN
LTEXT "Navigateur internet de Reactos",IDC_ROS_IBROWSER,91,13,104,11
LTEXT "V 0.9",IDC_VERSION_TXT,91,27,104,8
LTEXT "(c) 2005 Martin Fuchs",IDC_STATIC,91,42,104,8
LTEXT "",IDC_WIN_VERSION,91,58,98,22
LTEXT "http://www.sky.franken.de/explorer/",IDC_WWW,17,84,129,
8
CONTROL "&OK",IDOK,"Button",BS_OWNERDRAW | BS_FLAT | WS_GROUP,
154,90,38,12
END
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
BEGIN
IDS_TITLE "Navigateur internet de Reactos"
IDS_EMPTY "(Vide)"
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_ABOUT_IBROWSER "&À propos..."
END
#endif // French resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#ifndef _ROS_
LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
STRINGTABLE DISCARDABLE
BEGIN
#ifdef UNICODE
IDS_IBROWSER_VERSION_STR "Navigateur Internet de ReactOS%0s"
#else
IDS_IBROWSER_VERSION_STR "Navigateur Internet de ReactOS Ansi%0s"
#endif
END
#endif
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View file

@ -1,81 +0,0 @@
//Microsoft Developer Studio generated resource script.
//
#include "ibrowser_intres.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include <windows.h>
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// German (Germany) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
#ifdef _WIN32
LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"ibrowser_intres.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include <windows.h>\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"#ifndef _ROS_\r\n"
"LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT\r\n"
"STRINGTABLE DISCARDABLE \r\n"
"BEGIN\r\n"
"#ifdef UNICODE\r\n"
"IDS_IBROWSER_VERSION_STR ""A ReactOS %s webböngészõ%0s""\r\n"
"#else\r\n"
"IDS_IBROWSER_VERSION_STR ""A ReactOS %s webböngészõ Ansi%0s""\r\n"
"#endif\r\n"
"END\r\n"
"#endif\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#endif // German (Germany) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#ifndef _ROS_
LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
#ifdef UNICODE
IDS_IBROWSER_VERSION_STR "A ReactOS %s webböngészõ%0s"
#else
IDS_IBROWSER_VERSION_STR "A ReactOS %s webböngészõ Ansi%0s"
#endif
END
#endif
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View file

@ -1,550 +0,0 @@
/*
* Copyright 2005 Martin Fuchs
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
//
// ROS Internet Web Browser
//
// ibrowser.cpp
//
// Martin Fuchs, 24.01.2005
//
#include <precomp.h>
#include "ibrowser_intres.h"
#include <locale.h> // for setlocale()
#ifndef __WINE__
#include <io.h> // for dup2()
#include <fcntl.h> // for _O_RDONLY
#endif
// globals
HINSTANCE g_hInstance;
IconCache g_icon_cache;
ATOM g_hframeClass;
/*@@
void ExplorerGlobals::read_persistent()
{
// read configuration file
_cfg_dir.printf(TEXT("%s\\ReactOS"), (LPCTSTR)SpecialFolderFSPath(CSIDL_APPDATA,0));
_cfg_path.printf(TEXT("%s\\ros-ibrowser-cfg.xml"), _cfg_dir.c_str());
if (!_cfg.read(_cfg_path)) {
if (_cfg._last_error != XML_ERROR_NO_ELEMENTS)
MessageBox(g_Globals._hwndDesktop, String(_cfg._last_error_msg.c_str()),
TEXT("ROS Explorer - reading user settings"), MB_OK);
_cfg.read(TEXT("ibrowser-cfg-template.xml"));
}
// read bookmarks
_favorites_path.printf(TEXT("%s\\ros-ibrowser-bookmarks.xml"), _cfg_dir.c_str());
if (!_favorites.read(_favorites_path)) {
_favorites.import_IE_favorites(0);
_favorites.write(_favorites_path);
}
}
void ExplorerGlobals::write_persistent()
{
// write configuration file
RecursiveCreateDirectory(_cfg_dir);
_cfg.write(_cfg_path);
_favorites.write(_favorites_path);
}
XMLPos ExplorerGlobals::get_cfg()
{
XMLPos cfg_pos(&_cfg);
cfg_pos.smart_create("ibrowser-cfg");
return cfg_pos;
}
XMLPos ExplorerGlobals::get_cfg(const char* path)
{
XMLPos cfg_pos(&_cfg);
cfg_pos.smart_create("ibrowser-cfg");
cfg_pos.create_relative(path);
return cfg_pos;
}
*/
Icon::Icon()
: _id(ICID_UNKNOWN),
_itype(IT_STATIC),
_hicon(0)
{
}
Icon::Icon(ICON_ID id, UINT nid)
: _id(id),
_itype(IT_STATIC),
_hicon(SmallIcon(nid))
{
}
Icon::Icon(ICON_TYPE itype, int id, HICON hIcon)
: _id((ICON_ID)id),
_itype(itype),
_hicon(hIcon)
{
}
Icon::Icon(ICON_TYPE itype, int id, int sys_idx)
: _id((ICON_ID)id),
_itype(itype),
_sys_idx(sys_idx)
{
}
void Icon::draw(HDC hdc, int x, int y, int cx, int cy, COLORREF bk_color, HBRUSH bk_brush) const
{
if (_itype == IT_SYSCACHE)
ImageList_DrawEx(g_icon_cache.get_sys_imagelist(), _sys_idx, hdc, x, y, cx, cy, bk_color, CLR_DEFAULT, ILD_NORMAL);
else
DrawIconEx(hdc, x, y, _hicon, cx, cy, 0, bk_brush, DI_NORMAL);
}
HBITMAP Icon::create_bitmap(COLORREF bk_color, HBRUSH hbrBkgnd, HDC hdc_wnd) const
{
if (_itype == IT_SYSCACHE) {
HIMAGELIST himl = g_icon_cache.get_sys_imagelist();
int cx, cy;
ImageList_GetIconSize(himl, &cx, &cy);
HBITMAP hbmp = CreateCompatibleBitmap(hdc_wnd, cx, cy);
HDC hdc = CreateCompatibleDC(hdc_wnd);
HBITMAP hbmp_old = SelectBitmap(hdc, hbmp);
ImageList_DrawEx(himl, _sys_idx, hdc, 0, 0, cx, cy, bk_color, CLR_DEFAULT, ILD_NORMAL);
SelectBitmap(hdc, hbmp_old);
DeleteDC(hdc);
return hbmp;
} else
return create_bitmap_from_icon(_hicon, hbrBkgnd, hdc_wnd);
}
int Icon::add_to_imagelist(HIMAGELIST himl, HDC hdc_wnd, COLORREF bk_color, HBRUSH bk_brush) const
{
int ret;
if (_itype == IT_SYSCACHE) {
HIMAGELIST himl = g_icon_cache.get_sys_imagelist();
int cx, cy;
ImageList_GetIconSize(himl, &cx, &cy);
HBITMAP hbmp = CreateCompatibleBitmap(hdc_wnd, cx, cy);
HDC hdc = CreateCompatibleDC(hdc_wnd);
HBITMAP hbmp_old = SelectBitmap(hdc, hbmp);
ImageList_DrawEx(himl, _sys_idx, hdc, 0, 0, cx, cy, bk_color, CLR_DEFAULT, ILD_NORMAL);
SelectBitmap(hdc, hbmp_old);
DeleteDC(hdc);
ret = ImageList_Add(himl, hbmp, 0);
DeleteObject(hbmp);
} else
ret = ImageList_AddAlphaIcon(himl, _hicon, bk_brush, hdc_wnd);
return ret;
}
HBITMAP create_bitmap_from_icon(HICON hIcon, HBRUSH hbrush_bkgnd, HDC hdc_wnd)
{
int cx = GetSystemMetrics(SM_CXSMICON);
int cy = GetSystemMetrics(SM_CYSMICON);
HBITMAP hbmp = CreateCompatibleBitmap(hdc_wnd, cx, cy);
MemCanvas canvas;
BitmapSelection sel(canvas, hbmp);
RECT rect = {0, 0, cx, cy};
FillRect(canvas, &rect, hbrush_bkgnd);
DrawIconEx(canvas, 0, 0, hIcon, cx, cy, 0, hbrush_bkgnd, DI_NORMAL);
return hbmp;
}
int ImageList_AddAlphaIcon(HIMAGELIST himl, HICON hIcon, HBRUSH hbrush_bkgnd, HDC hdc_wnd)
{
HBITMAP hbmp = create_bitmap_from_icon(hIcon, hbrush_bkgnd, hdc_wnd);
int ret = ImageList_Add(himl, hbmp, 0);
DeleteObject(hbmp);
return ret;
}
int IconCache::s_next_id = ICID_DYNAMIC;
void IconCache::init()
{
_icons[ICID_NONE] = Icon(IT_STATIC, ICID_NONE, (HICON)0);
_icons[ICID_IBROWSER] = Icon(ICID_IBROWSER, IDI_IBROWSER);
_icons[ICID_BOOKMARK] = Icon(ICID_BOOKMARK, IDI_DOT_TRANS);
}
const Icon& IconCache::extract(const String& path)
{
PathMap::iterator found = _pathMap.find(path);
if (found != _pathMap.end())
return _icons[found->second];
SHFILEINFO sfi;
#if 1 // use system image list
HIMAGELIST himlSys = (HIMAGELIST) SHGetFileInfo(path, 0, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX|SHGFI_SMALLICON);
if (himlSys) {
_himlSys = himlSys;
const Icon& icon = add(sfi.iIcon/*, IT_SYSCACHE*/);
#else
if (SHGetFileInfo(path, 0, &sfi, sizeof(sfi), SHGFI_ICON|SHGFI_SMALLICON)) {
const Icon& icon = add(sfi.hIcon, IT_CACHED);
#endif
///@todo limit cache size
_pathMap[path] = icon;
return icon;
} else
return _icons[ICID_NONE];
}
const Icon& IconCache::extract(LPCTSTR path, int idx)
{
CachePair key(path, idx);
#ifndef __WINE__ ///@todo _tcslwr() for Wine
_tcslwr((LPTSTR)key.first.c_str());
#endif
PathIdxMap::iterator found = _pathIdxMap.find(key);
if (found != _pathIdxMap.end())
return _icons[found->second];
HICON hIcon;
if ((int)ExtractIconEx(path, idx, NULL, &hIcon, 1) > 0) {
const Icon& icon = add(hIcon, IT_CACHED);
_pathIdxMap[key] = icon;
return icon;
} else {
///@todo retreive "http://.../favicon.ico" format icons
return _icons[ICID_NONE];
}
}
const Icon& IconCache::add(HICON hIcon, ICON_TYPE type)
{
int id = ++s_next_id;
return _icons[id] = Icon(type, id, hIcon);
}
const Icon& IconCache::add(int sys_idx/*, ICON_TYPE type=IT_SYSCACHE*/)
{
int id = ++s_next_id;
return _icons[id] = SysCacheIcon(id, sys_idx);
}
const Icon& IconCache::get_icon(int id)
{
return _icons[id];
}
void IconCache::free_icon(int icon_id)
{
IconMap::iterator found = _icons.find(icon_id);
if (found != _icons.end()) {
Icon& icon = found->second;
if (icon.destroy())
_icons.erase(found);
}
}
ResString::ResString(UINT nid)
{
TCHAR buffer[BUFFER_LEN];
int len = LoadString(g_hInstance, nid, buffer, sizeof(buffer)/sizeof(TCHAR));
super::assign(buffer, len);
}
ResIcon::ResIcon(UINT nid)
{
_hicon = LoadIcon(g_hInstance, MAKEINTRESOURCE(nid));
}
SmallIcon::SmallIcon(UINT nid)
{
_hicon = (HICON)LoadImage(g_hInstance, MAKEINTRESOURCE(nid), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_SHARED);
}
ResIconEx::ResIconEx(UINT nid, int w, int h)
{
_hicon = (HICON)LoadImage(g_hInstance, MAKEINTRESOURCE(nid), IMAGE_ICON, w, h, LR_SHARED);
}
void SetWindowIcon(HWND hwnd, UINT nid)
{
HICON hIcon = ResIcon(nid);
(void)Window_SetIcon(hwnd, ICON_BIG, hIcon);
HICON hIconSmall = SmallIcon(nid);
(void)Window_SetIcon(hwnd, ICON_SMALL, hIconSmall);
}
ResBitmap::ResBitmap(UINT nid)
{
_hBmp = LoadBitmap(g_hInstance, MAKEINTRESOURCE(nid));
}
void ibrowser_show_frame(int cmdshow, LPTSTR lpCmdLine)
{
MainFrameBase::Create(lpCmdLine, cmdshow);
}
PopupMenu::PopupMenu(UINT nid)
{
HMENU hMenu = LoadMenu(g_hInstance, MAKEINTRESOURCE(nid));
_hmenu = GetSubMenu(hMenu, 0);
}
/// "About" Dialog
struct ExplorerAboutDlg : public
CtlColorParent<
OwnerDrawParent<Dialog>
>
{
typedef CtlColorParent<
OwnerDrawParent<Dialog>
> super;
ExplorerAboutDlg(HWND hwnd)
: super(hwnd)
{
SetWindowIcon(hwnd, IDI_REACTOS);
new FlatButton(hwnd, IDOK);
_hfont = CreateFont(20, 0, 0, 0, FW_BOLD, TRUE, 0, 0, 0, 0, 0, 0, 0, TEXT("Sans Serif"));
new ColorStatic(hwnd, IDC_ROS_IBROWSER, RGB(32,32,128), 0, _hfont);
new HyperlinkCtrl(hwnd, IDC_WWW);
FmtString ver_txt(ResString(IDS_IBROWSER_VERSION_STR), (LPCTSTR)ResString(IDS_VERSION_STR));
SetWindowText(GetDlgItem(hwnd, IDC_VERSION_TXT), ver_txt);
/*@@
HWND hwnd_winver = GetDlgItem(hwnd, IDC_WIN_VERSION);
SetWindowText(hwnd_winver, get_windows_version_str());
SetWindowFont(hwnd_winver, GetStockFont(DEFAULT_GUI_FONT), FALSE);
*/
CenterWindow(hwnd);
}
~ExplorerAboutDlg()
{
DeleteObject(_hfont);
}
protected:
HFONT _hfont;
};
void ibrowser_about(HWND hwndParent)
{
Dialog::DoModal(IDD_ABOUT_IBROWSER, WINDOW_CREATOR(ExplorerAboutDlg), hwndParent);
}
void ibrowser_open(HWND hwndParent)
{
HMODULE hShell32;
RUNFILEDLG RunFileDlg;
OSVERSIONINFO versionInfo;
WCHAR wTitle[40];
WCHAR wText[256];
char szTitle[40] = "Open";
char szText[256] = "Type the Internet Address of a document or folder and IBrowser will open it for you.";
hShell32 = LoadLibrary(_T("SHELL32.DLL"));
RunFileDlg = (RUNFILEDLG)(FARPROC)GetProcAddress(hShell32, (char*)((long)0x3D));
/* Show "Run..." dialog */
if (RunFileDlg)
{
versionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&versionInfo);
if (versionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT)
{
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szTitle, -1, wTitle, 40);
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szText, -1, wText, 256);
RunFileDlg(hwndParent, 0, NULL, (LPCSTR)wTitle, (LPCSTR)wText, RFF_CALCDIRECTORY);
}
else
RunFileDlg(hwndParent, 0, NULL, szTitle, szText, RFF_CALCDIRECTORY);
}
FreeLibrary(hShell32);
}
static void InitInstance(HINSTANCE hInstance)
{
CONTEXT("InitInstance");
// register frame window class
g_hframeClass = IconWindowClass(CLASSNAME_FRAME,IDI_IBROWSER);
// register child window class
WindowClass(CLASSNAME_CHILDWND, CS_CLASSDC|CS_VREDRAW).Register();
}
int ibrowser_main(HINSTANCE hInstance, LPTSTR lpCmdLine, int cmdshow)
{
CONTEXT("ibrowser_main");
// initialize Common Controls library
CommonControlInit usingCmnCtrl;
try {
InitInstance(hInstance);
} catch(COMException& e) {
HandleException(e, GetDesktopWindow());
return -1;
}
if (cmdshow != SW_HIDE) {
/* // don't maximize if being called from the ROS desktop
if (cmdshow == SW_SHOWNORMAL)
///@todo read window placement from registry
cmdshow = SW_MAXIMIZE;
*/
ibrowser_show_frame(cmdshow, lpCmdLine);
}
return Window::MessageLoop();
}
// MinGW does not provide a Unicode startup routine, so we have to implement an own.
#if defined(__MINGW32__) && defined(UNICODE)
#define _tWinMain wWinMain
int WINAPI wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int);
int main(int argc, char* argv[])
{
CONTEXT("main");
STARTUPINFO startupinfo;
int nShowCmd = SW_SHOWNORMAL;
GetStartupInfo(&startupinfo);
if (startupinfo.dwFlags & STARTF_USESHOWWINDOW)
nShowCmd = startupinfo.wShowWindow;
LPWSTR cmdline = GetCommandLineW();
while(*cmdline && !_istspace(*cmdline))
++cmdline;
while(_istspace(*cmdline))
++cmdline;
return wWinMain(GetModuleHandle(NULL), 0, cmdline, nShowCmd);
}
#endif // __MINGW && UNICODE
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nShowCmd)
{
CONTEXT("WinMain()");
g_hInstance = hInstance;
// initialize COM and OLE before creating the desktop window
OleInit usingCOM;
// init common controls library
CommonControlInit usingCmnCtrl;
//@@ g_Globals.read_persistent();
/**TODO fix command line handling */
if (*lpCmdLine=='"' && lpCmdLine[_tcslen(lpCmdLine)-1]=='"') {
++lpCmdLine;
lpCmdLine[_tcslen(lpCmdLine)-1] = '\0';
}
int ret = ibrowser_main(hInstance, lpCmdLine, nShowCmd);
// write configuration file
//@@ g_Globals.write_persistent();
return ret;
}

View file

@ -1,346 +0,0 @@
# Microsoft Developer Studio Project File - Name="ibrowser" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=IBROWSER - WIN32 DEBUG
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "ibrowser.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "ibrowser.mak" CFG="IBROWSER - WIN32 DEBUG"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "ibrowser - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "ibrowser - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE "ibrowser - Win32 Debug Release" (based on "Win32 (x86) Console Application")
!MESSAGE "ibrowser - Win32 Unicode Release" (based on "Win32 (x86) Console Application")
!MESSAGE "ibrowser - Win32 Unicode Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.cmd
RSC=rc.exe
!IF "$(CFG)" == "ibrowser - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MD /W3 /GR /GX /O1 /D "NDEBUG" /D "WIN32" /D _WIN32_IE=0x0600 /D _WIN32_WINNT=0x0501 /Yu"precomp.h" /FD /c
# ADD BASE RSC /l 0x407 /d "NDEBUG"
# ADD RSC /l 0x407 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 gdi32.lib comctl32.lib shell32.lib ole32.lib /nologo /subsystem:windows /machine:I386 /libpath:"Release"
# SUBTRACT LINK32 /pdb:none
!ELSEIF "$(CFG)" == "ibrowser - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D _WIN32_IE=0x0600 /D _WIN32_WINNT=0x0501 /FR /Yu"precomp.h" /FD /GZ /c
# ADD BASE RSC /l 0x407 /d "_DEBUG"
# ADD RSC /l 0x407 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib gdi32.lib comctl32.lib shell32.lib ole32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept /libpath:"Debug"
# SUBTRACT LINK32 /pdb:none
!ELSEIF "$(CFG)" == "ibrowser - Win32 Debug Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "DRelease"
# PROP BASE Intermediate_Dir "DRelease"
# PROP BASE Ignore_Export_Lib 0
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "DRelease"
# PROP Intermediate_Dir "DRelease"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_ROS_" /YX /FD /c
# ADD CPP /nologo /MD /W3 /GR /GX /Zi /O2 /D "NDEBUG" /D "WIN32" /D _WIN32_IE=0x0600 /D _WIN32_WINNT=0x0501 /FR /Yu"precomp.h" /FD /c
# ADD BASE RSC /l 0x407 /d "NDEBUG"
# ADD RSC /l 0x407 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 gdi32.lib comctl32.lib shell32.lib ole32.lib /nologo /subsystem:windows /debug /machine:I386
# SUBTRACT LINK32 /pdb:none
!ELSEIF "$(CFG)" == "ibrowser - Win32 Unicode Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "URelease"
# PROP BASE Intermediate_Dir "URelease"
# PROP BASE Ignore_Export_Lib 0
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "URelease"
# PROP Intermediate_Dir "URelease"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "UNICODE" /D "_ROS_" /YX /FD /c
# ADD CPP /nologo /MD /W3 /GR /GX /O2 /D "NDEBUG" /D "UNICODE" /D "WIN32" /D _WIN32_IE=0x0600 /D _WIN32_WINNT=0x0501 /Yu"precomp.h" /FD /c
# ADD BASE RSC /l 0x407 /d "NDEBUG"
# ADD RSC /l 0x407 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 gdi32.lib comctl32.lib shell32.lib ole32.lib /nologo /subsystem:windows /machine:I386 /libpath:"Release"
# SUBTRACT LINK32 /pdb:none
!ELSEIF "$(CFG)" == "ibrowser - Win32 Unicode Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "UDebug"
# PROP BASE Intermediate_Dir "UDebug"
# PROP BASE Ignore_Export_Lib 0
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "UDebug"
# PROP Intermediate_Dir "UDebug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D "UNICODE" /D "_ROS_" /FR /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /D "_DEBUG" /D "UNICODE" /D "WIN32" /D _WIN32_IE=0x0600 /D _WIN32_WINNT=0x0501 /FR /Yu"precomp.h" /FD /GZ /c
# ADD BASE RSC /l 0x407 /d "_DEBUG"
# ADD RSC /l 0x407 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 gdi32.lib comctl32.lib shell32.lib ole32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept /libpath:"Debug"
# SUBTRACT LINK32 /pdb:none
!ENDIF
# Begin Target
# Name "ibrowser - Win32 Release"
# Name "ibrowser - Win32 Debug"
# Name "ibrowser - Win32 Debug Release"
# Name "ibrowser - Win32 Unicode Release"
# Name "ibrowser - Win32 Unicode Debug"
# Begin Group "utility"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\utility\comutil.h
# End Source File
# Begin Source File
SOURCE=.\utility\utility.cpp
# End Source File
# Begin Source File
SOURCE=.\utility\utility.h
# End Source File
# Begin Source File
SOURCE=.\utility\window.cpp
# End Source File
# Begin Source File
SOURCE=.\utility\window.h
# End Source File
# Begin Source File
SOURCE=.\utility\xmlstorage.cpp
# End Source File
# Begin Source File
SOURCE=.\utility\xmlstorage.h
# End Source File
# Begin Source File
SOURCE=".\utility\xs-native.cpp"
# End Source File
# End Group
# Begin Group "resources"
# PROP Default_Filter "bmp,ico"
# Begin Source File
SOURCE=.\De.rc
# PROP Exclude_From_Build 1
# End Source File
# Begin Source File
SOURCE=.\res\dot.ico
# End Source File
# Begin Source File
SOURCE=.\res\dot_red.ico
# End Source File
# Begin Source File
SOURCE=.\res\dot_trans.ico
# End Source File
# Begin Source File
SOURCE=.\En.rc
# PROP Exclude_From_Build 1
# End Source File
# Begin Source File
SOURCE=.\Es.rc
# PROP Exclude_From_Build 1
# End Source File
# Begin Source File
SOURCE=.\res\favorites.ico
# End Source File
# Begin Source File
SOURCE=.\Fr.rc
# PROP Exclude_From_Build 1
# End Source File
# Begin Source File
SOURCE=.\Hu.rc
# PROP Exclude_From_Build 1
# End Source File
# Begin Source File
SOURCE=.\res\ibrowser.ico
# End Source File
# Begin Source File
SOURCE=.\ibrowser.rc
# PROP Exclude_From_Build 1
# End Source File
# Begin Source File
SOURCE=.\ibrowser_intres.h
# End Source File
# Begin Source File
SOURCE=.\ibrowser_intres.rc
# End Source File
# Begin Source File
SOURCE=.\Ja.rc
# PROP Exclude_From_Build 1
# End Source File
# Begin Source File
SOURCE=.\res\network.ico
# End Source File
# Begin Source File
SOURCE=.\res\reactos.ico
# End Source File
# Begin Source File
SOURCE=.\Ro.rc
# PROP Exclude_From_Build 1
# End Source File
# Begin Source File
SOURCE=.\Sv.rc
# PROP Exclude_From_Build 1
# End Source File
# Begin Source File
SOURCE=.\res\toolbar.bmp
# End Source File
# End Group
# Begin Group "main"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\favorites.cpp
# End Source File
# Begin Source File
SOURCE=.\favorites.h
# End Source File
# Begin Source File
SOURCE=.\ibrowser.cpp
# End Source File
# Begin Source File
SOURCE=.\ibrowser.h
# End Source File
# Begin Source File
SOURCE=.\mainframe.cpp
# End Source File
# Begin Source File
SOURCE=.\mainframe.h
# End Source File
# Begin Source File
SOURCE=.\precomp.cpp
# ADD CPP /Yc"precomp.h"
# End Source File
# Begin Source File
SOURCE=.\precomp.h
# End Source File
# Begin Source File
SOURCE=.\webchild.cpp
# End Source File
# Begin Source File
SOURCE=.\webchild.h
# End Source File
# End Group
# Begin Source File
SOURCE=.\readme.txt
# End Source File
# End Target
# End Project

View file

@ -1,41 +0,0 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "ibrowser"=.\ibrowser.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "make_ibrowser"=.\make_ibrowser.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

View file

@ -1,231 +0,0 @@
/*
* Copyright 2005 Martin Fuchs
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
//
// ROS Internet Web Browser
//
// ibrowser.h
//
// Martin Fuchs, 25.01.2005
//
#include "utility/window.h"
#define IDW_STATUSBAR 0x100
#define IDW_TOOLBAR 0x101
#define IDW_EXTRABAR 0x102
#define IDW_ADDRESSBAR 0x104
#define IDW_SIDEBAR 0x106
#define IDW_FIRST_CHILD 0xC000 /*0x200*/
#define PM_GET_FILEWND_PTR (WM_APP+0x05)
#define PM_GET_SHELLBROWSER_PTR (WM_APP+0x06)
#define PM_GET_CONTROLWINDOW (WM_APP+0x16)
#define PM_RESIZE_CHILDREN (WM_APP+0x17)
#define PM_GET_WIDTH (WM_APP+0x18)
#define PM_REFRESH (WM_APP+0x1B)
#define PM_REFRESH_CONFIG (WM_APP+0x1C)
#define CLASSNAME_FRAME TEXT("IBrowserFrameWClass")
#define CLASSNAME_CHILDWND TEXT("IBrowserChildWClass")
#include "mainframe.h"
/// convenient loading of string resources
struct ResString : public String
{
ResString(UINT nid);
};
/// convenient loading of standard (32x32) icon resources
struct ResIcon
{
ResIcon(UINT nid);
operator HICON() const {return _hicon;}
protected:
HICON _hicon;
};
/// convenient loading of small (16x16) icon resources
struct SmallIcon
{
SmallIcon(UINT nid);
operator HICON() const {return _hicon;}
protected:
HICON _hicon;
};
/// convenient loading of icon resources with specified sizes
struct ResIconEx
{
ResIconEx(UINT nid, int w, int h);
operator HICON() const {return _hicon;}
protected:
HICON _hicon;
};
/// set big and small icons out of the resources for a window
extern void SetWindowIcon(HWND hwnd, UINT nid);
/// convenient loading of bitmap resources
struct ResBitmap
{
ResBitmap(UINT nid);
~ResBitmap() {DeleteObject(_hBmp);}
operator HBITMAP() const {return _hBmp;}
protected:
HBITMAP _hBmp;
};
enum ICON_TYPE {
IT_STATIC,
IT_CACHED,
IT_DYNAMIC,
IT_SYSCACHE
};
enum ICON_ID {
ICID_UNKNOWN,
ICID_NONE,
ICID_IBROWSER,
ICID_BOOKMARK,
ICID_DYNAMIC
};
struct Icon {
Icon();
Icon(ICON_ID id, UINT nid);
Icon(ICON_TYPE itype, int id, HICON hIcon);
Icon(ICON_TYPE itype, int id, int sys_idx);
operator ICON_ID() const {return _id;}
void draw(HDC hdc, int x, int y, int cx, int cy, COLORREF bk_color, HBRUSH bk_brush) const;
HBITMAP create_bitmap(COLORREF bk_color, HBRUSH hbrBkgnd, HDC hdc_wnd) const;
int add_to_imagelist(HIMAGELIST himl, HDC hdc_wnd, COLORREF bk_color=GetSysColor(COLOR_WINDOW), HBRUSH bk_brush=GetSysColorBrush(COLOR_WINDOW)) const;
int get_sysiml_idx() const {return _itype==IT_SYSCACHE? _sys_idx: -1;}
bool destroy() {if (_itype == IT_DYNAMIC) {DestroyIcon(_hicon); return true;} else return false;}
protected:
ICON_ID _id;
ICON_TYPE _itype;
HICON _hicon;
int _sys_idx;
};
struct SysCacheIcon : public Icon {
SysCacheIcon(int id, int sys_idx)
: Icon(IT_SYSCACHE, id, sys_idx) {}
};
struct IconCache {
IconCache() : _himlSys(0) {}
void init();
const Icon& extract(const String& path);
const Icon& extract(LPCTSTR path, int idx);
const Icon& extract(IExtractIcon* pExtract, LPCTSTR path, int idx);
const Icon& add(HICON hIcon, ICON_TYPE type=IT_DYNAMIC);
const Icon& add(int sys_idx/*, ICON_TYPE type=IT_SYSCACHE*/);
const Icon& get_icon(int icon_id);
HIMAGELIST get_sys_imagelist() const {return _himlSys;}
void free_icon(int icon_id);
protected:
static int s_next_id;
typedef map<int, Icon> IconMap;
IconMap _icons;
typedef map<String, ICON_ID> PathMap;
PathMap _pathMap;
typedef pair<String, int> CachePair;
typedef map<CachePair, ICON_ID> PathIdxMap;
PathIdxMap _pathIdxMap;
HIMAGELIST _himlSys;
};
/// create a bitmap from an icon
extern HBITMAP create_bitmap_from_icon(HICON hIcon, HBRUSH hbrush_bkgnd, HDC hdc_wnd);
/// add icon with alpha channel to imagelist using the specified background color
extern int ImageList_AddAlphaIcon(HIMAGELIST himl, HICON hIcon, HBRUSH hbrush_bkgnd, HDC hdc_wnd);
#include "utility/xmlstorage.h"
using namespace XMLStorage;
#include "favorites.h"
// globals
extern HINSTANCE g_hInstance;
extern IconCache g_icon_cache;
extern ATOM g_hframeClass;
// display explorer "About" dialog
extern void ibrowser_about(HWND hwndParent);
// display explorer "open" dialog
extern void ibrowser_open(HWND hwndParent);
// declare shell32's "Run..." dialog export function
typedef void (WINAPI* RUNFILEDLG)(HWND hwndOwner, HICON hIcon, LPCSTR lpstrDirectory, LPCSTR lpstrTitle, LPCSTR lpstrDescription, UINT uFlags);
//
// Flags for RunFileDlg
//
#define RFF_NOBROWSE 0x01 // Removes the browse button.
#define RFF_NODEFAULT 0x02 // No default item selected.
#define RFF_CALCDIRECTORY 0x04 // Calculates the working directory from the file name.
#define RFF_NOLABEL 0x08 // Removes the edit box label.
#define RFF_NOSEPARATEMEM 0x20 // Removes the Separate Memory Space check box (Windows NT only).

View file

@ -1,33 +0,0 @@
<?xml version="1.0"?>
<rbuild xmlns:xi="http://www.w3.org/2001/XInclude">
<module name="ibrowser" type="win32gui" installbase="system32" installname="ibrowser.exe" allowwarnings="true" stdlib="host">
<linkerflag>-fexceptions</linkerflag>
<include base="ibrowser">.</include>
<define name="__USE_W32API" />
<define name="UNICODE" />
<define name="WIN32" />
<define name="_ROS_" />
<define name="_WIN32_IE">0x0600</define>
<define name="_WIN32_WINNT">0x0501</define>
<define name="WINVER">0x0500</define>
<library>uuid</library>
<library>kernel32</library>
<library>gdi32</library>
<library>comctl32</library>
<library>ole32</library>
<library>oleaut32</library>
<library>shell32</library>
<pch>precomp.h</pch>
<directory name="utility">
<file>utility.cpp</file>
<file>window.cpp</file>
<file>xmlstorage.cpp</file>
<file>xs-native.cpp</file>
</directory>
<file>ibrowser.cpp</file>
<file>favorites.cpp</file>
<file>mainframe.cpp</file>
<file>webchild.cpp</file>
<file>ibrowser.rc</file>
</module>
</rbuild>

View file

@ -1,13 +0,0 @@
#include <windows.h>
#include "ibrowser_intres.rc"
#define REACTOS_STR_FILE_DESCRIPTION "ROS Internet Web Browser\0"
#define REACTOS_STR_INTERNAL_NAME "ibrowser\0"
#define REACTOS_STR_ORIGINAL_FILENAME "ibrowser.exe\0"
#include <reactos/version.rc>
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#define IDS_VERSION_STR 5000
#define IDS_IBROWSER_VERSION_STR 5001

View file

@ -1,52 +0,0 @@
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by ibrowser_intres.rc
//
#define IDS_TITLE 1
#define IDS_EMPTY 13
#define IDS_ABOUT_IBROWSER 27
#define IDI_REACTOS 100
#define IDB_TOOLBAR 103
#define IDA_IBROWSER 104
#define IDM_SDIFRAME 113
#define IDD_ABOUT_IBROWSER 135
#define IDI_FAVORITES 140
#define IDI_DOT 163
#define IDI_DOT_TRANS 164
#define IDI_DOT_RED 165
#define IDI_IBROWSER 169
#define ID_VIEW_STATUSBAR 503
#define ID_VIEW_TOOL_BAR 508
#define ID_VIEW_SIDE_BAR 510
#define IDC_ROS_IBROWSER 1000
#define IDC_WWW 1012
#define IDC_VERSION_TXT 1029
#define IDC_WIN_VERSION 1030
#define ID_REFRESH 1704
#define IDS_VERSION_STR 5000
#define IDS_IBROWSER_VERSION_STR 5001
#define ID_IBROWSER_FAQ 10002
#define ID_VIEW_FULLSCREEN 0x8004
#define ID_ABOUT_WINDOWS 40002
#define ID_ABOUT_IBROWSER 40003
#define ID_GO_BACK 40005
#define ID_GO_FORWARD 40006
#define ID_GO_HOME 40007
#define ID_GO_SEARCH 40008
#define ID_GO_UP 40009
#define ID_STOP 40010
#define ID_FILE_OPEN 0xE140
#define ID_FILE_EXIT 0xE141
#define ID_HELP 0xE146
#define IDC_STATIC -1
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 170
#define _APS_NEXT_COMMAND_VALUE 40024
#define _APS_NEXT_CONTROL_VALUE 1033
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

View file

@ -1,116 +0,0 @@
//Microsoft Developer Studio generated resource script.
//
#include "ibrowser_intres.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include <windows.h>
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// Neutral resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
#ifdef _WIN32
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#pragma code_page(1252)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//
IDB_TOOLBAR BITMAP DISCARDABLE "res/toolbar.bmp"
/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//
IDA_IBROWSER ACCELERATORS DISCARDABLE
BEGIN
"X", ID_FILE_EXIT, VIRTKEY, ALT // "X"
"S", ID_VIEW_FULLSCREEN, VIRTKEY, CONTROL // "^CS"
END
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"ibrowser_intres.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include <windows.h>\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""de-DE.rc""\r\n"
"#include ""en-US.rc""\r\n"
"#include ""es-ES.rc""\r\n"
"#include ""fr-FR.rc""\r\n"
"#include ""hu-HU.rc""\r\n"
"#include ""id-ID.rc""\r\n"
"#include ""it-IT.rc""\r\n"
"#include ""ja-JP.rc""\r\n"
"#include ""nb-NO.rc""\r\n"
"#include ""nl-NL.rc""\r\n"
"#include ""ro-RO.rc""\r\n"
"#include ""sv-SE.rc""\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_REACTOS ICON DISCARDABLE "res/reactos.ico"
IDI_FAVORITES ICON DISCARDABLE "res/favorites.ico"
IDI_DOT ICON DISCARDABLE "res/dot.ico"
IDI_DOT_TRANS ICON DISCARDABLE "res/dot_trans.ico"
IDI_DOT_RED ICON DISCARDABLE "res/dot_red.ico"
IDI_IBROWSER ICON DISCARDABLE "res/ibrowser.ico"
#endif // Neutral resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#include "de-DE.rc"
#include "en-US.rc"
#include "es-ES.rc"
#include "fr-FR.rc"
#include "hu-HU.rc"
#include "id-ID.rc"
#include "it-IT.rc"
#include "ja-JP.rc"
#include "nb-NO.rc"
#include "nl-NL.rc"
#include "ro-RO.rc"
#include "sv-SE.rc"
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View file

@ -1,161 +0,0 @@
//Microsoft Developer Studio generated resource script.
//
#include "ibrowser_intres.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include <windows.h>
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// Indonesian resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"ibrowser_intres.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include <windows.h>\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"#ifndef _ROS_\r\n"
"LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT\r\n"
"STRINGTABLE DISCARDABLE \r\n"
"BEGIN\r\n"
"#ifdef UNICODE\r\n"
"IDS_IBROWSER_VERSION_STR ""ROS IBrowser%0s""\r\n"
"#else\r\n"
"IDS_IBROWSER_VERSION_STR ""ROS IBrowser Ansi%0s""\r\n"
"#endif\r\n"
"END\r\n"
"#endif\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#endif // Indonesian resources
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// Indonesian resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT
#pragma code_page(1252)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDM_SDIFRAME MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&File"
BEGIN
MENUITEM "&Buka", ID_FILE_OPEN
MENUITEM "&Keluar", ID_FILE_EXIT
END
POPUP "&Lihat"
BEGIN
MENUITEM "&Toolbar", ID_VIEW_TOOL_BAR
MENUITEM "Bar Samp&ing", ID_VIEW_SIDE_BAR, GRAYED
MENUITEM "Bar &Status", ID_VIEW_STATUSBAR
MENUITEM SEPARATOR
MENUITEM "Segarkan\tF5", ID_REFRESH
MENUITEM "Layar Pen&uh\tCtrl+Shift+S", ID_VIEW_FULLSCREEN
END
POPUP "&Bantuan"
BEGIN
MENUITEM "IBrowser &FAQ...", ID_IBROWSER_FAQ
MENUITEM "&Tentang IBrowser...", ID_ABOUT_IBROWSER
MENUITEM "Tentang &OS...", ID_ABOUT_WINDOWS
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUT_IBROWSER DIALOG DISCARDABLE 0, 0, 199, 106
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Tentang ReactOS Web Browser"
FONT 10, "MS Sans Serif"
BEGIN
LTEXT "ReactOS Web Browser",IDC_ROS_IBROWSER,91,13,104,11
LTEXT "V 0.9",IDC_VERSION_TXT,91,27,104,8
LTEXT "(c) 2005 Martin Fuchs",IDC_STATIC,91,42,104,8
LTEXT "",IDC_WIN_VERSION,91,58,98,22
LTEXT "http://www.sky.franken.de/explorer/",IDC_WWW,17,84,129,
8
CONTROL "&OK",IDOK,"Button",BS_OWNERDRAW | BS_FLAT | WS_GROUP,
154,90,38,12
END
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
BEGIN
IDS_TITLE "Reactos Internet Web Browser"
IDS_EMPTY "(Kosong)"
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_ABOUT_IBROWSER "&Tentang..."
END
#endif // Indonesian resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#ifndef _ROS_
LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
#ifdef UNICODE
IDS_IBROWSER_VERSION_STR "ROS IBrowser%0s"
#else
IDS_IBROWSER_VERSION_STR "ROS IBrowser Ansi%0s"
#endif
END
#endif
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View file

@ -1,161 +0,0 @@
//Microsoft Developer Studio generated resource script.
//
#include "ibrowser_intres.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include <windows.h>
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// Italian resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
#ifdef _WIN32
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"ibrowser_intres.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include <windows.h>\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"#ifndef _ROS_\r\n"
"LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL\r\n"
"STRINGTABLE DISCARDABLE \r\n"
"BEGIN\r\n"
"#ifdef UNICODE\r\n"
"IDS_IBROWSER_VERSION_STR ""ROS IBrowser%0s""\r\n"
"#else\r\n"
"IDS_IBROWSER_VERSION_STR ""ROS IBrowser Ansi%0s""\r\n"
"#endif\r\n"
"END\r\n"
"#endif\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#endif // Italian resources
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// Italian resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
#pragma code_page(1252)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDM_SDIFRAME MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&File"
BEGIN
MENUITEM "&Apri", ID_FILE_OPEN
MENUITEM "E&sci", ID_FILE_EXIT
END
POPUP "&Visualizza"
BEGIN
MENUITEM "&Barra degli strumenti", ID_VIEW_TOOL_BAR
MENUITEM "B&arra laterale", ID_VIEW_SIDE_BAR, GRAYED
MENUITEM "Barra di s&tato", ID_VIEW_STATUSBAR
MENUITEM SEPARATOR
MENUITEM "A&ggiorna\tF5", ID_REFRESH
MENUITEM "S&chermo intero\tCtrl+Shift+S", ID_VIEW_FULLSCREEN
END
POPUP "&?"
BEGIN
MENUITEM "IBrowser &FAQ...", ID_IBROWSER_FAQ
MENUITEM "&Informazioni su IBrowser...", ID_ABOUT_IBROWSER
MENUITEM "Informazioni sul &SO...", ID_ABOUT_WINDOWS
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUT_IBROWSER DIALOG DISCARDABLE 0, 0, 199, 106
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Informazioni sul navigatore web di ReactOS"
FONT 10, "MS Sans Serif"
BEGIN
LTEXT "Navigatore web di ReactOS",IDC_ROS_IBROWSER,91,13,104,11
LTEXT "V 0.9",IDC_VERSION_TXT,91,27,104,8
LTEXT "(c) 2005 Martin Fuchs",IDC_STATIC,91,42,104,8
LTEXT "",IDC_WIN_VERSION,91,58,98,22
LTEXT "http://www.sky.franken.de/explorer/",IDC_WWW,17,84,129,
8
CONTROL "&OK",IDOK,"Button",BS_OWNERDRAW | BS_FLAT | WS_GROUP,
154,90,38,12
END
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
BEGIN
IDS_TITLE "Navigatore web internet di Reactos"
IDS_EMPTY "(Empty)"
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_ABOUT_IBROWSER "&Informazioni..."
END
#endif // Italian resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#ifndef _ROS_
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
BEGIN
#ifdef UNICODE
IDS_IBROWSER_VERSION_STR "ROS IBrowser%0s"
#else
IDS_IBROWSER_VERSION_STR "ROS IBrowser Ansi%0s"
#endif
END
#endif
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View file

@ -1,140 +0,0 @@
//Microsoft Developer Studio generated resource script.
//
#include "ibrowser_intres.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include <windows.h>
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// Japanese resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN)
#ifdef _WIN32
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
#pragma code_page(932)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDM_SDIFRAME MENU PRELOAD DISCARDABLE
BEGIN
POPUP "ファイル(&F)"
BEGIN
MENUITEM "開く(&O)", ID_FILE_OPEN
MENUITEM "終了(&X)", ID_FILE_EXIT
END
POPUP "表\示(&V)"
BEGIN
MENUITEM "ツール バー(&T)", ID_VIEW_TOOL_BAR
MENUITEM "サイド バー(&I)", ID_VIEW_SIDE_BAR, GRAYED
MENUITEM "ステータス バー(&S)", ID_VIEW_STATUSBAR
MENUITEM SEPARATOR
MENUITEM "最新の情報に更新(&R)\tF5", ID_REFRESH
MENUITEM "全画面表\示(&I)\tCtrl+Shift+S", ID_VIEW_FULLSCREEN
END
POPUP "ヘルプ(&H)"
BEGIN
MENUITEM "IBrowser FAQ (&F)...", ID_IBROWSER_FAQ
MENUITEM "IBrowser について(&A)...", ID_ABOUT_IBROWSER
MENUITEM "OS について(&O)...", ID_ABOUT_WINDOWS
END
END
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
BEGIN
IDS_TITLE "Reactos Internet Web Browser"
IDS_EMPTY "(Empty)"
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_ABOUT_IBROWSER "バージョン情報(&A)..."
END
#endif // Japanese resources
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// German (Germany) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
#ifdef _WIN32
LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"ibrowser_intres.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include <windows.h>\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"#ifndef _ROS_\r\n"
"LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT\r\n"
"STRINGTABLE DISCARDABLE \r\n"
"BEGIN\r\n"
"#ifdef UNICODE\r\n"
"IDS_IBROWSER_VERSION_STR ""ROS IBrowser%0s""\r\n"
"#else\r\n"
"IDS_IBROWSER_VERSION_STR ""ROS IBrowser Ansi%0s""\r\n"
"#endif\r\n"
"END\r\n"
"#endif\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#endif // German (Germany) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#ifndef _ROS_
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
BEGIN
#ifdef UNICODE
IDS_IBROWSER_VERSION_STR "ROS IBrowser%0s"
#else
IDS_IBROWSER_VERSION_STR "ROS IBrowser Ansi%0s"
#endif
END
#endif
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View file

@ -1,793 +0,0 @@
/*
* Copyright 2005 Martin Fuchs
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
//
// ROS Internet Web Browser
//
// mainframe.cpp
//
// Martin Fuchs, 25.01.2005
//
#include <precomp.h>
/* We can't include webchild.h here - otherwise MinGW produces errors like: "multiple definition of `QACONTAINERFLAGS'"
#include "webchild.h"
*/
extern HWND create_webchildwindow(const WebChildWndInfo& info);
#include "ibrowser_intres.h"
HWND MainFrameBase::Create(LPCTSTR url, UINT cmdshow)
{
HWND hMainFrame;
hMainFrame = MainFrame::Create();
//@@hMainFrame = MainFrame::Create(url);
if (hMainFrame) {
if (url) {
static String sPath = url; // copy url to avoid accessing freed memory
url = sPath;
}
ShowWindow(hMainFrame, cmdshow);
UpdateWindow(hMainFrame);
// Open the first child window after initializing the application
PostMessage(hMainFrame, PM_OPEN_WINDOW, 0, (LPARAM)url);
}
return hMainFrame;
}
MainFrameBase::MainFrameBase(HWND hwnd)
: super(hwnd),
_himl(ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_MASK|ILC_COLOR24, 2, 0))
{
_hMenuFrame = GetMenu(hwnd);
_hMenuWindow = GetSubMenu(_hMenuFrame, GetMenuItemCount(_hMenuFrame)-3);
_menu_info._hMenuView = GetSubMenu(_hMenuFrame, 1);
_hAccel = LoadAccelerators(g_hInstance, MAKEINTRESOURCE(IDA_IBROWSER));
TBBUTTON toolbarBtns[] = {
#ifdef _NO_REBAR
{0, 0, 0, BTNS_SEP, {0, 0}, 0, 0},
#endif
{7, ID_GO_BACK, TBSTATE_ENABLED, BTNS_BUTTON, {0, 0}, 0, 0},
{8, ID_GO_FORWARD, TBSTATE_ENABLED, BTNS_BUTTON, {0, 0}, 0, 0},
{9, ID_GO_UP, TBSTATE_ENABLED, BTNS_BUTTON, {0, 0}, 0, 0},
{10, ID_GO_HOME, TBSTATE_ENABLED, BTNS_BUTTON, {0, 0}, 0, 0},
{11, ID_GO_SEARCH, TBSTATE_ENABLED, BTNS_BUTTON, {0, 0}, 0, 0},
{12, ID_REFRESH, TBSTATE_ENABLED, BTNS_BUTTON, {0, 0}, 0, 0},
{13, ID_STOP, TBSTATE_ENABLED, BTNS_BUTTON, {0, 0}, 0, 0}
};
_htoolbar = CreateToolbarEx(hwnd,
#ifndef _NO_REBAR
CCS_NOPARENTALIGN|CCS_NORESIZE|
#endif
WS_CHILD|WS_VISIBLE|TBSTYLE_FLAT, IDW_TOOLBAR, 2, g_hInstance, IDB_TOOLBAR,
toolbarBtns, sizeof(toolbarBtns)/sizeof(TBBUTTON),
16, 15, 16, 15, sizeof(TBBUTTON));
CheckMenuItem(_menu_info._hMenuView, ID_VIEW_TOOL_BAR, MF_BYCOMMAND|MF_CHECKED);
// address bar
WindowCanvas canvas(hwnd);
RECT rect = {0, 0, 0, 0};
DrawText(canvas, TEXT("My"), -1, &rect, DT_SINGLELINE|DT_NOPREFIX|DT_CALCRECT);
HFONT hfont = GetStockFont(DEFAULT_GUI_FONT);
_haddressedit = CreateWindow(TEXT("EDIT"), NULL, WS_CHILD|WS_VISIBLE|WS_BORDER, 0, 0, 0, rect.bottom,
hwnd, (HMENU)IDW_ADDRESSBAR, g_hInstance, 0);
SetWindowFont(_haddressedit, hfont, FALSE);
new EditController(_haddressedit);
/* CreateStatusWindow does not accept WS_BORDER
_hstatusbar = CreateWindowEx(WS_EX_NOPARENTNOTIFY, STATUSCLASSNAME, 0,
WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_BORDER|CCS_NODIVIDER, 0,0,0,0,
hwnd, (HMENU)IDW_STATUSBAR, g_hInstance, 0);*/
_hstatusbar = CreateStatusWindow(WS_CHILD|WS_VISIBLE, 0, hwnd, IDW_STATUSBAR);
CheckMenuItem(_menu_info._hMenuView, ID_VIEW_STATUSBAR, MF_BYCOMMAND|MF_CHECKED);
_hsidebar = CreateWindowEx(WS_EX_STATICEDGE, WC_TREEVIEW, TEXT("Sidebar"),
WS_CHILD|WS_TABSTOP|WS_BORDER|/*WS_VISIBLE|*/WS_CHILD|TVS_HASLINES|TVS_HASBUTTONS|TVS_SHOWSELALWAYS|TVS_INFOTIP,
-1, -1, 200, 0, _hwnd, (HMENU)IDW_SIDEBAR, g_hInstance, 0);
(void)TreeView_SetImageList(_hsidebar, _himl, TVSIL_NORMAL);
CheckMenuItem(_menu_info._hMenuView, ID_VIEW_SIDE_BAR, MF_BYCOMMAND|MF_UNCHECKED/*MF_CHECKED*/);
// create rebar window to manage toolbar and address bar
#ifndef _NO_REBAR
_hwndrebar = CreateWindowEx(WS_EX_TOOLWINDOW, REBARCLASSNAME, NULL,
WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|
RBS_VARHEIGHT|RBS_AUTOSIZE|RBS_DBLCLKTOGGLE|
CCS_NODIVIDER|CCS_NOPARENTALIGN,
0, 0, 0, 0, _hwnd, 0, g_hInstance, 0);
int btn_hgt = HIWORD(SendMessage(_htoolbar, TB_GETBUTTONSIZE, 0, 0));
REBARBANDINFO rbBand;
rbBand.cbSize = sizeof(REBARBANDINFO);
rbBand.fMask = RBBIM_TEXT|RBBIM_STYLE|RBBIM_CHILD|RBBIM_CHILDSIZE|RBBIM_SIZE;
#ifndef RBBS_HIDETITLE // missing in MinGW headers as of 25.02.2004
#define RBBS_HIDETITLE 0x400
#endif
rbBand.fStyle = RBBS_CHILDEDGE|RBBS_GRIPPERALWAYS|RBBS_HIDETITLE;
rbBand.cxMinChild = 0;
rbBand.cyMinChild = 0;
rbBand.cyChild = 0;
rbBand.cyMaxChild = 0;
rbBand.cyIntegral = btn_hgt;
TCHAR ToolBarText[] = _T("Toolbar");
rbBand.lpText = ToolBarText;
rbBand.hwndChild = _htoolbar;
rbBand.cxMinChild = 0;
rbBand.cyMinChild = btn_hgt + 4;
rbBand.cx = 182;
SendMessage(_hwndrebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rbBand);
TCHAR AddressText[] = _T("Address");
rbBand.lpText = AddressText;
rbBand.hwndChild = _haddressedit;
rbBand.cxMinChild = 0;
rbBand.cyMinChild = btn_hgt - 2;
rbBand.cx = 284;
SendMessage(_hwndrebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rbBand);
#endif
}
MainFrameBase::~MainFrameBase()
{
ImageList_Destroy(_himl);
//@@if (g_Globals._hMainWnd == _hwnd)
PostQuitMessage(0);
}
LRESULT MainFrameBase::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
{
LRESULT res;
if (ProcessMessage(nmsg, wparam, lparam, &res))
return res;
else
return super::WndProc(nmsg, wparam, lparam);
}
bool MainFrameBase::ProcessMessage(UINT nmsg, WPARAM wparam, LPARAM lparam, LRESULT* pres)
{
switch(nmsg) {
case PM_TRANSLATE_MSG:
*pres = TranslateMsg((MSG*)lparam);
return true;
case WM_SHOWWINDOW:
if (wparam) // trigger child resizing after window creation - now we can succesfully call IsWindowVisible()
resize_frame_client();
return false; // goto def;
case WM_CLOSE:
DestroyWindow(_hwnd);
//@@ g_Globals._hMainWnd = 0;
break;
case WM_DESTROY:
break;
case WM_SIZE:
resize_frame(LOWORD(lparam), HIWORD(lparam));
break; // do not pass message to DefFrameProc
case WM_GETMINMAXINFO: {
LPMINMAXINFO lpmmi = (LPMINMAXINFO)lparam;
lpmmi->ptMaxTrackSize.x <<= 1;/*2*GetSystemMetrics(SM_CXSCREEN) / SM_CXVIRTUALSCREEN */
lpmmi->ptMaxTrackSize.y <<= 1;/*2*GetSystemMetrics(SM_CYSCREEN) / SM_CYVIRTUALSCREEN */
break;}
case PM_FRM_CALC_CLIENT:
frame_get_clientspace((PRECT)lparam);
*pres = TRUE;
return true;
case PM_FRM_GET_MENUINFO:
*pres = (LPARAM)&_menu_info;
return true;
case PM_GET_CONTROLWINDOW:
if (wparam == FCW_STATUS) {
*pres = (LRESULT)(HWND)_hstatusbar;
return true;
}
break;
case PM_SETSTATUSTEXT:
SendMessage(_hstatusbar, SB_SETTEXT, wparam, lparam);
break;
case PM_URL_CHANGED:
SetWindowText(_haddressedit, (LPCTSTR)lparam);
break;
default:
return false;
}
*pres = 0;
return true;
}
BOOL MainFrameBase::TranslateMsg(MSG* pmsg)
{
if (TranslateAccelerator(_hwnd, _hAccel, pmsg))
return TRUE;
return FALSE;
}
int MainFrameBase::Command(int id, int code)
{
CONTEXT("MainFrameBase::Command()");
switch(id) {
case ID_FILE_OPEN:
ibrowser_open(_hwnd);
break;
case ID_FILE_EXIT:
SendMessage(_hwnd, WM_CLOSE, 0, 0);
break;
case ID_VIEW_TOOL_BAR:
toggle_child(_hwnd, id, _htoolbar, 0);
break;
case ID_VIEW_STATUSBAR:
toggle_child(_hwnd, id, _hstatusbar);
break;
case ID_VIEW_SIDE_BAR:
// lazy initialization
if (!TreeView_GetCount(_hsidebar))
FillBookmarks();
toggle_child(_hwnd, id, _hsidebar);
break;
case ID_HELP:
WinHelp(_hwnd, TEXT("ibrowser")/*file ibrowser.hlp*/, HELP_INDEX, 0);
break;
case ID_VIEW_FULLSCREEN:
CheckMenuItem(_menu_info._hMenuView, id, toggle_fullscreen()?MF_CHECKED:0);
break;
case ID_ABOUT_WINDOWS:
ShellAbout(_hwnd, ResString(IDS_TITLE), NULL, 0);
break;
case ID_ABOUT_IBROWSER:
ibrowser_about(_hwnd);
break;
case ID_IBROWSER_FAQ:
launch_file(_hwnd, TEXT("http://www.sky.franken.de/explorer/"), SW_SHOW);
break;
case IDW_ADDRESSBAR:
if (code == 1) {
TCHAR url[BUFFER_LEN];
if (GetWindowText(_haddressedit, url, BUFFER_LEN))
go_to(url, false);
}
break;
default:
return 1; // no command handlers in Window::Command()
}
return 0;
}
int MainFrameBase::Notify(int id, NMHDR* pnmh)
{
switch(pnmh->code) {
// resize children windows when the rebar size changes
case RBN_AUTOSIZE:
resize_frame_client();
break;
case TVN_GETINFOTIP: {
NMTVGETINFOTIP* pnmgit = (NMTVGETINFOTIP*)pnmh;
if (pnmgit->lParam) {
const BookmarkNode& node = *(BookmarkNode*)pnmgit->lParam;
if (node._type == BookmarkNode::BMNT_FOLDER) {
// display tooltips for bookmark folders
if (!node._pfolder->_description.empty())
lstrcpyn(pnmgit->pszText, node._pfolder->_description.c_str(), pnmgit->cchTextMax);
} else if (node._type == BookmarkNode::BMNT_BOOKMARK) {
// display tooltips for bookmark folders
String txt = node._pbookmark->_description;
if (!node._pbookmark->_url.empty()) {
if (!txt.empty())
txt += TEXT(" - ");
txt += node._pbookmark->_url;
}
lstrcpyn(pnmgit->pszText, txt.c_str(), pnmgit->cchTextMax);
}
}
break;}
case NM_DBLCLK: {
HTREEITEM hitem = TreeView_GetSelection(_hsidebar);
LPARAM lparam = TreeView_GetItemData(_hsidebar, hitem);
if (lparam) {
const BookmarkNode& node = *(BookmarkNode*)lparam;
if (node._type == BookmarkNode::BMNT_BOOKMARK) {
bool new_window = GetAsyncKeyState(VK_SHIFT)<0;
go_to(node._pbookmark->_url, new_window);
}
}
break;}
}
return 0;
}
void MainFrameBase::resize_frame(int cx, int cy)
{
if (cy <= 0)
return; // avoid resizing children when receiving RBN_AUTOSIZE while getting minimized
RECT rect = {0, 0, cx, cy};
if (_hwndrebar) {
int height = ClientRect(_hwndrebar).bottom;
MoveWindow(_hwndrebar, rect.left, rect.top, rect.right-rect.left, height, TRUE);
rect.top += height;
} else {
if (IsWindowVisible(_htoolbar)) {
SendMessage(_htoolbar, WM_SIZE, 0, 0);
WindowRect rt(_htoolbar);
rect.top = rt.bottom;
// rect.bottom -= rt.bottom;
}
}
if (IsWindowVisible(_hstatusbar)) {
int parts[] = {300, 500};
SendMessage(_hstatusbar, WM_SIZE, 0, 0);
SendMessage(_hstatusbar, SB_SETPARTS, 2, (LPARAM)&parts);
ClientRect rt(_hstatusbar);
rect.bottom -= rt.bottom;
}
if (IsWindowVisible(_hsidebar)) {
WindowRect rt(_hsidebar);
rect.left += rt.right-rt.left;
SetWindowPos(_hsidebar, 0, -1, rect.top-1, rt.right-rt.left, rect.bottom-rect.top+1, SWP_NOACTIVATE|SWP_NOZORDER);
}
}
void MainFrameBase::resize_frame_client()
{
ClientRect rect(_hwnd);
resize_frame(rect.right, rect.bottom);
}
void MainFrameBase::frame_get_clientspace(PRECT prect)
{
if (!IsIconic(_hwnd))
GetClientRect(_hwnd, prect);
else {
WINDOWPLACEMENT wp;
GetWindowPlacement(_hwnd, &wp);
prect->left = prect->top = 0;
prect->right = wp.rcNormalPosition.right-wp.rcNormalPosition.left-
2*(GetSystemMetrics(SM_CXSIZEFRAME)+GetSystemMetrics(SM_CXEDGE));
prect->bottom = wp.rcNormalPosition.bottom-wp.rcNormalPosition.top-
2*(GetSystemMetrics(SM_CYSIZEFRAME)+GetSystemMetrics(SM_CYEDGE))-
GetSystemMetrics(SM_CYCAPTION)-GetSystemMetrics(SM_CYMENUSIZE);
}
if (IsWindowVisible(_htoolbar)) {
ClientRect rt(_htoolbar);
prect->top += rt.bottom+2;
}
if (IsWindowVisible(_hstatusbar)) {
ClientRect rt(_hstatusbar);
prect->bottom -= rt.bottom;
}
}
BOOL MainFrameBase::toggle_fullscreen()
{
RECT rt;
if ((_fullscreen._mode=!_fullscreen._mode)) {
GetWindowRect(_hwnd, &_fullscreen._orgPos);
_fullscreen._wasZoomed = IsZoomed(_hwnd);
Frame_CalcFrameClient(_hwnd, &rt);
ClientToScreen(_hwnd, (LPPOINT)&rt.left);
ClientToScreen(_hwnd, (LPPOINT)&rt.right);
rt.left = _fullscreen._orgPos.left-rt.left;
rt.top = _fullscreen._orgPos.top-rt.top;
rt.right = GetSystemMetrics(SM_CXSCREEN)+_fullscreen._orgPos.right-rt.right;
rt.bottom = GetSystemMetrics(SM_CYSCREEN)+_fullscreen._orgPos.bottom-rt.bottom;
MoveWindow(_hwnd, rt.left, rt.top, rt.right-rt.left, rt.bottom-rt.top, TRUE);
} else {
MoveWindow(_hwnd, _fullscreen._orgPos.left, _fullscreen._orgPos.top,
_fullscreen._orgPos.right-_fullscreen._orgPos.left,
_fullscreen._orgPos.bottom-_fullscreen._orgPos.top, TRUE);
if (_fullscreen._wasZoomed)
ShowWindow(_hwnd, WS_MAXIMIZE);
}
return _fullscreen._mode;
}
void MainFrameBase::fullscreen_move()
{
RECT rt, pos;
GetWindowRect(_hwnd, &pos);
Frame_CalcFrameClient(_hwnd, &rt);
ClientToScreen(_hwnd, (LPPOINT)&rt.left);
ClientToScreen(_hwnd, (LPPOINT)&rt.right);
rt.left = pos.left-rt.left;
rt.top = pos.top-rt.top;
rt.right = GetSystemMetrics(SM_CXSCREEN)+pos.right-rt.right;
rt.bottom = GetSystemMetrics(SM_CYSCREEN)+pos.bottom-rt.bottom;
MoveWindow(_hwnd, rt.left, rt.top, rt.right-rt.left, rt.bottom-rt.top, TRUE);
}
void MainFrameBase::toggle_child(HWND hwnd, UINT cmd, HWND hchild, int band_idx)
{
BOOL vis = IsWindowVisible(hchild);
CheckMenuItem(_menu_info._hMenuView, cmd, vis?MF_BYCOMMAND:MF_BYCOMMAND|MF_CHECKED);
if (band_idx != -1)
SendMessage(_hwndrebar, RB_SHOWBAND, band_idx, !vis);
else
ShowWindow(hchild, vis? SW_HIDE: SW_SHOW);
if (_fullscreen._mode)
fullscreen_move();
resize_frame_client();
}
void MainFrameBase::FillBookmarks()
{
/*@@
HiddenWindow hide(_hsidebar);
WindowCanvas canvas(_hwnd);
TreeView_DeleteAllItems(_hsidebar);
g_icon_cache.get_icon(ICID_FAVORITES).add_to_imagelist(_himl, canvas);
g_icon_cache.get_icon(ICID_BOOKMARK).add_to_imagelist(_himl, canvas);
ImageList_AddAlphaIcon(_himl, SmallIcon(IDI_DOT), GetStockBrush(WHITE_BRUSH), canvas);
g_icon_cache.get_icon(ICID_FOLDER).add_to_imagelist(_himl, canvas);
g_icon_cache.get_icon(ICID_FOLDER).add_to_imagelist(_himl, canvas);
TV_INSERTSTRUCT tvi;
tvi.hParent = TVI_ROOT;
tvi.hInsertAfter = TVI_LAST;
tvi.item.mask = TVIF_TEXT|TVIF_IMAGE|TVIF_SELECTEDIMAGE;
ResString sFavorites(IDS_FAVORITES);
tvi.item.pszText = (LPTSTR)sFavorites.c_str();
tvi.item.iSelectedImage = tvi.item.iImage = 0;
HTREEITEM hitem_bookmarks = TreeView_InsertItem(_hsidebar, &tvi);
g_Globals._favorites.fill_tree(_hsidebar, hitem_bookmarks, _himl, canvas);
TreeView_Expand(_hsidebar, hitem_bookmarks, TVE_EXPAND);
*/
}
MainFrame::MainFrame(HWND hwnd)
: super(hwnd)
{
_split_pos = DEFAULT_SPLIT_POS;
_last_split = DEFAULT_SPLIT_POS;
}
HWND MainFrame::Create()
{
HMENU hMenuFrame = LoadMenu(g_hInstance, MAKEINTRESOURCE(IDM_SDIFRAME));
return Window::Create(WINDOW_CREATOR(MainFrame), 0,
(LPCTSTR)(int)g_hframeClass, ResString(IDS_TITLE), WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
0/*hwndDesktop*/, hMenuFrame);
}
/*@@
HWND MainFrame::Create(LPCTSTR url)
{
HWND hFrame = Create();
if (!hFrame)
return 0;
ShowWindow(hFrame, SW_SHOW);
MainFrame* pFrame = GET_WINDOW(MainFrame, hFrame);
if (pFrame)
pFrame->set_url(url);
return hFrame;
}
*/
LRESULT MainFrame::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
{
switch(nmsg) {
case WM_SIZE:
resize_frame(LOWORD(lparam), HIWORD(lparam));
break;
case WM_PAINT: {
PaintCanvas canvas(_hwnd);
if (_left_hwnd && _right_hwnd) {
ClientRect rt(_hwnd);
rt.left = _split_pos-SPLIT_WIDTH/2;
rt.right = _split_pos+SPLIT_WIDTH/2+1;
if (_right_hwnd) {
WindowRect right_rect(_right_hwnd);
ScreenToClient(_hwnd, &right_rect);
rt.top = right_rect.top;
rt.bottom = right_rect.bottom;
}
HBRUSH lastBrush = SelectBrush(canvas, GetStockBrush(COLOR_SPLITBAR));
Rectangle(canvas, rt.left, rt.top-1, rt.right, rt.bottom+1);
SelectObject(canvas, lastBrush);
}
break;}
case WM_SETCURSOR:
if (LOWORD(lparam) == HTCLIENT) {
POINT pt;
GetCursorPos(&pt);
ScreenToClient(_hwnd, &pt);
if (pt.x>=_split_pos-SPLIT_WIDTH/2 && pt.x<_split_pos+SPLIT_WIDTH/2+1) {
SetCursor(LoadCursor(0, IDC_SIZEWE));
return TRUE;
}
}
goto def;
case WM_LBUTTONDOWN: {
int x = GET_X_LPARAM(lparam);
ClientRect rt(_hwnd);
if (x>=_split_pos-SPLIT_WIDTH/2 && x<_split_pos+SPLIT_WIDTH/2+1) {
_last_split = _split_pos;
SetCapture(_hwnd);
}
break;}
case WM_LBUTTONUP:
if (GetCapture() == _hwnd)
ReleaseCapture();
break;
case WM_KEYDOWN:
if (wparam == VK_ESCAPE)
if (GetCapture() == _hwnd) {
_split_pos = _last_split;
resize_children();
_last_split = -1;
ReleaseCapture();
SetCursor(LoadCursor(0, IDC_ARROW));
}
break;
case WM_MOUSEMOVE:
if (GetCapture() == _hwnd) {
int x = LOWORD(lparam);
ClientRect rt(_hwnd);
if (x>=0 && x<rt.right) {
_split_pos = x;
resize_children();
rt.left = x-SPLIT_WIDTH/2;
rt.right = x+SPLIT_WIDTH/2+1;
InvalidateRect(_hwnd, &rt, FALSE);
UpdateWindow(_left_hwnd);
UpdateWindow(_hwnd);
UpdateWindow(_right_hwnd);
}
}
break;
case PM_OPEN_WINDOW: {CONTEXT("MainFrame PM_OPEN_WINDOW");
LPCTSTR url = (LPCTSTR)lparam;
if (!url || !*url)
#ifdef _DEBUG
url = TEXT("http://localhost");
#else
url = TEXT("about:blank");
#endif
if (!_right_hwnd) {
_right_hwnd = create_webchildwindow(WebChildWndInfo(_hwnd, url));
resize_children();
} else
set_url(url);
return TRUE;} // success
default: def:
return super::WndProc(nmsg, wparam, lparam);
}
return 0;
}
int MainFrame::Command(int id, int code)
{
if (_right_hwnd)
if (SendMessage(_right_hwnd, PM_DISPATCH_COMMAND, MAKELONG(id,code), 0))
return 0;
return super::Command(id, code);
}
void MainFrame::resize_frame(int cx, int cy)
{
if (cy <= 0)
return; // avoid resizing children when receiving RBN_AUTOSIZE while getting minimized
RECT rect = {0, 0, cx, cy};
if (_hwndrebar) {
int height = ClientRect(_hwndrebar).bottom;
MoveWindow(_hwndrebar, rect.left, rect.top, rect.right-rect.left, height, TRUE);
rect.top += height;
} else {
if (IsWindowVisible(_htoolbar)) {
SendMessage(_htoolbar, WM_SIZE, 0, 0);
WindowRect rt(_htoolbar);
rect.top = rt.bottom;
// rect.bottom -= rt.bottom;
}
}
if (IsWindowVisible(_hstatusbar)) {
int parts[] = {300, 500};
SendMessage(_hstatusbar, WM_SIZE, 0, 0);
SendMessage(_hstatusbar, SB_SETPARTS, 2, (LPARAM)&parts);
ClientRect rt(_hstatusbar);
rect.bottom -= rt.bottom;
}
if (IsWindowVisible(_hsidebar)) {
WindowRect rt(_hsidebar);
rect.left += rt.right-rt.left;
SetWindowPos(_hsidebar, 0, -1, rect.top-1, rt.right-rt.left, rect.bottom-rect.top+1, SWP_NOACTIVATE|SWP_NOZORDER);
}
_clnt_rect = rect;
resize_children();
}
void MainFrame::resize_children()
{
HDWP hdwp = BeginDeferWindowPos(2);
int cx = _clnt_rect.left;
if (_left_hwnd) {
cx = _split_pos + SPLIT_WIDTH/2;
hdwp = DeferWindowPos(hdwp, _left_hwnd, 0, _clnt_rect.left, _clnt_rect.top, _split_pos-SPLIT_WIDTH/2-_clnt_rect.left, _clnt_rect.bottom-_clnt_rect.top, SWP_NOZORDER|SWP_NOACTIVATE);
} else {
//_split_pos = 0;
cx = 0;
}
if (_right_hwnd)
hdwp = DeferWindowPos(hdwp, _right_hwnd, 0, _clnt_rect.left+cx, _clnt_rect.top, _clnt_rect.right-cx, _clnt_rect.bottom-_clnt_rect.top, SWP_NOZORDER|SWP_NOACTIVATE);
EndDeferWindowPos(hdwp);
}
void MainFrame::update_clnt_rect()
{
ClientRect rect(_hwnd);
resize_frame(rect.right, rect.bottom);
}
void MainFrame::set_url(LPCTSTR url)
{
if (_url != url) {
_url = url;
SetWindowText(_haddressedit, url); //SendMessage(_hwndFrame, PM_URL_CHANGED, 0, (LPARAM)url);
}
}
bool MainFrame::go_to(LPCTSTR url, bool new_window)
{
if (_right_hwnd) {
SendMessage(_right_hwnd, PM_JUMP_TO_URL, 0, (LPARAM)url);
return true;
}
return false;
}

View file

@ -1,125 +0,0 @@
/*
* Copyright 2005 Martin Fuchs
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
//
// ROS Internet Web Browser
//
// mainframe.h
//
// Martin Fuchs, 25.01.2005
//
#define PM_OPEN_WINDOW (WM_APP+0x07)
/// Explorer frame window base class
struct MainFrameBase : public PreTranslateWindow
{
typedef PreTranslateWindow super;
MainFrameBase(HWND hwnd);
~MainFrameBase();
static HWND Create(LPCTSTR url, UINT cmdshow=SW_SHOWNORMAL);
WindowHandle _hwndrebar;
WindowHandle _htoolbar;
WindowHandle _hstatusbar;
WindowHandle _haddressedit;
WindowHandle _hsidebar;
HIMAGELIST _himl;
HMENU _hMenuFrame;
HMENU _hMenuWindow;
MenuInfo _menu_info;
protected:
FullScreenParameters _fullscreen;
HACCEL _hAccel;
LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam);
bool ProcessMessage(UINT nmsg, WPARAM wparam, LPARAM lparam, LRESULT* pres);
int Command(int id, int code);
int Notify(int id, NMHDR* pnmh);
virtual BOOL TranslateMsg(MSG* pmsg);
void toggle_child(HWND hwnd, UINT cmd, HWND hchild, int band_idx=-1);
void resize_frame_client();
virtual void resize_frame(int cx, int cy);
virtual void frame_get_clientspace(PRECT prect);
BOOL toggle_fullscreen();
void fullscreen_move();
void FillBookmarks();
virtual bool go_to(LPCTSTR url, bool new_window) {return false;}
};
struct MainFrame : public MainFrameBase
{
typedef MainFrameBase super;
MainFrame(HWND hwnd);
static HWND Create();
//@@static HWND Create(LPCTSTR url);
protected:
WindowHandle _left_hwnd;
WindowHandle _right_hwnd;
int _split_pos;
int _last_split;
RECT _clnt_rect;
String _url;
LRESULT WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam);
int Command(int id, int code);
void resize_frame(int cx, int cy);
void resize_children();
void update_clnt_rect();
void set_url(LPCTSTR url);
virtual bool go_to(LPCTSTR url, bool new_window);
};
struct WebChildWndInfo : public ChildWndInfo
{
WebChildWndInfo(HWND hwndFrame, LPCTSTR url)
: ChildWndInfo(hwndFrame),
_url(url)
{
}
String _url;
};

View file

@ -1,147 +0,0 @@
# Microsoft Developer Studio Project File - Name="make_ibrowser" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) External Target" 0x0106
CFG=make_ibrowser - Win32 Release
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "make_ibrowser.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "make_ibrowser.mak" CFG="make_ibrowser - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "make_ibrowser - Win32 Release" (based on "Win32 (x86) External Target")
!MESSAGE "make_ibrowser - Win32 Debug" (based on "Win32 (x86) External Target")
!MESSAGE "make_ibrowser - Win32 Unicode Debug" (based on "Win32 (x86) External Target")
!MESSAGE "make_ibrowser - Win32 Unicode Release" (based on "Win32 (x86) External Target")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
!IF "$(CFG)" == "make_ibrowser - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Cmd_Line "NMAKE /f make_ibrowser.mak"
# PROP BASE Rebuild_Opt "/a"
# PROP BASE Target_File "make_ibrowser.exe"
# PROP BASE Bsc_Name "make_ibrowser.bsc"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" mingw32-make -f Makefile-precomp UNICODE=0"
# PROP Rebuild_Opt "clean all"
# PROP Target_File "ibrowser.exe"
# PROP Bsc_Name ""
# PROP Target_Dir ""
!ELSEIF "$(CFG)" == "make_ibrowser - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Cmd_Line "NMAKE /f make_ibrowser.mak"
# PROP BASE Rebuild_Opt "/a"
# PROP BASE Target_File "make_ibrowser.exe"
# PROP BASE Bsc_Name "make_ibrowser.bsc"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" mingw32-make -f Makefile-precomp UNICODE=0 DEBUG=1"
# PROP Rebuild_Opt "clean all"
# PROP Target_File "ibrowser.exe"
# PROP Bsc_Name "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile.MinGW UNICODE=0 DEBUG=1"
# PROP Target_Dir ""
!ELSEIF "$(CFG)" == "make_ibrowser - Win32 Unicode Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "UDebug"
# PROP BASE Intermediate_Dir "UDebug"
# PROP BASE Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile.MinGW UNICODE=1 DEBUG=1"
# PROP BASE Rebuild_Opt "clean all"
# PROP BASE Target_File "ibrowser.exe"
# PROP BASE Bsc_Name ""
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "UDebug"
# PROP Intermediate_Dir "UDebug"
# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" mingw32-make -f Makefile.MinGW UNICODE=1 DEBUG=1"
# PROP Rebuild_Opt "clean all"
# PROP Target_File "ibrowser.exe"
# PROP Bsc_Name ""
# PROP Target_Dir ""
!ELSEIF "$(CFG)" == "make_ibrowser - Win32 Unicode Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "URelease"
# PROP BASE Intermediate_Dir "URelease"
# PROP BASE Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile.MinGW UNICODE=1"
# PROP BASE Rebuild_Opt "clean all"
# PROP BASE Target_File "ibrowser.exe"
# PROP BASE Bsc_Name ""
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "URelease"
# PROP Intermediate_Dir "URelease"
# PROP Cmd_Line "msdevfilt -gcc mingw32-make -f Makefile-precomp UNICODE=1"
# PROP Rebuild_Opt "clean all"
# PROP Target_File "ibrowser.exe"
# PROP Bsc_Name ""
# PROP Target_Dir ""
!ENDIF
# Begin Target
# Name "make_ibrowser - Win32 Release"
# Name "make_ibrowser - Win32 Debug"
# Name "make_ibrowser - Win32 Unicode Debug"
# Name "make_ibrowser - Win32 Unicode Release"
!IF "$(CFG)" == "make_ibrowser - Win32 Release"
!ELSEIF "$(CFG)" == "make_ibrowser - Win32 Debug"
!ELSEIF "$(CFG)" == "make_ibrowser - Win32 Unicode Debug"
!ELSEIF "$(CFG)" == "make_ibrowser - Win32 Unicode Release"
!ENDIF
# Begin Source File
SOURCE=.\ibrowser.rbuild
# End Source File
# Begin Source File
SOURCE=".\Makefile-MinGW"
# End Source File
# Begin Source File
SOURCE=".\Makefile-precomp"
# End Source File
# End Target
# End Project

View file

@ -1,161 +0,0 @@
//Microsoft Developer Studio generated resource script.
//
#include "ibrowser_intres.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include <windows.h>
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// German (Germany) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
#ifdef _WIN32
LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"ibrowser_intres.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include <windows.h>\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"#ifndef _ROS_\r\n"
"LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_NO\r\n"
"STRINGTABLE DISCARDABLE \r\n"
"BEGIN\r\n"
"#ifdef UNICODE\r\n"
"IDS_IBROWSER_VERSION_STR ""ROS IBrowser%0s""\r\n"
"#else\r\n"
"IDS_IBROWSER_VERSION_STR ""ROS IBrowser Ansi%0s""\r\n"
"#endif\r\n"
"END\r\n"
"#endif\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#endif // German (Germany) resources
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// Norwegian (N.O.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL
#pragma code_page(1252)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDM_SDIFRAME MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&Fil"
BEGIN
MENUITEM "&Åpne", ID_FILE_OPEN
MENUITEM "A&vslutt", ID_FILE_EXIT
END
POPUP "&Vis"
BEGIN
MENUITEM "&Verktøylinje", ID_VIEW_TOOL_BAR
MENUITEM "S&idelinje", ID_VIEW_SIDE_BAR, GRAYED
MENUITEM "&Statuslinje", ID_VIEW_STATUSBAR
MENUITEM SEPARATOR
MENUITEM "&Oppdater\tF5", ID_REFRESH
MENUITEM "&Fullskjerm\tCtrl+Shift+S", ID_VIEW_FULLSCREEN
END
POPUP "&Hjelp"
BEGIN
MENUITEM "IBrowser &FAQ...", ID_IBROWSER_FAQ
MENUITEM "&Om IBrowser...", ID_ABOUT_IBROWSER
MENUITEM "Om &OS...", ID_ABOUT_WINDOWS
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUT_IBROWSER DIALOG DISCARDABLE 0, 0, 199, 106
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Om ReactOS Internett nettleser"
FONT 10, "MS Sans Serif"
BEGIN
LTEXT "ReactOS Internett nettleser",IDC_ROS_IBROWSER,91,13,104,11
LTEXT "V 0.9",IDC_VERSION_TXT,91,27,104,8
LTEXT "(c) 2005 Martin Fuchs",IDC_STATIC,91,42,104,8
LTEXT "",IDC_WIN_VERSION,91,58,98,22
LTEXT "http://www.sky.franken.de/explorer/",IDC_WWW,17,84,129,
8
CONTROL "&OK",IDOK,"Button",BS_OWNERDRAW | BS_FLAT | WS_GROUP,
154,90,38,12
END
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
BEGIN
IDS_TITLE "Reactos Internett nettleser"
IDS_EMPTY "(TOM)"
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_ABOUT_IBROWSER "&Om..."
END
#endif // NORWEGIAN (N.O.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#ifndef _ROS_
LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL
STRINGTABLE DISCARDABLE
BEGIN
#ifdef UNICODE
IDS_IBROWSER_VERSION_STR "ROS IBrowser%0s"
#else
IDS_IBROWSER_VERSION_STR "ROS IBrowser Ansi%0s"
#endif
END
#endif
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View file

@ -1,161 +0,0 @@
//Microsoft Developer Studio generated resource script.
//
#include "ibrowser_intres.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include <windows.h>
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// German (Germany) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
#ifdef _WIN32
LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"ibrowser_intres.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include <windows.h>\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"#ifndef _ROS_\r\n"
"LANGUAGE LANG_DUTCH, SUBLANG_DUTCH\r\n"
"STRINGTABLE DISCARDABLE \r\n"
"BEGIN\r\n"
"#ifdef UNICODE\r\n"
"IDS_IBROWSER_VERSION_STR ""ROS IBrowser%0s""\r\n"
"#else\r\n"
"IDS_IBROWSER_VERSION_STR ""ROS IBrowser Ansi%0s""\r\n"
"#endif\r\n"
"END\r\n"
"#endif\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#endif // German (Germany) resources
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
// Dutch resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_DUTCH, SUBLANG_DUTCH
#pragma code_page(1252)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDM_SDIFRAME MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&Bestand"
BEGIN
MENUITEM "&Openen", ID_FILE_OPEN
MENUITEM "&Afsluiten", ID_FILE_EXIT
END
POPUP "&Beeld"
BEGIN
MENUITEM "&Werkbalk", ID_VIEW_TOOL_BAR
MENUITEM "&ZijBalk", ID_VIEW_SIDE_BAR, GRAYED
MENUITEM "&Statusbalk", ID_VIEW_STATUSBAR
MENUITEM SEPARATOR
MENUITEM "&Vernieuwen\tF5", ID_REFRESH
MENUITEM "V&olledig Scherm\tCtrl+Shift+S", ID_VIEW_FULLSCREEN
END
POPUP "&Help"
BEGIN
MENUITEM "IBrowser &FAQ...", ID_IBROWSER_FAQ
MENUITEM "Info...", ID_ABOUT_IBROWSER
MENUITEM "Info over het &OS...", ID_ABOUT_WINDOWS
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUT_IBROWSER DIALOG DISCARDABLE 0, 0, 199, 106
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Info"
FONT 10, "MS Sans Serif"
BEGIN
LTEXT "ReactOS Web Browser",IDC_ROS_IBROWSER,91,13,104,11
LTEXT "V 0.9",IDC_VERSION_TXT,91,27,104,8
LTEXT "(c) 2005 Martin Fuchs",IDC_STATIC,91,42,104,8
LTEXT "",IDC_WIN_VERSION,91,58,98,22
LTEXT "http://www.sky.franken.de/explorer/",IDC_WWW,17,84,129,
8
CONTROL "&OK",IDOK,"Button",BS_OWNERDRAW | BS_FLAT | WS_GROUP,
154,90,38,12
END
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
BEGIN
IDS_TITLE "Reactos Internet Web Browser"
IDS_EMPTY "(Leeg)"
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_ABOUT_IBROWSER "&Info..."
END
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#ifndef _ROS_
LANGUAGE LANG_DUTCH, SUBLANG_DUTCH
STRINGTABLE DISCARDABLE
BEGIN
#ifdef UNICODE
IDS_IBROWSER_VERSION_STR "ROS IBrowser%0s"
#else
IDS_IBROWSER_VERSION_STR "ROS IBrowser Ansi%0s"
#endif
END
#endif
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View file

@ -1,28 +0,0 @@
/*
* Copyright 2005 Martin Fuchs
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
//
// ROS Internet Web Browser - precompiled header support
//
// precomp.h
//
// Martin Fuchs, 25.01.2005
//
#include "precomp.h"

View file

@ -1,32 +0,0 @@
/*
* Copyright 2005 Martin Fuchs
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
//
// ROS Internet Web Browser - precompiled header support
//
// precomp.h
//
// Martin Fuchs, 25.01.2005
//
#include "utility/utility.h"
#include "utility/comutil.h"
#include "ibrowser.h"

View file

@ -1,9 +0,0 @@
IBrowser is a Web Browser User Interface similar derived from ROS Explorer.
It encapsulates the Mozilla or MS Web Browser Control.
For more information about ReactOS Explorer please look at the FAQ web page:
http://www.sky.franken.de/explorer/

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Some files were not shown because too many files have changed in this diff Show more