4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
9 * Full author contact details are available in file CREDITS.
17 #include <boost/scoped_array.hpp>
19 class GXpmBtnTbl : public Gtk::Table {
21 typedef char const ** XpmData;
22 typedef sigc::signal<void, int, int> SigType;
24 unsigned char const* data_;
30 class GXpmBtn : public Gtk::Button {
32 GXpmBtn() : row_(-1), col_(-1)
34 signal_clicked().connect(sigc::mem_fun(*this,
35 &GXpmBtn::onButtonClicked));
37 void setRow(int row) { row_ = row; }
38 void setCol(int col) { col_ = col; }
39 int getRow() { return row_; }
40 int getCol() { return col_; }
41 void setXpm(XpmData xpm);
42 void setXpm(Glib::RefPtr<Gdk::Pixmap> pixmap,
43 Glib::RefPtr<Gdk::Bitmap> mask);
44 Glib::RefPtr<Gdk::Pixmap> getPixmap() { return pixmap_; }
45 Glib::RefPtr<Gdk::Bitmap> getMask() { return mask_; }
46 SigType signalClicked() { return signalClicked_; }
48 void onButtonClicked()
50 signalClicked_.emit(row_, col_);
55 Glib::RefPtr<Gdk::Pixmap> pixmap_;
56 Glib::RefPtr<Gdk::Bitmap> mask_;
57 SigType signalClicked_;
60 GXpmBtnTbl(int rows, int cols, XpmData xpms[]);
61 //GXpmBtnTbl(int rows, int cols, XpmData xpm);
62 GXpmBtnTbl(int rows, int cols, XbmData const & xbm);
65 GXpmBtn * getBtn(int row, int col)
67 return &btns_[index(row, col)];
70 SigType signalClicked() { return signalClicked_; }
72 int index(int row, int col) { return row * cols_ + col; }
75 void setBtnXpm(XpmData xpms[]);
76 void setBtnXpm(XbmData const & xbm);
80 boost::scoped_array<GXpmBtn> btns_;
82 SigType signalClicked_;
86 void buttonSetXpm(Gtk::Button * btn, char const ** xpm);