xref: /haiku/src/apps/terminal/TermApp.h (revision e0ef64750f3169cd634bb2f7a001e22488b05231)
1 /*
2  * Copyright 2001-2008, Haiku.
3  * Copyright (c) 2003-4 Kian Duffy <myob@users.sourceforge.net>
4  * Parts Copyright (C) 1998,99 Kazuho Okui and Takashi Murai.
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining
7  * a copy of this software and associated documentation files or portions
8  * thereof (the "Software"), to deal in the Software without restriction,
9  * including without limitation the rights to use, copy, modify, merge,
10  * publish, distribute, sublicense, and/or sell copies of the Software,
11  * and to permit persons to whom the Software is furnished to do so, subject
12  * to the following conditions:
13  *
14  *  * Redistributions of source code must retain the above copyright notice,
15  *    this list of conditions and the following disclaimer.
16  *
17  *  * Redistributions in binary form must reproduce the above copyright notice
18  *    in the  binary, as well as this list of conditions and the following
19  *    disclaimer in the documentation and/or other materials provided with
20  *    the distribution.
21  *
22  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
23  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
25  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
28  * THE SOFTWARE.
29  *
30  */
31 #ifndef TERM_APP_H
32 #define TERM_APP_H
33 
34 
35 #include <Application.h>
36 #include <Catalog.h>
37 #include <File.h>
38 #include <String.h>
39 
40 class Arguments;
41 class BRect;
42 class BWindow;
43 class TermApp : public BApplication {
44 	public:
45 		TermApp();
46 		virtual ~TermApp();
47 
48 	protected:
49 		void ReadyToRun();
50 		void Quit();
51 		void AboutRequested();
52 		void MessageReceived(BMessage* message);
53 		void RefsReceived(BMessage* message);
54 		void ArgvReceived(int32 argc, char** argv);
55 
56 	private:
57 		status_t _MakeTermWindow(BRect& frame, uint32 workspaces);
58 		status_t _GetWindowPositionFile(BFile* file, uint32 openMode);
59 		status_t _LoadWindowPosition(BRect* frame, uint32* workspaces);
60 		status_t _SaveWindowPosition(BMessage* message);
61 		void _SwitchTerm();
62 		void _ActivateTermWindow(team_id id);
63 		bool _IsSwitchTarget(team_id id);
64 		void _SanitizeIDs(BMessage* data, uint8* windows, ssize_t length);
65 		bool _UpdateIDs(bool set, uint8* windows, ssize_t maxLength,
66 			ssize_t* _length);
67 		void _UpdateRegistration(bool set);
68 		void _UnregisterTerminal();
69 		void _RegisterTerminal();
70 
71 		void _HandleChildCleanup();
72 		static void _SigChildHandler(int signal, void* data);
73 		static status_t _ChildCleanupThread(void* data);
74 
75 		void _Usage(char *name);
76 
77 		bool		fStartFullscreen;
78 		BString		fWindowTitle;
79 		int32		fWindowNumber;
80 
81 		BWindow*	fTermWindow;
82 		BRect		fTermFrame;
83 		uint32		fTermWorkspaces;
84 		Arguments	*fArgs;
85 };
86 
87 #endif	// TERM_APP_H
88