#include "catia_makro.hpp"

#include <string>

namespace fiko {

// CATScript VBA makrountari uretilir. com_sunucu.hpp'deki makroyla AYNI is mantigi
// (VBA'dan CreateObject("Fikocad.Application").CatiaKaydet(pid, aktifIndex, yollar)).
// Bu makrountari BAS uzantili — CATScript'in makro editorune suruklenince import olur.
// fixocad CATScript'i tetiklemez (baglanamaz), sadece makrountari üretir.
std::string catiaCalismaAlaniMakroUret(const std::string& baslik) {
  std::string s = "' " + baslik + "\n";
  s += "' FikoCAD CATScript calisma alani kayit makrosu.\n";
  s += "' Bu dosyayi CATScript'in makro editorene surukle (VBE icinde import olur).\n";
  s += "' CATIA'daki her acik instance icin tek tek calistir.\n\n";
  s += "Private Declare PtrSafe Function GetCurrentProcessId Lib \"kernel32\" () As Long\n\n";
  s += "Sub CalismaAlaniKaydet()\n";
  s += "    Dim app As Object, yollar As String, i As Integer, aktifIdx As Integer\n";
  s += "    Set app = CreateObject(\"Fikocad.Application\")\n";
  s += "    aktifIdx = -1\n";
  s += "    For i = 1 To CATIA.Documents.Count\n";
  s += "        If i > 1 Then yollar = yollar & \"|\"\n";
  s += "        yollar = yollar & CATIA.Documents.Item(i).FullName\n";
  s += "        If CATIA.Documents.Item(i).FullName = CATIA.ActiveDocument.FullName Then\n";
  s += "            aktifIdx = i - 1\n";
  s += "        End If\n";
  s += "    Next i\n";
  s += "    Dim sonuc As String\n";
  s += "    sonuc = app.CatiaKaydet(GetCurrentProcessId(), aktifIdx, yollar)\n";
  s += "    If sonuc <> \"\" Then\n";
  s += "        MsgBox \"Kaydetme hatasi: \" & sonuc\n";
  s += "    Else\n";
  s += "        MsgBox \"Kaydedildi.\"\n";
  s += "    End If\n";
  s += "End Sub\n";
  return s;
}

}  // namespace fiko
