Changeset View
Changeset View
Standalone View
Standalone View
b/fltk/pinwindow.h
| /* | |||||
| pinwindow.h - PinWindow is a simple fltk dialog for entring password | |||||
| with timeout. if needed description (long text), error message, qualitybar | |||||
| and etc should used PassWindow. | |||||
| Copyright (C) 2016 Anatoly madRat L. Berenblit | |||||
| Written by Anatoly madRat L. Berenblit <madrat-@users.noreply.github.com>. | |||||
| This program is free software; you can redistribute it and/or | |||||
| modify it under the terms of the GNU General Public License as | |||||
| published by the Free Software Foundation; either version 2 of the | |||||
| License, or (at your option) any later version. | |||||
| This program is distributed in the hope that it will be useful, but | |||||
| WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
| General Public License for more details. | |||||
| You should have received a copy of the GNU General Public License | |||||
| along with this program; if not, write to the Free Software | |||||
| Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
| */ | |||||
| #ifndef __PINWINDOW_H__ | |||||
| #define __PINWINDOW_H__ | |||||
| #include "config.h" | |||||
| class Fl_Window; | |||||
| class Fl_Box; | |||||
| class Fl_Input; | |||||
| class Fl_Button; | |||||
| class Fl_Widget; | |||||
| #include <assert.h> | |||||
| #include <string> | |||||
| class PinWindow | |||||
| { | |||||
| protected: | |||||
| static const char *TITLE; | |||||
| static const char *BUTTON_OK; | |||||
| static const char *BUTTON_CANCEL; | |||||
| static const char *PROMPT; | |||||
| protected: | |||||
| PinWindow(const PinWindow&); | |||||
| PinWindow& operator=(const PinWindow&); | |||||
| Fl_Window *window_; | |||||
| Fl_Box *icon_; | |||||
| Fl_Box *message_; | |||||
| Fl_Input *input_; | |||||
| Fl_Button *ok_, *cancel_; | |||||
| std::string cancel_name_; | |||||
| char *passwd_; // SECURE_MEMORY | |||||
| unsigned int timeout_; // click cancel if timeout | |||||
| public: | |||||
| virtual ~PinWindow(); | |||||
| static PinWindow* create(); | |||||
| inline const char* passwd() const { return passwd_; } | |||||
| virtual void timeout(unsigned int time); // 0 - infinity, seconds | |||||
| virtual void title(const char *title); | |||||
| virtual void ok(const char* ok); | |||||
| virtual void cancel(const char* cancel); | |||||
| virtual void prompt(const char *message); | |||||
| virtual void showModal(); | |||||
| virtual void showModal(const int argc, char* argv[]); | |||||
| protected: | |||||
| PinWindow(); | |||||
| void wipe(); // clear UI memory | |||||
| void release(); // clear secure memory | |||||
| void update_cancel_label(); | |||||
| virtual int init(const int cx, const int cy); | |||||
| //callbacks | |||||
| static void cancel_cb(Fl_Widget *button, void *val); | |||||
| static void ok_cb(Fl_Widget *button, void *val); | |||||
| static void timeout_cb(void*); | |||||
| // ISSUE: Fl_Window component in tinycore works only as Fl_Window::label(...); not Fl_Widget | |||||
| template <class TWidget> void set_label(TWidget* widget, const char *label, const char *def) | |||||
| { | |||||
| assert(NULL != widget); // widget must be created | |||||
| if (NULL != widget) | |||||
| { | |||||
| if (NULL != label && 0 != *label) | |||||
| widget->copy_label(label); | |||||
| else | |||||
| widget->label(def); | |||||
| } | |||||
| }; | |||||
| }; | |||||
| #endif //#ifndef __PINWINDOW_H__ | |||||