X-Git-Url: https://git.llucax.com/z.facultad/75.52/treemulator.git/blobdiff_plain/ca4f831a3835de978b27c7e198b2b52999aa8f3e..44c4c40e48cc4a72e81e0af80842738c45d6116f:/viewer/main.cpp?ds=sidebyside diff --git a/viewer/main.cpp b/viewer/main.cpp index c0aa299..12a80db 100644 --- a/viewer/main.cpp +++ b/viewer/main.cpp @@ -6,9 +6,37 @@ #include "view_btree.h" #include "view_properties.h" +#include "new_tree_dialog.h" +#include "view_debug.h" using namespace Gnome::Canvas; + Glib::ustring ui_info = +"" +" " +" " +" " +" " +" " +" " +" " +" " +" " +" " +" " +" " +" " +""; + +void nuevo_arbol (); +void zoom_out (); +void zoom_in (); +void zoom_normal (); + +ViewBTree *tree; +ViewDebug *vdebug; +Gnome::Canvas::Canvas *real_canvas; + int main(int argc, char *argv[]) { Gtk::Main kit(argc, argv); @@ -17,18 +45,47 @@ int main(int argc, char *argv[]) Gtk::Window window; Gtk::HBox hbox; + Gtk::VBox vbox; + ViewProperties frame; Gtk::ScrolledWindow area; Gnome::Canvas::Canvas canvas; ViewBTree canvas_grp (canvas.root (), "test.idx"); + ViewDebug debug (&canvas_grp); + + tree = &canvas_grp; + real_canvas = &canvas; + vdebug = &debug; + canvas.set_scroll_region (0, 0, 5000, 5000); area.add (canvas); hbox.pack_start (frame, false, false, 10); hbox.pack_start (area); + hbox.pack_end (debug, false, true, 10); + + Glib::RefPtr actiongroup = Gtk::ActionGroup::create(); - window.add (hbox); + actiongroup->add( Gtk::Action::create("MenuFile", "_Arbol") ); + actiongroup->add( Gtk::Action::create("Nuevo", Gtk::Stock::NEW), &nuevo_arbol); + actiongroup->add( Gtk::Action::create("Salir", Gtk::Stock::QUIT), &Gtk::Main::quit); + actiongroup->add( Gtk::Action::create("MenuZoom", "_Zoom")); + actiongroup->add( Gtk::Action::create("Alejar", "_Alejar"), &zoom_out ); + actiongroup->add( Gtk::Action::create("Acercar", "A_cercar"), &zoom_in); + actiongroup->add( Gtk::Action::create("100 %", "100 %"), &zoom_normal); + + Glib::RefPtr m_refUIManager = Gtk::UIManager::create(); + m_refUIManager->insert_action_group (actiongroup); + + m_refUIManager->add_ui_from_string(ui_info); + Gtk::Widget* menubar = m_refUIManager->get_widget("/MenuBar"); + menubar->show_all (); + + vbox.pack_start (*menubar, false, true, 0); + vbox.pack_end (hbox, true, true, 5); + + window.add (vbox); window.set_size_request (640, 480); window.show_all (); @@ -38,3 +95,42 @@ int main(int argc, char *argv[]) return 0; } + +void nuevo_arbol () +{ + NewTreeDialog d; + if (d.run () == Gtk::RESPONSE_OK) { + uint tot = d.getAmount (); + for (uint i=0; i <= tot; i++) { + ClaveFija c(i); + + tree->AddKey (c); + vdebug->AddKey (c); + } + tree->AddNode (0); + } +} + +void zoom_out () +{ + double r = real_canvas->get_pixels_per_unit (); + r *= 0.9f; + if (r < 0.0001) + r = 0.0001; + real_canvas->set_pixels_per_unit (r); +} + +void zoom_in () +{ + double r = real_canvas->get_pixels_per_unit (); + r *= 1.1f; + if (r > 10) + r = 10; + real_canvas->set_pixels_per_unit (r); +} + +void zoom_normal () +{ + real_canvas->set_pixels_per_unit (1.0f); +} +