NEURON
cbwidget.cpp
Go to the documentation of this file.
1 #include <../../nrnconf.h>
2 #if HAVE_IV // to end of file
3 
4 #include <InterViews/window.h>
5 #include <InterViews/event.h>
6 #include <InterViews/layout.h>
7 #include <InterViews/background.h>
8 #include <InterViews/style.h>
9 #include <IV-look/kit.h>
10 #include <stdio.h>
11 #include "apwindow.h"
12 #include "graph.h"
13 #include "cbwidget.h"
14 #include "rect.h"
15 #include "scenepic.h"
16 
18  g_ = g;
20  g->attach(this);
21 }
22 
24  // printf("~ColorBrushWidget\n");
25  g_->detach(this);
27 }
28 
30  GlyphIndex i, cnt;
31  cnt = cb_->count();
32  for (i = 0; i < cnt; ++i) {
33  Button* b = (Button*) ((MonoGlyph*) cb_->component(i))->body();
34  if (b->state()->test(TelltaleState::is_chosen)) {
35  g_->color(int(i));
36  break;
37  }
38  }
39  cnt = bb_->count();
40  for (i = 0; i < cnt; ++i) {
41  Button* b = (Button*) ((MonoGlyph*) bb_->component(i))->body();
42  if (b->state()->test(TelltaleState::is_chosen)) {
43  g_->brush(int(i));
44  break;
45  }
46  }
47 }
48 
49 void ColorBrushWidget::map() {
50  int i;
51  long colorsize = 10, brushsize = 10;
52  WidgetKit& wk = *WidgetKit::instance();
53  LayoutKit& lk = *LayoutKit::instance();
54 
55  wk.style()->find_attribute("CBWidget_ncolor", colorsize);
56  wk.style()->find_attribute("CBWidget_nbrush", brushsize);
57  cb_ = lk.vbox(colorsize);
58  bb_ = lk.vbox(brushsize);
59  Glyph* g = lk.hflexible(lk.hbox(cb_, bb_));
60  TelltaleGroup* ttg1 = new TelltaleGroup();
61  TelltaleGroup* ttg2 = new TelltaleGroup();
62  for (i = 0; i < colorsize; ++i) {
63  cb_->append(lk.margin(
64  wk.radio_button(ttg1, new Line(50, 0, colors->color(i), brushes->brush(4)), this), 2));
65  }
66  for (i = 0; i < brushsize; ++i) {
67  bb_->append(lk.margin(
68  wk.radio_button(ttg2, new Line(50, 0, colors->color(1), brushes->brush(i)), this), 2));
69  }
70 
71  DismissableWindow* w = new DismissableWindow(new Background(g, wk.background()));
72  w_ = w;
74  if (p) {
75  w->transient_for(p);
76  w->place(p->left(), p->bottom());
77  }
78  w->map();
79 }
80 
83  cb->map();
84 }
85 
87  if (g_->tool() != Scene::CHANGECOLOR) {
88  // printf("dismiss window of ColorBrushWidget\n");
89  w_->dismiss();
90  }
91 }
92 
93 #endif
#define Background
Definition: _defines.h:41
#define WidgetKit
Definition: _defines.h:328
#define MonoGlyph
Definition: _defines.h:179
#define GlyphIndex
Definition: _defines.h:21
#define Button
Definition: _defines.h:60
#define TelltaleGroup
Definition: _defines.h:292
#define LayoutKit
Definition: _defines.h:159
#define Glyph
Definition: _defines.h:130
const Brush * brush(int) const
Graph * g_
Definition: cbwidget.h:18
virtual ~ColorBrushWidget()
ColorBrushWidget(Graph *)
DismissableWindow * w_
Definition: cbwidget.h:21
virtual void update(Observable *)
static void start(Graph *)
PolyGlyph * bb_
Definition: cbwidget.h:20
PolyGlyph * cb_
Definition: cbwidget.h:19
const Color * color(int) const
virtual void dismiss()
Definition: graph.h:54
void color(int)
void brush(int)
Definition: rect.h:60
virtual void attach(Observer *)
Definition: observe.cpp:45
virtual void detach(Observer *)
Definition: observe.cpp:49
virtual void ref() const
Definition: resource.cpp:42
virtual void unref() const
Definition: resource.cpp:47
@ CHANGECOLOR
Definition: scenevie.h:256
virtual void tool(int)
static DismissableWindow * last_window()
#define cnt
Definition: tqueue.hpp:44
#define i
Definition: md1redef.h:19
BrushPalette * brushes
ColorPalette * colors
size_t p