COIN-OR::LEMON - Graph Library

Changeset 1562:73c3f5d0079c in lemon-0.x


Ignore:
Timestamp:
07/15/05 23:17:18 (14 years ago)
Author:
Hegyi Péter
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@2061
Message:

EdgeMapEditor? is on its way, but it is far not yet ready.

Location:
gui
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • gui/graph_displayer_canvas-event.cc

    r1551 r1562  
    1414void GraphDisplayerCanvas::changeEditorialTool(int newtool)
    1515{
    16   actual_handler.disconnect();
    17 
    18   if(actual_tool==CREATE_EDGE)
     16  if(actual_tool!=newtool)
    1917    {
    20         GdkEvent * generated=new GdkEvent();
    21         generated->type=GDK_BUTTON_RELEASE;
    22         generated->button.button=3;
    23         createEdgeEventHandler(generated);     
    24     }
    25 
    26   actual_tool=newtool;
    27 
    28   active_item=NULL;
    29   target_item=NULL;
    30   active_edge=INVALID; 
    31   active_node=INVALID; 
    32 
    33   switch(newtool)
    34     {
    35     case MOVE:
    36       actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::moveEventHandler), false);
    37       break;
    38 
    39     case CREATE_NODE:
    40       actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::createNodeEventHandler), false);
    41       break;
    42 
    43     case CREATE_EDGE:
    44       actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::createEdgeEventHandler), false);
    45       break;
    46 
    47     case ERASER:
    48       actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::eraserEventHandler), false);
    49       break;
    50 
    51     case EDGE_MAP_EDIT:
    52       actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::edgeMapEditEventHandler), false);
    53       break;
    54 
    55     case NODE_MAP_EDIT:
    56       actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::nodeMapEditEventHandler), false);
    57       break;
    58 
    59     default:
    60       break;
     18
     19      actual_handler.disconnect();
     20
     21      switch(actual_tool)
     22        {
     23        case CREATE_EDGE:
     24          {
     25            GdkEvent * generated=new GdkEvent();
     26            generated->type=GDK_BUTTON_RELEASE;
     27            generated->button.button=3;
     28            createEdgeEventHandler(generated);     
     29            break;
     30          }
     31        case EDGE_MAP_EDIT:
     32          break;
     33        default:
     34          break;
     35        }
     36
     37      active_item=NULL;
     38      target_item=NULL;
     39      active_edge=INVALID;     
     40      active_node=INVALID;     
     41
     42
     43      actual_tool=newtool;
     44 
     45      switch(newtool)
     46        {
     47        case MOVE:
     48          actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::moveEventHandler), false);
     49          break;
     50
     51        case CREATE_NODE:
     52          actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::createNodeEventHandler), false);
     53          break;
     54
     55        case CREATE_EDGE:
     56          actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::createEdgeEventHandler), false);
     57          break;
     58
     59        case ERASER:
     60          actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::eraserEventHandler), false);
     61          break;
     62
     63        case EDGE_MAP_EDIT:
     64          grab_focus();
     65          actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::edgeMapEditEventHandler), false);
     66          break;
     67
     68        case NODE_MAP_EDIT:
     69          actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::nodeMapEditEventHandler), false);
     70          break;
     71
     72        default:
     73          break;
     74        }
    6175    }
    6276}
     
    493507  switch(e->type)
    494508    {
     509    case GDK_KEY_PRESS:
     510      {
     511        std::cout << "Any button was pressed" << std::endl;
     512        switch(((GdkEventKey*)e)->keyval)
     513          {
     514          case GDK_A:
     515            std::cout << "A button was pressed" << std::endl;
     516            break;
     517          default:
     518            break;
     519          }
     520 
     521        break;
     522      }
    495523    case GDK_BUTTON_PRESS:
    496       window_to_world (e->button.x, e->button.y, clicked_x, clicked_y);
    497       active_item=(get_item_at(clicked_x, clicked_y));
    498       active_edge=INVALID;
    499       for (EdgeIt i(g); i!=INVALID; ++i)
    500         {
    501           if(edgesmap[i]==active_item)
    502             {
    503               active_edge=i;
    504             }
    505         }
    506       if((active_edge!=INVALID)&&(edgetextmap[active_edge]->property_text().get_value()!=""))
    507         {
    508           if(canvasentrywidget)
    509             {
    510               delete(canvasentrywidget);
    511             }
    512           entrywidget.show();
    513           entrywidget.set_text(edgetextmap[active_edge]->property_text().get_value());
    514           xy<double> entry_coos;
    515           entry_coos.x=(edgetextmap[active_edge])->property_x().get_value();
    516           entry_coos.x-=edgetextmap[active_edge]->property_text_width().get_value()/2;
    517           entry_coos.y=(edgetextmap[active_edge])->property_y().get_value();
    518           entry_coos.y-=edgetextmap[active_edge]->property_text_height().get_value()*1.5/2;
    519           canvasentrywidget=new Gnome::Canvas::Widget(displayed_graph, entry_coos.x, entry_coos.y, entrywidget);
    520           canvasentrywidget->property_width().set_value(edgetextmap[active_edge]->property_text_width().get_value()*1.5);
    521           canvasentrywidget->property_height().set_value(edgetextmap[active_edge]->property_text_height().get_value()*1.5);
    522         }
    523       break;
     524      {
     525        window_to_world (e->button.x, e->button.y, clicked_x, clicked_y);
     526        active_item=(get_item_at(clicked_x, clicked_y));
     527        Graph::EdgeIt clicked_edge=INVALID;
     528        for (EdgeIt i(g); i!=INVALID; ++i)
     529          {
     530            if(edgesmap[i]==active_item)
     531              {
     532                clicked_edge=i;
     533              }
     534          }
     535        if(clicked_edge!=INVALID)
     536          {
     537            if(edgetextmap[clicked_edge]->property_text().get_value()!="")
     538              {
     539                active_edge=clicked_edge;
     540                if(canvasentrywidget)
     541                  {
     542                    delete(canvasentrywidget);
     543                  }
     544                entrywidget.show();
     545                entrywidget.set_text(edgetextmap[active_edge]->property_text().get_value());
     546                xy<double> entry_coos;
     547                entry_coos.x=(edgetextmap[active_edge])->property_x().get_value();
     548                entry_coos.x-=edgetextmap[active_edge]->property_text_width().get_value()/2;
     549                entry_coos.y=(edgetextmap[active_edge])->property_y().get_value();
     550                entry_coos.y-=edgetextmap[active_edge]->property_text_height().get_value()*1.5/2;
     551                canvasentrywidget=new Gnome::Canvas::Widget(displayed_graph, entry_coos.x, entry_coos.y, entrywidget);
     552                canvasentrywidget->property_width().set_value(edgetextmap[active_edge]->property_text_width().get_value()*1.5);
     553                canvasentrywidget->property_height().set_value(edgetextmap[active_edge]->property_text_height().get_value()*1.5);
     554              }
     555          }
     556        else
     557          {
     558            //mentse el -> problema, hogy nem tudja melyik map-be
     559            entrywidget.hide();
     560          }
     561        break;
     562      }
    524563    default:
    525564      break;
     
    530569bool GraphDisplayerCanvas::nodeMapEditEventHandler(GdkEvent* e)
    531570{
     571  e=e;
     572  return false;
     573}
     574
     575bool GraphDisplayerCanvas::entryWidgetChangeHandler(GdkEvent* e)
     576{
     577  Glib::ustring mapvalue = entrywidget.get_text();
     578  std::cout << mapvalue << std::endl;
    532579  e=e;
    533580  return false;
  • gui/graph_displayer_canvas.cc

    r1550 r1562  
    66{
    77 
     8  active_node=INVALID;
     9  active_edge=INVALID;
     10
     11  //setting event handler for the editor widget
     12  entrywidget.signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::entryWidgetChangeHandler), false);
     13
     14  //base event handler is move tool
    815  actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::moveEventHandler), false);
    916  actual_tool=CREATE_NODE;
    10 
    11   active_node=INVALID;
    12   active_edge=INVALID;
    1317
    1418  //set_center_scroll_region(true);
  • gui/graph_displayer_canvas.h

    r1550 r1562  
    9191  bool nodeMapEditEventHandler(GdkEvent*);
    9292
     93  ///event handler for the case when the entry widget is changed
     94  bool entryWidgetChangeHandler(GdkEvent*);
     95
    9396public:
    9497  ///Moves the text to new place
Note: See TracChangeset for help on using the changeset viewer.