baf2ac8e59
* OPT: Draw editor cursor position outside of the editor, otherwise it slows down editor refresh. [WEBSITE MAKER] * NEW: Support for new web site translations. [GB.QT4.EXT] * OPT: Do not draw Editor cursor position. It slows down editor refresh. * OPT: Do not use Qt4 double-buffering, it slows down editor refresh a lot, especially with Oxygen theme. A dirty hack was needed for that. git-svn-id: svn://localhost/gambas/trunk@3781 867c0c6c-44f3-4631-809d-bfa615b0a4ec
390 lines
9.1 KiB
Text
390 lines
9.1 KiB
Text
' Gambas module file
|
|
|
|
Private $cVar As New Collection
|
|
Private $cTrans As New Collection
|
|
Private $sLang As String
|
|
|
|
Private $aLanguages As String[] = ["en:C", "fr:fr_FR.UTF-8", "es:es_ES.UTF-8", "ca:ca_ES.UTF-8", "cs:cs_CZ.UTF-8", "ar:ar_EG.UTF-8", "tr:tr_TR.UTF-8", "zh:zh_CN.UTF-8", "ko:ko_KR.UTF-8", "de:de_DE.UTF-8"]
|
|
|
|
Private Const NBR_NEWS As Integer = 3
|
|
|
|
Sub InitVar()
|
|
|
|
Dim aStable As String[] = ["2.23.0", "2.22.0", "2.21.0", "2.20.2"]
|
|
'DIM aDev AS String[] = ["92", "91", "90", "51"]
|
|
|
|
$cVar["STABLE_VERSION"] = aStable[0]
|
|
$cVar["STABLE_VERSION_1"] = aStable[1]
|
|
$cVar["STABLE_VERSION_2"] = aStable[2]
|
|
$cVar["STABLE_VERSION_3"] = aStable[3]
|
|
|
|
$cVar["DEV_VERSION"] = "2.99.1"
|
|
'$cVar["DEV_VERSION_1"] = "1.9." & aDev[1]
|
|
'$cVar["DEV_VERSION_2"] = "1.9." & aDev[2]
|
|
'$cVar["DEV_VERSION_3"] = "1.9." & aDev[3]
|
|
|
|
InitAuthor
|
|
|
|
End
|
|
|
|
Private Sub InitAuthor()
|
|
|
|
Dim hFile As File
|
|
Dim hAuthor As CAuthor
|
|
Dim sDev As String
|
|
Dim sTrans As String
|
|
Dim bDark As Boolean
|
|
Dim aCountry As New String[]
|
|
Dim cCountry As New Collection
|
|
Dim sCountry As String
|
|
Dim aAuthor As Object[]
|
|
Dim iInd As Integer
|
|
|
|
hFile = Open "authors.txt" For Read
|
|
|
|
While Not Eof(hFile)
|
|
hAuthor = New CAuthor(hFile)
|
|
Wend
|
|
|
|
Close #hFile
|
|
|
|
CAuthor.All.Sort
|
|
|
|
For Each hAuthor In CAuthor.All
|
|
|
|
If hAuthor.Translator Then
|
|
|
|
For Each sCountry In hAuthor.Translation
|
|
If Not cCountry.Exist(sCountry) Then
|
|
cCountry[sCountry] = New Object[]
|
|
aCountry.Add(sCountry)
|
|
Endif
|
|
cCountry[sCountry].Add(hAuthor)
|
|
Next
|
|
|
|
Endif
|
|
|
|
If hAuthor.Developer Then
|
|
|
|
If bDark Then
|
|
sDev &= "<tr valign=\"top\" class=\"dark\">"
|
|
Else
|
|
sDev &= "<tr valign=\"top\">"
|
|
Endif
|
|
|
|
bDark = Not bDark
|
|
|
|
sDev &= " <td>" & hAuthor.GetLink() & "</td>\n" &
|
|
" <td>" & hAuthor.Country & "</td>" &
|
|
" <td>"
|
|
|
|
If hAuthor.Works.Count > 1 Then
|
|
sDev &= "\n <li>" & hAuthor.Works.Join(".\n <li>") & ".\n"
|
|
Else
|
|
sDev &= hAuthor.Works[0] & "."
|
|
Endif
|
|
|
|
sDev &= " </td>\n</tr>"
|
|
|
|
Endif
|
|
|
|
Next
|
|
|
|
$cVar["DEVELOPERS"] = sDev
|
|
|
|
bDark = False
|
|
aCountry.Sort
|
|
For Each sCountry In aCountry
|
|
|
|
If bDark Then
|
|
sTrans &= "<tr valign=\"top\" class=\"dark\">"
|
|
Else
|
|
sTrans &= "<tr valign=\"top\">"
|
|
Endif
|
|
|
|
bDark = Not bDark
|
|
|
|
sTrans &= " <td>" & sCountry & "</td>\n"
|
|
|
|
sTrans &= " <td>\n"
|
|
aAuthor = cCountry[sCountry]
|
|
sTrans &= " " & aAuthor[0].GetLink() & "\n"
|
|
For iInd = 1 To aAuthor.Max
|
|
sTrans &= " <br>" & aAuthor[iInd].GetLink() & "\n"
|
|
Next
|
|
|
|
sTrans &= " </td>\n</tr>\n"
|
|
|
|
Next
|
|
|
|
$cVar["TRANSLATORS"] = sTrans
|
|
|
|
End
|
|
|
|
|
|
|
|
Sub GetNews(sPath As String) As String
|
|
|
|
Dim sNews As String
|
|
Dim sData As String
|
|
Dim iPos As Integer
|
|
Dim aDate As String[]
|
|
Dim dDate As Date
|
|
|
|
sNews = File.Load("news.html")
|
|
sData = File.Load(sPath)
|
|
|
|
aDate = Split(File.BaseName(sPath), "-")
|
|
dDate = Date(aDate[0], aDate[1], Left(aDate[2], 2))
|
|
|
|
If File.BaseName(sPath) = "2010-01-04" Then
|
|
sNews = Replace(sNews, "$(CLASS)", "news snow")
|
|
Else
|
|
sNews = Replace(sNews, "$(CLASS)", "news")
|
|
Endif
|
|
sNews = Replace(sNews, "$(DATE)", Format(dDate, "dd mmm yyyy"))
|
|
|
|
iPos = InStr(sData, "\n")
|
|
|
|
sNews = Replace(sNews, "$(TITLE)", Left(sData, iPos - 1))
|
|
sNews = Replace(sNews, "$(NEWS)", Trim(Mid$(sData, iPos + 1)))
|
|
|
|
Return sNews
|
|
|
|
End
|
|
|
|
|
|
Sub Expand(sPath As String)
|
|
|
|
Dim sData As String
|
|
Dim sVar As String
|
|
Dim iNews As Integer
|
|
Dim sKey As String
|
|
Dim sFile As String
|
|
Dim sSubst As String
|
|
Dim sDest As String
|
|
|
|
sDest = File.SetExt(sPath, "")
|
|
sData = File.Load(sPath)
|
|
|
|
For Each sVar In $cVar
|
|
sData = Replace(sData, "$(" & $cVar.Key & ")", sVar)
|
|
Next
|
|
|
|
If InStr(sData, "$(HEAD_NEWS)") Then
|
|
iNews = NBR_NEWS
|
|
sKey = "$(HEAD_NEWS)"
|
|
Else If InStr(sData, "$(NEWS)") Then
|
|
iNews = 1024
|
|
sKey = "$(NEWS)"
|
|
Endif
|
|
|
|
If iNews Then
|
|
For Each sFile In Dir("news", "*.html").Sort(gb.Descent)
|
|
|
|
If $sLang And If Exist("news" &/ $sLang &/ sFile)
|
|
sSubst &= GetNews("news" &/ $sLang &/ sFile)
|
|
Else
|
|
sSubst &= GetNews("news" &/ sFile)
|
|
Endif
|
|
|
|
Dec iNews
|
|
If iNews <= 0 Then Break
|
|
Next
|
|
|
|
sData = Replace(sData, sKey, sSubst)
|
|
|
|
Endif
|
|
|
|
Try Kill sDest & "~"
|
|
Try Move sDest To sDest & "~"
|
|
File.Save(sDest, sData)
|
|
|
|
CAuthor.All.Clear
|
|
|
|
End
|
|
|
|
|
|
Sub ReplaceMail(sPath As String)
|
|
|
|
Dim sData As String = File.Load(sPath)
|
|
Dim iPos, iPos2 As Integer
|
|
Dim sMail As String
|
|
Dim sOrig As String
|
|
Dim bMail As Boolean
|
|
|
|
Do
|
|
iPos = InStr(sData, "href=\"mailto:", iPos + 1)
|
|
If iPos = 0 Then Break
|
|
iPos2 = InStr(sData, Chr$(34), iPos + 7)
|
|
If iPos2 = 0 Then Break
|
|
sMail = Mid$(sData, iPos, iPos2 - iPos + 1)
|
|
sOrig = sMail
|
|
sMail = Replace(sMail, "@", "_AT_")
|
|
sMail = Replace(sMail, ".", "_DOT_")
|
|
sData = Left(sData, iPos - 1) & sMail & Mid$(sData, iPos2 + 1)
|
|
iPos += Len(sMail)
|
|
If sOrig <> sMail Then
|
|
If Not bMail Then
|
|
bMail = True
|
|
Print sPath
|
|
Endif
|
|
Endif
|
|
Loop
|
|
|
|
Try Kill sPath & "~"
|
|
Try Move sPath To sPath & "~"
|
|
File.Save(sPath, sData)
|
|
|
|
End
|
|
|
|
Private Sub ReplaceLink(sData As String, sAttr As String) As String
|
|
|
|
Dim iPos, iPos2 As Integer
|
|
Dim sLink As String
|
|
|
|
Do
|
|
iPos = InStr(sData, sAttr & "=\"", iPos + 1)
|
|
If iPos = 0 Then Break
|
|
iPos2 = InStr(sData, "\"", iPos + Len(sAttr) + 2)
|
|
If iPos2 = 0 Then Break
|
|
sLink = Mid$(sData, iPos + Len(sAttr) + 2, iPos2 - iPos - Len(sAttr) - 2)
|
|
If Not sLink Then Continue
|
|
If sLink Like "http://*" Then Continue
|
|
If sLink Like "https://*" Then Continue
|
|
If sLink Like "mailto:*" Then Continue
|
|
If sLink Like "/" Then Continue
|
|
If sLink Like "*.html" Then Continue
|
|
If sLink Like "*.html#*" Then Continue
|
|
If Left(sLink) = "#" Then Continue
|
|
sData = Left$(sData, iPos + Len(sAttr) + 1) & ".." &/ sLink & Mid$(sData, iPos2)
|
|
iPos = iPos2
|
|
Loop
|
|
|
|
Return sData
|
|
|
|
End
|
|
|
|
|
|
Private Sub Translate(sSrc As String, sDest As String, Optional bNoTrans As Boolean)
|
|
|
|
Dim sData As String = File.Load(sSrc)
|
|
Dim iPos, iPos2 As Integer
|
|
Dim sStr As String
|
|
|
|
If InStr(sDest, "changelog3") Then Stop
|
|
Print sDest
|
|
|
|
If Not bNoTrans Then
|
|
|
|
Do
|
|
iPos = InStr(sData, "{", iPos + 1)
|
|
If iPos = 0 Then Break
|
|
iPos2 = InStr(sData, "}", iPos + 1)
|
|
If iPos2 = 0 Then Break
|
|
sStr = Mid$(sData, iPos + 1, iPos2 - iPos - 1)
|
|
If InStr(sStr, "\n") Then Continue
|
|
$cTrans[sStr] = sStr
|
|
Print "{"; sStr; "}";
|
|
sStr = MTranslation[sStr]
|
|
Print " -> "; sStr
|
|
sData = Left$(sData, iPos - 1) & sStr & Mid$(sData, iPos2 + 1)
|
|
Loop
|
|
|
|
Endif
|
|
|
|
sData = ReplaceLink(sData, "href")
|
|
sData = ReplaceLink(sData, "src")
|
|
sData = Replace(sData, "$(LANG)", $sLang)
|
|
If $sLang = "ar" Then
|
|
sData = Replace(sData, "$(LANGDIR)", "rtl")
|
|
sData = Replace(sData, "$(DIR)", "-rtl")
|
|
sData = Replace(sData, "$(STYLE)", "style-rtl.css")
|
|
Else
|
|
sData = Replace(sData, "$(LANGDIR)", "ltr")
|
|
sData = Replace(sData, "$(DIR)", "")
|
|
sData = Replace(sData, "$(STYLE)", "style.css")
|
|
Endif
|
|
|
|
File.Save(sDest, sData)
|
|
|
|
End
|
|
|
|
|
|
|
|
Public Sub Main()
|
|
|
|
Dim sFile As String
|
|
Dim sDir As String
|
|
Dim sLang As String
|
|
Dim aLang As String[]
|
|
Dim sTrans As String
|
|
Dim sData As String
|
|
Dim iPos, iPos2 As Integer
|
|
|
|
InitVar
|
|
|
|
' Trick for directly modifying the project html files
|
|
sDir = Application.Path &/ "gambas.sourceforge.net"
|
|
|
|
' For Each sFile In Dir(sDir, "*.template")
|
|
' Print sFile
|
|
' Expand(sDir &/ sFile)
|
|
' Next
|
|
|
|
'MChangeLog.MakeChangeLog(sDir, 2)
|
|
'MChangeLog.MakeChangeLog(sDir, 3)
|
|
|
|
If Exist("~/gambas/2.0/trunk") Then
|
|
Try Kill "~/gambas/2.0/trunk/app/src/gambas2/authors.txt"
|
|
Copy "authors.txt" To "~/gambas/2.0/trunk/app/src/gambas2/authors.txt"
|
|
Endif
|
|
|
|
If Exist("~/gambas/3.0/trunk") Then
|
|
Try Kill "~/gambas/3.0/trunk/app/src/gambas3/authors.txt"
|
|
Copy "authors.txt" To "~/gambas/3.0/trunk/app/src/gambas3/authors.txt"
|
|
Endif
|
|
|
|
For Each sLang In $aLanguages
|
|
|
|
aLang = Split(sLang, ":")
|
|
|
|
$sLang = aLang[0]
|
|
System.Language = aLang[1]
|
|
sLang = $sLang
|
|
|
|
For Each sFile In Dir(sDir, "*.template")
|
|
Print sFile
|
|
Expand(sDir &/ sFile)
|
|
Next
|
|
|
|
For Each sFile In Dir(sDir, "*.html")
|
|
ReplaceMail(sDir &/ sFile)
|
|
Next
|
|
|
|
Try Mkdir sDir &/ sLang
|
|
MTranslation.Load
|
|
For Each sFile In Dir(sDir, "*.html")
|
|
If sFile = "index.html" Then Continue
|
|
Translate(sDir &/ sFile, sDir &/ sLang &/ sFile, sFile Like "changelog*.html")
|
|
Next
|
|
|
|
Next
|
|
|
|
Print
|
|
Print "Creating the translation module..."
|
|
|
|
For Each sTrans In $cTrans
|
|
sTrans = Replace(sTrans, "\"", "\\\"")
|
|
sData &= " $cTr[\"" & sTrans & "\"] = (\"" & sTrans & "\")\n"
|
|
Next
|
|
sFile = File.Load(Application.Path &/ ".src/MTranslation.module")
|
|
iPos = InStr(sFile, "'{")
|
|
iPos2 = InStr(sFile, "'}", iPos)
|
|
sFile = Left$(sFile, iPos - 1) & "'{\n" & sData & " '}" & Mid$(sFile, iPos2 + 2)
|
|
File.Save(Application.Path &/ ".src/MTranslation.module", sFile)
|
|
|
|
Print
|
|
Print "**** DONE! ****"
|
|
|
|
End
|