[Lemon-commits] [lemon_svn] hegyi: r2061 - hugo/trunk/gui
Lemon SVN
svn at lemon.cs.elte.hu
Mon Nov 6 20:49:50 CET 2006
Author: hegyi
Date: Fri Jul 15 23:17:18 2005
New Revision: 2061
Modified:
hugo/trunk/gui/graph_displayer_canvas-event.cc
hugo/trunk/gui/graph_displayer_canvas.cc
hugo/trunk/gui/graph_displayer_canvas.h
Log:
EdgeMapEditor is on its way, but it is far not yet ready.
Modified: hugo/trunk/gui/graph_displayer_canvas-event.cc
==============================================================================
--- hugo/trunk/gui/graph_displayer_canvas-event.cc (original)
+++ hugo/trunk/gui/graph_displayer_canvas-event.cc Fri Jul 15 23:17:18 2005
@@ -13,51 +13,65 @@
void GraphDisplayerCanvas::changeEditorialTool(int newtool)
{
- actual_handler.disconnect();
-
- if(actual_tool==CREATE_EDGE)
+ if(actual_tool!=newtool)
{
- GdkEvent * generated=new GdkEvent();
- generated->type=GDK_BUTTON_RELEASE;
- generated->button.button=3;
- createEdgeEventHandler(generated);
- }
- actual_tool=newtool;
+ actual_handler.disconnect();
- active_item=NULL;
- target_item=NULL;
- active_edge=INVALID;
- active_node=INVALID;
+ switch(actual_tool)
+ {
+ case CREATE_EDGE:
+ {
+ GdkEvent * generated=new GdkEvent();
+ generated->type=GDK_BUTTON_RELEASE;
+ generated->button.button=3;
+ createEdgeEventHandler(generated);
+ break;
+ }
+ case EDGE_MAP_EDIT:
+ break;
+ default:
+ break;
+ }
- switch(newtool)
- {
- case MOVE:
- actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::moveEventHandler), false);
- break;
+ active_item=NULL;
+ target_item=NULL;
+ active_edge=INVALID;
+ active_node=INVALID;
- case CREATE_NODE:
- actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::createNodeEventHandler), false);
- break;
- case CREATE_EDGE:
- actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::createEdgeEventHandler), false);
- break;
+ actual_tool=newtool;
+
+ switch(newtool)
+ {
+ case MOVE:
+ actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::moveEventHandler), false);
+ break;
- case ERASER:
- actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::eraserEventHandler), false);
- break;
+ case CREATE_NODE:
+ actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::createNodeEventHandler), false);
+ break;
- case EDGE_MAP_EDIT:
- actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::edgeMapEditEventHandler), false);
- break;
+ case CREATE_EDGE:
+ actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::createEdgeEventHandler), false);
+ break;
- case NODE_MAP_EDIT:
- actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::nodeMapEditEventHandler), false);
- break;
+ case ERASER:
+ actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::eraserEventHandler), false);
+ break;
- default:
- break;
+ case EDGE_MAP_EDIT:
+ grab_focus();
+ actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::edgeMapEditEventHandler), false);
+ break;
+
+ case NODE_MAP_EDIT:
+ actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::nodeMapEditEventHandler), false);
+ break;
+
+ default:
+ break;
+ }
}
}
@@ -492,35 +506,60 @@
{
switch(e->type)
{
+ case GDK_KEY_PRESS:
+ {
+ std::cout << "Any button was pressed" << std::endl;
+ switch(((GdkEventKey*)e)->keyval)
+ {
+ case GDK_A:
+ std::cout << "A button was pressed" << std::endl;
+ break;
+ default:
+ break;
+ }
+
+ break;
+ }
case GDK_BUTTON_PRESS:
- window_to_world (e->button.x, e->button.y, clicked_x, clicked_y);
- active_item=(get_item_at(clicked_x, clicked_y));
- active_edge=INVALID;
- for (EdgeIt i(g); i!=INVALID; ++i)
- {
- if(edgesmap[i]==active_item)
- {
- active_edge=i;
- }
- }
- if((active_edge!=INVALID)&&(edgetextmap[active_edge]->property_text().get_value()!=""))
- {
- if(canvasentrywidget)
- {
- delete(canvasentrywidget);
- }
- entrywidget.show();
- entrywidget.set_text(edgetextmap[active_edge]->property_text().get_value());
- xy<double> entry_coos;
- entry_coos.x=(edgetextmap[active_edge])->property_x().get_value();
- entry_coos.x-=edgetextmap[active_edge]->property_text_width().get_value()/2;
- entry_coos.y=(edgetextmap[active_edge])->property_y().get_value();
- entry_coos.y-=edgetextmap[active_edge]->property_text_height().get_value()*1.5/2;
- canvasentrywidget=new Gnome::Canvas::Widget(displayed_graph, entry_coos.x, entry_coos.y, entrywidget);
- canvasentrywidget->property_width().set_value(edgetextmap[active_edge]->property_text_width().get_value()*1.5);
- canvasentrywidget->property_height().set_value(edgetextmap[active_edge]->property_text_height().get_value()*1.5);
- }
- break;
+ {
+ window_to_world (e->button.x, e->button.y, clicked_x, clicked_y);
+ active_item=(get_item_at(clicked_x, clicked_y));
+ Graph::EdgeIt clicked_edge=INVALID;
+ for (EdgeIt i(g); i!=INVALID; ++i)
+ {
+ if(edgesmap[i]==active_item)
+ {
+ clicked_edge=i;
+ }
+ }
+ if(clicked_edge!=INVALID)
+ {
+ if(edgetextmap[clicked_edge]->property_text().get_value()!="")
+ {
+ active_edge=clicked_edge;
+ if(canvasentrywidget)
+ {
+ delete(canvasentrywidget);
+ }
+ entrywidget.show();
+ entrywidget.set_text(edgetextmap[active_edge]->property_text().get_value());
+ xy<double> entry_coos;
+ entry_coos.x=(edgetextmap[active_edge])->property_x().get_value();
+ entry_coos.x-=edgetextmap[active_edge]->property_text_width().get_value()/2;
+ entry_coos.y=(edgetextmap[active_edge])->property_y().get_value();
+ entry_coos.y-=edgetextmap[active_edge]->property_text_height().get_value()*1.5/2;
+ canvasentrywidget=new Gnome::Canvas::Widget(displayed_graph, entry_coos.x, entry_coos.y, entrywidget);
+ canvasentrywidget->property_width().set_value(edgetextmap[active_edge]->property_text_width().get_value()*1.5);
+ canvasentrywidget->property_height().set_value(edgetextmap[active_edge]->property_text_height().get_value()*1.5);
+ }
+ }
+ else
+ {
+ //mentse el -> problema, hogy nem tudja melyik map-be
+ entrywidget.hide();
+ }
+ break;
+ }
default:
break;
}
@@ -533,6 +572,14 @@
return false;
}
+bool GraphDisplayerCanvas::entryWidgetChangeHandler(GdkEvent* e)
+{
+ Glib::ustring mapvalue = entrywidget.get_text();
+ std::cout << mapvalue << std::endl;
+ e=e;
+ return false;
+}
+
void GraphDisplayerCanvas::deleteItem(NodeIt node_to_delete)
{
delete(nodetextmap[node_to_delete]);
Modified: hugo/trunk/gui/graph_displayer_canvas.cc
==============================================================================
--- hugo/trunk/gui/graph_displayer_canvas.cc (original)
+++ hugo/trunk/gui/graph_displayer_canvas.cc Fri Jul 15 23:17:18 2005
@@ -5,12 +5,16 @@
GraphDisplayerCanvas::GraphDisplayerCanvas(Graph & gr, CoordinatesMap & cm, MapStorage & ms, MapWin * mw):g(gr),nodesmap(g),edgesmap(g),edgetextmap(g),nodetextmap(g),displayed_graph(*(root()), 0, 0),canvasentrywidget(NULL),mapstorage(ms),isbutton(0),active_item(NULL),target_item(NULL),mapwin(mw)
{
- actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::moveEventHandler), false);
- actual_tool=CREATE_NODE;
-
active_node=INVALID;
active_edge=INVALID;
+ //setting event handler for the editor widget
+ entrywidget.signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::entryWidgetChangeHandler), false);
+
+ //base event handler is move tool
+ actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::moveEventHandler), false);
+ actual_tool=CREATE_NODE;
+
//set_center_scroll_region(true);
//first edges are drawn, to hide joining with nodes later
Modified: hugo/trunk/gui/graph_displayer_canvas.h
==============================================================================
--- hugo/trunk/gui/graph_displayer_canvas.h (original)
+++ hugo/trunk/gui/graph_displayer_canvas.h Fri Jul 15 23:17:18 2005
@@ -90,6 +90,9 @@
///event handler for the case when node map editor tool is active
bool nodeMapEditEventHandler(GdkEvent*);
+ ///event handler for the case when the entry widget is changed
+ bool entryWidgetChangeHandler(GdkEvent*);
+
public:
///Moves the text to new place
void textReposition(xy<double>);
More information about the Lemon-commits
mailing list