move mesh export formats from ngappinit to Tcl-script

This commit is contained in:
Joachim Schöberl 2019-08-04 11:12:19 +02:00
parent a73594b738
commit b1ea81b401
4 changed files with 41 additions and 9 deletions

View File

@ -244,6 +244,8 @@ loadmeshinifile;
} }
set meshexportformats [Ng_GetExportFormats]
.ngmenu.file add command -label "Export Mesh..." \ .ngmenu.file add command -label "Export Mesh..." \
-command { -command {
@ -262,7 +264,10 @@ loadmeshinifile;
set file [file nativename [tk_chooseDirectory -title "OpenFOAM 1.5+ Mesh Export - Select Case Directory"]] set file [file nativename [tk_chooseDirectory -title "OpenFOAM 1.5+ Mesh Export - Select Case Directory"]]
} else { } else {
# set file [tk_getSaveFile -filetypes "{ \"$exportfiletype\" {$extension} }" ] # set file [tk_getSaveFile -filetypes "{ \"$exportfiletype\" {$extension} }" ]
set file [tk_getSaveFile -filetypes "{ \"$exportfiletype\" {*}}" ] # set file [tk_getSaveFile -filetypes "{ \"$exportfiletype\" {*}}" ]
set file [tk_getSaveFile -filetypes $meshexportformats -typevariable exportfiletype]
puts "type = $exportfiletype"
puts "filename = $file"
} }
if {$file != ""} { if {$file != ""} {
@ -271,9 +276,12 @@ loadmeshinifile;
} }
.ngmenu.file add cascade -label "Export Filetype" -menu .ngmenu.file.filetype .ngmenu.file add cascade -label "Export Filetype" -menu .ngmenu.file.filetype
menu .ngmenu.file.filetype menu .ngmenu.file.filetype
foreach exportformat $meshexportformats {
.ngmenu.file.filetype add radio -label [lindex $exportformat 0] -variable exportfiletype -command { .ngmenu.file invoke "Export Mesh..." }
}
.ngmenu.file add separator .ngmenu.file add separator

View File

@ -250,7 +250,7 @@ int main(int argc, char ** argv)
exit (1); exit (1);
} }
/*
// lookup user file formats and insert into format list: // lookup user file formats and insert into format list:
NgArray<const char*> userformats; NgArray<const char*> userformats;
NgArray<const char*> extensions; NgArray<const char*> extensions;
@ -262,13 +262,13 @@ int main(int argc, char ** argv)
for (int i = 1; i <= userformats.Size(); i++) for (int i = 1; i <= userformats.Size(); i++)
{ {
fstr << ".ngmenu.file.filetype add radio -label \"" fstr << ".ngmenu.file.filetype add radio -label \""
<< userformats.Get(i) << "\" -variable exportfiletype\n"; << userformats.Get(i) << "\" -variable exportfiletype -command { .ngmenu.file invoke \"Export Mesh...\" } \n";
fstr << "lappend meshexportformats { {" << userformats.Get(i) << "} {" << extensions.Get(i) << "} }\n"; fstr << "lappend meshexportformats { {" << userformats.Get(i) << "} {" << extensions.Get(i) << "} }\n";
} }
Tcl_Eval (myinterp, (char*)fstr.str().c_str()); Tcl_Eval (myinterp, (char*)fstr.str().c_str());
Tcl_SetVar (myinterp, "exportfiletype", exportft, 0); Tcl_SetVar (myinterp, "exportfiletype", exportft, 0);
*/
#ifdef SOCKETS #ifdef SOCKETS
Ng_ServerSocketManagerRun(); Ng_ServerSocketManagerRun();

View File

@ -346,7 +346,21 @@ namespace netgen
} }
int Ng_GetExportFormats (ClientData clientData,
Tcl_Interp * interp,
int argc, tcl_const char *argv[])
{
NgArray<const char*> userformats;
NgArray<const char*> extensions;
RegisterUserFormats (userformats, extensions);
ostringstream fstr;
for (int i = 1; i <= userformats.Size(); i++)
fstr << "{ {" << userformats.Get(i) << "} {" << extensions.Get(i) << "} }\n";
Tcl_SetResult (interp, const_cast<char*>(fstr.str().c_str()), TCL_VOLATILE);
return TCL_OK;
}
int Ng_ExportMesh (ClientData clientData, int Ng_ExportMesh (ClientData clientData,
@ -2815,6 +2829,10 @@ void PlayAnimFile(const char* name, int speed, int maxcnt)
(ClientData)NULL, (ClientData)NULL,
(Tcl_CmdDeleteProc*) NULL); (Tcl_CmdDeleteProc*) NULL);
Tcl_CreateCommand (interp, "Ng_GetExportFormats", Ng_GetExportFormats,
(ClientData)NULL,
(Tcl_CmdDeleteProc*) NULL);
Tcl_CreateCommand (interp, "Ng_ExportMesh", Ng_ExportMesh, Tcl_CreateCommand (interp, "Ng_ExportMesh", Ng_ExportMesh,
(ClientData)NULL, (ClientData)NULL,
(Tcl_CmdDeleteProc*) NULL); (Tcl_CmdDeleteProc*) NULL);

View File

@ -872,6 +872,7 @@ const char * ngscript[] = {""
,"Ng_ReadStatus;\n" ,"Ng_ReadStatus;\n"
,"}\n" ,"}\n"
,"}\n" ,"}\n"
,"set meshexportformats [Ng_GetExportFormats]\n"
,".ngmenu.file add command -label \"Export Mesh...\" \\\n" ,".ngmenu.file add command -label \"Export Mesh...\" \\\n"
,"-command {\n" ,"-command {\n"
,"foreach exportformat $meshexportformats {\n" ,"foreach exportformat $meshexportformats {\n"
@ -886,7 +887,9 @@ const char * ngscript[] = {""
,"} elseif { $exportfiletype == \"OpenFOAM 1.5+ Compressed\"} {\n" ,"} elseif { $exportfiletype == \"OpenFOAM 1.5+ Compressed\"} {\n"
,"set file [file nativename [tk_chooseDirectory -title \"OpenFOAM 1.5+ Mesh Export - Select Case Directory\"]]\n" ,"set file [file nativename [tk_chooseDirectory -title \"OpenFOAM 1.5+ Mesh Export - Select Case Directory\"]]\n"
,"} else {\n" ,"} else {\n"
,"set file [tk_getSaveFile -filetypes \"{ \\\"$exportfiletype\\\" {*}}\" ]\n" ,"set file [tk_getSaveFile -filetypes $meshexportformats -typevariable exportfiletype]\n"
,"puts \"type = $exportfiletype\"\n"
,"puts \"filename = $file\"\n"
,"}\n" ,"}\n"
,"if {$file != \"\"} {\n" ,"if {$file != \"\"} {\n"
,"Ng_ExportMesh $file $exportfiletype\n" ,"Ng_ExportMesh $file $exportfiletype\n"
@ -894,6 +897,9 @@ const char * ngscript[] = {""
,"}\n" ,"}\n"
,".ngmenu.file add cascade -label \"Export Filetype\" -menu .ngmenu.file.filetype\n" ,".ngmenu.file add cascade -label \"Export Filetype\" -menu .ngmenu.file.filetype\n"
,"menu .ngmenu.file.filetype\n" ,"menu .ngmenu.file.filetype\n"
,"foreach exportformat $meshexportformats {\n"
,".ngmenu.file.filetype add radio -label [lindex $exportformat 0] -variable exportfiletype -command { .ngmenu.file invoke \"Export Mesh...\" }\n"
,"}\n"
,".ngmenu.file add separator\n" ,".ngmenu.file add separator\n"
,".ngmenu.file add command -label \"Save Solution...\" \\\n" ,".ngmenu.file add command -label \"Save Solution...\" \\\n"
,"-command {\n" ,"-command {\n"