]> git.llucax.com Git - z.facultad/75.52/treemulator.git/commitdiff
Menu y actions para abrir un arbol.
authorRicardo Markiewicz <rmarkie@fi.uba.ar>
Wed, 23 Nov 2005 17:00:04 +0000 (17:00 +0000)
committerRicardo Markiewicz <rmarkie@fi.uba.ar>
Wed, 23 Nov 2005 17:00:04 +0000 (17:00 +0000)
viewer/main.cpp
viewer/view_btree.cpp
viewer/view_btree.h

index a7bb9245b20a5e7691025fe76ca7c2d3e480d641..144cddaf16097fcb4d5192c6e71dd2dfd75ab550 100644 (file)
@@ -18,6 +18,7 @@ using namespace Gnome::Canvas;
 "  <menubar name='MenuBar'>"
 "    <menu action='MenuFile'>"
 "      <menuitem action='Nuevo'/>"
+"      <menuitem action='Abrir'/>"
 "      <separator/>"
 "      <menuitem action='Salir'/>"
 "    </menu>"
@@ -39,6 +40,7 @@ using namespace Gnome::Canvas;
 "</ui>";
 
 void nuevo_arbol ();
+void abrir_arbol ();
 void agregar_clave ();
 void borrar_clave ();
 void ir_al_padre ();
@@ -79,6 +81,7 @@ int main(int argc, char *argv[])
 
        actiongroup->add( Gtk::Action::create("MenuFile", "_Arbol") );
        actiongroup->add( Gtk::Action::create("Nuevo", Gtk::Stock::NEW), &nuevo_arbol);
+       actiongroup->add( Gtk::Action::create("Abrir", Gtk::Stock::OPEN), &abrir_arbol);
        actiongroup->add( Gtk::Action::create("Salir", Gtk::Stock::QUIT), Gtk::AccelKey ("<control>q"), &Gtk::Main::quit);
        actiongroup->add( Gtk::Action::create("MenuNode", "_Nodo") );
        actiongroup->add( Gtk::Action::create("Ir al Padre", Gtk::Stock::GO_BACK), Gtk::AccelKey ("<control>b"), &ir_al_padre);
@@ -112,6 +115,24 @@ int main(int argc, char *argv[])
        return 0;
 }
 
+void abrir_arbol ()
+{
+       Gtk::FileChooserDialog dlg ("Abrir Arbol");
+
+       dlg.add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
+       dlg.add_button (Gtk::Stock::OPEN, Gtk::RESPONSE_ACCEPT);
+       if (dlg.run () == Gtk::RESPONSE_ACCEPT) {
+               Glib::ustring s = dlg.get_filename ();
+               std::string filename = s; 
+               ViewBTree *ptree = ViewBTree::Open (real_canvas->root (), filename);
+               if (ptree != NULL) {
+                       tree = Glib::RefPtr<ViewBTree>(ptree);
+                       tree->signal_selected ().connect ( sigc::mem_fun (*real_frame, &ViewProperties::ShowItem) );
+                       tree->AddNode (0);
+               }
+       }
+}
+
 void nuevo_arbol ()
 {
        real_canvas->set_scroll_region (0, 0, 5000, 5000);
index d85a909eb1c6acc22e0b0e8077164f611392517e..dab540422032b5e6a037e57604914202d8a1cc0b 100644 (file)
@@ -31,7 +31,7 @@ ViewBTree::ViewBTree (Canvas::Group *parent, const std::string filename)
        last_visited = 0;
 }
 
-ViewBTree* Open (Canvas::Group *parent, const std::string &filename)
+ViewBTree* ViewBTree::Open (Canvas::Group *parent, const std::string &filename)
 {
        ViewBTree *tree = new ViewBTree (parent, filename);
 
index f4e3c4781293431a8f45672eab4d67e241dc5857..729f267e25d65661592bb5f62e1c925e6dd05d72 100644 (file)
@@ -18,7 +18,7 @@ class ViewBTree : public Canvas::Group, public BTree {
                ViewBTree (Canvas::Group *parent, std::string filename, uint block_size, int tree_type, int type);
                ViewBTree (Canvas::Group *parent, const std::string filename);
 
-               static ViewBTree* Open (const std::string &filename);
+               static ViewBTree* Open (Canvas::Group *parent, const std::string &filename);
 
                void Clear ();
                void HighliteKey (Clave &k);