File: w_panel.cpp

package info (click to toggle)
glhack 1.2-8.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 26,744 kB
  • sloc: ansic: 208,571; cpp: 13,139; yacc: 2,005; makefile: 1,152; lex: 377; sh: 121; awk: 89; sed: 11
file content (115 lines) | stat: -rw-r--r-- 2,310 bytes parent folder | download | duplicates (6)
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
//------------------------------------------------------------------------
//  PANEL of Main window
//------------------------------------------------------------------------
//
//  EdTile (C) 2001-2002 Andrew Apted
//
//  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.
//
//------------------------------------------------------------------------

using namespace std;

#include "z_config.h"

#include "w_panel.h"
#include "w_color.h"
#include "w_main.h"

    
MainPanel::MainPanel(int X, int Y, int W, int H, const char *label) :
    Fl_Group(X, Y, W, H, label)
{ 
  Fl_Group::current(0);

  box(FL_DOWN_BOX);

  color(P_GREY(90), P_GREY(90));

  cur_tab = -1;

  //...
}

MainPanel::~MainPanel()
{
  //... delete tabs[]
}


void MainPanel::AddTab(BaseTab *tab)
{
  int cur_num = tabs.size();

  tabs.push_back(tab);

  WebButton *webbut = new WebButton(x() + 10, y() + 6 + cur_num * 32, 
      80, 30, tab->Name());
  webbut->color(P_GREY(90));
  webbut->labelfont(FL_HELVETICA | FL_BOLD);
  webbut->callback(panel_do_change);

  if (cur_tab < 0)
    webbut->value(1);

  names.push_back(webbut);

  add(webbut);

  if (cur_tab < 0)
    cur_tab = cur_num;

  redraw();
}

void MainPanel::ChangeTab(int t_num)
{
  if (cur_tab >= 0)
    names[cur_tab]->value(0);
   
  cur_tab = t_num;

  if (cur_tab >= 0)
  {
    names[cur_tab]->value(1);
  }

  redraw();
}

void MainPanel::ChangeTab(BaseTab *tab)
{
  for (int i=0; i < int(tabs.size()); i++)
  {
    if (tab == tabs[i])
    {
      ChangeTab(i);
      break;
    }
  }
}

void MainPanel::panel_do_change(Fl_Widget *w, void *data)
{
  if (!w || !MainWin::appwin)
    return;

  MainPanel *pan = MainWin::appwin->panel;
    
  for (int i=0; i < int(pan->names.size()); i++)
  {
    if (w == (Fl_Widget *) pan->names[i])
    {
      MainWin::appwin->ChangeTab(pan->tabs[i]);
      break;
    }
  }
}