root/src/apps/terminal/TermApp.h
/*
 * Copyright 2001-2018, Haiku.
 * Copyright (c) 2003-2004 Kian Duffy <myob@users.sourceforge.net>
 * Parts Copyright (C) 1998,99 Kazuho Okui and Takashi Murai.
 *
 * Distributed under the terms of the MIT License.
 *
 * Authors:
 *              Jeremiah Bailey, <jjbailey@gmail.com>
 *              Kian Duffy, <myob@users.sourceforge.net>
 *              Siarzhuk Zharski, <zharik@gmx.li>
 */


#ifndef TERM_APP_H
#define TERM_APP_H


#include <Application.h>
#include <Catalog.h>
#include <File.h>
#include <String.h>

#include "Colors.h"

class Arguments;
class BRect;
class BWindow;


class TermApp : public BApplication {
public:
                                                                TermApp();
        virtual                                         ~TermApp();

        static const rgb_color*         DefaultPalette()
                                                                        { return fDefaultPalette; }
protected:
        virtual void                            ReadyToRun();
        virtual bool                            QuitRequested();
        virtual void                            Quit();
        virtual void                            MessageReceived(BMessage* message);
        virtual void                            RefsReceived(BMessage* message);
        virtual void                            ArgvReceived(int32 argc, char** argv);

private:
                        status_t                        _MakeTermWindow();

        static  void                            _SigChildHandler(int signal, void* data);
        static  status_t                        _ChildCleanupThreadEntry(void* data);
                        status_t                        _ChildCleanupThread();

                        void                            _Usage(char *name);
                        void                            _InitDefaultPalette();
private:
                        thread_id                       fChildCleanupThread;
                        bool                            fTerminating;

                        BWindow*                        fTermWindow;
                        Arguments*                      fArgs;
        static  rgb_color                       fDefaultPalette[kTermColorCount];
};


#endif  // TERM_APP_H