From 5596f10cce58295d8af73646352b314ecb3ddfca Mon Sep 17 00:00:00 2001 From: Jon TURNEY Date: Sat, 9 Jul 2011 13:21:04 +0100 Subject: [PATCH] Remove hw/xwin/xlaunch Signed-off-by: Jon TURNEY Reviewed-by: Colin Harrison --- hw/xwin/Makefile.am | 22 +- hw/xwin/xlaunch/COPYING | 25 - hw/xwin/xlaunch/Makefile | 79 -- hw/xwin/xlaunch/config.cc | 282 ----- hw/xwin/xlaunch/config.h | 60 -- hw/xwin/xlaunch/main.cc | 700 ------------ hw/xwin/xlaunch/resources/dialog.rc | 118 --- hw/xwin/xlaunch/resources/fullscreen.bmp | Bin 22554 -> 0 bytes hw/xwin/xlaunch/resources/images.rc | 29 - hw/xwin/xlaunch/resources/multiwindow.bmp | Bin 22554 -> 0 bytes hw/xwin/xlaunch/resources/nodecoration.bmp | Bin 22554 -> 0 bytes hw/xwin/xlaunch/resources/resources.h | 99 -- hw/xwin/xlaunch/resources/resources.rc | 30 - hw/xwin/xlaunch/resources/strings.rc | 108 -- hw/xwin/xlaunch/resources/windowed.bmp | Bin 22554 -> 0 bytes hw/xwin/xlaunch/window/dialog.cc | 86 -- hw/xwin/xlaunch/window/dialog.h | 54 - hw/xwin/xlaunch/window/util.cc | 1112 -------------------- hw/xwin/xlaunch/window/util.h | 53 - hw/xwin/xlaunch/window/window.cc | 284 ----- hw/xwin/xlaunch/window/window.h | 114 -- hw/xwin/xlaunch/window/wizard.cc | 244 ----- hw/xwin/xlaunch/window/wizard.h | 59 -- 23 files changed, 1 insertion(+), 3557 deletions(-) delete mode 100755 hw/xwin/xlaunch/COPYING delete mode 100755 hw/xwin/xlaunch/Makefile delete mode 100644 hw/xwin/xlaunch/config.cc delete mode 100644 hw/xwin/xlaunch/config.h delete mode 100755 hw/xwin/xlaunch/main.cc delete mode 100755 hw/xwin/xlaunch/resources/dialog.rc delete mode 100755 hw/xwin/xlaunch/resources/fullscreen.bmp delete mode 100755 hw/xwin/xlaunch/resources/images.rc delete mode 100755 hw/xwin/xlaunch/resources/multiwindow.bmp delete mode 100755 hw/xwin/xlaunch/resources/nodecoration.bmp delete mode 100644 hw/xwin/xlaunch/resources/resources.h delete mode 100755 hw/xwin/xlaunch/resources/resources.rc delete mode 100644 hw/xwin/xlaunch/resources/strings.rc delete mode 100755 hw/xwin/xlaunch/resources/windowed.bmp delete mode 100755 hw/xwin/xlaunch/window/dialog.cc delete mode 100644 hw/xwin/xlaunch/window/dialog.h delete mode 100644 hw/xwin/xlaunch/window/util.cc delete mode 100644 hw/xwin/xlaunch/window/util.h delete mode 100755 hw/xwin/xlaunch/window/window.cc delete mode 100644 hw/xwin/xlaunch/window/window.h delete mode 100755 hw/xwin/xlaunch/window/wizard.cc delete mode 100644 hw/xwin/xlaunch/window/wizard.h diff --git a/hw/xwin/Makefile.am b/hw/xwin/Makefile.am index ce2edb2e6..256af0bb1 100644 --- a/hw/xwin/Makefile.am +++ b/hw/xwin/Makefile.am @@ -175,27 +175,7 @@ install-exec-hook: EXTRA_DIST = \ $(xwinconfig_DATA) \ X.ico \ - XWin.rc \ - xlaunch/config.cc \ - xlaunch/COPYING \ - xlaunch/main.cc \ - xlaunch/resources/dialog.rc \ - xlaunch/resources/fullscreen.bmp \ - xlaunch/resources/images.rc \ - xlaunch/resources/multiwindow.bmp \ - xlaunch/resources/nodecoration.bmp \ - xlaunch/resources/resources.h \ - xlaunch/resources/resources.rc \ - xlaunch/resources/strings.rc \ - xlaunch/resources/windowed.bmp \ - xlaunch/window/dialog.cc \ - xlaunch/window/dialog.h \ - xlaunch/window/util.cc \ - xlaunch/window/util.h \ - xlaunch/window/window.cc \ - xlaunch/window/window.h \ - xlaunch/window/wizard.cc \ - xlaunch/window/wizard.h + XWin.rc relink: $(AM_V_at)rm -f XWin$(EXEEXT) && $(MAKE) XWin$(EXEEXT) diff --git a/hw/xwin/xlaunch/COPYING b/hw/xwin/xlaunch/COPYING deleted file mode 100755 index c7fa84400..000000000 --- a/hw/xwin/xlaunch/COPYING +++ /dev/null @@ -1,25 +0,0 @@ - - Copyright (c) 2005 Alexander Gottwald - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the name(s) of the above copyright - holders shall not be used in advertising or otherwise to promote the sale, - use or other dealings in this Software without prior written authorization. - diff --git a/hw/xwin/xlaunch/Makefile b/hw/xwin/xlaunch/Makefile deleted file mode 100755 index f7cf923df..000000000 --- a/hw/xwin/xlaunch/Makefile +++ /dev/null @@ -1,79 +0,0 @@ -# -# Copyright (c) 2005 Alexander Gottwald -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the "Software"), -# to deal in the Software without restriction, including without limitation -# the rights to use, copy, modify, merge, publish, distribute, sublicense, -# and/or sell copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR -# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -# DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name(s) of the above copyright -# holders shall not be used in advertising or otherwise to promote the sale, -# use or other dealings in this Software without prior written authorization. -# -WINDRES=windres - -TARGET=mingw -#DEBUG_FLAGS=-D_DEBUG - -OS_FLAGS_mingw=-mno-cygwin -OS_FLAGS=$(OS_FLAGS_$(TARGET)) $(DEBUG_FLAGS) - -X11_DIR_$(TARGET)=/usr/X11R6 -X11_DIR_mingw=../../../../../exports -X11_DIR=$(X11_DIR_$(TARGET)) -X11_INCLUDE=-I$(X11_DIR)/include -X11_LIBDIR=-L$(X11_DIR)/lib -X11_LIBS_$(TARGET)=-lX11 -X11_LIBS_mingw=-lX11 -lwsock32 -X11_LIBS=$(X11_LIBS_$(TARGET)) - -PROGRAMFILES:=$(shell cygpath -u $(PROGRAMFILES)) -#MSXML_DIR=$(PROGRAMFILES)/MSXML 4.0 -MSXML_DIR=$(PROGRAMFILES)/Microsoft XML Parser SDK -MSXML_INCLUDE="-I$(MSXML_DIR)/inc" -MSXML_LIBDIR="-L$(MSXML_DIR)/lib" -MSXML_LIBS= - - -CXXFLAGS=-g $(OS_FLAGS) $(X11_INCLUDE) $(MSXML_INCLUDE) -LDFLAGS=-mwindows $(X11_LIBDIR) $(MSXML_LIBDIR) -LIBS=-lcomctl32 -lole32 -loleaut32 $(X11_LIBS) $(MSXML_LIBS) -all:xlaunch.exe -%.res: %.rc - $(WINDRES) -O coff -o $@ $< - -WINDOW_PARTS=window util dialog wizard -WINDOW_OBJECTS=$(foreach file,$(WINDOW_PARTS),window/$(file).o) - -RESOURCES_IMAGES=resources/multiwindow.bmp resources/fullscreen.bmp \ - resources/windowed.bmp resources/nodecoration.bmp - -resources/resources.res: resources/resources.rc resources/resources.h \ - resources/images.rc resources/dialog.rc resources/strings.rc \ - $(RESOURCES_IMAGES) -xlaunch.exe: $(WINDOW_OBJECTS) main.o config.o resources/resources.res - $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS) - - -window/dialog.o: window/dialog.cc window/dialog.h window/window.h window/util.h -window/frame.o: window/frame.cc window/frame.h window/window.h -window/util.o: window/util.cc window/util.h -window/window.o: window/window.cc window/window.h window/util.h -window/wizard.o: window/wizard.cc window/wizard.h window/dialog.h \ - window/window.h window/util.h -main.o: main.cc window/util.h window/wizard.h window/dialog.h \ - window/window.h resources/resources.h config.h -config.o: config.cc config.h diff --git a/hw/xwin/xlaunch/config.cc b/hw/xwin/xlaunch/config.cc deleted file mode 100644 index b6bf65ae3..000000000 --- a/hw/xwin/xlaunch/config.cc +++ /dev/null @@ -1,282 +0,0 @@ -/* - * Copyright (c) 2005 Alexander Gottwald - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the sale, - * use or other dealings in this Software without prior written authorization. - */ -#include "config.h" -#include "window/util.h" -#include -#include - -const CLSID CLSID_DOMDocument40 = {0x88d969c0,0xf192,0x11d4,0xa6,0x5f,0x00,0x40,0x96,0x32,0x51,0xe5}; -const CLSID CLSID_DOMDocument30 = {0xf5078f32,0xc551,0x11d3,0x89,0xb9,0x00,0x00,0xf8,0x1f,0xe2,0x21}; -const IID IID_IXMLDOMDocument2 = {0x2933BF95,0x7B36,0x11d2,0xB2,0x0E,0x00,0xC0,0x4F,0x98,0x3E,0x60}; - -#define HRCALL(x, msg) if (FAILED(x)) { throw std::runtime_error("OLE Error:" msg " failed"); }; - -char *wcconvert(const wchar_t *wstr) -{ - int chars = WideCharToMultiByte(CP_ACP, 0, wstr, -1, NULL, 0, NULL, NULL); - if (chars == 0) - throw win32_error("WideCharToMultiByte"); - char *mbstr = new char[chars]; - chars = WideCharToMultiByte(CP_ACP, 0, wstr, -1, mbstr, chars, NULL, NULL); - if (chars == 0) - throw win32_error("WideCharToMultiByte"); - return mbstr; -} - -wchar_t *mbconvert(const char *mbstr) -{ - int chars = MultiByteToWideChar(CP_ACP, 0, mbstr, -1, NULL, 0); - if (chars == 0) - throw win32_error("MultiByteToWideChar"); - wchar_t *wstr = new wchar_t[chars]; - chars = MultiByteToWideChar(CP_ACP, 0, mbstr, -1, wstr, chars); - if (chars == 0) - throw win32_error("MultiByteToWideChar"); - return wstr; -} - -VARIANT VariantString(const char *filename) -{ - - wchar_t *str = mbconvert(filename); - - VARIANT var; - VariantInit(&var); - V_BSTR(&var) = SysAllocString(str); - V_VT(&var) = VT_BSTR; - - delete [] str; - return var; -} - -VARIANT VariantString(const wchar_t *str) -{ - VARIANT var; - VariantInit(&var); - V_BSTR(&var) = SysAllocString(str); - V_VT(&var) = VT_BSTR; - return var; -} - -IXMLDOMDocument2 *CreateDocument() -{ - IXMLDOMDocument2 *doc = NULL; - - CoInitialize(NULL); - - HRCALL(CoCreateInstance(CLSID_DOMDocument40, NULL, CLSCTX_INPROC_SERVER, - IID_IXMLDOMDocument2, (void**)&doc), "CoCreateInstance"); - - try { - HRCALL(doc->put_async(VARIANT_FALSE), "put_async"); - HRCALL(doc->put_validateOnParse(VARIANT_FALSE), "put_validateOnParse"); - HRCALL(doc->put_resolveExternals(VARIANT_FALSE), "put_resolveExternals"); - - IXMLDOMProcessingInstruction *pi = NULL; - IXMLDOMElement *root = NULL; - BSTR xml = SysAllocString(L"xml"); - BSTR ver = SysAllocString(L"version='1.0'"); - HRCALL(doc->createProcessingInstruction(xml,ver, &pi), - "createProcessingInstruction"); - HRCALL(doc->appendChild(pi, NULL), - "appendChild"); - pi->Release(); - SysFreeString(xml); - SysFreeString(ver); - - BSTR elemname = SysAllocString(L"XLaunch"); - HRCALL(doc->createElement(elemname, &root), "createElement"); - HRCALL(doc->appendChild(root, NULL), "appendChild"); - SysFreeString(elemname); - } catch (...) - { - doc->Release(); - throw; - } - return doc; -} - -void setAttribute(IXMLDOMElement *elem, const wchar_t *name, const wchar_t *value) -{ - BSTR str = SysAllocString(name); - VARIANT var = VariantString(value); - HRCALL(elem->setAttribute(str, var), "setAttribute"); - VariantClear(&var); - SysFreeString(str); -} - -void setAttribute(IXMLDOMElement *elem, const wchar_t *name, const char *value) -{ - wchar_t *wstr = mbconvert(value); - setAttribute(elem, name, wstr); - delete [] wstr; - return; -} - -void CConfig::Save(const char *filename) -{ - IXMLDOMDocument2 *doc = CreateDocument(); - IXMLDOMElement *root = NULL; - - HRCALL(doc->get_documentElement(&root), "get_documentElement"); - - switch (window) - { - case MultiWindow: - setAttribute(root, L"WindowMode", L"MultiWindow"); - break; - case Fullscreen: - setAttribute(root, L"WindowMode", L"Fullscreen"); - break; - default: - case Windowed: - setAttribute(root, L"WindowMode", L"Windowed"); - break; - case Nodecoration: - setAttribute(root, L"WindowMode", L"Nodecoration"); - break; - } - switch (client) - { - default: - case NoClient: - setAttribute(root, L"ClientMode", L"NoClient"); - break; - case StartProgram: - setAttribute(root, L"ClientMode", L"StartProgram"); - break; - case XDMCP: - setAttribute(root, L"ClientMode", L"XDMCP"); - break; - } - setAttribute(root, L"LocalClient", local?L"True":L"False"); - setAttribute(root, L"Display", display.c_str()); - setAttribute(root, L"Program", program.c_str()); - setAttribute(root, L"RemoteProtocol", protocol.c_str()); - setAttribute(root, L"RemoteHost", host.c_str()); - setAttribute(root, L"RemoteUser", user.c_str()); - setAttribute(root, L"XDMCPHost", xdmcp_host.c_str()); - setAttribute(root, L"XDMCPBroadcast", broadcast?L"True":L"False"); - setAttribute(root, L"XDMCPIndirect", indirect?L"True":L"False"); - setAttribute(root, L"Clipboard", clipboard?L"True":L"False"); - setAttribute(root, L"ExtraParams", extra_params.c_str()); - - VARIANT var = VariantString(filename); - HRCALL(doc->save(var), "save"); - VariantClear(&var); - - - root->Release(); - doc->Release(); -} - -BOOL getAttribute(IXMLDOMElement *elem, const wchar_t *name, std::string &ret) -{ - VARIANT var; - HRCALL(elem->getAttribute((OLECHAR*)name, &var), "getAttribute"); - if (V_VT(&var) != VT_NULL && V_VT(&var) == VT_BSTR) - { - char *str = wcconvert(V_BSTR(&var)); - ret = str; - delete [] str; - return true; - } - return false; -} - -BOOL getAttributeBool(IXMLDOMElement *elem, const wchar_t *name, bool &ret) -{ - std::string str; - if (getAttribute(elem, name, str)) - { - if (str == "True") - ret = true; - else - ret = false; - return true; - } - return false; -} - - -void CConfig::Load(const char *filename) -{ - IXMLDOMDocument2 *doc = CreateDocument(); - IXMLDOMElement *root = NULL; - - VARIANT var = VariantString(filename); - VARIANT_BOOL status; - HRCALL(doc->load(var, &status), "load"); - VariantClear(&var); - - if (status == VARIANT_FALSE) - { - doc->Release(); - return; - } - - HRCALL(doc->get_documentElement(&root), "get_documentElement"); - - std::string windowMode; - std::string clientMode; - - if (getAttribute(root, L"WindowMode", windowMode)) - { - if (windowMode == "MultiWindow") - window = MultiWindow; - else if (windowMode == "Fullscreen") - window = Fullscreen; - else if (windowMode == "Windowed") - window = Windowed; - else if (windowMode == "Nodecoration") - window = Nodecoration; - } - if (getAttribute(root, L"ClientMode", clientMode)) - { - if (clientMode == "NoClient") - client = NoClient; - else if (clientMode == "StartProgram") - client = StartProgram; - else if (clientMode == "XDMCP") - client = XDMCP; - } - - getAttributeBool(root, L"LocalClient", local); - getAttribute(root, L"Display", display); - getAttribute(root, L"Program", program); - getAttribute(root, L"RemoteProtocol", protocol); - getAttribute(root, L"RemoteHost", host); - getAttribute(root, L"RemoteUser", user); - getAttribute(root, L"XDMCPHost", xdmcp_host); - getAttributeBool(root, L"XDMCPBroadcast", broadcast); - getAttributeBool(root, L"XDMCPIndirect", indirect); - getAttributeBool(root, L"Clipboard", clipboard); - getAttribute(root, L"ExtraParams", extra_params); - - - doc->Release(); -} - diff --git a/hw/xwin/xlaunch/config.h b/hw/xwin/xlaunch/config.h deleted file mode 100644 index f0aed3cf1..000000000 --- a/hw/xwin/xlaunch/config.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2005 Alexander Gottwald - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the sale, - * use or other dealings in this Software without prior written authorization. - */ -#ifndef __CONFIG_H__ -#define __CONFIG_H__ - -#include -struct CConfig -{ - enum {MultiWindow, Fullscreen, Windowed, Nodecoration} window; - enum {NoClient, StartProgram, XDMCP} client; - bool local; - std::string display; - std::string protocol; - std::string program; - std::string host; - std::string user; - bool broadcast; - bool indirect; - std::string xdmcp_host; - bool clipboard; - std::string extra_params; -#ifdef _DEBUG - CConfig() : window(MultiWindow), client(StartProgram), local(false), display("1"), - protocol("Putty"), program("xterm"), host("lupus"), user("ago"), - broadcast(false), indirect(false), xdmcp_host("lupus"), - clipboard(true), extra_params() {}; -#else - CConfig() : window(MultiWindow), client(StartProgram), local(false), display("0"), - protocol("Putty"), program("xterm"), host(""), user(""), - broadcast(true), indirect(false), xdmcp_host(""), - clipboard(true), extra_params() {}; -#endif - void Load(const char* filename); - void Save(const char* filename); -}; - -#endif diff --git a/hw/xwin/xlaunch/main.cc b/hw/xwin/xlaunch/main.cc deleted file mode 100755 index 2247d3aaf..000000000 --- a/hw/xwin/xlaunch/main.cc +++ /dev/null @@ -1,700 +0,0 @@ -/* - * Copyright (c) 2005 Alexander Gottwald - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the sale, - * use or other dealings in this Software without prior written authorization. - */ -#include "window/util.h" -#include "window/wizard.h" -#include "resources/resources.h" -#include "config.h" -#include -#include - -#include - -#include - -/// @brief Send WM_ENDSESSION to all program windows. -/// This will shutdown the started xserver -BOOL CALLBACK KillWindowsProc(HWND hwnd, LPARAM lParam) -{ - SendMessage(hwnd, WM_ENDSESSION, 0, 0); - return TRUE; -} - -/// @brief Actual wizard implementation. -/// This is based on generic CWizard but handles the special dialogs -class CMyWizard : public CWizard -{ - public: - private: - CConfig config; /// Storage for config options. - public: - /// @brief Constructor. - /// Set wizard pages. - CMyWizard() : CWizard() - { - AddPage(IDD_DISPLAY, IDS_DISPLAY_TITLE, IDS_DISPLAY_SUBTITLE); - AddPage(IDD_CLIENTS, IDS_CLIENTS_TITLE, IDS_CLIENTS_SUBTITLE); - AddPage(IDD_PROGRAM, IDS_PROGRAM_TITLE, IDS_PROGRAM_SUBTITLE); - AddPage(IDD_XDMCP, IDS_XDMCP_TITLE, IDS_XDMCP_SUBTITLE); - //AddPage(IDD_FONTPATH, IDS_FONTPATH_TITLE, IDS_FONTPATH_SUBTITLE); - AddPage(IDD_CLIPBOARD, IDS_CLIPBOARD_TITLE, IDS_CLIPBOARD_SUBTITLE); - AddPage(IDD_FINISH, IDS_FINISH_TITLE, IDS_FINISH_SUBTITLE); - } - - virtual void LoadConfig(const char *filename) - { - try { - config.Load(filename); - } catch (std::runtime_error &e) - { - printf("Fehler: %s\n", e.what()); - } - } - - /// @brief Handle the PSN_WIZNEXT message. - /// @param hwndDlg Handle to active page dialog. - /// @param index Index of current page. - /// @return TRUE if the message was handled. FALSE otherwise. - virtual BOOL WizardNext(HWND hwndDlg, unsigned index) - { -#ifdef _DEBUG - printf("%s %d\n", __FUNCTION__, index); -#endif - switch (PageID(index)) - { - case IDD_DISPLAY: - // Check for select window mode - if (IsDlgButtonChecked(hwndDlg, IDC_MULTIWINDOW)) - config.window = CConfig::MultiWindow; - else if (IsDlgButtonChecked(hwndDlg, IDC_FULLSCREEN)) - config.window = CConfig::Fullscreen; - else if (IsDlgButtonChecked(hwndDlg, IDC_WINDOWED)) - config.window = CConfig::Windowed; - else if (IsDlgButtonChecked(hwndDlg, IDC_NODECORATION)) - config.window = CConfig::Nodecoration; - else - { - SetWindowLong(hwndDlg, DWL_MSGRESULT, -1); - return TRUE; - } - // Get selected display number - { - char buffer[512]; - GetDlgItemText(hwndDlg, IDC_DISPLAY, buffer, 512); - buffer[511] = 0; - config.display = buffer; - } - // Check for valid input - if (config.display.empty()) - SetWindowLong(hwndDlg, DWL_MSGRESULT, -1); - else - SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_CLIENTS); - return TRUE; - case IDD_CLIENTS: - // Check for select client startup method - if (IsDlgButtonChecked(hwndDlg, IDC_CLIENT)) - { - config.client = CConfig::StartProgram; - SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_PROGRAM); - } else if (IsDlgButtonChecked(hwndDlg, IDC_XDMCP)) - { - config.client = CConfig::XDMCP; - SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_XDMCP); - } else if (IsDlgButtonChecked(hwndDlg, IDC_CLIENT_NONE)) - { - config.client = CConfig::NoClient; - SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_CLIPBOARD); - } else - SetWindowLong(hwndDlg, DWL_MSGRESULT, -1); - return TRUE; - case IDD_PROGRAM: - // Check wether local or remote client should be started - if (IsDlgButtonChecked(hwndDlg, IDC_CLIENT_LOCAL)) - config.local = true; - else if (IsDlgButtonChecked(hwndDlg, IDC_CLIENT_REMOTE)) - config.local = false; - else - { - SetWindowLong(hwndDlg, DWL_MSGRESULT, -1); - return TRUE; - } - // Read program, user and host name - { - char buffer[512]; - GetDlgItemText(hwndDlg, IDC_CLIENT_USER, buffer, 512); - buffer[511] = 0; - config.user = buffer; - GetDlgItemText(hwndDlg, IDC_CLIENT_HOST, buffer, 512); - buffer[511] = 0; - config.host = buffer; - GetDlgItemText(hwndDlg, IDC_CLIENT_PROGRAM, buffer, 512); - buffer[511] = 0; - config.program = buffer; - } - // Check for valid input - if (!config.local && (config.host.empty() || config.program.empty())) - SetWindowLong(hwndDlg, DWL_MSGRESULT, -1); - else - SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_CLIPBOARD); - return TRUE; - case IDD_XDMCP: - // Check for broadcast - if (IsDlgButtonChecked(hwndDlg, IDC_XDMCP_BROADCAST)) - config.broadcast = true; - else if (IsDlgButtonChecked(hwndDlg, IDC_XDMCP_QUERY)) - config.broadcast = false; - else - { - SetWindowLong(hwndDlg, DWL_MSGRESULT, -1); - return TRUE; - } - // Check for indirect mode - if (IsDlgButtonChecked(hwndDlg, IDC_XDMCP_INDIRECT)) - config.indirect = true; - else - config.indirect = false; - // Read hostname - { - char buffer[512]; - GetDlgItemText(hwndDlg, IDC_XDMCP_HOST, buffer, 512); - buffer[511] = 0; - config.xdmcp_host = buffer; - } - // Check for valid input - if (!config.broadcast && config.xdmcp_host.empty()) - SetWindowLong(hwndDlg, DWL_MSGRESULT, -1); - else - SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_CLIPBOARD); - return TRUE; - case IDD_CLIPBOARD: - // check for clipboard - if (IsDlgButtonChecked(hwndDlg, IDC_CLIPBOARD)) - config.clipboard = true; - else - config.clipboard = false; - // read parameters - { - char buffer[512]; - GetDlgItemText(hwndDlg, IDC_EXTRA_PARAMS, buffer, 512); - buffer[511] = 0; - config.extra_params = buffer; - } - SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_FINISH); - return TRUE; - default: - break; - } - return FALSE; - } - /// @brief Handle PSN_WIZFINISH message. - /// @param hwndDlg Handle to active page dialog. - /// @param index Index of current page. - /// @return TRUE if the message was handled. FALSE otherwise. - virtual BOOL WizardFinish(HWND hwndDlg, unsigned index) - { -#ifdef _DEBUG - printf("finish %d\n", index); -#endif - return FALSE; - } - /// @brief Handle PSN_WIZBACK message. - /// Basicly handles switching to proper page (skipping XDMCP or program page - /// if required). - /// @param hwndDlg Handle to active page dialog. - /// @param index Index of current page. - /// @return TRUE if the message was handled. FALSE otherwise. - virtual BOOL WizardBack(HWND hwndDlg, unsigned index) - { - switch (PageID(index)) - { - case IDD_PROGRAM: - case IDD_XDMCP: - SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_CLIENTS); - return TRUE; - case IDD_FONTPATH: - case IDD_CLIPBOARD: // temporary. fontpath is disabled - switch (config.client) - { - case CConfig::NoClient: - SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_CLIENTS); - return TRUE; - case CConfig::StartProgram: - SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_PROGRAM); - return TRUE; - case CConfig::XDMCP: - SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_XDMCP); - return TRUE; - } - break; - } - return FALSE; - } - /// @brief Handle PSN_SETACTIVE message. - /// @param hwndDlg Handle to active page dialog. - /// @param index Index of current page. - /// @return TRUE if the message was handled. FALSE otherwise. - virtual BOOL WizardActivate(HWND hwndDlg, unsigned index) - { -#ifdef _DEBUG - printf("%s %d\n", __FUNCTION__, index); -#endif - switch (PageID(index)) - { - case IDD_CLIENTS: - // Enable or disable XDMCP radiobutton and text - EnableWindow(GetDlgItem(hwndDlg, IDC_XDMCP), config.window != CConfig::MultiWindow); - EnableWindow(GetDlgItem(hwndDlg, IDC_XDMCP_DESC), config.window != CConfig::MultiWindow); - break; - } - return FALSE; - } - protected: - /// @brief Enable or disable the control for remote clients. - /// @param hwndDlg Handle to active page dialog. - /// @param state State of control group. - void EnableRemoteProgramGroup(HWND hwndDlg, BOOL state) - { - EnableWindow(GetDlgItem(hwndDlg, IDC_CLIENT_PROTOCOL), state); - EnableWindow(GetDlgItem(hwndDlg, IDC_CLIENT_HOST), state); - EnableWindow(GetDlgItem(hwndDlg, IDC_CLIENT_USER), state); - EnableWindow(GetDlgItem(hwndDlg, IDC_CLIENT_PROTOCOL_DESC), state); - EnableWindow(GetDlgItem(hwndDlg, IDC_CLIENT_HOST_DESC), state); - EnableWindow(GetDlgItem(hwndDlg, IDC_CLIENT_USER_DESC), state); - } - /// @brief Enable or disable the control for XDMCP connection. - /// @param hwndDlg Handle to active page dialog. - /// @param state State of control group. - void EnableXDMCPQueryGroup(HWND hwndDlg, BOOL state) - { - EnableWindow(GetDlgItem(hwndDlg, IDC_XDMCP_HOST), state); - EnableWindow(GetDlgItem(hwndDlg, IDC_XDMCP_INDIRECT), state); - } - /// @brief Fill program box with default values. - /// @param hwndDlg Handle to active page dialog. - void FillProgramBox(HWND hwndDlg) - { - HWND cbwnd = GetDlgItem(hwndDlg, IDC_CLIENT_PROGRAM); - if (cbwnd == NULL) - return; - SendMessage(cbwnd, CB_RESETCONTENT, 0, 0); - SendMessage(cbwnd, CB_ADDSTRING, 0, (LPARAM) "xterm"); - SendMessage(cbwnd, CB_ADDSTRING, 0, (LPARAM) "startkde"); - SendMessage(cbwnd, CB_ADDSTRING, 0, (LPARAM) "gnome-session"); - SendMessage(cbwnd, CB_ADDSTRING, 0, (LPARAM) ".xinitrc"); - SendMessage(cbwnd, CB_ADDSTRING, 0, (LPARAM) "wmaker"); - SendMessage(cbwnd, CB_SETCURSEL, 0, 0); - } - /// @brief Fill protocol box with default values. - /// @param hwndDlg Handle to active page dialog. - void FillProtocolBox(HWND hwndDlg) - { - HWND cbwnd = GetDlgItem(hwndDlg, IDC_CLIENT_PROTOCOL); - if (cbwnd == NULL) - return; - SendMessage(cbwnd, CB_RESETCONTENT, 0, 0); - SendMessage(cbwnd, CB_ADDSTRING, 0, (LPARAM) "Putty"); - //SendMessage(cbwnd, CB_ADDSTRING, 0, (LPARAM) "OpenSSH"); - SendMessage(cbwnd, CB_SETCURSEL, 0, 0); - } - void ShowSaveDialog(HWND parent) - { - char szTitle[512]; - char szFilter[512]; - char szFileTitle[512]; - char szFile[MAX_PATH]; - HINSTANCE hInst = GetModuleHandle(NULL); - - LoadString(hInst, IDS_SAVE_TITLE, szTitle, sizeof(szTitle)); - LoadString(hInst, IDS_SAVE_FILETITLE, szFileTitle, sizeof(szFileTitle)); - LoadString(hInst, IDS_SAVE_FILTER, szFilter, sizeof(szFilter)); - for (unsigned i=0; szFilter[i]; i++) - if (szFilter[i] == '%') - szFilter[i] = '\0'; - - strcpy(szFile, "config.xlaunch"); - - OPENFILENAME ofn; - memset(&ofn, 0, sizeof(OPENFILENAME)); - ofn.lStructSize = sizeof(OPENFILENAME); - ofn.hwndOwner = parent; - ofn.lpstrFilter = szFilter; - ofn.lpstrFile= szFile; - ofn.nMaxFile = sizeof(szFile)/ sizeof(*szFile); - ofn.lpstrFileTitle = szFileTitle; - ofn.nMaxFileTitle = sizeof(szFileTitle); - ofn.lpstrInitialDir = (LPSTR)NULL; - ofn.Flags = OFN_SHOWHELP | OFN_OVERWRITEPROMPT; - ofn.lpstrTitle = szTitle; - - if (GetSaveFileName(&ofn)) - { - try { - config.Save(ofn.lpstrFile); - } catch (std::runtime_error &e) - { - printf("Fehler: %s\n", e.what()); - } - } - } - public: - - /// @brief Handle messages fo the dialog pages. - /// @param hwndDlg Handle of active dialog. - /// @param uMsg Message code. - /// @param wParam Message parameter. - /// @param lParam Message parameter. - /// @param psp Handle to sheet paramters. - virtual INT_PTR PageDispatch(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam, PROPSHEETPAGE *psp) - { - HWND hwnd; - switch (uMsg) - { - case WM_INITDIALOG: - switch (PageID(PageIndex(psp))) - { - case IDD_DISPLAY: - // Init display dialog. Enable correct check buttons - switch (config.window) - { - default: - case CConfig::MultiWindow: - CheckRadioButton(hwndDlg, IDC_MULTIWINDOW, IDC_NODECORATION, IDC_MULTIWINDOW); - break; - case CConfig::Fullscreen: - CheckRadioButton(hwndDlg, IDC_MULTIWINDOW, IDC_NODECORATION, IDC_FULLSCREEN); - break; - case CConfig::Windowed: - CheckRadioButton(hwndDlg, IDC_MULTIWINDOW, IDC_NODECORATION, IDC_WINDOWED); - break; - case CConfig::Nodecoration: - CheckRadioButton(hwndDlg, IDC_MULTIWINDOW, IDC_NODECORATION, IDC_NODECORATION); - break; - } - // Set display number - SetDlgItemText(hwndDlg, IDC_DISPLAY, config.display.c_str()); - break; - case IDD_CLIENTS: - // Init client dialog. Enable correct check buttons - switch (config.client) - { - default: - case CConfig::NoClient: - CheckRadioButton(hwndDlg, IDC_CLIENT_NONE, IDC_CLIENT, IDC_CLIENT_NONE); - break; - case CConfig::StartProgram: - CheckRadioButton(hwndDlg, IDC_CLIENT_NONE, IDC_CLIENT, IDC_CLIENT); - break; - case CConfig::XDMCP: - CheckRadioButton(hwndDlg, IDC_CLIENT_NONE, IDC_CLIENT, IDC_XDMCP); - break; - } - break; - case IDD_PROGRAM: - // Init program dialog. Check local and remote buttons - CheckRadioButton(hwndDlg, IDC_CLIENT_LOCAL, IDC_CLIENT_REMOTE, config.local?IDC_CLIENT_LOCAL:IDC_CLIENT_REMOTE); - EnableRemoteProgramGroup(hwndDlg, config.local?FALSE:TRUE); - // Fill combo boxes - FillProgramBox(hwndDlg); - FillProtocolBox(hwndDlg); - // Set edit fields - if (!config.program.empty()) - SetDlgItemText(hwndDlg, IDC_CLIENT_PROGRAM, config.program.c_str()); - SetDlgItemText(hwndDlg, IDC_CLIENT_USER, config.user.c_str()); - SetDlgItemText(hwndDlg, IDC_CLIENT_HOST, config.host.c_str()); - break; - case IDD_XDMCP: - // Init XDMCP dialog. Check broadcast and indirect button - CheckRadioButton(hwndDlg, IDC_XDMCP_QUERY, IDC_XDMCP_BROADCAST, config.broadcast?IDC_XDMCP_BROADCAST:IDC_XDMCP_QUERY); - CheckDlgButton(hwndDlg, IDC_XDMCP_INDIRECT, config.indirect?BST_CHECKED:BST_UNCHECKED); - EnableXDMCPQueryGroup(hwndDlg, config.broadcast?FALSE:TRUE); - // Set hostname - SetDlgItemText(hwndDlg, IDC_XDMCP_HOST, config.xdmcp_host.c_str()); - break; - case IDD_CLIPBOARD: - CheckDlgButton(hwndDlg, IDC_CLIPBOARD, config.clipboard?BST_CHECKED:BST_UNCHECKED); - SetDlgItemText(hwndDlg, IDC_EXTRA_PARAMS, config.extra_params.c_str()); - break; - - } - case WM_COMMAND: - // Handle control messages - switch (LOWORD(wParam)) - { - // Handle clicks on images. Check proper radiobutton - case IDC_MULTIWINDOW_IMG: - case IDC_FULLSCREEN_IMG: - case IDC_WINDOWED_IMG: - case IDC_NODECORATION_IMG: - CheckRadioButton(hwndDlg, IDC_MULTIWINDOW, IDC_NODECORATION, LOWORD(wParam)-4); - SetFocus(GetDlgItem(hwndDlg, LOWORD(wParam)-4)); - break; - // Disable unavailable controls - case IDC_CLIENT_REMOTE: - case IDC_CLIENT_LOCAL: - EnableRemoteProgramGroup(hwndDlg, LOWORD(wParam) == IDC_CLIENT_REMOTE); - break; - case IDC_XDMCP_QUERY: - case IDC_XDMCP_BROADCAST: - EnableXDMCPQueryGroup(hwndDlg, LOWORD(wParam) == IDC_XDMCP_QUERY); - break; - case IDC_FINISH_SAVE: - ShowSaveDialog(hwndDlg); - break; - } - } - // pass messages to parent - return CWizard::PageDispatch(hwndDlg, uMsg, wParam, lParam, psp); - } - - /// @brief Try to connect to server. - /// Repeat until successful, server died or maximum number of retries - /// reached. - Display *WaitForServer(HANDLE serverProcess) - { - int ncycles = 120; /* # of cycles to wait */ - int cycles; /* Wait cycle count */ - Display *xd; - - for (cycles = 0; cycles < ncycles; cycles++) { - if ((xd = XOpenDisplay(NULL))) { - return xd; - } - else { - if (WaitForSingleObject(serverProcess, 1000) == WAIT_TIMEOUT) - continue; - } - } - return NULL; - } - - /// @brief Do the actual start of Xming and clients - void StartUp() - { - std::string buffer; - std::string client; - - // Construct display strings - std::string display_id = ":" + config.display; - std::string display = "localhost" + display_id + ":0"; - -#ifdef _DEBUG - // Debug only: Switch to Xming installation directory - SetCurrentDirectory("C:\\Programme\\Xming"); -#endif - - // Build Xming commandline - buffer = "Xming " + display_id + " "; - switch (config.window) - { - case CConfig::MultiWindow: - buffer += "-multiwindow "; - break; - case CConfig::Fullscreen: - buffer += "-fullscreen "; - break; - case CConfig::Nodecoration: - buffer += "-nodecoration "; - break; - default: - break; - } - // Add XDMCP parameter - if (config.client == CConfig::XDMCP) - { - if (config.broadcast) - buffer += "-broadcast "; - else - { - if (config.indirect) - buffer += "-indirect "; - else - buffer += "-query "; - buffer += config.xdmcp_host; - buffer += " "; - } - } - if (config.clipboard) - buffer += "-clipboard "; - if (!config.extra_params.empty()) - { - buffer += config.extra_params; - buffer += " "; - } - - // Construct client commandline - if (config.client == CConfig::StartProgram) - { - if (!config.local) - { - char cmdline[512]; - std::string host = config.host; - if (!config.user.empty()) - host = config.user + "@" + config.host; - if (config.protocol == "Putty") - snprintf(cmdline,512,"plink -X %s %s", - host.c_str(),config.program.c_str()); - else - snprintf(cmdline,512,"ssh -Y %s %s", - host.c_str(),config.program.c_str()); - client += cmdline; - } else - client += config.program.c_str(); - } - - // Prepare program startup - STARTUPINFO si, sic; - PROCESS_INFORMATION pi, pic; - HANDLE handles[2]; - DWORD hcount = 0; - Display *dpy = NULL; - - ZeroMemory( &si, sizeof(si) ); - si.cb = sizeof(si); - ZeroMemory( &pi, sizeof(pi) ); - ZeroMemory( &sic, sizeof(sic) ); - sic.cb = sizeof(sic); - ZeroMemory( &pic, sizeof(pic) ); - - // Start Xming process. -#ifdef _DEBUG - printf("%s\n", buffer.c_str()); -#endif - if( !CreateProcess( NULL, (CHAR*)buffer.c_str(), NULL, NULL, - FALSE, 0, NULL, NULL, &si, &pi )) - throw win32_error("CreateProcess failed"); - handles[hcount++] = pi.hProcess; - - if (!client.empty()) - { - // Set DISPLAY variable - SetEnvironmentVariable("DISPLAY",display.c_str()); - - // Wait for server to startup - dpy = WaitForServer(pi.hProcess); - if (dpy == NULL) - { - while (hcount--) - TerminateProcess(handles[hcount], (DWORD)-1); - throw std::runtime_error("Connection to server failed"); - } - -#ifdef _DEBUG - printf("%s\n", client.c_str()); -#endif - - // Hide a console window - // FIXME: This may make it impossible to enter the password - sic.dwFlags = STARTF_USESHOWWINDOW; - sic.wShowWindow = SW_HIDE; - - // Start the child process. - if( !CreateProcess( NULL, (CHAR*)client.c_str(), NULL, NULL, - FALSE, 0, NULL, NULL, &sic, &pic )) - { - DWORD err = GetLastError(); - while (hcount--) - TerminateProcess(handles[hcount], (DWORD)-1); - throw win32_error("CreateProcess failed", err); - } - handles[hcount++] = pic.hProcess; - } - - // Wait until any child process exits. - DWORD ret = WaitForMultipleObjects(hcount, handles, FALSE, INFINITE ); - -#ifdef _DEBUG - printf("killing process!\n"); -#endif - // Check if Xming is still running - DWORD exitcode; - GetExitCodeProcess(pi.hProcess, &exitcode); - unsigned counter = 0; - while (exitcode == STILL_ACTIVE) - { - if (++counter > 10) - TerminateProcess(pi.hProcess, (DWORD)-1); - else - // Shutdown Xming (the soft way!) - EnumThreadWindows(pi.dwThreadId, KillWindowsProc, 0); - Sleep(500); - GetExitCodeProcess(pi.hProcess, &exitcode); - } - // Kill the client - TerminateProcess(pic.hProcess, (DWORD)-1); - - // Close process and thread handles. - CloseHandle( pi.hProcess ); - CloseHandle( pi.hThread ); - CloseHandle( pic.hProcess ); - CloseHandle( pic.hThread ); - } -}; - -int main(int argc, char **argv) -{ - try { - InitCommonControls(); - CMyWizard dialog; - - bool skip_wizard = false; - - for (int i = 1; i < argc; i++) - { - if (argv[i] == NULL) - continue; - - std::string arg(argv[i]); - if (arg == "-load" && i + 1 < argc) - { - i++; - dialog.LoadConfig(argv[i]); - continue; - } - if (arg == "-run" && i + 1 < argc) - { - i++; - dialog.LoadConfig(argv[i]); - skip_wizard = true; - continue; - } - } - - int ret = 0; - if (skip_wizard || (ret =dialog.ShowModal()) != 0) - dialog.StartUp(); -#ifdef _DEBUG - printf("return %d\n", ret); -#endif - return 0; - } catch (std::runtime_error &e) - { - printf("Fehler: %s\n", e.what()); - return -1; - } -} - - - - diff --git a/hw/xwin/xlaunch/resources/dialog.rc b/hw/xwin/xlaunch/resources/dialog.rc deleted file mode 100755 index 8b00df4ef..000000000 --- a/hw/xwin/xlaunch/resources/dialog.rc +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (c) 2005 Alexander Gottwald - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the sale, - * use or other dealings in this Software without prior written authorization. - */ -#include -#include "resources.h" - -#ifndef STR_CAPTION_DISPLAY -#include "strings.rc" -#endif - -IDD_DISPLAY DIALOGEX 0, 0, 317, 143 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_CENTERMOUSE -CAPTION STR_CAPTION_DISPLAY -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - AUTORADIOBUTTON STR_MULTIWINDOW,IDC_MULTIWINDOW,7,25,70,24,BS_MULTILINE|BS_TOP - AUTORADIOBUTTON STR_FULLSCREEN,IDC_FULLSCREEN,157,25,70,24,BS_MULTILINE|BS_TOP - AUTORADIOBUTTON STR_WINDOWED,IDC_WINDOWED,7,75,70,24,BS_MULTILINE|BS_TOP - AUTORADIOBUTTON STR_NODECORATION,IDC_NODECORATION,157,75,70,24,BS_MULTILINE|BS_TOP - - CONTROL "IMG_MULTIWINDOW",IDC_MULTIWINDOW_IMG,"Static",SS_BITMAP | SS_NOTIFY,80,10,0,0 - CONTROL "IMG_FULLSCREEN",IDC_FULLSCREEN_IMG,"Static",SS_BITMAP | SS_NOTIFY,230,10,0,0 - CONTROL "IMG_WINDOWED",IDC_WINDOWED_IMG,"Static",SS_BITMAP | SS_NOTIFY,80,60,0,0 - CONTROL "IMG_NODECORATION",IDC_NODECORATION_IMG,"Static",SS_BITMAP | SS_NOTIFY,230,60,0,0 - - LTEXT STR_DISPLAY_DESC,IDC_DISPLAY_DESC,7,120,64,12 - EDITTEXT IDC_DISPLAY,80,118,67,12,ES_NUMBER -END - -IDD_CLIENTS DIALOGEX 0, 0, 317, 143 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_CENTERMOUSE -CAPTION STR_CAPTION_CLIENTS -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - AUTORADIOBUTTON STR_CLIENT_NONE,IDC_CLIENT_NONE,7,14,300,10 - AUTORADIOBUTTON STR_CLIENT,IDC_CLIENT,7,56,300,10 - AUTORADIOBUTTON STR_XDMCP,IDC_XDMCP,7,98,300,10 - - LTEXT STR_CLIENT_NONE_DESC,IDC_CLIENT_NONE_DESC,19,28,280,27 - LTEXT STR_CLIENT_DESC,IDC_CLIENT_DESC,19,70,280,27 - LTEXT STR_XDMCP_DESC,IDC_XDMCP_DESC,19,112,280,27 -END - -IDD_PROGRAM DIALOGEX 0, 0, 317, 143 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_CENTERMOUSE -CAPTION STR_CAPTION_PROGRAM -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - LTEXT STR_CLIENT_PROGRAM_DESC,IDC_CLIENT_PROGRAM_DESC,7,14,64,10 - COMBOBOX IDC_CLIENT_PROGRAM,70,12,64,54,CBS_DROPDOWN | WS_VSCROLL - - AUTORADIOBUTTON STR_CLIENT_LOCAL,IDC_CLIENT_LOCAL,7,28,300,10 - AUTORADIOBUTTON STR_CLIENT_REMOTE,IDC_CLIENT_REMOTE,7,42,300,10 - - LTEXT STR_CLIENT_PROTOCOL_DESC,IDC_CLIENT_PROTOCOL_DESC,19,56,70,10 - COMBOBOX IDC_CLIENT_PROTOCOL,100,54,64,54,CBS_DROPDOWNLIST | WS_VSCROLL - - LTEXT STR_CLIENT_HOST_DESC,IDC_CLIENT_HOST_DESC,19,70,70,10 - LTEXT STR_CLIENT_USER_DESC,IDC_CLIENT_USER_DESC,19,84,70,10 - EDITTEXT IDC_CLIENT_HOST,100,68,64,12 - EDITTEXT IDC_CLIENT_USER,100,82,64,12 -END - -IDD_XDMCP DIALOGEX 0, 0, 317, 143 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_CENTERMOUSE -CAPTION STR_CAPTION_XDMCP -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - AUTORADIOBUTTON STR_XDMCP_QUERY, IDC_XDMCP_QUERY,7,14,64,10 - EDITTEXT IDC_XDMCP_HOST,78,12,64,12 - AUTOCHECKBOX STR_XDMCP_INDIRECT,IDC_XDMCP_INDIRECT,19,28,280,10 - AUTORADIOBUTTON STR_XDMCP_BROADCAST, IDC_XDMCP_BROADCAST,7,42,300,10 - LTEXT STR_XDMCP_QUERY_DESC,IDC_XDMCP_QUERY_DESC,7,56,300,42 -END - -IDD_CLIPBOARD DIALOGEX 0, 0, 317, 143 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_CENTERMOUSE -CAPTION STR_CAPTION_CLIPBOARD -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - AUTOCHECKBOX STR_CLIPBOARD,IDC_CLIPBOARD,7,14,300,10 - LTEXT STR_CLIPBOARD_DESC,IDC_CLIPBOARD_DESC,19,28,280,27 - - LTEXT STR_EXTRA_PARAMS_DESC,IDC_EXTRA_PARAMS_DESC,7,56,280,10 - EDITTEXT IDC_EXTRA_PARAMS,7,70,128,12 -END - -IDD_FINISH DIALOGEX 0, 0, 317, 143 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_CENTERMOUSE -CAPTION STR_CAPTION_FINISH -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - LTEXT STR_FINISH_DESC,IDC_FINISH_DESC,7,14,300,28 - LTEXT STR_FINISH_SAVE_DESC,IDC_FINISH_SAVE_DESC,7,56,300,12 - PUSHBUTTON STR_FINISH_SAVE,IDC_FINISH_SAVE,7,68,75,14 -END diff --git a/hw/xwin/xlaunch/resources/fullscreen.bmp b/hw/xwin/xlaunch/resources/fullscreen.bmp deleted file mode 100755 index 0d051f0b4c482815fd03e5344e3482af850c0ac8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22554 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 Fe*iMFDDD6N diff --git a/hw/xwin/xlaunch/resources/images.rc b/hw/xwin/xlaunch/resources/images.rc deleted file mode 100755 index 2eac53c93..000000000 --- a/hw/xwin/xlaunch/resources/images.rc +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2005 Alexander Gottwald - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the sale, - * use or other dealings in this Software without prior written authorization. - */ -IMG_MULTIWINDOW BITMAP "resources\\multiwindow.bmp" -IMG_WINDOWED BITMAP "resources\\windowed.bmp" -IMG_FULLSCREEN BITMAP "resources\\fullscreen.bmp" -IMG_NODECORATION BITMAP "resources\\nodecoration.bmp" diff --git a/hw/xwin/xlaunch/resources/multiwindow.bmp b/hw/xwin/xlaunch/resources/multiwindow.bmp deleted file mode 100755 index 0755c87b4b8471f89b479848de5a5853a541af16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22554 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 J^E^Wi{|AExzli_< diff --git a/hw/xwin/xlaunch/resources/nodecoration.bmp b/hw/xwin/xlaunch/resources/nodecoration.bmp deleted file mode 100755 index e9e1ce690496300d3f047ebc7b9667e71e6c602e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22554 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 - -#include "resources.h" -#include "images.rc" -#include "dialog.rc" diff --git a/hw/xwin/xlaunch/resources/strings.rc b/hw/xwin/xlaunch/resources/strings.rc deleted file mode 100644 index 5a9cd281b..000000000 --- a/hw/xwin/xlaunch/resources/strings.rc +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2005 Alexander Gottwald - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the sale, - * use or other dealings in this Software without prior written authorization. - */ - -#define STR_CAPTION_DISPLAY "Display settings" -#define STR_MULTIWINDOW "Multiple windows" -#define STR_FULLSCREEN "Fullscreen" -#define STR_WINDOWED "One large window" -#define STR_NODECORATION "One window without titlebar" -#define STR_DISPLAY_DESC "Display number" - -#define STR_CAPTION_CLIENTS "Client startup" -#define STR_CLIENT_NONE "Start no client" -#define STR_CLIENT_NONE_DESC "This will just start the xserver. You will be able to start local clients later." -#define STR_CLIENT "Start a program" -#define STR_CLIENT_DESC "This will start a local or remote program which will connect to the xserver. You will be able to start local clients later too. Remote programs are started using SSH." -#define STR_XDMCP "Open session via XDMCP" -#define STR_XDMCP_DESC "This will start a remote XDMCP session. Starting local clients later is limited. This option is not available with the ""Multiple windows"" mode." - -#define STR_CAPTION_PROGRAM "Start program" -#define STR_CLIENT_PROGRAM_DESC "Start program" -#define STR_CLIENT_LOCAL "Start program on this computer" -#define STR_CLIENT_REMOTE "Start program on remote computer" -#define STR_CLIENT_PROTOCOL_DESC "Connect using" -#define STR_CLIENT_HOST_DESC "Connect to computer" -#define STR_CLIENT_USER_DESC "Login as user" - - -#define STR_CAPTION_XDMCP "XDMCP settings" -#define STR_XDMCP_QUERY "Connect to host" -#define STR_XDMCP_INDIRECT "Use indirect connect" -#define STR_XDMCP_BROADCAST "Search for hosts (broadcast)" -#define STR_XDMCP_QUERY_DESC "Some XDMCP servers must be configured to allow remote connections. Please check the documentation about configuring XDMCP servers." - - -#define STR_CAPTION_FONTPATH "Fontpath settings" - -#define STR_CAPTION_CLIPBOARD "Clipboard settings" -#define STR_CLIPBOARD "Clipboard" -#define STR_CLIPBOARD_DESC "Start the integrated clipboard manager" -#define STR_EXTRA_PARAMS_DESC "Additional parameters for Xming" - -#define STR_CAPTION_FINISH "Finish configuration" -#define STR_FINISH_DESC "Configuration is complete. Clish Finish to start Xming." -#define STR_FINISH_SAVE_DESC "You may also save the configuration for later use." -#define STR_FINISH_SAVE "Save configuration" - -#define STR_DISPLAY_TITLE "Select display settings" -#define STR_DISPLAY_SUBTITLE "Choose how Xming display programs" -#define STR_CLIENTS_TITLE "Select how to start clients" -#define STR_CLIENTS_SUBTITLE "" -#define STR_PROGRAM_TITLE "Specify the program to start" -#define STR_PROGRAM_SUBTITLE "" -#define STR_XDMCP_TITLE "Configure a remote XDMCP connection" -#define STR_XDMCP_SUBTITLE "" -#define STR_FONTPATH_TITLE "Define font locations" -#define STR_FONTPATH_SUBTITLE "" -#define STR_FINISH_TITLE "Configuration complete" -#define STR_FINISH_SUBTITLE "" -#define STR_CLIPBOARD_TITLE "Clipboard settings" -#define STR_CLIPBOARD_SUBTITLE "" - -#define STR_SAVE_TITLE "Save configuration" -#define STR_SAVE_FILETITLE "Filename" -#define STR_SAVE_FILTER "Xlaunch Files (*.xlaunch)%*.xlaunch%%" - -STRINGTABLE -BEGIN - IDS_DISPLAY_TITLE STR_DISPLAY_TITLE - IDS_DISPLAY_SUBTITLE STR_DISPLAY_SUBTITLE - IDS_CLIENTS_TITLE STR_CLIENTS_TITLE - IDS_CLIENTS_SUBTITLE STR_CLIENTS_SUBTITLE - IDS_PROGRAM_TITLE STR_PROGRAM_TITLE - IDS_PROGRAM_SUBTITLE STR_PROGRAM_SUBTITLE - IDS_XDMCP_TITLE STR_XDMCP_TITLE - IDS_XDMCP_SUBTITLE STR_XDMCP_SUBTITLE - IDS_FONTPATH_TITLE STR_FONTPATH_TITLE - IDS_FONTPATH_SUBTITLE STR_FONTPATH_SUBTITLE - IDS_FINISH_TITLE STR_FINISH_TITLE - IDS_FINISH_SUBTITLE STR_FINISH_SUBTITLE - IDS_CLIPBOARD_TITLE STR_CLIPBOARD_TITLE - IDS_CLIPBOARD_SUBTITLE STR_CLIPBOARD_SUBTITLE - IDS_SAVE_TITLE STR_SAVE_TITLE - IDS_SAVE_FILETITLE STR_SAVE_FILETITLE - IDS_SAVE_FILTER STR_SAVE_FILTER -END diff --git a/hw/xwin/xlaunch/resources/windowed.bmp b/hw/xwin/xlaunch/resources/windowed.bmp deleted file mode 100755 index 9eff2bff91a2e77df7fcd141dcb5e239280717ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22554 zcmeI4cUV-{+V%qsMFa%Sv72TChM_YIO+YjnyRk+viM}b8#Db*QTP(38D)xe?s30JM zbfpQXSil~Q8e0A7vDbm{(9@} znW0mor;W+T{A|s-4NF(7`ew(@n%eqn?YElRF043qqPV!|Zqdgr+s5FlvvZDqvpuV= z?Z(zQ^Onw^Ra19$^rXCx=H|6D)D~=9xci%en|HrmuwX&^?R$7T;%3u@Ib$bm-MHp_ zLlaI1zJ2-1mB5l$SbVyq3=e-CHL7C9%#EA30#x&*E9yK?tkxOn;2y$5*a(v@py$@QCeuD6yPs%mMvc=6V) z*1OF|@cIMUIrU8~*x7nu=c)3F8#mkYk5!yHS=d-#TT_r-TUAzdt_~;V($(t#g-^JB z|G~!WU3HC3_*i`Ao%`RN$UD_?`3fGMt82iS{UJN&Zdt|UYwghC#nx*_@^g3P?Y(;A z7Ftr*&~)?8J!qh@dUb?Khss^vGI$yVAM^<@7Wp#DUm8;io z+`fZGc8r>artH!(==sy_U*uI69iBYp$h5TU?Kc{Pd^tx`x8)b0xL)x9>khJo)*Tf1kK@@BX0!+c?hEH`df& zK)?>{cJQ#W=KRxVztmp5Tu@n+xh3o2lb`M&G5(!cwY0WQ7!kp7Fem5Gu@i{n1*h$H z@DMf&Ruv5w&R%FLsy;`o&_nz?vATTq`n*|FIF9F^0wqL2NtxXa9+s3<9M8>}H|L%C zbKY4n7u)IcW~YBLJ8j-&vkHeR*d3 z3fk%;9Z&L~XiJ}}-66BKTEj)2q%QuQ`Xl<{b9Ab68*J@V?Fw{hTBFIY;$( zK|~L5F(U@L#E7s2xWpm?UE(-`Tw;UVV~l?0VE>q4e~Zy4-sqYT?2`E6FuEj&h&Q@W z1X09sh>xYO2ynr7@t2|jXhyVX4;qH%MTmBy!J)5H;}JNDU~xn^v_M23=YZbM0}#EO zaqRtiI)lUO-H8dvywcSv{q1qfmu6tc9#l_y3xVoQAA*l!R(7DmU$+5;w&_82q=cih z7&|j10u}6=7;G36>|za*%OI0Wk_-cO@X-2Kji;5H4j0Y^<6>esS%hlmhNy+MTq-tR$%Jq^Q176p4xm+ldNiL9Zwcl#5W5vjT-P zYeDGcBxPWLihzhCHrQtnKoJ&Vf=Jf3*hw}Sl0)bjev)4>$Rxo^5$eRIGzI~86qts~ z1p-4BD0P|a)TQAX(2EElxky?)q_k{US+h?Ql`i}Apde!nluSJdN=rHhrIJo0jw@88 zf${?=K72w1CLxBD5El{H;lM+=!!N*Vn4aXOsj;KR9O6O?g}Pjnx;Pmr6Gbv2aVQyu zv}7hiTDnYRR%BB`RAf^<9oQ6ulA?k~aq9IYP-uXiqR2WlYl5rbSmKRt0A*o=GWjK$ zTm>RJb_Oyy)S!=4+lTxo@k)NZz$*mF848&xVtRpbGD7EUUz)nC$q37p#`P*$F&mdY z6D2Dlt?6%%Td_35*3wB-uqm?i=h+m@T!11c7akQefK0Vx-a%0bMyV)^$saMucRldEN7U-Eh2dVVId z$;(WfJ`JoET1Dlk@6%@=6ornDK|xW(O7waR3JtU7olsPw(ZGsgP;n-2946~T@nIlC z!weMR4nonx4k4A0WzK>;J06HBf&Bw@^#d*!hsMRyQklrE)laySV3k32g0ys*fZX>P zMV)|j4&fp}WuL4NoUNc(RJN&ymcy5r61MRs9|k2wB4nfByb*4&Mug!F4(&-vtLc*q7v>KNxAsm_fJJZIkT$Z5~RMOH1KF89fO%W(jNA)KkfTCpf zbpRC?+&M<%9YDpId{aVQSxY!xB_ZZBEW+>)gXrm0r`MRwO3|N62h++h&PRRENQH#v z^N<#TGm(vpYDnQcupk%_Dgo45{e{EZv+7V#!Oz*!85BMl-7ZoO@nTR3!R|^?u_piI zPv~aprfod-;?i028 zLAaLlyCMh0h{mS-W2YifS;sO|nc!TgB7stGpl{j#;sbG!G*dS(b$VhjQcqIM2Rl?zK%8}G*6w8$xVU6PMpb4fnrmVpfu&^`HV6f zMnxNFt3pSQp^?mlAeop-NfMYHF0E&jgGXISFEWwL#G$m1P*4jG5`hJ!DO?MzRxT%2 za`dNnb&oIOxqc}hR$B0*)JsHNj{eIG=X6xx{;r9k0GStp7TlNoI`SR=+TnnQaM zuTig;xyi&tkBP4sg3#j7mIKExM?02_A*iX|lZ2r^@0T*t&1#!|Rqi+zM1nj+Q_ z7xj|5WTY|CbBs$>r%^Prw$=~qT5uj5dq;=o90VxHjHeXr6VU4Fa4Ku}$0fRrr3cga zH!j#4V;Qgls94h<5<+|ihjk)QnvIj9L|WmfiIN6{_*h&K<3xQn6!=gHi@Eji9X{6bW5>vx9 zQuGnrU*NmgxF9VaIU*COgwUJ3a4p#(iU}^{3p+f9Zzv;qgs3JTFofaJv}D!W3A)0Q z&r3kz>T>GL-qkgyLX%>HyMUF*KGX>wXtolSUFs1ikzYtOP+~+A;#?`>WsHpJG&IV4 zWQ^zdSU0?8jKzIajQdEl`zT^XDLLBg%J#+TqFO@vyvRhtMU!Cm^@E(Wv2l2+u^}xz zD`{CTTUo7MohiIh0;NMVG2Rt1+R`aCvdbG$-Xmf<16NYGZ(^8#0wUBuUW>#q-;@ZiVNo8O)PzeJ zmngdafoo|K&Qv@IAGWd*v!>+mT5l+Il|D|g(wP<@|b z85-qF%-yl5M6ZYJlkOxG#afye?=~UceYC}Me4NLaSkI(z z|3TsYDUrUTES?kM-3TM+W}NHzIG}bLVfILk@Qw@h11vl0myXX+xIit7X+DwI-i zV_{PyDt+orOmKyY7}4Yew-GU30EHM8<25DG6)_o+AXF!CL5g@gWQori5$&E7?h_y4 z7aKx8nG)v3u7w65xI@G&1UozrsI4PJ?V=Bchujr%8pr{lmg+D=B zN?j6{sK?;&Bck0BL%VRFGAPuW9NrNt^oG`{Ev~Y(p|r?BY46NRP0;`gcZDhk9d?40 zztY$pu(BFEjV7$do+ykR4YqT25|t=8!HR8)J!(vBCn#qUITa}ipe84}PfK#8801RC zG<69>6TPHWTI7CE?8s=>q%a@gg0@irr-o54tO_l=%E4|@OU`I%<7m|t!nF0(`;7GQ z@OC646{5EDFnEi8x)>h_vqBEap^awjI9Xy)kE;)|6CA7=yJV$R>C)0w0t!*#@F~R- zkyGSRNfG`N6FQ|OyUIv%Q@AE4y1f&=7Z23KqWc&e-kEVFhjo&yxX|M9 z&I{~ac7<|c8KP3U;z2a{u&$U@#~g&HcpirQN;d`CacGlha#uMxB+S*u*aa(PRwG(v=$6XSA3a?{R&rS zh?S6*8Z5J}a0pyhv9YsRam~r10;}1D9JGh$T}ps!Wu+ zil;1QU7=L7VHHMGXJ`y!aHyNs6=EE1tw4 zYA~{_u@?7{F& zs;&cen2NFSD;rir!etJk6XYsXuo9Ck+5j24Vpg1ksgb^@rpCs4Y6(c9B3*F~f|cIh zMdg5T;+PnBlnv-F^t!?~Vot*n?8mrLLfw#q!rSTkzQY`3Z-*W_<{-Qseg!fw&=qnJ zcn6z%q{a`NHgV{rvB}BNz1Z8S7S+wJv#!{$SXZeX{7SDYynkx`%&f+kaa>evV?GMDEbUzk1Czr2kcOzE zfCT|!Tq-C^@HA;w9ZGlV2es*Cu%fy>(vTb~SQ%lVe#s$jJS0@QdQN?1(+|=No?U&F zM)ei@71dW__86~WU7^Q3u&95@rlc*iUwgTm3nm{Nvx2rwZlJ`G6yiztF6KhHZpQ?s zO&aP(&Fosq5xz+gegFboD&SFEh1!84Q3+iEJK$rO16KHaHIaqWq*$4a{$uW+$o(+euyuD-H4(|dhJg*-Q#s|AsZ#FjXO)Xp%I3&W8%Tei9!m@ab zL+4A!Dlx=MvQnkHR*u4i<@}z)B`VTk(O#HLz+i{FMZi&kXIN48)q)rgVlHcVl!u*J zffXh?VvPO(g@_LF=SyH{C$Z9IM{yuJR@MtT+z)otmC8Y4rRMsys}jS^K3``he>OAz z;1bJ(L~mj>Ku(J4%LbT0Vz4_}#kxu`*-l>R(om~NX-*hvh@invJapm)R&U01h9fZ? zxfSM5T>y_9Rk-|8X#OgV=K6TKqg7Y7m*(R_|A^iMUFr*_8WMwD={#zd zg$vE9B8Ai17Fs;vAWUATuF)0`%;3Ed?Zt2;A3Y^q-zSGQ9j4szT}VKDHT;U&BN8yi z*hP(Q?97UFg+42a2F?x&24z;v3fFP?+5}jUz3Z1T=%@R{YAYy~ru)PQ+Aa;zB!w%^ zd1Yb!RFYw96CGfj-kF4WB+`kUS6XY3qq7-nT?oc^h=5ENvo`lxRmUT(t3!wds0{z zOMn}`1)(M!s0~Ipv?s>s!!7}7Vd(I!~@nRw!Lxxnk zScA)g9;gk5MtY`%dnbo`0hGMxEQ(L)R?e|&^Lu8aFR~Ay5NJP?9~b0mSAyF1fVxq$ zc8#7!f}%WtkYH2VdIsIv53R~VkBJM@h=IMF0(v_I_HjZo!Unl==qN2}kC9wL;xhUt zg>=F&-_E!=8R0N&HQ1s$LLjXugpXl6$_!$jnCir3ns~bO;D=e_lyFR^3pwc(#mlkO zq;Z%bDa2ig3apTW5LH|dLazNlWu=v%RE6@8*``{st=JVStbxS(E9<3at;z~~*=haW zJ==4Sesd&eWS&%4+c=e)-_yIgS_3JnP_evLtW{gK5bL+CX()O_F0|guSn%P} zFFuF+FaC7){Eu-xnpd_HD{TgzSZQl!EJ2+(6D>wBDr|JPQ1B>RTuVq|qMTp?%x$=s zS7H6gt>8n5L}#ax4xgh|5CPQS5JRHLLxI8$SaC!LdRYfG*6xqWDr6s)#~=ZzRM3}I z+L8~r6Os;mc)h5$X4~GiQjWKh;Zp{nqX;JCrfQ{#RU1_%qn6GEf&L# z5Rbva?G-TzO^k#*lMY{lQ7KRnf&S5fohkdoY1L&PPP#Uz z;dMk>sX+CoR;w#fK~BVKX@>3|6DlO6YiS)~$m?!$MoSHO)XEucMV6h<3w6<1CRQRD z!HNR{!{`#n2#v|C1Uk{l6_ z{HHdhAhS>F{$6xTju4d{E0z{mp++?acTKVMn>Z%f68_q>iNnVZw~QVZJ7xUfgvj2y zOoWo(xnxCAaS zujLSzCCF3Z!j4jxNJ&2s!%{$$jw})@I>k`i;TMpQq?YJ@Ix%|yWAx>(P<+%*On`^% z__*)WE^JvrX?-6O2faM9PYwWecbBNUQ*rMS?%}oGz)Lq!$XYA#756s>M~q0N7>O7X z5!T<6OkT@G;DVB^)v0z7pL<3%vPS1b`$^!*Qzhe&Qq(Gq>gu6mfXfRjlbjG#ijsT^KPZ+h;($%f0;;v`hKgg_bORwfy zbgQq(M3-GVx1XyyS5;Y6R8*9ewIepPhcqtLCo(Qoap`aoG3^qDg_6-)ACka21e`fB z7`GPEwLDt5NIT-5O5SSs`6A;muV^uPKTk`9E5IM1V4>9Oi3-6UlLsM#j|%XGM@dlH{IF1zyi|&GU`5Hf z7mn>O~@&L;yaz8 zAGj09;3q6_Z#Z<-=a01CF%u_^P03t1_tT7zKU?(4q%ldT(Db-)xez|Dw|X5eTK}LI zm>n?`(wI?HNBU3gXq0@-fu1n|ouUK0%m5{{gsoN^kjT}-b>tlnWYAibdJb%g?opy! zx}>OdKV$(uX;a57U6RrJk4}1Aurl1$%Y#Ikf6!H@cDST>iJnmw66E%@J_myc7MKk& zZD}qKAq6q7j-d2{;lDB;u|*1d#{_!Ffv^}06C#ZgzD}cLYfz%sa|jBe;?W9;ia^=^ z;)f6w_%N$p8Y`(T)hALiN}pH7{EKke<|EHYSW{B#C2?pNaUd}{H!T4MbAV@Lpsx~4 zB+U%?07y)rn>nykbf71;QGs4D0q%G)zfmtF))G_VfgX+ZcwEd*{(MkeA>il)C<;=;NiP|Z?=cS9tEcjriq=&oW=M0bkF?un5-5EvRH zM)bl%eun?VuTgK|9rbD05#NHZ>mC={T{XZGO6@_b&^EL%8X+1SCEAZez_HLliKD{- z;z&aVQkVvU05}khp#Ff(LKCcl_`Z1;zX%etMC9Pw&>9-~U@- zV0EUXc+rAc_=KX8vb_hg5m~$UovodFH1--+%PO*~*&iqq%5m<+(aE4?FlBMf|4Z{_LFl zkDu~RL-Qs4P~rK;=3V;_&6xAaqo>c%o(JDOx^w5=`TB<6|65^T1;R&jkK@4&;D}n;gj3ic0u3_)$mvs$om(mEZqcVdX~;Zke67Y{rzVndA4( zowobKNqc8a+4cTgS?`YAHDmPdnPc|6KX&g24AG^4}M#I=t0Hd?<#X1Rv&p(bL{c?-0y3TKdC$ULqp!v#{8d}PW{|m_^hSq zPnS;r`SO`xT1)a>{Z{q=xK&+w`b25|k+M_A3XdMR(OA}4 zb*AKGPVSmdCnZ}l5(A6YEIO7s^Wf~sc}wSP9Ur&c+;fGc_o}!)s}o*XoA}z7NqyI+ z^xu#=;H#klo8Ac8JUn>o2-DZ2Lbr_x-##ufYkbts3Fh6CEPJNJ?Rz_Ze_Gi`|Ogm z@@3O2mcLuM^1bTSGi%nqe}3JEwHs#DZ=Bt*Y3_wBpEP|vuVveUi#swdXJxkT`t0hS z&#&!UeEq=E_Cw2WWUsiDv+DNIHFtBrymw;V{k#ni^1pgmu=!EZ*2l$PKPlPvL+Oqm z%d&o|*!8Sx&!1}c{c`@mU+ND2TA%$}W6s~2j{d#n*#EqA{C~Bc{NGpe|LfYR|86V% zKkbG18BhG`+|lDFH+;4ETJw4Q=4$S~?M*e6*TpQn=1Ei zuG+VydjHny16ykjetquHH|Mgqoj<(2HfKlOk*vBSJL`|`YB;v5F?V<4@jVw#>}@)^ zuQ_jjbN+#rQwJ{=AP!wB%)VT7xb<{SYw?jQXO3PiId--5*tN5{*UOH#m7i#i)dja|3T{`Qd~h!B!TJ2}YEM0^D|l32@Tj5iabwZ<7fwHEDt^*@=7*M& zrx#0~UOM~ZrL#X>F8jH){O2nb&#qSf=~~sFuUG%Mt>%~ZbAP#U?yon`|Mh0=uea)c oyIudEcN+flZsXtXUHJRG#$O-b{P|uhZ-0Au?bpXQnyZTcFA(+=X8-^I diff --git a/hw/xwin/xlaunch/window/dialog.cc b/hw/xwin/xlaunch/window/dialog.cc deleted file mode 100755 index 76e5c35ac..000000000 --- a/hw/xwin/xlaunch/window/dialog.cc +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (c) 2005 Alexander Gottwald - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the sale, - * use or other dealings in this Software without prior written authorization. - */ -#include -#include "dialog.h" -#include "util.h" - -CBaseDialog::CBaseDialog() : CWindow(""), result(0) -{ -} - -CDialog::CDialog(const char *res) : CBaseDialog(), resourcename(res) -{ -} - -HWND CDialog::CreateWindowHandle() -{ - HWND ret = CreateDialog( - GetModuleHandle(NULL), - resourcename.c_str(), - NULL, - DialogProc); - if (ret == NULL) - throw win32_error("CreateDialog failed"); - return ret; -} - -INT_PTR CALLBACK CBaseDialog::DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) -{ - MessageDebug::debug(hwndDlg, uMsg, wParam, lParam, __FUNCTION__); - CBaseDialog* dialog = (CDialog*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - if (dialog != NULL) - return dialog->DlgDispatch(hwndDlg, uMsg, wParam, lParam); - return FALSE; -} - -INT_PTR CBaseDialog::DlgDispatch(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) -{ - switch (uMsg) - { - case WM_COMMAND: - switch (LOWORD(wParam)) - { - case IDOK: - case IDCANCEL: - result = wParam; - EndDialog(hwndDlg, wParam); - DestroyWindow(hwndDlg); - return TRUE; - } - break; - } - return FALSE; -} - -INT_PTR CDialog::DlgDispatch(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) -{ - return CBaseDialog::DlgDispatch(hwndDlg, uMsg, wParam, lParam); -} - -int CBaseDialog::Execute() -{ - return CWindow::ShowModal(); -} diff --git a/hw/xwin/xlaunch/window/dialog.h b/hw/xwin/xlaunch/window/dialog.h deleted file mode 100644 index 073394bb2..000000000 --- a/hw/xwin/xlaunch/window/dialog.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2005 Alexander Gottwald - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the sale, - * use or other dealings in this Software without prior written authorization. - */ -#ifndef __DIALOG_H__ -#define __DIALOG_H__ - -#include "window.h" -class CBaseDialog : public CWindow -{ - private: - int result; - protected: - static INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); - virtual INT_PTR DlgDispatch(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); - public: - CBaseDialog(); - int Execute(); -}; - -class CDialog : public CBaseDialog -{ - private: - std::string resourcename; - protected: - virtual INT_PTR DlgDispatch(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); - virtual HWND CreateWindowHandle(); - public: - CDialog(const char *res); -}; - - -#endif diff --git a/hw/xwin/xlaunch/window/util.cc b/hw/xwin/xlaunch/window/util.cc deleted file mode 100644 index fb7e87297..000000000 --- a/hw/xwin/xlaunch/window/util.cc +++ /dev/null @@ -1,1112 +0,0 @@ -/* - * Copyright (c) 2005 Alexander Gottwald - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the sale, - * use or other dealings in this Software without prior written authorization. - */ -#include "util.h" - -std::string win32_error::message(DWORD errorcode) -{ - LPVOID lpMsgBuf; - if (!FormatMessage( - FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_FROM_SYSTEM | - FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, - errorcode, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language - (LPTSTR) &lpMsgBuf, - 0, - NULL )) - { - return "Unknown error in FormatMessage"; - } - - std::string ret((LPCTSTR)lpMsgBuf); - LocalFree( lpMsgBuf ); - return ret; -} - -void MessageDebug::debug(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, const char *prefix) -{ -#ifdef _DEBUG - static const char *psn_notify[] = { - "PSN_SETACTIVE", - "PSN_KILLACTIVE", - "PSN_APPLY", - "PSN_RESET", - NULL, - "PSN_HELP", - "PSN_WIZBACK", - "PSN_WIZNEXT", - "PSN_WIZFINISH", - "PSN_QUERYCANCEL" }; - if (uMsg == WM_NOTIFY) - { - LPNMHDR pnmh = (LPNMHDR)lParam; - int psn_index = -(int)pnmh->code - 200; - if (psn_index >= 0 && psn_index < 10 && psn_notify[psn_index]) - printf("%s: %08x %04x WM_NOTIFY (%s)\n", prefix, hwnd, wParam, psn_notify[psn_index]); - else if (pnmh->code < NOTIFY_NAMES_LEN && notify_names[pnmh->code]) - printf("%s: %08x %04x WM_NOTIFY (%s)\n", prefix, hwnd, wParam, notify_names[pnmh->code]); - else - printf("%s: %08x %04x WM_NOTIFY (%u)\n", prefix, hwnd, wParam, pnmh->code); - } - else if (uMsg >= MESSAGE_NAMES_LEN) - if (uMsg >= WM_USER) - printf("%s: %08x %04x %08x WM_USER + %d\n", prefix, hwnd, wParam, lParam, uMsg - WM_USER); - else - printf("%s: %08x %04x %08x %d\n", prefix, hwnd, wParam, lParam, uMsg); - else if (uMsg >= 0 && uMsg < MESSAGE_NAMES_LEN && message_names[uMsg]) - printf("%s: %08x %04x %08x %s\n", prefix, hwnd, wParam, lParam, message_names[uMsg]); -#endif -} - - -const char * MessageDebug::message_names[MESSAGE_NAMES_LEN] = { - "WM_NULL", - "WM_CREATE", - "WM_DESTROY", - "WM_MOVE", - "4", - "WM_SIZE", - "WM_ACTIVATE", - "WM_SETFOCUS", - "WM_KILLFOCUS", - "9", - "WM_ENABLE", - "WM_SETREDRAW", - "WM_SETTEXT", - "WM_GETTEXT", - "WM_GETTEXTLENGTH", - "WM_PAINT", - "WM_CLOSE", - "WM_QUERYENDSESSION", - "WM_QUIT", - "WM_QUERYOPEN", - "WM_ERASEBKGND", - "WM_SYSCOLORCHANGE", - "WM_ENDSESSION", - "23", - "WM_SHOWWINDOW", - "25", - "WM_WININICHANGE", - "WM_DEVMODECHANGE", - "WM_ACTIVATEAPP", - "WM_FONTCHANGE", - "WM_TIMECHANGE", - "WM_CANCELMODE", - NULL /* WM_SETCURSOR */, - "WM_MOUSEACTIVATE", - "WM_CHILDACTIVATE", - "WM_QUEUESYNC", - "WM_GETMINMAXINFO", - "37", - "WM_PAINTICON", - "WM_ICONERASEBKGND", - "WM_NEXTDLGCTL", - "41", - "WM_SPOOLERSTATUS", - "WM_DRAWITEM", - "WM_MEASUREITEM", - "WM_DELETEITEM", - "WM_VKEYTOITEM", - "WM_CHARTOITEM", - "WM_SETFONT", - "WM_GETFONT", - "WM_SETHOTKEY", - "WM_GETHOTKEY", - "52", - "53", - "54", - "WM_QUERYDRAGICON", - "56", - "WM_COMPAREITEM", - "58", - "59", - "60", - "61", - "62", - "63", - "64", - "WM_COMPACTING", - "66", - "67", - "WM_COMMNOTIFY", - "69", - "WM_WINDOWPOSCHANGING", - "WM_WINDOWPOSCHANGED", - "WM_POWER", - "73", - "WM_COPYDATA", - "WM_CANCELJOURNAL", - "76", - "77", - "WM_NOTIFY", - "79", - "WM_INPUTLANGCHANGEREQUEST", - "WM_INPUTLANGCHANGE", - "WM_TCARD", - "WM_HELP", - "WM_USERCHANGED", - "WM_NOTIFYFORMAT", - "86", - "87", - "88", - "89", - "90", - "91", - "92", - "93", - "94", - "95", - "96", - "97", - "98", - "99", - "100", - "101", - "102", - "103", - "104", - "105", - "106", - "107", - "108", - "109", - "110", - "111", - "112", - "113", - "114", - "115", - "116", - "117", - "118", - "119", - "120", - "121", - "122", - "WM_CONTEXTMENU", - "WM_STYLECHANGING", - "WM_STYLECHANGED", - "WM_DISPLAYCHANGE", - "WM_GETICON", - "WM_SETICON", - "WM_NCCREATE", - "WM_NCDESTROY", - "WM_NCCALCSIZE", - NULL /* WM_NCHITTEST */, - "WM_NCPAINT", - "WM_NCACTIVATE", - "WM_GETDLGCODE", - "WM_SYNCPAINT", - "137", - "138", - "139", - "140", - "141", - "142", - "143", - "144", - "145", - "146", - "147", - "148", - "149", - "150", - "151", - "152", - "153", - "154", - "155", - "156", - "157", - "158", - "159", - NULL /* WM_NCMOUSEMOVE */, - "WM_NCLBUTTONDOWN", - "WM_NCLBUTTONUP", - "WM_NCLBUTTONDBLCLK", - "WM_NCRBUTTONDOWN", - "WM_NCRBUTTONUP", - "WM_NCRBUTTONDBLCLK", - "WM_NCMBUTTONDOWN", - "WM_NCMBUTTONUP", - "WM_NCMBUTTONDBLCLK", - "170", - "171", - "172", - "173", - "174", - "175", - "176", - "177", - "178", - "179", - "180", - "181", - "182", - "183", - "184", - "185", - "186", - "187", - "188", - "189", - "190", - "191", - "192", - "193", - "194", - "195", - "196", - "197", - "198", - "199", - "200", - "201", - "202", - "203", - "204", - "205", - "206", - "207", - "208", - "209", - "210", - "211", - "212", - "213", - "214", - "215", - "216", - "217", - "218", - "219", - "220", - "221", - "222", - "223", - "224", - "225", - "226", - "227", - "228", - "229", - "230", - "231", - "232", - "233", - "234", - "235", - "236", - "237", - "238", - "239", - "240", - "241", - "242", - "243", - "244", - "245", - "246", - "247", - "248", - "249", - "250", - "251", - "252", - "253", - "254", - "255", - "WM_KEYDOWN", - "WM_KEYUP", - "WM_CHAR", - "WM_DEADCHAR", - "WM_SYSKEYDOWN", - "WM_SYSKEYUP", - "WM_SYSCHAR", - "WM_SYSDEADCHAR", - "WM_CONVERTREQUESTEX", - "265", - "266", - "267", - "268", - "WM_IME_STARTCOMPOSITION", - "WM_IME_ENDCOMPOSITION", - "WM_IME_KEYLAST", - "WM_INITDIALOG", - "WM_COMMAND", - "WM_SYSCOMMAND", - NULL /* WM_TIMER */, - "WM_HSCROLL", - "WM_VSCROLL", - "WM_INITMENU", - "WM_INITMENUPOPUP", - "280", - "281", - "282", - "283", - "284", - "285", - "286", - "WM_MENUSELECT", - "WM_MENUCHAR", - "WM_ENTERIDLE", - "290", - "291", - "292", - "293", - "294", - "295", - "296", - "297", - "298", - "299", - "300", - "301", - "302", - "303", - "304", - "305", - "WM_CTLCOLORMSGBOX", - "WM_CTLCOLOREDIT", - "WM_CTLCOLORLISTBOX", - "WM_CTLCOLORBTN", - "WM_CTLCOLORDLG", - "WM_CTLCOLORSCROLLBAR", - "WM_CTLCOLORSTATIC", - "313", - "314", - "315", - "316", - "317", - "318", - "319", - "320", - "321", - "322", - "323", - "324", - "325", - "326", - "327", - "328", - "329", - "330", - "331", - "332", - "333", - "334", - "335", - "336", - "337", - "338", - "339", - "340", - "341", - "342", - "343", - "344", - "345", - "346", - "347", - "348", - "349", - "350", - "351", - "352", - "353", - "354", - "355", - "356", - "357", - "358", - "359", - "360", - "361", - "362", - "363", - "364", - "365", - "366", - "367", - "368", - "369", - "370", - "371", - "372", - "373", - "374", - "375", - "376", - "377", - "378", - "379", - "380", - "381", - "382", - "383", - "384", - "385", - "386", - "387", - "388", - "389", - "390", - "391", - "392", - "393", - "394", - "395", - "396", - "397", - "398", - "399", - "400", - "401", - "402", - "403", - "404", - "405", - "406", - "407", - "408", - "409", - "410", - "411", - "412", - "413", - "414", - "415", - "416", - "417", - "418", - "419", - "420", - "421", - "422", - "423", - "424", - "425", - "426", - "427", - "428", - "429", - "430", - "431", - "432", - "433", - "434", - "435", - "436", - "437", - "438", - "439", - "440", - "441", - "442", - "443", - "444", - "445", - "446", - "447", - "448", - "449", - "450", - "451", - "452", - "453", - "454", - "455", - "456", - "457", - "458", - "459", - "460", - "461", - "462", - "463", - "464", - "465", - "466", - "467", - "468", - "469", - "470", - "471", - "472", - "473", - "474", - "475", - "476", - "477", - "478", - "479", - "480", - "481", - "482", - "483", - "484", - "485", - "486", - "487", - "488", - "489", - "490", - "491", - "492", - "493", - "494", - "495", - "496", - "497", - "498", - "499", - "500", - "501", - "502", - "503", - "504", - "505", - "506", - "507", - "508", - "509", - "510", - "511", - NULL /* WM_MOUSEMOVE */, - "WM_LBUTTONDOWN", - "WM_LBUTTONUP", - "WM_LBUTTONDBLCLK", - "WM_RBUTTONDOWN", - "WM_RBUTTONUP", - "WM_RBUTTONDBLCLK", - "WM_MBUTTONDOWN", - "WM_MBUTTONUP", - "WM_MBUTTONDBLCLK", - "WM_MOUSEWHEEL", - "WM_XBUTTONDOWN", - "WM_XBUTTONUP", - "WM_XBUTTONDBLCLK", - "526", - "527", - "WM_PARENTNOTIFY", - "WM_ENTERMENULOOP", - "WM_EXITMENULOOP", - "WM_NEXTMENU", - "WM_SIZING", - "WM_CAPTURECHANGED", - "WM_MOVING", - "535", - "WM_POWERBROADCAST", - "WM_DEVICECHANGE", - "538", - "539", - "540", - "541", - "542", - "543", - "WM_MDICREATE", - "WM_MDIDESTROY", - "WM_MDIACTIVATE", - "WM_MDIRESTORE", - "WM_MDINEXT", - "WM_MDIMAXIMIZE", - "WM_MDITILE", - "WM_MDICASCADE", - "WM_MDIICONARRANGE", - "WM_MDIGETACTIVE", - "554", - "555", - "556", - "557", - "558", - "559", - "WM_MDISETMENU", - "WM_ENTERSIZEMOVE", - "WM_EXITSIZEMOVE", - "WM_DROPFILES", - "WM_MDIREFRESHMENU", - "565", - "566", - "567", - "568", - "569", - "570", - "571", - "572", - "573", - "574", - "575", - "576", - "577", - "578", - "579", - "580", - "581", - "582", - "583", - "584", - "585", - "586", - "587", - "588", - "589", - "590", - "591", - "592", - "593", - "594", - "595", - "596", - "597", - "598", - "599", - "600", - "601", - "602", - "603", - "604", - "605", - "606", - "607", - "608", - "609", - "610", - "611", - "612", - "613", - "614", - "615", - "616", - "617", - "618", - "619", - "620", - "621", - "622", - "623", - "624", - "625", - "626", - "627", - "628", - "629", - "630", - "631", - "632", - "633", - "634", - "635", - "636", - "637", - "638", - "639", - "640", - "WM_IME_SETCONTEXT", - "WM_IME_NOTIFY", - "WM_IME_CONTROL", - "WM_IME_COMPOSITIONFULL", - "WM_IME_SELECT", - "WM_IME_CHAR", - "647", - "648", - "649", - "650", - "651", - "652", - "653", - "654", - "655", - "WM_IME_KEYDOWN", - "WM_IME_KEYUP", - "658", - "659", - "660", - "661", - "662", - "663", - "664", - "665", - "666", - "667", - "668", - "669", - "670", - "671", - "672", - "WM_MOUSEHOVER", - "674", - "WM_MOUSELEAVE", - "676", - "677", - "678", - "679", - "680", - "681", - "682", - "683", - "684", - "685", - "686", - "687", - "688", - "689", - "690", - "691", - "692", - "693", - "694", - "695", - "696", - "697", - "698", - "699", - "700", - "701", - "702", - "703", - "704", - "705", - "706", - "707", - "708", - "709", - "710", - "711", - "712", - "713", - "714", - "715", - "716", - "717", - "718", - "719", - "720", - "721", - "722", - "723", - "724", - "725", - "726", - "727", - "728", - "729", - "730", - "731", - "732", - "733", - "734", - "735", - "736", - "737", - "738", - "739", - "740", - "741", - "742", - "743", - "744", - "745", - "746", - "747", - "748", - "749", - "750", - "751", - "752", - "753", - "754", - "755", - "756", - "757", - "758", - "759", - "760", - "761", - "762", - "763", - "764", - "765", - "766", - "767", - "WM_CUT", - "WM_COPY", - "WM_PASTE", - "WM_CLEAR", - "WM_UNDO", - "WM_RENDERFORMAT", - "WM_RENDERALLFORMATS", - "WM_DESTROYCLIPBOARD", - "WM_DRAWCLIPBOARD", - "WM_PAINTCLIPBOARD", - "WM_VSCROLLCLIPBOARD", - "WM_SIZECLIPBOARD", - "WM_ASKCBFORMATNAME", - "WM_CHANGECBCHAIN", - "WM_HSCROLLCLIPBOARD", - "WM_QUERYNEWPALETTE", - "WM_PALETTEISCHANGING", - "WM_PALETTECHANGED", - "WM_HOTKEY", - "787", - "788", - "789", - "790", - "WM_PRINT", - "WM_PRINTCLIENT", - "793", - "794", - "795", - "796", - "797", - "798", - "799", - "800", - "801", - "802", - "803", - "804", - "805", - "806", - "807", - "808", - "809", - "810", - "811", - "812", - "813", - "814", - "815", - "816", - "817", - "818", - "819", - "820", - "821", - "822", - "823", - "824", - "825", - "826", - "827", - "828", - "829", - "830", - "831", - "832", - "833", - "834", - "835", - "836", - "837", - "838", - "839", - "840", - "841", - "842", - "843", - "844", - "845", - "846", - "847", - "848", - "849", - "850", - "851", - "852", - "853", - "854", - "855", - "856", - "857", - "858", - "859", - "860", - "861", - "862", - "863", - "864", - "865", - "866", - "867", - "868", - "869", - "870", - "871", - "872", - "873", - "874", - "875", - "876", - "877", - "878", - "879", - "880", - "881", - "882", - "883", - "884", - "885", - "886", - "887", - "888", - "889", - "890", - "891", - "892", - "893", - "894", - "895", - "896", - "897", - "898", - "899", - "900", - "901", - "902", - "903", - "904", - "905", - "906", - "907", - "908", - "909", - "910", - "911", - "912", - "913", - "914", - "915", - "916", - "917", - "918", - "919", - "920", - "921", - "922", - "923", - "924", - "925", - "926", - "927", - "928", - "929", - "930", - "931", - "932", - "933", - "934", - "935", - "936", - "937", - "938", - "939", - "940", - "941", - "942", - "943", - "944", - "945", - "946", - "947", - "948", - "949", - "950", - "951", - "952", - "953", - "954", - "955", - "956", - "957", - "958", - "959", - "960", - "961", - "962", - "963", - "964", - "965", - "966", - "967", - "968", - "969", - "970", - "971", - "972", - "973", - "974", - "975", - "976", - "977", - "978", - "979", - "980", - "981", - "982", - "983", - "984", - "985", - "986", - "987", - "988", - "989", - "990", - "991", - "992", - "993", - "994", - "995", - "996", - "997", - "998", - "999", - "1000", - "1001", - "1002", - "1003", - "1004", - "1005", - "1006", - "1007", - "1008", - "1009", - "1010", - "1011", - "1012", - "1013", - "1014", - "1015", - "1016", - "1017", - "1018", - "1019", - "1020", - "1021", - "1022", - "1023" -}; - diff --git a/hw/xwin/xlaunch/window/util.h b/hw/xwin/xlaunch/window/util.h deleted file mode 100644 index cd21da657..000000000 --- a/hw/xwin/xlaunch/window/util.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2005 Alexander Gottwald - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the sale, - * use or other dealings in this Software without prior written authorization. - */ -#ifndef __UTIL_H__ -#define __UTIL_H__ - -#include -#include - - -class win32_error : public std::runtime_error -{ - public: - static std::string message(DWORD code); - DWORD errorcode; - win32_error(const std::string &msg,DWORD code = GetLastError()) : std::runtime_error(msg + ":" + message(code)), errorcode(code) {}; -}; - -#define MESSAGE_NAMES_LEN 1024 -#define NOTIFY_NAMES_LEN 0 -class MessageDebug -{ - protected: - static const char * message_names[MESSAGE_NAMES_LEN]; - static const char * notify_names[NOTIFY_NAMES_LEN]; - public: - static void debug(HWND handle, UINT uMsg, WPARAM wParam, LPARAM lParam, const char *prefix); -}; - - -#endif diff --git a/hw/xwin/xlaunch/window/window.cc b/hw/xwin/xlaunch/window/window.cc deleted file mode 100755 index cca3a485a..000000000 --- a/hw/xwin/xlaunch/window/window.cc +++ /dev/null @@ -1,284 +0,0 @@ -/* - * Copyright (c) 2005 Alexander Gottwald - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the sale, - * use or other dealings in this Software without prior written authorization. - */ - -#include "window.h" -#include "util.h" -#include -#include - -CWindow::CWindowClass CWindow::windowClass("CWINDOWCLASS", DefWindowProc); - -CWindow::CWindowClass::CWindowClass(const char *_name, WNDPROC _wndproc) : - wndproc(_wndproc), atom(0), classname(_name) -{ - Register(); -} - -CWindow::CWindowClass::~CWindowClass() -{ - UnregisterClass(classname.c_str(), GetModuleHandle(NULL)); -} - -void CWindow::CWindowClass::Register() -{ - WNDCLASSEX wndclass; - memset(&wndclass, 0, sizeof(wndclass)); - wndclass.cbSize = sizeof(wndclass); - wndclass.style = 0; - wndclass.lpfnWndProc = wndproc; - wndclass.cbClsExtra = 0; - wndclass.cbWndExtra = 0; - wndclass.hInstance = GetModuleHandle(NULL); - wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); - wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); - wndclass.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE); - wndclass.lpszMenuName = NULL; - wndclass.lpszClassName = classname.c_str(); - wndclass.hIconSm = NULL; - atom = RegisterClassEx(&wndclass); - if (atom == 0) - throw win32_error("RegisterClassEx failed"); -} - -CWindow::CWindow(const char *_title) : title(_title), hwnd(NULL), parent(NULL), bounds(), owndproc(NULL), showing(FALSE) -{ - style = WS_CHILD; - exstyle = 0; -} - -HWND CWindow::CreateWindowHandle() -{ - HWND ret = CreateWindowEx( - exstyle, - GetClassName(), - title.c_str(), - style, - bounds.left, - bounds.top, - bounds.width, - bounds.height, - parent, - NULL, - GetModuleHandle(NULL), - 0 - ); - if (ret == NULL) - throw win32_error("CreateWindowEx failed"); - return ret; -} - -void CWindow::Create() -{ - if (hwnd != NULL) - return; - hwnd = CreateWindowHandle(); - if (hwnd == NULL) - throw win32_error("Could not create window"); - - // Reset the error code - DWORD err = 0; - SetLastError(err); - - // Attach the object reference to the window handle - SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)this); - err = GetLastError(); - if (err != 0) - throw win32_error("SetWindowLongPtr failed",err); - - // Set the window proc - owndproc = (WNDPROC)SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)WindowProc); - err = GetLastError(); - if (err != 0) - throw win32_error("SetWindowLongPtr failed",err); -} - -const char *CWindow::GetClassName() -{ - return windowClass.GetClassName(); -} - -LRESULT CALLBACK CWindow::WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) -{ - MessageDebug::debug(hwnd, uMsg, wParam, lParam, __FUNCTION__); - CWindow* window = (CWindow*)GetWindowLongPtr(hwnd, GWLP_USERDATA); - if (window != NULL) - return window->Dispatch(hwnd, uMsg, wParam, lParam); - return DefWindowProc(hwnd, uMsg, wParam, lParam); -} - -LRESULT CWindow::Dispatch(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) -{ - switch (uMsg) - { - case WM_SIZE: - bounds.width = LOWORD(lParam); - bounds.height = LOWORD(lParam); - break; - case WM_MOVE: - bounds.left = LOWORD(lParam); - bounds.top = LOWORD(lParam); - break; - case WM_DESTROY: - showing = FALSE; - break; - } - if (owndproc) - return CallWindowProc(owndproc, hwnd, uMsg, wParam, lParam); - else - return DefWindowProc(hwnd, uMsg, wParam, lParam); -} - -void CWindow::Show() -{ - if (hwnd == NULL) - Create(); - ShowWindow(hwnd, SW_SHOWNORMAL); -} - -int CWindow::ShowModal() -{ - MSG msg; - BOOL bRet; - showing = TRUE; - Show(); - - while( showing && (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0) - { - if (bRet == -1) - { - // handle the error and possibly exit - } - else - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - } - return 0; -} - -void CWindow::SetLeft(int left) -{ - bounds.left = left; - if (hwnd) - if (!SetWindowPos(hwnd, NULL, - bounds.left, bounds.top, - 0, 0, - SWP_NOZORDER | SWP_NOSIZE)) - throw win32_error("SetWindowPos failed"); -} - -void CWindow::SetTop(int top) -{ - bounds.top = top; - if (hwnd) - if (!SetWindowPos(hwnd, NULL, - bounds.left, bounds.top, - 0, 0, - SWP_NOZORDER | SWP_NOSIZE)) - throw win32_error("SetWindowPos failed"); -} - -void CWindow::SetWidth(int width) -{ - bounds.width = width; - if (hwnd) - if (!SetWindowPos(hwnd, NULL, - 0, 0, - bounds.width, bounds.height, - SWP_NOZORDER | SWP_NOMOVE)) - throw win32_error("SetWindowPos failed"); -} -void CWindow::SetHeight(int height) -{ - bounds.height = height; - if (hwnd) - if (!SetWindowPos(hwnd, NULL, - 0, 0, - bounds.width, bounds.height, - SWP_NOZORDER | SWP_NOMOVE)) - throw win32_error("SetWindowPos failed"); -} - -void CWindow::SetBounds(int left, int top, int width, int height) -{ - bounds = CBoundary(left, top, width, height); - if (hwnd) - if (!SetWindowPos(hwnd, NULL, - bounds.left, bounds.top, - bounds.width, bounds.height, - SWP_NOZORDER)) - throw win32_error("SetWindowPos failed"); -} - -void CWindow::SetBounds(const RECT &rect) -{ - bounds = rect; - if (hwnd) - if (!SetWindowPos(hwnd, NULL, - bounds.left, bounds.top, - bounds.width, bounds.height, - SWP_NOZORDER)) - throw win32_error("SetWindowPos failed"); -} - -HWND CWindow::GetHandle() -{ - if (hwnd == NULL) - Create(); - return hwnd; -} - -void CWindow::SetParent(CWindow *window) -{ - parent = window->GetHandle(); - if (hwnd != NULL) - if (::SetParent(hwnd, parent) == NULL) - throw win32_error("SetParent failed"); - -} - -void CWindow::SetStyle(DWORD style) -{ - this->style = style; - SetLastError(0); - if (hwnd) - SetWindowLong(hwnd, GWL_STYLE, style); - int err = GetLastError(); - if (err != 0) - throw win32_error("SetWindowLong failed", err); -} - -void CWindow::SetExStyle(DWORD exstyle) -{ - this->exstyle = exstyle; - SetLastError(0); - if (hwnd) - SetWindowLong(hwnd, GWL_EXSTYLE, exstyle); - int err = GetLastError(); - if (err != 0) - throw win32_error("SetWindowWLong failed", err); -} diff --git a/hw/xwin/xlaunch/window/window.h b/hw/xwin/xlaunch/window/window.h deleted file mode 100644 index baf401405..000000000 --- a/hw/xwin/xlaunch/window/window.h +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (c) 2005 Alexander Gottwald - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the sale, - * use or other dealings in this Software without prior written authorization. - */ -#ifndef __WINDOW_H__ -#define __WINDOW_H__ - -#include -#include - -class CDialog; -class CWindow -{ - friend class CDialog; - public: - struct CBoundary - { - int left; - int top; - int width; - int height; - CBoundary() : - left(0), top(0), width(0), height(0) {}; - CBoundary(int x, int y, int w, int h) : - left(x), top(y), width(w), height(h) {}; - CBoundary(const RECT &r) : - left(r.left), top(r.top), width(r.right-r.left), height(r.bottom-r.top) {}; - }; - class CWindowClass - { - private: - WNDPROC wndproc; - ATOM atom; - std::string classname; - protected: - void Register(); - public: - CWindowClass(const char *name, WNDPROC wndproc); - ~CWindowClass(); - const char *GetClassName() { return classname.c_str(); }; - }; - private: - static CWindowClass windowClass; - - std::string title; - DWORD exstyle; - DWORD style; - CBoundary bounds; - HWND hwnd; - HWND parent; - WNDPROC owndproc; - - BOOL showing; - - protected: - - virtual const char *GetClassName(); - virtual HWND CreateWindowHandle(); - static LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); - public: - CWindow(const char *title); - virtual void Create(); - - virtual int ShowModal(); - - void Show(); - void Hide(); - - void SetWidth(int width); - void SetHeight(int height); - void SetLeft(int left); - void SetTop(int top); - int GetWidth() { return bounds.width; }; - int GetHeight() { return bounds.height; }; - int GetLeft() { return bounds.left; }; - int GetTop() { return bounds.top; }; - - void SetBounds(int left, int top, int width, int height); - void SetBounds(const RECT &rect); - - void SetStyle(DWORD style); - DWORD GetStyle() { return style; }; - - void SetExStyle(DWORD exstyle); - DWORD GetExStyle() { return exstyle; }; - - HWND GetHandle(); - void SetParent(CWindow *window); - - virtual LRESULT Dispatch(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); -}; - -#endif diff --git a/hw/xwin/xlaunch/window/wizard.cc b/hw/xwin/xlaunch/window/wizard.cc deleted file mode 100755 index 9d6c71193..000000000 --- a/hw/xwin/xlaunch/window/wizard.cc +++ /dev/null @@ -1,244 +0,0 @@ -/* - * Copyright (c) 2005 Alexander Gottwald - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the sale, - * use or other dealings in this Software without prior written authorization. - */ -#include "wizard.h" -#include "util.h" - -CWizard::CWizard() : pages() -{ -}; - -void CWizard::AddPage(const PROPSHEETPAGE &page) -{ - pages.push_back(page); -} - -void CWizard::AddPage(const char *page, HINSTANCE instance) -{ - PROPSHEETPAGE psp; - if (instance == NULL) - instance = GetModuleHandle(NULL); - - memset(&psp, 0, sizeof(psp)); - psp.dwSize = sizeof(PROPSHEETPAGE); - psp.dwFlags = PSP_DEFAULT; - psp.hInstance = instance; - psp.pszTemplate = page; - psp.pfnDlgProc = WizardDialogProc; - psp.lParam = (LPARAM)this; - - AddPage(psp); -} - -void CWizard::AddPage(DWORD id, DWORD title, DWORD subtitle, HINSTANCE instance) -{ - PROPSHEETPAGE psp; - if (instance == NULL) - instance = GetModuleHandle(NULL); - - memset(&psp, 0, sizeof(psp)); - psp.dwSize = sizeof(PROPSHEETPAGE); - psp.dwFlags = PSP_DEFAULT; -#if _WIN32_IE >= 0x0500 - if (title != 0) - { - psp.dwFlags |= PSP_USEHEADERTITLE; - psp.pszHeaderTitle = MAKEINTRESOURCE(title); - } - if (subtitle != 0) - { - psp.dwFlags |= PSP_USEHEADERSUBTITLE; - psp.pszHeaderSubTitle = MAKEINTRESOURCE(subtitle); - } -#endif - - psp.hInstance = instance; - psp.pszTemplate = MAKEINTRESOURCE(id); - psp.pfnDlgProc = WizardDialogProc; - psp.lParam = (LPARAM)this; - - AddPage(psp); -} - -HWND CWizard::CreateWindowHandle() -{ - PROPSHEETHEADER psh; - HWND ret; - - PrepareSheetHeader(psh, FALSE); - ret = (HWND)PropertySheet(&psh); - free(psh.phpage); - if (ret == NULL) - throw win32_error("PropertySheet failed"); - return ret; -} - -int CWizard::ShowModal() -{ - PROPSHEETHEADER psh; - int ret; - - PrepareSheetHeader(psh, TRUE); - ret = PropertySheet(&psh); - free(psh.phpage); - return ret; -} - -void CWizard::PrepareSheetHeader(PROPSHEETHEADER &psh, BOOL modal) -{ - HPROPSHEETPAGE *phpage = (HPROPSHEETPAGE*)malloc(pages.size() * sizeof(HPROPSHEETPAGE)); - DWORD modeflag; - - if (modal) - modeflag = 0; - else - modeflag = PSH_MODELESS; - - for (unsigned i = 0; i < pages.size(); i++) - { - phpage[i] = CreatePropertySheetPage(&pages[i]); - if (phpage[i] == NULL) - { - DWORD err = GetLastError(); - free(phpage); - throw win32_error("CreatePropertySheetPage failed", err); - } - } - - memset(&psh, 0, sizeof(psh)); - psh.dwSize = sizeof(PROPSHEETHEADER); -#if _WIN32_IE >= 0x0500 - psh.dwFlags = PSH_WIZARD97 | modeflag; -#else - psh.dwFlags = PSH_WIZARD | modeflag; -#endif - psh.hwndParent = NULL; - psh.hInstance = GetModuleHandle(NULL); - psh.pszIcon = NULL; - psh.pszCaption = (LPSTR) "Cell Properties"; - psh.nPages = pages.size(); - psh.nStartPage = 0; - psh.phpage = phpage; - psh.pfnCallback = NULL; -} - -DWORD CWizard::PageID(unsigned index) -{ - if (index < pages.size() && IS_INTRESOURCE(pages[index].pszTemplate)) - return (DWORD)pages[index].pszTemplate; - return (DWORD)-1; -} - -unsigned CWizard::PageIndex(PROPSHEETPAGE *psp) -{ - for (unsigned i = 0; i < pages.size(); i++) - { - if (IS_INTRESOURCE(psp->pszTemplate) || IS_INTRESOURCE(pages[i].pszTemplate )) - { - if (psp->pszTemplate == pages[i].pszTemplate) - return i; - } - else if (psp->pszTemplate && pages[i].pszTemplate) - { - if (strcmp(psp->pszTemplate, pages[i].pszTemplate) == 0) - return i; - } - } - return (unsigned)-1; -} - -INT_PTR CWizard::DlgDispatch(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) -{ - return CBaseDialog::DlgDispatch(hwndDlg, uMsg, wParam, lParam); -} - -INT_PTR CWizard::PageDispatch(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam, PROPSHEETPAGE *psp) -{ - LPNMHDR pnmh = (LPNMHDR)lParam; - DWORD flags; - unsigned pageindex; - switch (uMsg) - { - case WM_NOTIFY: - switch (pnmh->code) - { - case PSN_SETACTIVE: -#ifdef _DEBUG - printf("PSN_SETACTIVE %d\n", PageIndex(psp)); -#endif - pageindex = PageIndex(psp); - if (pageindex != (unsigned)-1) - { - flags = 0; - if (pageindex > 0) - flags |= PSWIZB_BACK; - if ((unsigned)pageindex + 1 == pages.size()) - flags |= PSWIZB_FINISH; - if ((unsigned)pageindex + 1 < pages.size()) - flags |= PSWIZB_NEXT; - PropSheet_SetWizButtons(GetParent(hwndDlg), flags); - } - WizardActivate(hwndDlg, pageindex); - break; - case PSN_WIZNEXT: - if (WizardNext(hwndDlg, PageIndex(psp))) - return TRUE; - break; - case PSN_WIZBACK: - if (WizardBack(hwndDlg, PageIndex(psp))) - return TRUE; - break; - case PSN_WIZFINISH: - if (WizardFinish(hwndDlg, PageIndex(psp))) - return TRUE; - DestroyWindow(GetParent(hwndDlg)); - case PSN_RESET: - if (WizardReset(hwndDlg, PageIndex(psp))) - return TRUE; - DestroyWindow(GetParent(hwndDlg)); - break; - } - } - return DlgDispatch(hwndDlg, uMsg, wParam, lParam); -} - - -INT_PTR CALLBACK CWizard::WizardDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) -{ - MessageDebug::debug(hwndDlg, uMsg, wParam, lParam, __FUNCTION__); - PROPSHEETPAGE *psp = (PROPSHEETPAGE*)lParam; - switch (uMsg) - { - case WM_INITDIALOG: - SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)psp); - break; - } - psp = (PROPSHEETPAGE*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - CWizard* wizard = psp?(CWizard*)psp->lParam:NULL; - if (wizard != NULL) - return wizard->PageDispatch(hwndDlg, uMsg, wParam, lParam, psp); - return FALSE; -} - diff --git a/hw/xwin/xlaunch/window/wizard.h b/hw/xwin/xlaunch/window/wizard.h deleted file mode 100644 index a2361c51c..000000000 --- a/hw/xwin/xlaunch/window/wizard.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2005 Alexander Gottwald - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR - * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name(s) of the above copyright - * holders shall not be used in advertising or otherwise to promote the sale, - * use or other dealings in this Software without prior written authorization. - */ -#ifndef __WIZARD_H__ -#define __WIZARD_H__ - -#include "dialog.h" -#include - -#define _WIN32_IE 0x0500 -#include - -class CWizard : public CBaseDialog -{ - private: - std::vector pages; - void PrepareSheetHeader(PROPSHEETHEADER &psh, BOOL modal); - protected: - virtual HWND CreateWindowHandle(); - static INT_PTR CALLBACK WizardDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); - virtual INT_PTR DlgDispatch(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); - virtual INT_PTR PageDispatch(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam, PROPSHEETPAGE *psp); - virtual unsigned PageIndex(PROPSHEETPAGE *psp); - virtual DWORD PageID(unsigned index); - virtual BOOL WizardNext(HWND hwndDlg, unsigned index) { return FALSE; } - virtual BOOL WizardBack(HWND hwndDlg, unsigned index) { return FALSE; } - virtual BOOL WizardFinish(HWND hwndDlg, unsigned index) { return FALSE; } - virtual BOOL WizardReset(HWND hwndDlg, unsigned index) { return FALSE; } - virtual BOOL WizardActivate(HWND hwndDlg, unsigned index) { return FALSE; } - public: - CWizard(); - void AddPage(const PROPSHEETPAGE &page); - void AddPage(const char *page, HINSTANCE instance = NULL); - void AddPage(DWORD id, DWORD title, DWORD subtitle, HINSTANCE instance = NULL); - virtual int ShowModal(); -}; -#endif