From 554efc858c3ec48c3cbc45d0b32420bade4fe6c9 Mon Sep 17 00:00:00 2001 From: Jean-Francois Remacle <jean-francois.remacle@uclouvain.be> Date: Tue, 14 Oct 2008 13:54:49 +0000 Subject: [PATCH] add Field->Put on View -> New view --- Fltk/Callbacks.cpp | 12 ++++++++---- Fltk/GUI.cpp | 19 +++++++------------ Mesh/Field.cpp | 17 +++++++++++++++++ Mesh/Field.h | 1 + Plugin/GSHHS.cpp | 4 ++-- 5 files changed, 35 insertions(+), 18 deletions(-) diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp index f459f2de3d..eb2a4bcf4b 100644 --- a/Fltk/Callbacks.cpp +++ b/Fltk/Callbacks.cpp @@ -4472,11 +4472,15 @@ void view_field_put_on_view_cb(CALLBACK_ARGS) Fl_Menu_Button* mb = ((Fl_Menu_Button*)w); Field *field = (Field*)WID->field_editor_group->user_data(); int iView; - sscanf(mb->text(), "View [%i]", &iView); - if(iView<PView::list.size()){ - field->put_on_view(PView::list[iView]); - Draw(); + if(sscanf(mb->text(), "View [%i]", &iView)){ + if(iView<PView::list.size()){ + field->put_on_view(PView::list[iView]); + } + }else{ + field->put_on_new_view(); + WID->update_views(); } + Draw(); } void view_field_select_file_cb(CALLBACK_ARGS){ diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp index 2790e69b99..bbe104116b 100644 --- a/Fltk/GUI.cpp +++ b/Fltk/GUI.cpp @@ -3881,16 +3881,12 @@ void GUI::load_field_options() void GUI::load_field_view_list() { field_put_on_view_btn->clear(); - if(PView::list.size() > 0){ - field_put_on_view_btn->activate(); - for(unsigned int i = 0; i < PView::list.size(); i++) { - std::ostringstream s; - s << "View [" << i << "]"; - field_put_on_view_btn->add(s.str().c_str()); - } - } - else{ - field_put_on_view_btn->deactivate(); + field_put_on_view_btn->add("New view"); + field_put_on_view_btn->activate(); + for(unsigned int i = 0; i < PView::list.size(); i++) { + std::ostringstream s; + s << "View [" << i << "]"; + field_put_on_view_btn->add(s.str().c_str()); } } @@ -3954,8 +3950,7 @@ void GUI::edit_field(Field *f) field_options_scroll->end(); load_field_options(); field_options_scroll->damage(1); - if(PView::list.size() > 0) - field_put_on_view_btn->activate(); + field_put_on_view_btn->activate(); field_delete_btn->activate(); load_field_list(); } diff --git a/Mesh/Field.cpp b/Mesh/Field.cpp index 598aabc4fc..ba4edd8786 100644 --- a/Mesh/Field.cpp +++ b/Mesh/Field.cpp @@ -30,6 +30,7 @@ #if !defined(HAVE_NO_POST) #include "OctreePost.h" #include "PViewDataList.h" +#include "MVertex.h" #endif extern Context_T CTX; @@ -1330,6 +1331,22 @@ Field::Field() } #if !defined(HAVE_NO_POST) +void Field::put_on_new_view(){ + std::map<int, std::vector<double> > d; + std::vector<GEntity*> entities; + GModel::current()->getEntities(entities); + for(unsigned int i = 0; i < entities.size(); i++){ + for(unsigned int j = 0; j < entities[i]->mesh_vertices.size(); j++){ + MVertex *v = entities[i]->mesh_vertices[j]; + d[v->getNum()].push_back((*this)(v->x(),v->y(),v->z(),entities[i])); + } + } + std::ostringstream oss; + oss<<"Field "<<id; + PView *view= new PView(oss.str().c_str(), "NodeData", GModel::current(), d); + view->setChanged(true); +} + void Field::put_on_view(PView * view, int comp) { PViewDataList *data = dynamic_cast<PViewDataList*>(view->getData()); diff --git a/Mesh/Field.h b/Mesh/Field.h index 4660c17473..6572fd2683 100644 --- a/Mesh/Field.h +++ b/Mesh/Field.h @@ -67,6 +67,7 @@ class Field { virtual const char *get_name() = 0; #if !defined(HAVE_NO_POST) void put_on_view(PView * view, int comp = -1); + void put_on_new_view(); #endif virtual std::string get_description(){ return ""; } }; diff --git a/Plugin/GSHHS.cpp b/Plugin/GSHHS.cpp index 41e9b54419..c36a366859 100644 --- a/Plugin/GSHHS.cpp +++ b/Plugin/GSHHS.cpp @@ -38,7 +38,7 @@ class coordinate_lonlat:public coordinate_system{ ll.setPosition( atan2(xyz.y(),xyz.x()), asin(xyz.z()/r), 0); } }; -// ************** Longitude Latitude_degrees *************** +// ************** Longitude Latitude (degrees) *************** class coordinate_lonlat_degrees:public coordinate_system{ coordinate_lonlat cll; SPoint3 llradian; @@ -284,7 +284,7 @@ class GeoEarthImport } }; -/* $Id: GSHHS.cpp,v 1.15 2008-08-21 07:31:49 geuzaine Exp $ +/* $Id: GSHHS.cpp,v 1.16 2008-10-14 13:54:49 remacle Exp $ * * PROGRAM: gshhs.c * AUTHOR: Paul Wessel (pwessel@hawaii.edu) -- GitLab