// * This makes emacs happy -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright 2019-2020,2021 Thomas E. Dickey *
+ * Copyright 1998-2005,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1997 *
+ * Author: Juergen Pfeifer, 1997 *
****************************************************************************/
-// $Id: cursesapp.h,v 1.5 1999/05/16 17:29:59 juergen Exp $
+// $Id: cursesapp.h,v 1.18 2021/06/17 21:26:02 tom Exp $
-#ifndef _CURSESAPP_H
-#define _CURSESAPP_H
+#ifndef NCURSES_CURSESAPP_H_incl
+#define NCURSES_CURSESAPP_H_incl
#include <cursslk.h>
-class NCursesApplication {
+#if (defined(_WIN32) || defined(_WIN64))
+# define NCURSES_CXX_MAIN_NAME cursespp_main
+# define NCURSES_CXX_MAIN \
+ int main(int argc, char *argv[]) { \
+ return NCURSES_CXX_MAIN_NAME(argc, argv); \
+ }
+#else
+# define NCURSES_CXX_MAIN_NAME main
+#endif
+NCURSES_CXX_IMPEXP int NCURSES_CXX_MAIN_NAME(int argc, char *argv[]);
+
+class NCURSES_CXX_IMPEXP NCursesApplication {
public:
typedef struct _slk_link { // This structure is used to maintain
struct _slk_link* prev; // a stack of SLKs
// This method is called to initialize the SLKs. Default is nothing.
// You may rewrite this in your derived class
virtual void init_labels(Soft_Label_Key_Set& S) const {
+ (void) S;
}
// Your derived class must implement this method. The return value must
// be the exit value of your application.
virtual int run() = 0;
-
// The constructor is protected, so you may use it in your derived
// class constructor. The argument tells whether or not you want colors.
NCursesApplication(bool wantColors = FALSE);
+ NCursesApplication& operator=(const NCursesApplication& rhs)
+ {
+ if (this != &rhs) {
+ *this = rhs;
+ }
+ return *this;
+ }
+
+ NCursesApplication(const NCursesApplication& rhs)
+ : b_Colors(rhs.b_Colors),
+ Root_Window(rhs.Root_Window)
+ {
+ }
+
+ static NCursesWindow *&getTitleWindow();
+
public:
- virtual ~NCursesApplication();
+ virtual ~NCursesApplication() THROWS(NCursesException);
// Get a pointer to the current application object
- static NCursesApplication* getApplication() {
- return theApp;
- }
+ static NCursesApplication* getApplication();
// This method runs the application and returns its exit value
int operator()(void);
// Process the commandline arguments. The default implementation simply
// ignores them. Your derived class may rewrite this.
virtual void handleArgs(int argc, char* argv[]) {
+ (void) argc;
+ (void) argv;
}
// Does this application use colors?
// Attributes to use for menu and forms foregrounds
virtual chtype foregrounds() const {
- return b_Colors ? COLOR_PAIR(1) : A_BOLD;
+ return b_Colors ? static_cast<chtype>(COLOR_PAIR(1)) : A_BOLD;
}
// Attributes to use for menu and forms backgrounds
virtual chtype backgrounds() const {
- return b_Colors ? COLOR_PAIR(2) : A_NORMAL;
+ return b_Colors ? static_cast<chtype>(COLOR_PAIR(2)) : A_NORMAL;
}
// Attributes to use for inactive (menu) elements
virtual chtype inactives() const {
- return b_Colors ? (COLOR_PAIR(3)|A_DIM) : A_DIM;
+ return b_Colors ? static_cast<chtype>(COLOR_PAIR(3)|A_DIM) : A_DIM;
}
// Attributes to use for (form) labels and SLKs
virtual chtype labels() const {
- return b_Colors ? COLOR_PAIR(4) : A_NORMAL;
+ return b_Colors ? static_cast<chtype>(COLOR_PAIR(4)) : A_NORMAL;
}
// Attributes to use for form backgrounds
virtual chtype dialog_backgrounds() const {
- return b_Colors ? COLOR_PAIR(4) : A_NORMAL;
+ return b_Colors ? static_cast<chtype>(COLOR_PAIR(4)) : A_NORMAL;
}
// Attributes to use as default for (form) window backgrounds
virtual chtype window_backgrounds() const {
- return b_Colors ? COLOR_PAIR(5) : A_NORMAL;
+ return b_Colors ? static_cast<chtype>(COLOR_PAIR(5)) : A_NORMAL;
}
// Attributes to use for the title window
virtual chtype screen_titles() const {
- return b_Colors ? COLOR_PAIR(6) : A_BOLD;
+ return b_Colors ? static_cast<chtype>(COLOR_PAIR(6)) : A_BOLD;
}
};
-
-#endif // _CURSESAPP_H
+
+#endif /* NCURSES_CURSESAPP_H_incl */