#pragma TextEncoding = "UTF-8" #pragma rtGlobals=3 #pragma IgorVersion = 8.00 // Use modern global access method and strict wave access #pragma ModuleName = Qwintranfer #pragma DefaultTab={3,20,4} // Set default tab width in Igor Pro 9 and later #pragma version = 2.5 //SetIgorOption IndependentModuleDev=1 // "hd:IgorStuff:Test 1" // Macintosh // "C:IgorStuff:Test 1" // Windows // // transfer the selected graph to other open igor file, // even between the different version of igor pro, igor6 ? gizmo don't work // 2022-09-16 - ver. 1.00: release formally // 2022-09-22 - ver. 1.50: Q // 2022-10-28 - ver. 2.00: Cross-Platform Procedure Compatibility // 2023-02-27 - ver. 2.50: suitable for TOP graph, table, Gizmo window. // sometimes the shortcut maybe ambiguities, don't // know why. So mouse operation is best. #ifdef WINDOWS static StrConstant tempFolder = "C:igorWinTrans_templ" // default folder in windows OS #endif #ifdef MACINTOSH static StrConstant tempFolder = "hd:igorWinTrans_templ" // default folder in mac OS #endif // Menu "Q Ways" "---" "Prepare for Transfer/Sc", /Q, QSavetopWinCopy() "Load transfered Graph/Sv", /Q, QLoadsavedCopy() "---" End // Function QSavetopWinCopy() //This is the path that the ectype pxp will be saved in NewPath/C/O/Q savePath, tempFolder String windows = WinList("*", ";", "") //"*" Matches all window names. String topwindow = StringFromList(0, windows) variable outInfo = 1 String windowsName = WinName(0,outInfo) String fileName if (WinType(topwindow) == 1)// 1:graph 2:table 3: layout 5: notebook outInfo = 1 windowsName = WinName(0,outInfo) sprintf fileName, "%s.pxp", windowsName PutScrapText fileName // save name to clip //Save a graph copy to a new experiment file SaveGraphCopy/O/P=savePath/W=$windowsName as fileName elseif(WinType(topwindow) == 2) // table outInfo = 2 windowsName = WinName(0,outInfo) sprintf fileName, "%s.pxp", windowsName PutScrapText fileName // save name to clip //Save a graph copy to a new experiment file SaveTableCopy/O/P=savePath/W=$windowsName as fileName // elseif(WinType(topwindow) == 3) // outInfo = 4 // elseif(WinType(topwindow) == 5) // outInfo = 16 elseif(WinType(topwindow) == 17) // Gizmo outInfo = 65536 windowsName = WinName(0,outInfo) sprintf fileName, "%s.pxp", windowsName PutScrapText fileName // save name to clip //Save a graph copy to a new experiment file SaveGizmoCopy/O/P=savePath/W=$windowsName fileName // ModifyGizmo infoWindow={559,0,1167,341} endif return 0 End // Function QLoadsavedCopy() String dfSav= GetDataFolder(1) string /G getmergeDFR():LGSav = dfSav SVAR scdfSav = getmergeDFR():LGSav SetDataFolder root: // variable/G nail = 1 pauseUpdate String fileName = GetScrapText() String fullPath = tempFolder + ":"+ fileName // only saved .pxp name to merge // Execute/P "NEWEXPERIMENT " // // Execute/P fullPath Execute/P/Q "MERGEEXPERIMENT " + fullPath Execute/P/Q "SetDataFolder " + scdfSav pauseUpdate Execute/P/Q "Qwintranfer#clearFolder()"// clear the temple folder return 0 End // static function /DF getmergeDFR() NewDataFolder/O root:Packages NewDataFolder/O root:Packages:MergePxp DFREF dfr = root:Packages:MergePxp return dfr end // function clearFolder() NewPath/C/O/Q mergePath, tempFolder Variable fileIndex = 0 Do String fileName fileName = IndexedFile(mergePath, fileIndex, ".pxp") if (strlen(fileName) == 0) fileIndex = 0 break endif Execute/Q "DeleteFile/P=mergePath/Z=1 " + "\"" + fileName + "\"" fileIndex += 1 While(1) // return 0 end //