root/lib/widget/groupbox.c

/* [previous][next][first][last][top][bottom][index][help]  */

DEFINITIONS

This source file includes following definitions.
  1. groupbox_callback
  2. groupbox_new
  3. groupbox_set_title

   1 /*
   2    Widgets for the Midnight Commander
   3 
   4    Copyright (C) 1994-2019
   5    Free Software Foundation, Inc.
   6 
   7    Authors:
   8    Radek Doulik, 1994, 1995
   9    Miguel de Icaza, 1994, 1995
  10    Jakub Jelinek, 1995
  11    Andrej Borsenkow, 1996
  12    Norbert Warmuth, 1997
  13    Andrew Borodin <aborodin@vmail.ru>, 2009, 2010, 2013
  14 
  15    This file is part of the Midnight Commander.
  16 
  17    The Midnight Commander is free software: you can redistribute it
  18    and/or modify it under the terms of the GNU General Public License as
  19    published by the Free Software Foundation, either version 3 of the License,
  20    or (at your option) any later version.
  21 
  22    The Midnight Commander is distributed in the hope that it will be useful,
  23    but WITHOUT ANY WARRANTY; without even the implied warranty of
  24    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  25    GNU General Public License for more details.
  26 
  27    You should have received a copy of the GNU General Public License
  28    along with this program.  If not, see <http://www.gnu.org/licenses/>.
  29  */
  30 
  31 /** \file groupbox.c
  32  *  \brief Source: WGroupbox widget
  33  */
  34 
  35 #include <config.h>
  36 
  37 #include "lib/global.h"
  38 
  39 #include "lib/tty/tty.h"
  40 #include "lib/tty/color.h"
  41 #include "lib/skin.h"
  42 #include "lib/util.h"
  43 #include "lib/widget.h"
  44 
  45 /*** global variables ****************************************************************************/
  46 
  47 /*** file scope macro definitions ****************************************************************/
  48 
  49 /*** file scope type declarations ****************************************************************/
  50 
  51 /*** file scope variables ************************************************************************/
  52 
  53 /*** file scope functions ************************************************************************/
  54 
  55 static cb_ret_t
  56 groupbox_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *data)
     /* [previous][next][first][last][top][bottom][index][help]  */
  57 {
  58     WGroupbox *g = GROUPBOX (w);
  59 
  60     switch (msg)
  61     {
  62     case MSG_DRAW:
  63         {
  64             WDialog *h = w->owner;
  65 
  66             gboolean disabled;
  67 
  68             disabled = widget_get_state (w, WST_DISABLED);
  69             tty_setcolor (disabled ? DISABLED_COLOR : h->color[DLG_COLOR_NORMAL]);
  70             tty_draw_box (w->y, w->x, w->lines, w->cols, TRUE);
  71 
  72             if (g->title != NULL)
  73             {
  74                 tty_setcolor (disabled ? DISABLED_COLOR : h->color[DLG_COLOR_TITLE]);
  75                 widget_move (w, 0, 1);
  76                 tty_print_string (g->title);
  77             }
  78             return MSG_HANDLED;
  79         }
  80 
  81     case MSG_DESTROY:
  82         g_free (g->title);
  83         return MSG_HANDLED;
  84 
  85     default:
  86         return widget_default_callback (w, sender, msg, parm, data);
  87     }
  88 }
  89 
  90 /* --------------------------------------------------------------------------------------------- */
  91 /*** public functions ****************************************************************************/
  92 /* --------------------------------------------------------------------------------------------- */
  93 
  94 WGroupbox *
  95 groupbox_new (int y, int x, int height, int width, const char *title)
     /* [previous][next][first][last][top][bottom][index][help]  */
  96 {
  97     WGroupbox *g;
  98     Widget *w;
  99 
 100     g = g_new (WGroupbox, 1);
 101     w = WIDGET (g);
 102     widget_init (w, y, x, height, width, groupbox_callback, NULL);
 103 
 104     g->title = NULL;
 105     groupbox_set_title (g, title);
 106 
 107     return g;
 108 }
 109 
 110 /* --------------------------------------------------------------------------------------------- */
 111 
 112 void
 113 groupbox_set_title (WGroupbox * g, const char *title)
     /* [previous][next][first][last][top][bottom][index][help]  */
 114 {
 115     MC_PTR_FREE (g->title);
 116 
 117     /* Strip existing spaces, add one space before and after the title */
 118     if (title != NULL && *title != '\0')
 119     {
 120         char *t;
 121 
 122         t = g_strstrip (g_strdup (title));
 123         g->title = g_strconcat (" ", t, " ", (char *) NULL);
 124         g_free (t);
 125     }
 126 
 127     widget_redraw (WIDGET (g));
 128 }
 129 
 130 /* --------------------------------------------------------------------------------------------- */

/* [previous][next][first][last][top][bottom][index][help]  */