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; long colorsize=10, brushsize=10;
51  WidgetKit& wk = *WidgetKit::instance();
52  LayoutKit& lk = *LayoutKit::instance();
53 
54  wk.style()->find_attribute("CBWidget_ncolor", colorsize);
55  wk.style()->find_attribute("CBWidget_nbrush", brushsize);
56  cb_ = lk.vbox(colorsize);
57  bb_ = lk.vbox(brushsize);
58  Glyph* g = lk.hflexible(lk.hbox(cb_, bb_)) ;
59  TelltaleGroup* ttg1 = new TelltaleGroup();
60  TelltaleGroup* ttg2 = new TelltaleGroup();
61  for (i=0; i < colorsize; ++i) {
62  cb_->append(lk.margin(wk.radio_button(ttg1,
63  new Line(50, 0, colors->color(i), brushes->brush(4)),
64  this
65  ), 2)
66  );
67  }
68  for (i=0; i < brushsize; ++i) {
69  bb_->append(lk.margin(wk.radio_button(ttg2,
70  new Line(50, 0, colors->color(1), brushes->brush(i)),
71  this
72  ), 2)
73  );
74  }
75 
76  DismissableWindow* w = new DismissableWindow(new Background(g, wk.background()));
77  w_ = w;
79  if (p) {
80  w->transient_for(p);
81  w->place(p->left(), p->bottom());
82  }
83  w->map();
84 }
85 
88  cb->map();
89 }
90 
92  if (g_->tool() != Scene::CHANGECOLOR) {
93  //printf("dismiss window of ColorBrushWidget\n");
94  w_->dismiss();
95  }
96 }
97 
98 #endif
#define TelltaleGroup
Definition: _defines.h:295
#define WidgetKit
Definition: _defines.h:331
#define g
Definition: passive0.cpp:23
#define Glyph
Definition: _defines.h:132
size_t p
virtual void update(Observable *)
virtual void ref() const
Definition: resource.cpp:47
ColorPalette * colors
Definition: graph.h:48
ColorBrushWidget(Graph *)
DismissableWindow * w_
Definition: cbwidget.h:20
PolyGlyph * cb_
Definition: cbwidget.h:18
static void start(Graph *)
#define LayoutKit
Definition: _defines.h:161
virtual void attach(Observer *)
Definition: observe.cpp:54
#define GlyphIndex
Definition: _defines.h:23
#define cnt
Definition: spt2queue.cpp:19
const Brush * brush(int) const
Definition: rect.h:60
void cb(const char *s)
Definition: bbstest.cpp:5
virtual void unref() const
Definition: resource.cpp:52
virtual void tool(int)
BrushPalette * brushes
virtual ~ColorBrushWidget()
virtual void dismiss()
#define i
Definition: md1redef.h:12
virtual void detach(Observer *)
Definition: observe.cpp:63
void brush(int)
void color(int)
#define MonoGlyph
Definition: _defines.h:181
#define Background
Definition: _defines.h:43
const Color * color(int) const
static DismissableWindow * last_window()
PolyGlyph * bb_
Definition: cbwidget.h:19
#define Button
Definition: _defines.h:62
Graph * g_
Definition: cbwidget.h:17