xref: /netbsd-src/sys/arch/hpc/stand/hpcboot/menu/rootwindow.h (revision ce099b40997c43048fb78bd578195f81d2456523)
1 /* -*-C++-*-	$NetBSD: rootwindow.h,v 1.9 2008/04/28 20:23:20 martin Exp $	*/
2 
3 /*-
4  * Copyright (c) 2001 The NetBSD Foundation, Inc.
5  * All rights reserved.
6  *
7  * This code is derived from software contributed to The NetBSD Foundation
8  * by UCHIYAMA Yasushi.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  * 1. Redistributions of source code must retain the above copyright
14  *    notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  *    notice, this list of conditions and the following disclaimer in the
17  *    documentation and/or other materials provided with the distribution.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31 
32 #ifndef _HPCBOOT_ROOTWINDOW_H_
33 #define	_HPCBOOT_ROOTWINDOW_H_
34 
35 class TabWindow;
36 class TabBaseWindow;
37 
38 class RootWindow : public Window {
39 public:
40 	BootButton	*_boot_button;
41 	CancelButton	*_cancel_button;
42 	ProgressBar	*_progress_bar;
43 	TabWindowBase	*_base;
44 	TabWindow	*_main;
45 	TabWindow	*_option;
46 	TabWindow	*_console;
47 
48 	int _button_width;
49 	int _button_height;
50 
51 private:
52 	HWND _saved_focus;
53 	void SaveFocus();
54 	void RestoreFocus();
55 	void WMCreate(HWND, LPCREATESTRUCT);
56 	void WMPaint(HWND, LPCREATESTRUCT);
57 
58 public:
59 	RootWindow(HpcBootApp &);
60 	virtual ~RootWindow(void);
61 	virtual BOOL create(LPCREATESTRUCT);
62 	virtual BOOL proc(HWND, UINT, WPARAM, LPARAM);
63 
64 	void disableTimer(void);
65 	BOOL isDialogMessage(MSG &);
66 	BOOL focusManagerHook(MSG &, HWND);
67 
68 	void progress(const char * = NULL);
69 	void unprogress();
70 };
71 
72 class BootButton : public Window
73 {
74 private:
75 	RootWindow &_root;
76 public:
BootButton(HpcBootApp & app,RootWindow & root,RECT & rect)77 	BootButton(HpcBootApp &app, RootWindow &root, RECT &rect)
78 		: Window(app, root._window), _root(root) {
79 		_rect = rect;
80 	}
~BootButton(void)81 	virtual ~BootButton(void) { /* NO-OP */ }
82 	virtual BOOL create(LPCREATESTRUCT aux);
83 };
84 
85 class CancelButton : public Window
86 {
87 private:
88 	RootWindow &_root;
89 public:
CancelButton(HpcBootApp & app,RootWindow & root,RECT & rect)90 	CancelButton(HpcBootApp &app, RootWindow &root, RECT &rect)
91 		: Window(app, root._window), _root(root) {
92 		_rect = rect;
93 	}
~CancelButton(void)94 	virtual ~CancelButton(void) { /* NO-OP */ }
95 	virtual BOOL create(LPCREATESTRUCT aux);
96 };
97 
98 class ProgressBar : public Window
99 {
100 private:
101 	RootWindow &_root;
102 public:
ProgressBar(HpcBootApp & app,RootWindow & root,RECT & rect)103 	ProgressBar(HpcBootApp &app, RootWindow &root, RECT &rect)
104 		: Window(app, root._window), _root(root) {
105 		_rect = rect;
106 	}
~ProgressBar(void)107 	virtual ~ProgressBar(void) { /* NO-OP */ }
108 	virtual BOOL create(LPCREATESTRUCT aux);
109 };
110 
111 #endif // _HPCBOOT_TABWINDOW_H_
112