diff --git a/Common/Views.cpp b/Common/Views.cpp index 12cdb4a6f7585a669435b87fd369f4a293bb68bf..0f23ff63231ed334036f4dd725445435cb49f59a 100644 --- a/Common/Views.cpp +++ b/Common/Views.cpp @@ -1,4 +1,4 @@ -/* $Id: Views.cpp,v 1.3 2000-11-25 15:26:10 geuzaine Exp $ */ +/* $Id: Views.cpp,v 1.4 2000-11-25 23:10:37 geuzaine Exp $ */ #include "Gmsh.h" #include "Views.h" @@ -34,6 +34,8 @@ void BeginView(int allocate){ ActualView->NbSS = ActualView->NbVS = ActualView->NbTS = 0; if(allocate){ + ActualView->Time = List_Create(100,1000,sizeof(double)); + ActualView->SP = List_Create(100,1000,sizeof(double)); ActualView->VP = List_Create(100,1000,sizeof(double)); ActualView->TP = List_Create(100,1000,sizeof(double)); @@ -62,6 +64,7 @@ void BeginView(int allocate){ ActualView->IntervalsType = CTX.post.initial_intervals; ActualView->Light = 0; ActualView->ShowElement = 0; + ActualView->ShowTime = 1; ActualView->Visible = CTX.post.initial_visibility; ActualView->TimeStep = 0; ActualView->ArrowScale = 100.; @@ -88,6 +91,7 @@ void BeginView(int allocate){ void EndView(int AddInUI, int Number, char *FileName, char *Name, double XOffset, double YOffset, double ZOffset){ int i, nb; + double d; extern void AddViewInUI(int , char *, int); // Points @@ -174,6 +178,14 @@ void EndView(int AddInUI, int Number, char *FileName, char *Name, nb-12, (double*)List_Pointer(ActualView->TS,i+12)); } + // Dummy time values if using old parsed format... + if(!List_Nbr(ActualView->Time)){ + for(i=0 ; i<ActualView->NbTimeStep ; i++){ + d = (double)i; + List_Add(ActualView->Time, &d); + } + } + strcpy(ActualView->FileName,FileName); strcpy(ActualView->Name,Name); strcpy(ActualView->Format, "%.3e"); @@ -234,6 +246,8 @@ void FreeView(Post_View *v){ if(free && !v->Links){ Msg(DEBUG, " ->Freeing View"); + List_Delete(v->Time); + List_Delete(v->SP); List_Delete(v->VP); List_Delete(v->TP); List_Delete(v->Points); @@ -345,8 +359,128 @@ void AddView_TensorSimplex(int dim, double *coord, int N, double *v){ /* R e a d _ V i e w */ /* ------------------------------------------------------------------------ */ -void Read_View(char *FileName){ +extern int Force_ViewNumber; - +void Read_View(FILE *file, char *filename){ + char str[NAME_STR_L], name[NAME_STR_L]; + int nb, format, nbtimestep; + double version; + + while (1) { + + do { + fgets(str, NAME_STR_L, file) ; + if (feof(file)) break ; + } while (str[0] != '$') ; + + if (feof(file)) break ; + + /* F o r m a t */ + + if (!strncmp(&str[1], "PostFormat", 10)){ + fscanf(file, "%lf %d\n", &version, &format) ; + if(version < 0.995){ + Msg(ERROR, "The Version of this File is too old (<0.995)"); + return; + } + if(format == 0) format = LIST_FORMAT_ASCII ; + else if(format == 1) format = LIST_FORMAT_BINARY ; + else Msg(FATAL, "Unknown Format for View"); + } + + /* V i e w */ + + if (!strncmp(&str[1], "View", 4)) { + + BeginView(0); + + fscanf(file, "%s %d %d %d %d %d %d %d %d %d %d %d %d %d\n", + name, &nbtimestep, + &ActualView->NbSP, &ActualView->NbVP, &ActualView->NbTP, + &ActualView->NbSL, &ActualView->NbVL, &ActualView->NbTL, + &ActualView->NbST, &ActualView->NbVT, &ActualView->NbTT, + &ActualView->NbSS, &ActualView->NbVS, &ActualView->NbTS); + + Msg(DEBUG, "View '%s' (%d TimeSteps): %d %d %d %d %d %d %d %d %d %d %d %d", + name, nbtimestep, + ActualView->NbSP, ActualView->NbVP, ActualView->NbTP, + ActualView->NbSL, ActualView->NbVL, ActualView->NbTL, + ActualView->NbST, ActualView->NbVT, ActualView->NbTT, + ActualView->NbSS, ActualView->NbVS, ActualView->NbTS); + + ActualView->Time = List_CreateFromFile(nbtimestep, sizeof(double), file, format); + + if((nb = ActualView->NbSP + ActualView->NbVP + ActualView->NbTP)) + ActualView->Points = List_Create(nb,1,sizeof(Post_Simplex)); + else + ActualView->Points = NULL ; + nb = ActualView->NbSP ? + ActualView->NbSP * nbtimestep + ActualView->NbSP * 3 : 0 ; + ActualView->SP = List_CreateFromFile(nb, sizeof(double), file, format); + nb = ActualView->NbVP ? + ActualView->NbVP * nbtimestep * 3 + ActualView->NbVP * 3 : 0 ; + ActualView->VP = List_CreateFromFile(nb, sizeof(double), file, format); + nb = ActualView->NbTP ? + ActualView->NbTP * nbtimestep * 9 + ActualView->NbTP * 3 : 0 ; + ActualView->TP = List_CreateFromFile(nb, sizeof(double), file, format); + + if((nb = ActualView->NbSL + ActualView->NbVL + ActualView->NbTL)) + ActualView->Lines = List_Create(nb,1,sizeof(Post_Simplex)); + else + ActualView->Lines = NULL ; + nb = ActualView->NbSL ? + ActualView->NbSL * nbtimestep * 2 + ActualView->NbSL * 6 : 0 ; + ActualView->SL = List_CreateFromFile(nb, sizeof(double), file, format); + nb = ActualView->NbVL ? + ActualView->NbVL * nbtimestep * 2 * 3 + ActualView->NbVL * 6 : 0 ; + ActualView->VL = List_CreateFromFile(nb, sizeof(double), file, format); + nb = ActualView->NbTL ? + ActualView->NbTL * nbtimestep * 2 * 9 + ActualView->NbTL * 6 : 0 ; + ActualView->TL = List_CreateFromFile(nb, sizeof(double), file, format); + + if((nb = ActualView->NbST + ActualView->NbVT + ActualView->NbTT)) + ActualView->Triangles = List_Create(nb,1,sizeof(Post_Simplex)); + else + ActualView->Triangles = NULL ; + nb = ActualView->NbST ? + ActualView->NbST * nbtimestep * 3 + ActualView->NbST * 9 : 0 ; + ActualView->ST = List_CreateFromFile(nb, sizeof(double), file, format); + nb = ActualView->NbVT ? + ActualView->NbVT * nbtimestep * 3 * 3 + ActualView->NbVT * 9 : 0 ; + ActualView->VT = List_CreateFromFile(nb, sizeof(double), file, format); + nb = ActualView->NbTT ? + ActualView->NbTT * nbtimestep * 3 * 9 + ActualView->NbTT * 9 : 0 ; + ActualView->TT = List_CreateFromFile(nb, sizeof(double), file, format); + + if((nb = ActualView->NbSS + ActualView->NbVS + ActualView->NbTS)) + ActualView->Tetrahedra = List_Create(nb,1,sizeof(Post_Simplex)); + else + ActualView->Tetrahedra = NULL ; + nb = ActualView->NbSS ? + ActualView->NbSS * nbtimestep * 4 + ActualView->NbSS * 12 : 0 ; + ActualView->SS = List_CreateFromFile(nb, sizeof(double), file, format); + nb = ActualView->NbVS ? + ActualView->NbVS * nbtimestep * 4 * 3 + ActualView->NbVS * 12 : 0 ; + ActualView->VS = List_CreateFromFile(nb, sizeof(double), file, format); + nb = ActualView->NbTS ? + ActualView->NbTS * nbtimestep * 4 * 9 + ActualView->NbTS * 12 : 0 ; + ActualView->TS = List_CreateFromFile(nb, sizeof(double), file, format); + + Msg(DEBUG, "Read View '%s' (%d TimeSteps): %d %d %d %d %d %d %d %d %d %d %d %d", + name, nbtimestep, + List_Nbr(ActualView->SP), List_Nbr(ActualView->VP), List_Nbr(ActualView->TP), + List_Nbr(ActualView->SL), List_Nbr(ActualView->VL), List_Nbr(ActualView->TL), + List_Nbr(ActualView->ST), List_Nbr(ActualView->VT), List_Nbr(ActualView->TT), + List_Nbr(ActualView->SS), List_Nbr(ActualView->VS), List_Nbr(ActualView->TS)); + + EndView(1, Force_ViewNumber, filename, name, 0., 0., 0.); + } + + do { + fgets(str, NAME_STR_L, file) ; + if (feof(file)) Msg(ERROR,"Prematured End of File"); + } while (str[0] != '$') ; + + } /* while 1 ... */ } diff --git a/Common/Views.h b/Common/Views.h index e99becd37a55ad953ddb9ec1df1f5940e539aafc..aeed59913eae8f2d6fee29cc3aa5dcf031ee58a3 100644 --- a/Common/Views.h +++ b/Common/Views.h @@ -1,4 +1,4 @@ -/* $Id: Views.h,v 1.4 2000-11-25 15:26:10 geuzaine Exp $ */ +/* $Id: Views.h,v 1.5 2000-11-25 23:10:37 geuzaine Exp $ */ #ifndef _VIEWS_H_ #define _VIEWS_H_ @@ -17,12 +17,14 @@ typedef struct{ double Min, Max, CustomMin, CustomMax; double Offset[3], Raise[3], ArrowScale; int Visible, ScalarOnly; - int IntervalsType, NbIso, Light, ShowElement; + int IntervalsType, NbIso, Light, ShowElement, ShowTime; int ShowScale, TransparentScale, ScaleType, RangeType; int ArrowType, ArrowLocation; int TimeStep, NbTimeStep; ColorTable CT; + List_T *Time; + int NbSP, NbVP, NbTP; List_T *SP, *VP, *TP, *Points; // points int NbSL, NbVL, NbTL; @@ -77,6 +79,8 @@ void EndView (int AddInUI, int Number, char *FileName, char *Name, double XOffset, double YOffset, double ZOffset); void FreeView(Post_View *v); +void Read_View(FILE *file, char *filename); + void AddView_ScalarSimplex(int dim, double *coord, int N, double *v); void AddView_VectorSimplex(int dim, double *coord, int N, double *v); void AddView_TensorSimplex(int dim, double *coord, int N, double *v); diff --git a/DataStr/List.cpp b/DataStr/List.cpp index 3de4d326fd33f1b224d02bf3a1e081949cf57005..0c48b35c076c1a12ce8a5e1ff470955de62ceb39 100644 --- a/DataStr/List.cpp +++ b/DataStr/List.cpp @@ -1,5 +1,5 @@ -/* $Id: List.cpp,v 1.3 2000-11-23 23:20:34 geuzaine Exp $ */ -#define RCSID "$Id: List.cpp,v 1.3 2000-11-23 23:20:34 geuzaine Exp $" +/* $Id: List.cpp,v 1.4 2000-11-25 23:10:37 geuzaine Exp $ */ +#define RCSID "$Id: List.cpp,v 1.4 2000-11-25 23:10:37 geuzaine Exp $" /* Original author: Marc UME */ #include <stdlib.h> @@ -36,6 +36,7 @@ List_T *List_Create(int n, int incr, int size) void List_Delete(List_T *liste) { + if(!liste) return ; Free(liste->array); Free(liste); } @@ -336,3 +337,43 @@ void List_Copy(List_T *a , List_T *b){ List_Add(b,List_Pointer(a,i)); } } + +List_T *List_CreateFromFile(int n, int size, FILE *file, int format){ + int i; + List_T *liste; + + if(!n) return NULL; + + liste = List_Create(n, 1, size); + liste->n = n; + switch(format){ + case LIST_FORMAT_ASCII : + for(i=0;i<n;i++) fscanf(file, "%lf ", (double*)&liste->array[i*size]) ; + return liste; + case LIST_FORMAT_BINARY : + fread(liste->array, size, n, file); + return liste; + default : + Msg(ERROR, "Unknown List Format"); + return NULL; + } + +} + +void List_WriteToFile(List_T *liste, FILE *file, int format){ + int i, n; + + if(!(n=List_Nbr(liste))) return ; + + switch(format){ + case LIST_FORMAT_ASCII : + for(i=0;i<n;i++) fprintf(file, "%g ", *((double*)&liste->array[i*liste->size])) ; + fprintf(file, "\n"); + break; + case LIST_FORMAT_BINARY : + fwrite(liste->array, liste->size, n, file); + break; + default : + Msg(ERROR, "Unknown List Format"); + } +} diff --git a/DataStr/List.h b/DataStr/List.h index 9a7b2a89ae02e4a87d2ec6ff8c9d6a1ec90b0195..0773ad36faac9988825eac61b4fa88535bfbf9b4 100644 --- a/DataStr/List.h +++ b/DataStr/List.h @@ -1,8 +1,12 @@ -/* $Id: List.h,v 1.2 2000-11-23 14:11:29 geuzaine Exp $ */ -/* $Id: List.h,v 1.2 2000-11-23 14:11:29 geuzaine Exp $ */ +/* $Id: List.h,v 1.3 2000-11-25 23:10:37 geuzaine Exp $ */ #ifndef _LIST_H_ #define _LIST_H_ +#include <stdio.h> + +#define LIST_FORMAT_ASCII 0 +#define LIST_FORMAT_BINARY 1 + typedef struct { int nmax; int size; @@ -41,6 +45,8 @@ void List_Reset(List_T *liste); void List_Action(List_T *liste, void (*action)(void *data, void *dummy)); void List_Action_Inverse(List_T *liste, void (*action)(void *data, void *dummy)); void List_Copy(List_T *a , List_T *b); +List_T *List_CreateFromFile(int n, int size, FILE *file, int format); +void List_WriteToFile(List_T *liste, FILE *file, int format); #endif diff --git a/Graphics/Scale.cpp b/Graphics/Scale.cpp index 1b1ba227cc6995ad40e583c2bc7aeedbd912f952..692ca5609c552d93b8a56f2024d4efa6e3a6bd9a 100644 --- a/Graphics/Scale.cpp +++ b/Graphics/Scale.cpp @@ -1,4 +1,4 @@ -/* $Id: Scale.cpp,v 1.3 2000-11-23 16:51:29 geuzaine Exp $ */ +/* $Id: Scale.cpp,v 1.4 2000-11-25 23:10:37 geuzaine Exp $ */ #include "Gmsh.h" #include "GmshUI.h" @@ -209,7 +209,10 @@ void draw_scale(Post_View *v, double xmin, double ymin, double *width, double he /* the label */ glRasterPos2d(cv_xmin,ymin); - sprintf(label, "%s", v->Name); + if(List_Nbr(v->Time)>1 && v->ShowTime) + sprintf(label, "%s (%g)", v->Name, *(double*)List_Pointer(v->Time,v->TimeStep)); + else + sprintf(label, "%s", v->Name); Draw_String(label); CHECK_W; diff --git a/Unix/CbContext.cpp b/Unix/CbContext.cpp index 851c27c9e793ad5da4c5ed31b9448a10ac88a747..8216a300e771160324be0b9b6c42cd4995be7aef 100644 --- a/Unix/CbContext.cpp +++ b/Unix/CbContext.cpp @@ -1,4 +1,4 @@ -/* $Id: CbContext.cpp,v 1.4 2000-11-25 15:26:12 geuzaine Exp $ */ +/* $Id: CbContext.cpp,v 1.5 2000-11-25 23:10:37 geuzaine Exp $ */ #include "Gmsh.h" #include "GmshUI.h" @@ -604,13 +604,15 @@ int AddViewInUI(int i, char *Name, int Num){ return 0; } +static int All = 0 ; + void RemoveViewCb(Widget w, XtPointer client_data, XtPointer call_data){ Post_View *v; int i; i = (long int)client_data ; - v = (Post_View*)List_Pointer(Post_ViewList,(long int)client_data-1); + v = (Post_View*)List_Pointer(Post_ViewList,(long int)i-1); while(txt_post[i]){ strncpy(txt_post[i-1], txt_post[i], NAME_STR_L); @@ -627,6 +629,19 @@ void RemoveViewCb(Widget w, XtPointer client_data, XtPointer call_data){ if(actual_global_context == CONTEXT_POST) ActualizeContextCb(NULL,(XtPointer)actual_global_context,NULL); + if(!All){ + Init(); + Draw(); + } +} + +void RemoveAllViewsCb(Widget w, XtPointer client_data, XtPointer call_data){ + int i=1; + if(!Post_ViewList) return; + All = 1; + while(List_Nbr(Post_ViewList)) + RemoveViewCb(NULL, (XtPointer)i, NULL); + All = 0; Init(); Draw(); } diff --git a/Unix/CbInput.cpp b/Unix/CbInput.cpp index 1282c5b20bf2f89d1c9d1809cf358227f51abb7a..7116d97219a55a5f2f1b21ba009b8a939254b04e 100644 --- a/Unix/CbInput.cpp +++ b/Unix/CbInput.cpp @@ -1,4 +1,4 @@ -/* $Id: CbInput.cpp,v 1.4 2000-11-25 15:26:12 geuzaine Exp $ */ +/* $Id: CbInput.cpp,v 1.5 2000-11-25 23:10:37 geuzaine Exp $ */ #include "Gmsh.h" #include "GmshUI.h" @@ -173,6 +173,14 @@ void KeyboardAccel(XEvent *event){ Modifier = 0 ; ManageCb(NULL,(XtPointer)WID.FD.printDialog,NULL); break; + case XK_l : case XK_L : + Modifier = 0 ; + ReloadAllViewsCb(NULL,NULL,NULL); + break; + case XK_r : case XK_R : + Modifier = 0 ; + RemoveAllViewsCb(NULL,NULL,NULL); + break; } break ; diff --git a/Unix/CbPost.cpp b/Unix/CbPost.cpp index be96fe558d3c8841bd8d59eb52f2dcda05428fa9..24eb84ef394fc8cd360122ea5d233fafad0d51f5 100644 --- a/Unix/CbPost.cpp +++ b/Unix/CbPost.cpp @@ -1,4 +1,4 @@ -/* $Id: CbPost.cpp,v 1.4 2000-11-25 15:26:12 geuzaine Exp $ */ +/* $Id: CbPost.cpp,v 1.5 2000-11-25 23:10:37 geuzaine Exp $ */ #include "Gmsh.h" #include "GmshUI.h" @@ -130,6 +130,7 @@ void DuplicateViewCb (Widget w, XtPointer client_data, XtPointer call_data){ } } + v2->Time = v1->Time; v2->Points = v1->Points; v2->Lines = v1->Lines; v2->Triangles = v1->Triangles; @@ -144,6 +145,8 @@ void DuplicateViewCb (Widget w, XtPointer client_data, XtPointer call_data){ Draw(); } +static int All = 0; + void ReloadViewCb (Widget w, XtPointer client_data, XtPointer call_data){ Post_View *v ; char filename[NAME_STR_L]; @@ -156,7 +159,19 @@ void ReloadViewCb (Widget w, XtPointer client_data, XtPointer call_data){ FreeView(v); MergeProblem(filename); Force_ViewNumber = 0 ; - + if(!All){ + Init(); + Draw(); + } +} + +void ReloadAllViewsCb(Widget w, XtPointer client_data, XtPointer call_data){ + int i; + if(!Post_ViewList) return; + All = 1; + for(i = 1 ; i<=List_Nbr(Post_ViewList) ; i++) + ReloadViewCb(NULL, (XtPointer)i, NULL); + All = 0; Init(); Draw(); } @@ -243,6 +258,7 @@ void PostDialogCb (Widget w, XtPointer client_data, XtPointer call_data){ XtVaSetValues(WID.PD.scaleShowButt, XmNset, v->ShowScale?True:False, NULL); XtVaSetValues(WID.PD.scaleTransButt, XmNset, v->TransparentScale?True:False, NULL); + XtVaSetValues(WID.PD.scaleTimeButt, XmNset, v->ShowTime?True:False, NULL); XtVaSetValues(WID.PD.scaleText[0], XmNvalue, v->Format, NULL); XtSetSensitive(WID.PD.scaleText[0], v->ShowScale?1:0); @@ -423,6 +439,7 @@ void PostCb (Widget w, XtPointer client_data, XtPointer call_data){ break; case POST_SCALE_SHOW: case POST_SCALE_TRANSPARENCY: + case POST_SCALE_TIME: case POST_SCALE_FORMAT: case POST_SCALE_LABEL: case POST_SCALE_MIN: @@ -586,6 +603,9 @@ void ChangeViewParam (Post_View *v, XtPointer client_data, XtPointer call_data){ case POST_SCALE_TRANSPARENCY: v->TransparentScale = !v->TransparentScale; break; + case POST_SCALE_TIME: + v->ShowTime = !v->ShowTime; + break; case POST_SCALE_FORMAT: c = XmTextGetString(WID.PD.scaleText[0]); strcpy(v->Format,c); break; diff --git a/Unix/CbPost.h b/Unix/CbPost.h index c5f4b2469fb33eca0c9cc0f10ab6595725cdeb26..0c50f59f7c990b4d2fcf0cee3b0ca11c267d53b1 100644 --- a/Unix/CbPost.h +++ b/Unix/CbPost.h @@ -1,4 +1,4 @@ -/* $Id: CbPost.h,v 1.2 2000-11-23 14:11:41 geuzaine Exp $ */ +/* $Id: CbPost.h,v 1.3 2000-11-25 23:10:37 geuzaine Exp $ */ #ifndef _CB_POST_H_ #define _CB_POST_H_ @@ -40,6 +40,7 @@ #define POST_SCALE_INTERVALS_TYPE_NUMERIC 433 #define POST_SCALE_INTERVALS_SCALE 434 #define POST_SCALE_INTERVALS_TEXT 435 +#define POST_SCALE_TIME 436 #define POST_COLOR_REPLOT 440 diff --git a/Unix/Main.cpp b/Unix/Main.cpp index c0483a0f0f155a3a73a5ecd20d40a8391312ac44..45438d7077302daa627643c410a8235982940bcd 100644 --- a/Unix/Main.cpp +++ b/Unix/Main.cpp @@ -1,4 +1,4 @@ -/* $Id: Main.cpp,v 1.12 2000-11-25 15:26:12 geuzaine Exp $ */ +/* $Id: Main.cpp,v 1.13 2000-11-25 23:10:37 geuzaine Exp $ */ #include <signal.h> @@ -116,6 +116,10 @@ void ParseFile(char *f){ Msg(WARNING, "No Post-Processing View Available to set Colors From"); } } + else if(!strncmp(String, "$PostFormat", 11) || + !strncmp(String, "$View", 5)){ + Read_View(yyin, yyname); + } else{ while(!feof(yyin)) yyparse(); } diff --git a/Unix/Register.cpp b/Unix/Register.cpp index d11281efc00d4c9aa2f4219365f80116ca26238d..9ebf11a0587c0e03fed16b16ea9ca942b433b4d4 100644 --- a/Unix/Register.cpp +++ b/Unix/Register.cpp @@ -1,4 +1,4 @@ -/* $Id: Register.cpp,v 1.7 2000-11-25 15:26:12 geuzaine Exp $ */ +/* $Id: Register.cpp,v 1.8 2000-11-25 23:10:37 geuzaine Exp $ */ #include "Gmsh.h" #include "GmshUI.h" @@ -25,7 +25,9 @@ void RegisterCallbacks_M(Widgets_T *w){ register_activate_cb (w->M.fileButt[2], FileCb, FILE_SAVE_MESH); register_activate_cb (w->M.fileButt[3], ManageCb, w->FD.saveAsDialog); register_activate_cb (w->M.fileButt[4], ManageCb, w->FD.printDialog); - register_activate_cb (w->M.fileButt[5], ExitCb, NULL); + register_activate_cb (w->M.fileButt[5], ReloadAllViewsCb, NULL); + register_activate_cb (w->M.fileButt[6], RemoveAllViewsCb, NULL); + register_activate_cb (w->M.fileButt[7], ExitCb, NULL); register_activate_cb (w->M.moduleButt[0], ActualizeContextCb, CONTEXT_GEOM); register_activate_cb (w->M.moduleButt[1], ActualizeContextCb, CONTEXT_MESH); @@ -333,6 +335,7 @@ void RegisterCallbacks_PD(Widgets_T *w){ register_cancel_cb (w->PD.scaleDialog, ManageCb, w->PD.scaleDialog); register_valchg_cb (w->PD.scaleShowButt, PostCb, POST_SCALE_SHOW); register_valchg_cb (w->PD.scaleTransButt, PostCb, POST_SCALE_TRANSPARENCY); + register_valchg_cb (w->PD.scaleTimeButt, PostCb, POST_SCALE_TIME); register_valchg_cb (w->PD.scaleText[0], PostCb, POST_SCALE_FORMAT); register_valchg_cb (w->PD.scaleText[1], PostCb, POST_SCALE_LABEL); register_valchg_cb (w->PD.scaleRangeButt, PostCb, POST_SCALE_FORCE_RANGE); diff --git a/Unix/Register.h b/Unix/Register.h index 7e81704c4c2d5a78f868e6bf1f0d5e1ec8d64b41..f49cc979721d6059315a0340b1eacebda29d48b2 100644 --- a/Unix/Register.h +++ b/Unix/Register.h @@ -1,4 +1,4 @@ -/* $Id: Register.h,v 1.3 2000-11-25 15:26:12 geuzaine Exp $ */ +/* $Id: Register.h,v 1.4 2000-11-25 23:10:37 geuzaine Exp $ */ #ifndef _REGISTER_H_ #define _REGISTER_H_ @@ -29,9 +29,11 @@ void CurrentInfoCb (Widget w, XtPointer client_data, XtPointer call_data); void CurrentViewportCb (Widget w, XtPointer client_data, XtPointer call_data); void CurrentViewCb (Widget w, XtPointer client_data, XtPointer call_data); void SwapViewCb (Widget w, XtPointer client_data, XtPointer call_data); -void RemoveViewCb (Widget w, XtPointer client_data, XtPointer call_data); void DuplicateViewCb (Widget w, XtPointer client_data, XtPointer call_data); void ReloadViewCb (Widget w, XtPointer client_data, XtPointer call_data); +void ReloadAllViewsCb (Widget w, XtPointer client_data, XtPointer call_data); +void RemoveViewCb (Widget w, XtPointer client_data, XtPointer call_data); +void RemoveAllViewsCb (Widget w, XtPointer client_data, XtPointer call_data); void OptionsCb (Widget w, XtPointer client_data, XtPointer call_data); void FileCb (Widget w, XtPointer client_data, XtPointer call_data); diff --git a/Unix/Widgets.cpp b/Unix/Widgets.cpp index 656a96eaed855b804b8f9ca3388e21a98692b437..b769daf436cd17ce445235b19198a06256f6112c 100644 --- a/Unix/Widgets.cpp +++ b/Unix/Widgets.cpp @@ -1,4 +1,4 @@ -/* $Id: Widgets.cpp,v 1.9 2000-11-25 15:26:12 geuzaine Exp $ */ +/* $Id: Widgets.cpp,v 1.10 2000-11-25 23:10:37 geuzaine Exp $ */ #include "Gmsh.h" #include "GmshUI.h" @@ -103,12 +103,30 @@ void CreateWidgets_M(Widgets_T *w){ w->M.fileSep[1] = XmCreateSeparator(w->M.filePane, "MfileSep1", arg, i); XtManageChild(w->M.fileSep[1]); + i=0; + XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Reload All Views")); i++; + XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(C-l)")); i++; + XtSetArg(arg[i], XmNaccelerator, "Ctrl<Key>l:"); i++; + w->M.fileButt[5] = XmCreatePushButton(w->M.filePane, "MfileButt5", arg, i); + XtManageChild(w->M.fileButt[5]); + + i=0; + XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Remove All Views")); i++; + XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(C-r)")); i++; + XtSetArg(arg[i], XmNaccelerator, "Ctrl<Key>r:"); i++; + w->M.fileButt[6] = XmCreatePushButton(w->M.filePane, "MfileButt6", arg, i); + XtManageChild(w->M.fileButt[6]); + + i=0; + w->M.fileSep[2] = XmCreateSeparator(w->M.filePane, "MfileSep2", arg, i); + XtManageChild(w->M.fileSep[2]); + i=0; XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Quit")); i++; XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(C-q)")); i++; XtSetArg(arg[i], XmNaccelerator, "Ctrl<Key>q:"); i++; - w->M.fileButt[5] = XmCreatePushButton(w->M.filePane, "MfileButt5", arg, i); - XtManageChild(w->M.fileButt[5]); + w->M.fileButt[7] = XmCreatePushButton(w->M.filePane, "MfileButt7", arg, i); + XtManageChild(w->M.fileButt[7]); i=0; XtSetArg(arg[i], XmNsubMenuId, w->M.filePane); i++; @@ -2378,15 +2396,25 @@ void CreateWidgets_PD(Widgets_T *w){ XtManageChild(w->PD.scaleFrameRowCol[0]); i=0; - XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Visibility")); i++; - w->PD.scaleShowButt = XmCreateToggleButton(w->PD.scaleFrameRowCol[0], "PDscaleShowButt", arg, i); + XtSetArg(arg[i], XmNnumColumns, 2); i++; + w->PD.scaleCheck = XmCreateSimpleCheckBox(w->PD.scaleFrameRowCol[0], "PDscaleCheck", arg, i); + XtManageChild(w->PD.scaleCheck); + + i=0; + XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Show")); i++; + w->PD.scaleShowButt = XmCreateToggleButton(w->PD.scaleCheck, "PDscaleShowButt", arg, i); XtManageChild(w->PD.scaleShowButt); i=0; XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Transparency")); i++; - w->PD.scaleTransButt = XmCreateToggleButton(w->PD.scaleFrameRowCol[0], "PDscaleTransButt", arg, i); + w->PD.scaleTransButt = XmCreateToggleButton(w->PD.scaleCheck, "PDscaleTransButt", arg, i); XtManageChild(w->PD.scaleTransButt); + i=0; + XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Time Display")); i++; + w->PD.scaleTimeButt = XmCreateToggleButton(w->PD.scaleCheck, "PDscaleTimeButt", arg, i); + XtManageChild(w->PD.scaleTimeButt); + for(n=0 ; n<2 ; n++){ i=0; XtSetArg(arg[i], XmNvalue, "0.00000000000000000001e-1"); i++; /* lesstif bug */ @@ -2422,6 +2450,7 @@ void CreateWidgets_PD(Widgets_T *w){ } i=0; + XtSetArg(arg[i], XmNnumColumns, 2); i++; w->PD.scaleTypeCheck = XmCreateRadioBox(w->PD.scaleFrameRowCol[1], "PDscaleTypeCheck", arg, i); XtManageChild(w->PD.scaleTypeCheck); diff --git a/Unix/Widgets.h b/Unix/Widgets.h index cfc2bdf882ed26383248fd6600ff05b2d14a005f..27aa99635ca18044f288a1e9d650bdb6c43d634f 100644 --- a/Unix/Widgets.h +++ b/Unix/Widgets.h @@ -1,4 +1,4 @@ -/* $Id: Widgets.h,v 1.4 2000-11-25 15:26:12 geuzaine Exp $ */ +/* $Id: Widgets.h,v 1.5 2000-11-25 23:10:37 geuzaine Exp $ */ #ifndef _WIDGETS_H_ #define _WIDGETS_H_ @@ -19,7 +19,7 @@ typedef struct { struct { Widget shell, containerWin ; Widget menuBar ; - Widget fileCascade, filePane, fileButt[6], fileSep[2] ; + Widget fileCascade, filePane, fileButt[8], fileSep[3] ; Widget moduleCascade, modulePane, moduleButt[3] ; Widget optionCascade, optionPane, optionButt[6], optionSep[2] ; Widget helpCascade, helpPane, helpButt[2], helpSep[1] ; @@ -198,7 +198,7 @@ typedef struct { Widget scaleDialog, scaleRowCol ; Widget scaleFrame[2][4], scaleFrameRowCol[4] ; - Widget /* 1 */ scaleShowButt, scaleTransButt, scaleText[2] ; + Widget /* 1 */ scaleCheck, scaleShowButt, scaleTransButt, scaleTimeButt, scaleText[2] ; Widget /* 2 */ scaleRangeButt, scaleRangeText[2], scaleTypeCheck, scaleTypeButt[2] ; Widget /* 3 */ scaleIntervalsCheck, scaleIntervalsButt[4], diff --git a/bin/gdb_gmsh b/bin/gdb_gmsh index bd665ca2273b089aad6c9977e62fd24cd09e8b35..bc2d1bd56ad51b0a1b765df719f0131f32d327c4 100644 --- a/bin/gdb_gmsh +++ b/bin/gdb_gmsh @@ -1,4 +1,4 @@ -gdb /usr/users53/geuzaine/SOURCES/gmsh-nl/bin/gmsh \ +gdb /usr/users53/geuzaine/SOURCES/gmsh-nl/bin/gmsh \ -d /usr/users53/geuzaine/SOURCES/gmsh-nl/GmshUnix \ -d /usr/users53/geuzaine/SOURCES/gmsh-nl/GmshMesh \ -d /usr/users53/geuzaine/SOURCES/gmsh-nl/GmshGeo \