File: messagebox.cc

package info (click to toggle)
yapet 0.6-3
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 6,012 kB
  • ctags: 2,913
  • sloc: ansic: 13,661; cpp: 11,384; sh: 4,814; makefile: 847; yacc: 291; sed: 16
file content (116 lines) | stat: -rw-r--r-- 3,103 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
// $Id: messagebox.cc 2719 2009-08-20 01:30:25Z rafi $
//
// Copyright (C) 2008, 2009  Rafael Ostertag
//
// This file is part of YAPET.
//
// YAPET 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 3 of the License, or (at your option) any later
// version.
//
// YAPET 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
// YAPET.  If not, see <http://www.gnu.org/licenses/>.
//

#include "../intl.h"
#include "messagebox.h"
#include "colors.h"

using namespace YAPET::UI;

void
MessageBox::createWindow() throw (UIException) {
    if (window != NULL)
        throw UIException (_ ("May you consider deleting the window before reallocating") );

    if (okbutton != NULL)
        throw UIException (_ ("May you consider deleting the button before reallocating") );

    window = newwin (BASE_HEIGHT,
                     getWidth(),
                     getStartY(),
                     getStartX() );

    if (window == NULL)
        throw UIException (_ ("Error creating message window") );

    okbutton = new Button (_ ("OK"), getStartX() + 1, getStartY() + BASE_HEIGHT - 2);
}

MessageBox::MessageBox (std::string t, std::string m) throw (UIException) : window (NULL),
        okbutton (NULL),
        title (t),
        message (m) {
    createWindow();
}

MessageBox::~MessageBox() {
    delete okbutton;
    wclear (window);
    delwin (window);
}

int
MessageBox::run() throw (UIException) {
    refresh();
    int ch;

    while ( (ch = okbutton->focus() ) == KEY_REFRESH )
        BaseWindow::refreshAll();

    return ch;
}

void
MessageBox::resize() throw (UIException) {
    delete okbutton;
    int retval = delwin (window);

    if (retval == ERR)
        throw UIException (_ ("Error deleting message box") );

    okbutton = NULL;
    window = NULL;
    createWindow();
}

void
MessageBox::refresh() throw (UIException) {
    Colors::setcolor (window, MESSAGEBOX);
    int retval = werase (window);

    if (retval == ERR)
        throw UIException (_ ("Error erasing window") );

    retval = box (window, 0, 0);

    if (retval == ERR)
        throw UIException (_ ("Error creating box around message window") );

    Colors::setcolor (window, MESSAGEBOX);
    retval = mymvwaddstr (window, 2, 2, message.c_str() );

    if (retval == ERR)
        throw UIException (_ ("Error printing message") );

    // Title
    Colors::setcolor (window, MESSAGEBOX_TITLE);
    retval = mymvwaddstr (window, 0, 2, title.c_str() );

    if (retval == ERR)
        throw UIException (_ ("Error printing title") );

    Colors::setcolor (window, MESSAGEBOX);
    retval = wrefresh (window);

    if (retval == ERR)
        throw UIException (_ ("Error refreshing message box") );

    okbutton->refresh();
}