libyui-ncurses  2.44.1
 All Classes Functions Variables
NCPushButton.cc
1 /*
2  Copyright (C) 2000-2012 Novell, Inc
3  This library is free software; you can redistribute it and/or modify
4  it under the terms of the GNU Lesser General Public License as
5  published by the Free Software Foundation; either version 2.1 of the
6  License, or (at your option) version 3.0 of the License. This library
7  is distributed in the hope that it will be useful, but WITHOUT ANY
8  WARRANTY; without even the implied warranty of MERCHANTABILITY or
9  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
10  License for more details. You should have received a copy of the GNU
11  Lesser General Public License along with this library; if not, write
12  to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
13  Floor, Boston, MA 02110-1301 USA
14 */
15 
16 
17 /*-/
18 
19  File: NCPushButton.cc
20 
21  Author: Michael Andres <ma@suse.de>
22 
23 /-*/
24 
25 #define YUILogComponent "ncurses"
26 #include <yui/YUILog.h>
27 #include <yui/YDialog.h>
28 #include "NCDialog.h"
29 #include "NCurses.h"
30 #include "NCPushButton.h"
31 
32 
33 NCPushButton::NCPushButton( YWidget * parent, const std::string & nlabel )
34  : YPushButton( parent, nlabel )
35  , NCWidget( parent )
36 {
37  yuiDebug() << std::endl;
38  setLabel( nlabel );
39  hotlabel = &label;
40 }
41 
42 
43 NCPushButton::~NCPushButton()
44 {
45  yuiDebug() << std::endl;
46 }
47 
48 
49 int NCPushButton::preferredWidth()
50 {
51  wsze defsize = wGetDefsze();
52  return wGetDefsze().W;
53 }
54 
55 
56 int NCPushButton::preferredHeight()
57 {
58  return wGetDefsze().H;
59 }
60 
61 
62 void NCPushButton::setEnabled( bool do_bv )
63 {
64  NCWidget::setEnabled( do_bv );
65  YPushButton::setEnabled( do_bv );
66 }
67 
68 
69 void NCPushButton::setSize( int newwidth, int newheight )
70 {
71  wRelocate( wpos( 0 ), wsze( newheight, newwidth ) );
72 }
73 
74 
75 NCursesEvent NCPushButton::wHandleInput( wint_t key )
76 {
77  NCursesEvent ret;
78 
79  switch ( key )
80  {
81  case KEY_HOTKEY:
82  case KEY_RETURN:
83  ret = NCursesEvent::Activated;
84  break;
85  }
86 
87  return ret;
88 }
89 
90 
91 void NCPushButton::setLabel( const std::string & nlabel )
92 {
93  label = NCstring( nlabel );
94  label.stripHotkey();
95  defsze = wsze( label.height(), label.width() + 2 );
96  YPushButton::setLabel( nlabel );
97  Redraw();
98 }
99 
100 
101 void NCPushButton::wRedraw()
102 {
103  if ( !win )
104  return;
105 
106  const NCstyle::StWidget & style( widgetStyle() );
107 
108  win->bkgd( style.plain );
109 
110  win->clear();
111 
112  if ( label.height() <= 1 )
113  {
114  win->printw( 0, 0, "[" );
115  win->printw( 0, win->maxx(), "]" );
116  }
117  else
118  {
119  win->box();
120  }
121 
122  label.drawAt( *win, style, wpos( 0, 1 ), wsze( -1, win->width() - 2 ),
123  NC::CENTER );
124 }
virtual void setEnabled(bool do_bv)
Definition: NCPushButton.cc:62
int printw(const char *fmt,...)
Definition: ncursesw.cc:75
int bkgd(const chtype ch)
Definition: ncursesw.h:1443
int maxx() const
Definition: ncursesw.h:1090
Definition: position.h:109
virtual void setEnabled(bool do_bv)=0
Definition: NCWidget.cc:391
Definition: position.h:154
int width() const
Definition: ncursesw.h:1075