# ****************************************************************************** # MacVersion = 2.1 # MacDescription = Export kesi pro mapovy program GeoKuk # MacAuthor = XiXi_team (ormoru at gmail dot com) # MacFileName = export_to_geokuk.gsk # MacUrl = http://www.yard.cz # # Historie: # 1.0 - Zakladni verze # 1.1 - Formular s vyberem exportu # Formular pro nastaveni makra # 1.2 - Oprava backslash # 1.3 - Mozno pridavat export k existujicimu souboru # 1.4 - Pridana volba pro moznost exportovat jen zakladni udaje # Oprava chyby spousteni programu GeoKuk, pokud je nenalezen # 1.5 - Makro uklada kese do souboru po 100 kusech nebo pri pdosazeni konce (VA3) # Moznost exportovat lokace z GSAKu pro GeoKuk # 1.6 - Oprava chyby zapisovani hlavicky souboru (bohusz) # 1.7 - Oprava chyby s UserData # Prevod Final location na Reference point (Crocky) # 2.0 - Zrychleni generace SQL prikazem (Crocky). Inspirace: makro Goolge_Maps_V3.gsk by lignumaqua # 2.1 - Moje uprava pro export lovenych kesi. Vytvori seznam kesi v souboru lovim.gtt # ****************************************************************************** # Kontrola verze VerCheck Version=7.6.1.000 (Poslední verzi GSAKu naleznete na http://gsak.net) # ****************************************************************************** # Deklarace # ****************************************************************************** Option Explicit=Yes Declare Var=$exportFile Type=String Declare Var=$exportFolder Type=String Declare Var=$flagFile Type=String Declare Var=$FormExit Type=String Declare Var=$chkFinal Type=Boolean Declare Var=$chkChilds Type=Boolean Declare Var=$chkRunGeoKuk Type=Boolean Declare Var=$iCount Type=Numeric Declare Var=$oEvalTable Type=String Declare Var=$oFileGeoKuk Type=String Declare Var=$oForm Type=String Declare Var=$oFormS Type=String Declare Var=$oFormSettings Type=String Declare Var=$oMyEvalTable Type=String Declare Var=$PlacedDate Type=String Declare Var=$radExCache Type=Boolean Declare Var=$radFlagCache Type=Boolean Declare Var=$radUnFlag Type=Boolean Declare Var=$sDate Type=String Declare Var=$sError Type=String Declare Var=$sEval Type=String Declare Var=$sFileSettings Type=String Declare Var=$sMyEval Type=String Declare Var=$sText Type=String Declare Var=$unFlagFile Type=String Declare Var=$chkUseEval Type=Boolean Declare Var=$chkAppend Type=Boolean Declare Var=$chkMoreInfo Type=Boolean Declare Var=$iFlush Type=Numeric Declare Var=$radLocations Type=Boolean Declare Var=$locationsFile Type=String Declare Var=$sLocations Type=String Declare Var=$sLocation Type=String Declare Var=$sLocName Type=String Declare Var=$sLocCC Type=String Declare Var=$sSQLStatus Type=String Declare Var=$w_cLat Type=String Declare Var=$w_cLon Type=String Declare Var=$sTemp3 Type=String Declare Var=$sVersion Type=String # ****************************************************************************** # Nastaveni # ****************************************************************************** $sFileSettings = $_Install + "\Macros\xixi_export_to_geokuk.xml" # ****************************************************************************** # Makro # ****************************************************************************** # Nacteni nastaveni GoSub Name=GetVer GoSub Name=ReadSettings # Formular If $_ShiftKey = True While True $oForm = EditForm($oForm, "Form1", "Caption", "Export keší pro GeoKuk (v $sVersion)") $FormExit = Form($oForm, "") BeginCase Case $FormExit = "DelayExit" Break Case $FormExit = "SystemExit" Cancel Case $FormExit = "btnCancel" Cancel Case $FormExit = "btnExport" Break Case $btnSettings GoSub Name="Settings" OtherWise Cancel EndCase EndWhile EndIf # Ulozeni nastaveni GoSub Name=SaveSettings GoSub Name=ReadSettings # Pokracovani makra If $radExCache = True If $_Version >= "7.7.2" # GoSub Name=SetFilter GoSub Name=ExportCaches # GoSub Name=ClearFilter Else GoSub Name=ExportCachesOld EndIf EndIf If $radFlagCache = True GoSub Name=FlagCaches EndIf If $radUnFlag = True GoSub Name=UnFlagCaches EndIf If $radLocations = True GoSub Name=SetLocations EndIf # Spusteni GeoKuk If $chkRunGeoKuk = True And FileExists($oFileGeoKuk) RunPgm Pgm=$oFileGeoKuk Wait=No Hide=No EndIf # ****************************************************************************** # Funkce # ****************************************************************************** # Kese, ktere nejsou archivovane a moje BeginSub Name=SetFilter MFilter Where= (Status='A' Or Status='T' Or (Status='X' And Found)) And OwnerName <> $sMe EndSub # Zruseni filtru BeginSub Name=ClearFilter CancelFilter EndSub # Nastaveni BeginSub Name=Settings While True $oFormS = Form($oFormSettings, "") BeginCase Case $btnCancel GoSub Name=ReadSettings Break Case $btnSave GoSub Name=SaveSettings GoSub Name=ReadSettings Break OTHERWISE GoSub Name=ReadSettings Break EndCase EndWhile EndSub # Format data ulozeni BeginSub Name=PlacedDate $sDate = DateToString($d_PlacedDate) $PlacedDate = Left($sDate, 4) + "-" + SubStr($sDate, 5, 2) + "-" + Right($sDate, 2) + "T00:00:00.000" EndSub # Nacteni nastaveni BeginSub Name=ReadSettings # Default $exportFolder = "C:\Users\" + SysInfo("UserName") + "\geokuk\" $oFileGeoKuk = "" $sMyEval = "" $sEval = "" $radExCache = True $radFlagCache = False $radUnFlag = False $chkChilds = False $chkFinal = False $chkRunGeoKuk = False $chkUseEval = False $chkAppend = False $chkMoreInfo = False $radLocations = False If (FileExists($sFileSettings)) MacSettings Type=R File=$sFileSettings Vars=radExCache,radFlagCache,radUnFlag,chkChilds,chkFinal,sMyEval,sEval,exportFolder,chkRunGeoKuk,oFileGeoKuk,oMyEvalTable,oEvalTable,chkUseEval,chkAppend,chkMoreInfo,radLocations EndIf # Konkretni soubory If $exportFolder <> "" And Right($exportFolder, 1) <> "\" $exportFolder = $exportFolder + "\" EndIf $locationsFile = $exportFolder + "geohome.ini" $exportFile = $exportFolder + "kesky.geokuk" $flagFile = $exportFolder + "lovim.ggt" $unFlagFile = $exportFolder + "tedne.ggt" EndSub # Ulozeni nastaveni BeginSub Name=SaveSettings MacSettings Type=S File=$sFileSettings Vars=radExCache,radFlagCache,radUnFlag,chkChilds,chkFinal,sMyEval,sEval,exportFolder,chkRunGeoKuk,oFileGeoKuk,oMyEvalTable,oEvalTable,chkUseEval,chkAppend,chkMoreInfo,radLocations EndSub # Export kesi BeginSub Name=ExportCaches If $chkAppend = False Or FileExists($exportFile) = False $sText = UTF8("*geokuk:exportversion=2" + $_NewLine, "e") $sError = PutFile($exportFile, $sText) $sText = "" EndIf $sEval = "''" $sMyEval = "''" If $chkUseEval = True BeginCase Case $oEvalTable = "User Data" $sEval = "trim(UserData)" Case $oEvalTable = "User Data 2" $sEval = "trim(User2)" Case $oEvalTable = "User Data 3" $sEval = "trim(User3)" Case $oEvalTable = "User Data 4" $sEval = "trim(User4)" EndCase BeginCase Case $oMyEvalTable = "User Data" $sMyEval = "trim(UserData)" Case $oMyEvalTable = "User Data 2" $sMyEval = "trim(User2)" Case $oMyEvalTable = "User Data 3" $sMyEval = "trim(User3)" Case $oMyEvalTable = "User Data 4" $sMyEval = "trim(User4)" EndCase EndIf $_sql = "SELECT TXT FROM " $_sql = $_sql + "(SELECT Code, 0," $_sql = $_sql + " ':' || Code || '|' ||" $_sql = $_sql + "CASE CacheType WHEN 'B' THEN 'Letterbox Hybrid' " $_sql = $_sql + " WHEN 'C' THEN 'Cache In Trash Out Event' " $_sql = $_sql + " WHEN 'E' THEN 'Event Cache' " $_sql = $_sql + " WHEN 'I' THEN 'Wherigo Cache' " $_sql = $_sql + " WHEN 'M' THEN 'Multi-cache' " $_sql = $_sql + " WHEN 'R' THEN 'Earthcache' " $_sql = $_sql + " WHEN 'T' THEN 'Traditional Cache' " $_sql = $_sql + " WHEN 'U' THEN 'Unknown Cache' " $_sql = $_sql + " WHEN 'V' THEN 'Virtual Cache' " $_sql = $_sql + " WHEN 'W' THEN 'Webcam Cache' " $_sql = $_sql + " WHEN 'Z' THEN 'Mega-Event Cache' " $_sql = $_sql + " ELSE 'Unknown Cache' END || '|' || " $_sql = $_sql + " Container || '|' ||" $_sql = $_sql + " REPLACE(REPLACE(Difficulty,',','.'),'.0','') || '|' ||" $_sql = $_sql + " REPLACE(REPLACE(Terrain,',','.'),'.0','') || '|' ||" $_sql = $_sql + " CASE WHEN Archived='1' THEN 'true' ELSE 'false' end || '|' ||" $_sql = $_sql + " CASE WHEN TempDisabled='1' THEN 'true' ELSE 'false' END || '|' ||" $_sql = $_sql + " CASE WHEN Found='1' THEN 'true' ELSE 'false' END || '|' ||" If $chkMoreInfo = True # $_sql = $_sql + " case when OwnerID="+"123456"+" then 'true' else 'false' end || '|' ||" $_sql = $_sql + " 'false' || '|' ||" $_sql = $_sql + " OwnerName || '|' || STRFTIME('%Y-%m-%dT00:00:00.000', PlacedDate) || '|' ||" $_sql = $_sql + " Country || '|' || State || '||' ||" $_sql = $_sql + " $sEval || '||' || $sMyEval || '|' || REPLACE(REPLACE(Hints, X'0d', ''), X'0a', ' ') || '|' ||" $_sql = $_sql + " 'http://coord.info/' || Code" Else $_sql = $_sql + " '||' || STRFTIME('%Y-%m-%dT00:00:00.000',PlacedDate) || '||||||||'" EndIf $_sql = $_sql + " || X'0a' ||" If $chkFinal = True $_sql = $_sql + " CASE WHEN HasCorrected='1' THEN" $_sql = $_sql + " '-GC|Cache|' || LatOriginal || '|' || LonOriginal || '|' || Name || X'0a' ||" $_sql = $_sql + " '-FI|Final Location|' || Latitude || '|' || Longitude || '|' || Name" $_sql = $_sql + " ELSE '-GC|Cache|' || Latitude || '|' || Longitude || '|' || Name END" Else $_sql = $_sql + " '-GC|Cache|' || Latitude || '|' || Longitude || '|' || Name" EndIf $_sql = $_sql + " TXT FROM CachesAll WHERE $_Where" If $chkChilds = True $_sql = $_sql + " UNION ALL" $_sql = $_sql + " SELECT cParent, 1," $_sql = $_sql + " '-' || cPrefix || '|' ||" $_sql = $_sql + " CASE WHEN cByUser='0' AND cType='Final Location' THEN 'Reference Point' ELSE " $_sql = $_sql + " CASE cType WHEN 'Virtual Stage' THEN 'Question to Answer' " $_sql = $_sql + " WHEN 'Physical Stage' THEN 'Stages of a Multicache' " $_sql = $_sql + " ELSE cType END " $_sql = $_sql + " END || '|' ||" $_sql = $_sql + " cLat || '|' || cLon || '|' || cName" $_sql = $_sql + " TXT FROM waypoints a, caches b" $_sql = $_sql + " WHERE ($_Where) AND a.cParent=b.Code AND a.cLat != b.Latitude AND a.cLon != b.Longitude" EndIf $_sql = $_sql + " ORDER BY 1, 2)" $sText = Sqlite("sql", $_sql, "delim=%%delim%%") $sError = AppendFile($exportFile, UTF8($sText, "e")) CancelFilter Filter Name="@ Hunt" GoSub Name=FlagCaches CancelFilter EndSub # Export kesi pro nizsi verzi GSAKu, ktera neumi primo SQL dotazy BeginSub Name=ExportCachesOld $iCount = 0 $iFlush = 0 $sText = "" If $chkAppend = False Or FileExists($exportFile) = False $sText = UTF8("*geokuk:exportversion=2" + $_NewLine, "e") $sError = PutFile($exportFile, $sText) $sText = "" EndIf GoTo Position=Top While Not($_EOL) # Cislovat po desiti, rychlejsi (by Crocky) If Int($iCount/10) = $iCount/10 ShowStatus Msg="Processing: $iCount of $_Count" EndIf GoSub Name=PlacedDate # Detail o kesi $sText = $sText + ":" $sText = $sText + $d_Code $sText = $sText + "|" + "%typ" $sText = $sText + "|" + $d_Container $sText = $sText + "|" + Replace(",", ".", NumToStr($d_Difficulty)) $sText = $sText + "|" + Replace(",", ".", NumToStr($d_Terrain)) $sText = $sText + "|" + BoolToStr($d_Archived, "true", "false") $sText = $sText + "|" + BoolToStr($d_TempDisabled, "true", "false") $sText = $sText + "|" + BoolToStr($d_Found, "true", "false") # Dodatecne informace If $chkMoreInfo = True # Nacteni hodnoceni $sEval = "" $sMyEval = "" If $chkUseEval = True BeginCase Case $oEvalTable = "User Data" $sEval = Trim($d_UserData) Case $oEvalTable = "User Data 2" $sEval = Trim($d_User2) Case $oEvalTable = "User Data 3" $sEval = Trim($d_User3) Case $oEvalTable = "User Data 4" $sEval = Trim($d_User4) EndCase BeginCase Case $oMyEvalTable = "User Data" $sMyEval = Trim($d_UserData) Case $oMyEvalTable = "User Data 2" $sMyEval = Trim($d_User2) Case $oMyEvalTable = "User Data 3" $sMyEval = Trim($d_User3) Case $oMyEvalTable = "User Data 4" $sMyEval = Trim($d_User4) EndCase EndIf $sText = $sText + "|" + BoolToStr(IsOwner(), "true", "false") $sText = $sText + "|" + $d_OwnerName $sText = $sText + "|" + $PlacedDate $sText = $sText + "|" + $d_Country $sText = $sText + "|" + $d_State $sText = $sText + "|" # TAG_BESTOF $sText = $sText + "|" + $sEval $sText = $sText + "|" # EVALCOUNT $sText = $sText + "|" + $sMyEval $sText = $sText + "|" + RegExReplace("[\r\n\|]", $d_Hints, " ") $sText = $sText + "|" + $d_Url Else $sText = $sText + "|||" + $PlacedDate + "||||||||" EndIf $sText = $sText + $_NewLine # Prvni waypoint je kes samotna [resi se zmenene souradnice] If $d_HasCorrected = True And $chkFinal = True $sText = $sText + "-GC|Cache" $sText = $sText + "|" + $d_LatOriginal $sText = $sText + "|" + $d_LonOriginal $sText = $sText + "|" + $d_Name $sText = $sText + $_NewLine $sText = $sText + "-FI|Final Location" $sText = $sText + "|" + $d_Latitude $sText = $sText + "|" + $d_Longitude $sText = $sText + "|" + $d_Name $sText = $sText + $_NewLine Else $sText = $sText + "-GC|Cache" $sText = $sText + "|" + $d_Latitude $sText = $sText + "|" + $d_Longitude $sText = $sText + "|" + $d_Name $sText = $sText + $_NewLine EndIf # Childs pro kazdou kes If $chkChilds = True Table Active=Waypoints Scope=Parent If $_Count > 0 While Not($_EOL) $sText = $sText + "-" $sText = $sText + $d_cPrefix # Uprava Crocky Final Location z listingu přehodit na RP! If ($d_cByUser = False And $d_cType = "Final Location") $sText = $sText + "|" + "Reference Point" Else If $d_cType = "Virtual Stage" $sText = $sText + "|Question to Answer" EndIf If $d_cType = "Physical Stage" $sText = $sText + "|Stages of a Multicache" EndIf If $d_cType <> "Virtual Stage" And $d_cType <> "Physical Stage" $sText = $sText + "|" + $d_cType EndIf # NEW SYSTEM $sText = $sText + "|" + $d_cType EndIf $sText = $sText + "|" + $d_cLat $sText = $sText + "|" + $d_cLon $sText = $sText + "|" + $d_cName $sText = $sText + $_NewLine GoTo Position=Next EndWhile EndIf Table Active=Caches EndIf $iCount = $iCount + 1 $iFlush = $iFlush + 1 GoTo Position=Next If $iFlush = 100 Or $_EOL If FileExists($exportFile) $sError = AppendFile($exportFile, UTF8($sText, "e")) Else $sError = PutFile($exportFile, UTF8($sText, "e")) EndIf $sText = "" $iFlush = 0 EndIf EndWhile GoTo Position=Top EndSub BeginSub Name=FlagCaches $sText = "" $iCount = 0 GoTo Position=Top While Not($_EOL) $iCount = $iCount + 1 ShowStatus Msg="Zpracovávám: $iCount z $_Count" $sText = $sText + $d_Code + $_NewLine GoTo Position=Next EndWhile If $chkAppend = False $sError = PutFile($flagFile, $sText) Else If FileExists($flagFile) $sError = AppendFile($flagFile, $sText) Else $sError = PutFile($flagFile, $sText) EndIf EndIf EndSub BeginSub Name=UnFlagCaches $sText = "" $iCount = 0 GoTo Position=Top While Not($_EOL) $iCount = $iCount + 1 ShowStatus Msg="Zpracovávám: $iCount z $_Count" $sText = $sText + $d_Code + $_NewLine GoTo Position=Next EndWhile If $chkAppend = False $sError = PutFile($unFlagFile, $sText) Else If FileExists($unFlagFile) $sError = AppendFile($unFlagFile, $sText) Else $sError = PutFile($unFlagFile, $sText) EndIf EndIf EndSub BeginSub Name=SetLocations $locationsFile = $exportFolder + "geohome.ini" $sText = "" $iCount = 1 $sLocations = SysInfo("locations") $sLocation = Extract($sLocations, ";", $iCount) While Not(IsEmpty($sLocation)) $sLocName = Extract($sLocation, ",", 1) $sLocCC = Extract($sLocation, ",", 2) $sLocCC = GCalc($sLocCC, "FormatDegrees") $sLocCC = Replace(";", " ", $sLocCC) $sText = $sText + $sLocCC + " " + $sLocName + $_NewLine $iCount = $iCount + 1 $sLocation = Extract($sLocations, ";", $iCount) EndWhile $sError = PutFile($locationsFile, $sText) EndSub BeginSub Name=GetVer $sTemp3 = GetFile(Sysinfo("MacroPath") + "\" + SysInfo("MacroFile")) $sVersion = RegExSub("# MacVersion = (.*)\r", $sTemp3, 1, 1) EndSub # ****************************************************************************** # Formular # ****************************************************************************** VarName=$oForm Name = Form1 Type = Form Height = 298 Width = 305 Name = Groupbox1 Type = Groupbox Caption = Nastavení exportu Height = 181 Left = 10 Top = 10 Width = 281 Taborder = 1 Name = btnExport Type = Button Height = 25 Left = 220 Top = 230 Width = 65 Taborder = 0 Caption = Export Name = radExCache Type = Radiobutton Color = -2147483633 Container = Groupbox1 Height = 17 Left = 10 Top = 20 Width = 113 Taborder = 0 Caption = Export keší Name = radFlagCache Type = Radiobutton Container = Groupbox1 Height = 17 Left = 10 Top = 80 Width = 141 Taborder = 1 Caption = Označit keše pro výlet Name = radUnFlag Type = Radiobutton Container = Groupbox1 Height = 17 Left = 10 Top = 100 Width = 211 Taborder = 2 Caption = Označit keše jako vynechané pro výlet Name = btnCancel Type = Button Escape = Yes Height = 25 Left = 150 Top = 230 Width = 65 Taborder = 2 Caption = Storno Name = chkChilds Type = Checkbox Container = Groupbox1 Height = 17 Left = 90 Top = 20 Width = 141 Taborder = 3 Caption = Včetně bodů keší (childs) Name = chkFinal Type = Checkbox Container = Groupbox1 Height = 17 Left = 90 Top = 40 Width = 181 Taborder = 4 Caption = Finálové souřadnice jako waypoint Name = chkRunGeoKuk Type = Checkbox Height = 17 Left = 20 Top = 200 Width = 97 Taborder = 3 Caption = Spustit GeoKuk Name = btnSettings Type = Button Escape = Yes Height = 25 Left = 20 Top = 230 Width = 65 Taborder = 4 Caption = Nastavení Name = chkAppend Type = Checkbox Container = Groupbox1 Height = 17 Left = 10 Top = 150 Width = 261 Taborder = 5 Caption = Přidat export k existujícímu souboru Name = chkMoreInfo Type = Checkbox Container = Groupbox1 Height = 17 Left = 90 Top = 60 Width = 181 Taborder = 6 Caption = Exportovat všechny informace Name = radLocations Type = Radiobutton Container = Groupbox1 Height = 17 Left = 10 Top = 120 Width = 211 Taborder = 7 Caption = Nastavit lokace GSAKu VarName=$oFormSettings Name = Form1 Type = Form Height = 236 Width = 410 Name = Groupbox1 Type = Groupbox Caption = Hodnocení Height = 105 Left = 10 Top = 90 Width = 281 Taborder = 2 Name = Groupbox2 Type = Groupbox Caption = Cesty Height = 71 Left = 10 Top = 10 Width = 381 Taborder = 3 Name = btnSave Type = Button Height = 25 Left = 310 Top = 130 Width = 75 Taborder = 0 Caption = Uložit Name = btnCancel Type = Button Height = 25 Left = 310 Top = 160 Width = 75 Taborder = 1 Caption = Storno Name = chkUseEval Type = Checkbox Captionposition = Left Container = Groupbox1 Height = 17 Left = 49 Top = 20 Width = 125 Taborder = 0 Caption = Používám hodnocení: Name = oMyEvalTable Type = Combobox Container = Groupbox1 Height = 21 Left = 162 Top = 68 Values = User Data;User Data 2;User Data 3;User Data 4 Width = 105 Taborder = 1 Name = oEvalTable Type = Combobox Container = Groupbox1 Height = 21 Left = 162 Top = 44 Values = User Data;User Data 2;User Data 3;User Data 4 Width = 105 Taborder = 2 Name = Label4 Type = Label Container = Groupbox1 Height = 13 Left = 18 Top = 72 Width = 136 Caption = Pole s vlastním hodnocením: Name = Label3 Type = Label Container = Groupbox1 Height = 13 Left = 61 Top = 48 Width = 95 Caption = Pole s hodnocením: Name = oFileGeoKuk Type = File Container = Groupbox2 Height = 21 Left = 102 Top = 40 Width = 265 Taborder = 0 Name = exportFolder Type = Folder Container = Groupbox2 Height = 21 Left = 102 Top = 16 Width = 265 Taborder = 1 Name = Label5 Type = Label Container = Groupbox2 Height = 13 Left = 10 Top = 44 Width = 84 Caption = Program GeoKuk: Name = Label1 Type = Label Container = Groupbox2 Height = 13 Left = 6 Top = 20 Width = 88 Caption = Cesta k souborům: