main_win.cc
branchgui
changeset 94 adfdc2f70548
parent 90 e9f8f44f12a3
child 95 628c0b383d2f
equal deleted inserted replaced
23:418faf47bfca 24:72281e603440
     1 #include "main_win.h"
     1 #include "main_win.h"
     2 #include "icons/guipixbufs.h"
     2 #include "icons/guipixbufs.h"
     3 
     3 
     4 MainWin::MainWin() :
     4 MainWin::MainWin()
     5   mapwin("Map Setup", mapstorage, gd_canvas),
     5 {
     6   gd_canvas(mapstorage, mapwin, (Gtk::Window *)this)
     6   mapwin=new MapWin("Map Setup", mapstorage.getEdgeMapList(), mapstorage.getNodeMapList(), *this);
     7 {
     7   gd_canvas=new GraphDisplayerCanvas(*this);
       
     8 
     8   set_title ("unsaved file - " + prog_name);
     9   set_title ("unsaved file - " + prog_name);
     9   set_default_size(WIN_WIDTH,WIN_HEIGHT);
    10   set_default_size(WIN_WIDTH,WIN_HEIGHT);
    10   add(vbox);
    11   add(vbox);
    11 
    12 
       
    13   //connecting signals - controller character
       
    14   mapstorage.signal_prop_ch().connect(sigc::mem_fun(*gd_canvas, &GraphDisplayerCanvas::propertyChange));
    12 
    15 
    13   // custom icons for the toolbar
    16   // custom icons for the toolbar
    14 
    17 
    15   Glib::RefPtr<Gtk::IconFactory> p_icon_factory = Gtk::IconFactory::create();
    18   Glib::RefPtr<Gtk::IconFactory> p_icon_factory = Gtk::IconFactory::create();
    16  
    19  
    90   ag->add( Gtk::Action::create("Quit", Gtk::Stock::QUIT),
    93   ag->add( Gtk::Action::create("Quit", Gtk::Stock::QUIT),
    91       sigc::mem_fun(*this, &MainWin::hide));
    94       sigc::mem_fun(*this, &MainWin::hide));
    92 
    95 
    93   ag->add( Gtk::Action::create("ViewMenu", "_View") );
    96   ag->add( Gtk::Action::create("ViewMenu", "_View") );
    94   ag->add( Gtk::Action::create("ViewZoomIn", Gtk::Stock::ZOOM_IN),
    97   ag->add( Gtk::Action::create("ViewZoomIn", Gtk::Stock::ZOOM_IN),
    95       sigc::mem_fun(this->gd_canvas, &GraphDisplayerCanvas::zoomIn));
    98       sigc::mem_fun(*(this->gd_canvas), &GraphDisplayerCanvas::zoomIn));
    96   ag->add( Gtk::Action::create("ViewZoomOut", Gtk::Stock::ZOOM_OUT),
    99   ag->add( Gtk::Action::create("ViewZoomOut", Gtk::Stock::ZOOM_OUT),
    97       sigc::mem_fun(this->gd_canvas, &GraphDisplayerCanvas::zoomOut));
   100       sigc::mem_fun(*(this->gd_canvas), &GraphDisplayerCanvas::zoomOut));
    98   ag->add( Gtk::Action::create("ViewZoomFit", Gtk::Stock::ZOOM_FIT),
   101   ag->add( Gtk::Action::create("ViewZoomFit", Gtk::Stock::ZOOM_FIT),
    99       sigc::mem_fun(this->gd_canvas, &GraphDisplayerCanvas::zoomFit));
   102       sigc::mem_fun(*(this->gd_canvas), &GraphDisplayerCanvas::zoomFit));
   100   ag->add( Gtk::Action::create("ViewZoom100", Gtk::Stock::ZOOM_100),
   103   ag->add( Gtk::Action::create("ViewZoom100", Gtk::Stock::ZOOM_100),
   101       sigc::mem_fun(this->gd_canvas, &GraphDisplayerCanvas::zoom100));
   104       sigc::mem_fun(*(this->gd_canvas), &GraphDisplayerCanvas::zoom100));
   102   
   105   
   103   ag->add( Gtk::Action::create("ShowMenu", "_Show") );
   106   ag->add( Gtk::Action::create("ShowMenu", "_Show") );
   104   ag->add( Gtk::Action::create("ShowMaps", "_Maps"),
   107   ag->add( Gtk::Action::create("ShowMaps", "_Maps"),
   105       sigc::mem_fun(this->mapwin, &MapWin::show));
   108       sigc::mem_fun(*(this->mapwin), &MapWin::show));
   106 
   109 
   107   Gtk::RadioAction::Group tool_group;
   110   Gtk::RadioAction::Group tool_group;
   108   ag->add( Gtk::RadioAction::create(tool_group, "MoveItem", Gtk::StockID("gd-move"), "Move"),
   111   ag->add( Gtk::RadioAction::create(tool_group, "MoveItem", Gtk::StockID("gd-move"), "Move"),
   109       sigc::bind( sigc::mem_fun ( this->gd_canvas, &GraphDisplayerCanvas::changeEditorialTool ), 0) );
   112       sigc::bind( sigc::mem_fun ( *(this->gd_canvas), &GraphDisplayerCanvas::changeEditorialTool ), 0) );
   110   ag->add( Gtk::RadioAction::create(tool_group, "CreateNode", Gtk::StockID("gd-addnode"), "Create node"),
   113   ag->add( Gtk::RadioAction::create(tool_group, "CreateNode", Gtk::StockID("gd-addnode"), "Create node"),
   111       sigc::bind( sigc::mem_fun ( this->gd_canvas, &GraphDisplayerCanvas::changeEditorialTool ), 1) );
   114       sigc::bind( sigc::mem_fun ( *(this->gd_canvas), &GraphDisplayerCanvas::changeEditorialTool ), 1) );
   112   ag->add( Gtk::RadioAction::create(tool_group, "CreateEdge", Gtk::StockID("gd-addlink"), "Create edge"),
   115   ag->add( Gtk::RadioAction::create(tool_group, "CreateEdge", Gtk::StockID("gd-addlink"), "Create edge"),
   113       sigc::bind( sigc::mem_fun ( this->gd_canvas, &GraphDisplayerCanvas::changeEditorialTool ), 2) );
   116       sigc::bind( sigc::mem_fun ( *(this->gd_canvas), &GraphDisplayerCanvas::changeEditorialTool ), 2) );
   114   ag->add( Gtk::RadioAction::create(tool_group, "EraseItem", Gtk::StockID("gd-delete"), "Delete"),
   117   ag->add( Gtk::RadioAction::create(tool_group, "EraseItem", Gtk::StockID("gd-delete"), "Delete"),
   115       sigc::bind( sigc::mem_fun ( this->gd_canvas, &GraphDisplayerCanvas::changeEditorialTool ), 3) );
   118       sigc::bind( sigc::mem_fun ( *(this->gd_canvas), &GraphDisplayerCanvas::changeEditorialTool ), 3) );
   116 
   119 
   117   ag->add( Gtk::RadioAction::create(tool_group, "EditEdgeMap", Gtk::StockID("gd-editlink"), "Edit edge map"),
   120   ag->add( Gtk::RadioAction::create(tool_group, "EditEdgeMap", Gtk::StockID("gd-editlink"), "Edit edge map"),
   118       sigc::bind( sigc::mem_fun ( this->gd_canvas, &GraphDisplayerCanvas::changeEditorialTool ), 4) );
   121       sigc::bind( sigc::mem_fun ( *(this->gd_canvas), &GraphDisplayerCanvas::changeEditorialTool ), 4) );
   119   ag->add( Gtk::RadioAction::create(tool_group, "EditNodeMap", Gtk::StockID("gd-editnode"), "Edit node map"),
   122   ag->add( Gtk::RadioAction::create(tool_group, "EditNodeMap", Gtk::StockID("gd-editnode"), "Edit node map"),
   120       sigc::bind( sigc::mem_fun ( this->gd_canvas, &GraphDisplayerCanvas::changeEditorialTool ), 5) );
   123       sigc::bind( sigc::mem_fun ( *(this->gd_canvas), &GraphDisplayerCanvas::changeEditorialTool ), 5) );
   121 
   124 
   122   ag->add( Gtk::Action::create("AddMap", Gtk::StockID("gd-newmap")),
   125   ag->add( Gtk::Action::create("AddMap", Gtk::StockID("gd-newmap")),
   123       sigc::mem_fun (new NewMapWin("NewMapWin", gd_canvas), &NewMapWin::show ) );
   126       sigc::mem_fun (new NewMapWin("NewMapWin", *this), &NewMapWin::show ) );
   124 
   127 
   125   uim=Gtk::UIManager::create();
   128   uim=Gtk::UIManager::create();
   126   uim->insert_action_group(ag);
   129   uim->insert_action_group(ag);
   127   add_accel_group(uim->get_accel_group());
   130   add_accel_group(uim->get_accel_group());
   128 
   131 
   192     vbox.pack_start(*toolbar, Gtk::PACK_SHRINK);
   195     vbox.pack_start(*toolbar, Gtk::PACK_SHRINK);
   193   }
   196   }
   194 
   197 
   195   Gtk::ScrolledWindow* pScrolledWindow = manage(new Gtk::ScrolledWindow());
   198   Gtk::ScrolledWindow* pScrolledWindow = manage(new Gtk::ScrolledWindow());
   196   pScrolledWindow->set_shadow_type(Gtk::SHADOW_IN);
   199   pScrolledWindow->set_shadow_type(Gtk::SHADOW_IN);
   197   pScrolledWindow->add(gd_canvas);
   200   pScrolledWindow->add(*gd_canvas);
   198   vbox.pack_start(*pScrolledWindow);
   201   vbox.pack_start(*pScrolledWindow);
   199 
   202 
   200   tooltips.set_tip(*(uim->get_widget("/ToolBar/CreateNode")),"Create Node");
   203   tooltips.set_tip(*(uim->get_widget("/ToolBar/CreateNode")),"Create Node");
   201   tooltips.enable();
   204   tooltips.enable();
   202 
   205 
   206 void MainWin::readFile(const std::string &file)
   209 void MainWin::readFile(const std::string &file)
   207 {
   210 {
   208   mapstorage.readFromFile(file);
   211   mapstorage.readFromFile(file);
   209   mapstorage.file_name = file;
   212   mapstorage.file_name = file;
   210   mapstorage.modified = false;
   213   mapstorage.modified = false;
   211   gd_canvas.drawGraph();
   214   gd_canvas->drawGraph();
   212   mapwin.update();
   215   mapwin->update(mapstorage.getEdgeMapList(), mapstorage.getNodeMapList());
   213   set_title(Glib::filename_display_basename(file) + " - " + prog_name);
   216   set_title(Glib::filename_display_basename(file) + " - " + prog_name);
   214 }
   217 }
   215 
   218 
   216 void MainWin::newFile()
   219 void MainWin::newFile()
   217 {
   220 {
   231       case Gtk::RESPONSE_ACCEPT:
   234       case Gtk::RESPONSE_ACCEPT:
   232         saveFile();
   235         saveFile();
   233         break;
   236         break;
   234     }
   237     }
   235   }
   238   }
   236   gd_canvas.clear();
   239   gd_canvas->clear();
   237   mapstorage.clear();
   240   mapstorage.clear();
   238   mapwin.update();
   241   mapwin->update(mapstorage.getEdgeMapList(), mapstorage.getNodeMapList());
   239   set_title("unsaved file - " + prog_name);
   242   set_title("unsaved file - " + prog_name);
   240 }
   243 }
   241 
   244 
   242 void MainWin::openFile()
   245 void MainWin::openFile()
   243 {
   246 {
   262   Gtk::FileChooserDialog fcdialog("Open File");
   265   Gtk::FileChooserDialog fcdialog("Open File");
   263   fcdialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
   266   fcdialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
   264   fcdialog.add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_ACCEPT);
   267   fcdialog.add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_ACCEPT);
   265   if (fcdialog.run() == Gtk::RESPONSE_ACCEPT)
   268   if (fcdialog.run() == Gtk::RESPONSE_ACCEPT)
   266   {
   269   {
   267     gd_canvas.clear();
   270     gd_canvas->clear();
   268     mapstorage.clear();
   271     mapstorage.clear();
   269     Glib::ustring filename = fcdialog.get_filename();
   272     Glib::ustring filename = fcdialog.get_filename();
   270     if (!mapstorage.readFromFile(filename))
   273     if (!mapstorage.readFromFile(filename))
   271     {
   274     {
   272       mapstorage.file_name = filename;
   275       mapstorage.file_name = filename;
   273       mapstorage.modified = false;
   276       mapstorage.modified = false;
   274       gd_canvas.drawGraph();
   277       gd_canvas->drawGraph();
   275       mapwin.update();
   278       mapwin->update(mapstorage.getEdgeMapList(), mapstorage.getNodeMapList());
   276       set_title(Glib::filename_display_basename(filename) + " - " + prog_name);
   279       set_title(Glib::filename_display_basename(filename) + " - " + prog_name);
   277     }
   280     }
   278   }
   281   }
   279 }
   282 }
   280 
   283 
   325       case Gtk::RESPONSE_ACCEPT:
   328       case Gtk::RESPONSE_ACCEPT:
   326         saveFile();
   329         saveFile();
   327         break;
   330         break;
   328     }
   331     }
   329   }
   332   }
   330   gd_canvas.clear();
   333   gd_canvas->clear();
   331   mapstorage.clear();
   334   mapstorage.clear();
   332   mapwin.update();
   335   mapwin->update(mapstorage.getEdgeMapList(), mapstorage.getNodeMapList());
   333   set_title("unsaved file - " + prog_name);
   336   set_title("unsaved file - " + prog_name);
   334 }
   337 }
       
   338 
       
   339 void MainWin::propertyChange(bool itisedge, int prop, std::string mapname)
       
   340 {
       
   341   mapstorage.changeActiveMap(itisedge, prop, mapname);
       
   342 }
       
   343 
       
   344 void MainWin::popupNewMapWin(bool itisedge, int prop)
       
   345 {
       
   346   prop=prop;
       
   347   (new NewMapWin("NewMapWin", *this, itisedge, false))->run();
       
   348 }
       
   349 
       
   350 std::string MainWin::getActiveEdgeMap(int prop)
       
   351 {
       
   352   return mapstorage.getActiveEdgeMap(prop);
       
   353 }
       
   354 
       
   355 std::string MainWin::getActiveNodeMap(int prop)
       
   356 {
       
   357   return mapstorage.getActiveNodeMap(prop);
       
   358 }
       
   359 
       
   360 void MainWin::registerNewEdgeMap(std::string mapname)
       
   361 {
       
   362   mapwin->registerNewEdgeMap(mapname);
       
   363 }
       
   364 
       
   365 void MainWin::registerNewNodeMap(std::string mapname)
       
   366 {
       
   367   mapwin->registerNewNodeMap(mapname);
       
   368 }