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