Add glade/gtkbuilder UI

git-svn-id: file:///home/vcs/svn/jsweeper/trunk@4 6611ac79-6612-48ef-a1e9-b906f853523e
master
petern 2009-11-26 08:34:17 +00:00
parent 5249fa7d89
commit 91350c93dc
5 changed files with 1369 additions and 45 deletions

View File

@ -6,58 +6,40 @@
#include "gui.h"
#include "config.h"
Gui::Gui()
Glib::RefPtr<Gtk::Builder> g_builder;
Gui::Gui(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &builder)
: Gtk::Window(cobject),
m_scrolledwindow(NULL)
{
set_title("JACK Sweeper");
set_border_width(0);
set_size_request(100, 100);
builder->get_widget("scrolledwindow1", m_scrolledwindow);
add(m_box);
if (m_scrolledwindow != NULL) {
m_scrolledwindow->add(m_matrix);
}
m_scrolledwindow.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
m_scrolledwindow.set_border_width(0);
m_scrolledwindow.add(m_matrix);
m_matrix.parent = this;
Refresh();
Glib::signal_idle().connect(sigc::mem_fun(*this, &Gui::on_idle));
m_actiongroup = Gtk::ActionGroup::create();
m_actiongroup->add(Gtk::Action::create("MenuFile", "_File"));
m_actiongroup->add(Gtk::Action::create("Connect", "Connect"));
m_actiongroup->add(Gtk::Action::create("Disconnect", "Disconnect"));
m_actiongroup->add(Gtk::Action::create("Quit", Gtk::Stock::QUIT));
m_uimanager = Gtk::UIManager::create();
m_uimanager->insert_action_group(m_actiongroup);
add_accel_group(m_uimanager->get_accel_group());
std::string ui_info =
"<ui>"
" <menubar name='MenuBar'>"
" <menu action='MenuFile'>"
" <menuitem action='Connect'/>"
" <menuitem action='Disconnect'/>"
" <separator/>"
" <menuitem action='Quit'/>"
" </menu>"
" </menubar>"
"</ui>";
m_uimanager->add_ui_from_string(ui_info);
Gtk::Widget *menubar = m_uimanager->get_widget("/MenuBar");
m_box.pack_start(*menubar, Gtk::PACK_SHRINK);
m_box.pack_start(m_scrolledwindow);
show_all_children();
}
Gui::~Gui()
{
}
Gui *Gui::Open()
{
if (g_builder == NULL) {
g_builder = Gtk::Builder::create_from_file("jsweeper.ui");
}
Gui *window = NULL;
g_builder->get_widget_derived("window1", window);
return window;
}
void Gui::Refresh()
{
m_matrix.Refresh();

View File

@ -4,17 +4,18 @@
#include <gtkmm.h>
#include "matrix.h"
extern Glib::RefPtr<Gtk::Builder> g_builder;
class Gui : public Gtk::Window
{
private:
Glib::RefPtr<Gtk::ActionGroup> m_actiongroup;
Glib::RefPtr<Gtk::UIManager> m_uimanager;
Gtk::ScrolledWindow m_scrolledwindow;
Gtk::VBox m_box;
Gtk::ScrolledWindow *m_scrolledwindow;
Matrix m_matrix;
public:
Gui();
Gui(BaseObjectType *cobject, const Glib::RefPtr<Gtk::Builder> &builder);
static Gui *Open();
virtual ~Gui();
void Refresh();

View File

@ -17,7 +17,7 @@ int main(int argc, char **argv)
jack.Connect();
Gui *g = new Gui();
Gui *g = Gui::Open();
kit.run(*g);
delete g;

1341
src/jsweeper.glade 100644

File diff suppressed because it is too large Load Diff

View File

@ -283,7 +283,7 @@ void Matrix::Refresh()
m_height = h;
set_size_request(w, h);
parent->set_size_request(w + 20, h + 20);
// parent->set_size_request(w + 20, h + 20);
}
void Matrix::Box(Cairo::RefPtr<Cairo::Context> cr, float r, float g, float b, Rect &rect)