- 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
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
);
|
||||
}
|
|
@ -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>
|
|
@ -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>
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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>
|
|
@ -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"
|
|
@ -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;
|
||||
}
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -1,54 +0,0 @@
|
|||
<category name="Internet & 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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -1,5 +0,0 @@
|
|||
<script>
|
||||
<download url="%location%" file="%TEMP%\%location_file%" />
|
||||
<exec file="%TEMP%\%location_file%" />
|
||||
<del file="%TEMP%\%location_file%" />
|
||||
</script>
|
|
@ -1 +0,0 @@
|
|||
<exec file="%regname_uninstaller%" />
|
|
@ -1,3 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<installfile base="packagetree/script">default_install.xml</installfile>
|
||||
<installfile base="packagetree/script">default_uninstall.xml</installfile>
|
|
@ -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 & 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>
|
|
@ -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
|
Before Width: | Height: | Size: 822 B |
Before Width: | Height: | Size: 822 B |
Before Width: | Height: | Size: 824 B |
Before Width: | Height: | Size: 822 B |
Before Width: | Height: | Size: 822 B |
Before Width: | Height: | Size: 822 B |
Before Width: | Height: | Size: 822 B |
Before Width: | Height: | Size: 822 B |
Before Width: | Height: | Size: 822 B |
Before Width: | Height: | Size: 822 B |
Before Width: | Height: | Size: 824 B |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 170 B |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 3.1 KiB |
|
@ -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"
|
|
@ -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,¤tlengt) == 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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
};
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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);
|
||||
}
|
Before Width: | Height: | Size: 22 KiB |
|
@ -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;
|
||||
|
||||
}
|
|
@ -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>
|
|
@ -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"
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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
|
|
@ -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
|
|
@ -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"
|
|
@ -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
|
|
@ -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"
|
|
@ -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;
|
||||
}
|
|
@ -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>
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
||||
*/
|
|
@ -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);
|
||||
};
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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;
|
||||
}
|
|
@ -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
|
|
@ -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>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
|
@ -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).
|
|
@ -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>
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
};
|
||||
|
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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"
|
|
@ -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"
|
||||
|
|
@ -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/
|
||||
|
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 9.2 KiB |
Before Width: | Height: | Size: 49 KiB |