View previous topic :: View next topic |
Author |
Message |
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Apr 28, 2015 09:19 Post subject: |
|
|
LonerD wrote: | Твой скрипт не может отличить файл от одноимённого каталога (если в имени каталога точка). | Только ты забыл написать, что последний параметр - 3. Посмотрю как мягче исправить.
LonerD wrote: | к тому же твой скрипт всё-равно с корневыми каталогами не работает | К тому же ты не ответил на мой вопрос. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
LonerD
Joined: 04 Jan 2011 Posts: 1169 Location: Макеевка
|
(Separately) Posted: Tue Apr 28, 2015 14:31 Post subject: |
|
|
Flasher wrote: | Только ты забыл написать, что последний параметр - 3. |
Да, начинал ведь писать сообщение и упомянул об этом, потом что-то сбилось (то ли страницу закрыл), и когда снова начал печатать - забыл.
LonerD wrote: | Сравнивать только файлы в корнях - это для чего? |
Для того же, что и в каталогах - узнать одинаковые ли файлы или разные (по именам). К примеру, у меня в корнях дисков часто файлы скапливаются, например с которыми работаю или скачанные. Потом их частично перемещаю/копирую в подкаталоги, и актуально знать какие файлы уже скопировал и можно удалять из корня диска... По сути не делаю различия между каталогом и корнем в процессе работы за компьютером. _________________ Windows 11 | TC DreamLair eternal pre-α |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Apr 28, 2015 14:37 Post subject: |
|
|
А зачем ты вырвал фразу из контекста? Там два вопроса в одном флаконе.
А про большие структуры было отвечено:
Flasher wrote: | Скрипт с единицей в 3-м параметре больше предназначен для режима без подкаталогов, в ином случае лучше использовать предыдущий вариант. |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
LonerD
Joined: 04 Jan 2011 Posts: 1169 Location: Макеевка
|
(Separately) Posted: Tue Apr 28, 2015 17:56 Post subject: |
|
|
Flasher wrote: | А зачем ты вырвал фразу из контекста? Там два вопроса в одном флаконе. |
Потому, что вопрос звучал то ли как риторический, то ли как не имеющий отношения к скрипту. Разные люди могут отображать файлы по-разному, и с каталогами, и без каталогов. Потому не суть важно как именно это делаю я.
Flasher wrote: | Неужели ты отображаешь файлы без подкаталогов в корне? |
Нет, у меня вроде насколько помню никогда надобности не возникало. Скрипт в таких условиях тоже не проверял.
Flasher wrote: | А про большие структуры было отвечено:
Flasher wrote: | Скрипт с единицей в 3-м параметре больше предназначен для режима без подкаталогов, в ином случае лучше использовать предыдущий вариант. |
|
Да, я видел и понял. Пользователь должен держать в голове - "Я хочу сравнить файлы. Нужно воспользоваться вот этим скриптом (повешенным на кнопку). Стоп, в одной панели в одной или обеих панелях у меня открыт корень диска, значит я должен пользоваться другим скриптом..."
Меня такая логика не устраивает, но изменять логику работы скрипта лично для меня - не прошу. Так как чувствую, что хватает знаний для самостоятельной реализации - делаю свой вариант. _________________ Windows 11 | TC DreamLair eternal pre-α
Last edited by LonerD on Fri May 01, 2015 20:12; edited 1 time in total |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Apr 28, 2015 18:02 Post subject: |
|
|
LonerD wrote: | Потому, что вопрос звучал то ли как риторический, то ли как не имеющий отношения к скрипту. | С чего это ты так решил?
LonerD wrote: | Разные люди могут отображать файлы по-разному, и с каталогами, и без каталогов. Потому не суть важно как именно это делаю я. | Вопрос режима без подкаталогов не ты поставил, поэтому резонно было спросить именно у тебя об этом.
LonerD wrote: | Стоп, в одной панели у меня открыт корень диска, значит я должен пользоваться другим скриптом..." | А почему только в одной?
LonerD wrote: | лично для меня | Можно и не лично для тебя. Можно и для себя и прежде всего для того, кто поднял тему и кому с этой проблемой ещё предстоит столкнуться. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
LonerD
Joined: 04 Jan 2011 Posts: 1169 Location: Макеевка
|
(Separately) Posted: Sat May 02, 2015 05:19 Post subject: |
|
|
Давным-давно я был инициатором идеи подобного скрипта.
Наконец-то, сделал свой вариант сравнения файлов и каталогов в панелях по именам на AutoHotkey.
Теоретически скрипт должен работать в разных условиях, включая корень диска, результаты поиска, вид без каталогов, архивы...
Из-за ограничений Тотала не работает в результатах поиска внутри архивов и в режиме просмотра миниатюр.
Можно сравнивать только файлы, только каталоги или всё вместе (если не задан параметр - сравнивается всё).
Если у файла и каталога одно имя - они не выделяются (не считаются равными).
Если в панели несколько файлов с одним и тем же именем (например, при поиске или в виде без каталогов) - выделяются все.
Code: | ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Total Commander DreamLair
; Script: Selection the same name files and/or dirs in the panels
; Скрипт: Виділення в панелях однойменних файлів та/або каталогів
; Скрипт: Выделение в панелях одноимённых файлов и/или каталогов
; Version: 1.0 (2015.05.02)
; Author: LonerD DreamLair.Net
; Made in Donetsk People's Republic
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Parameter:
; 1) Selection mode:
; 1 - all (default); 2 - only files; 3 - only dirs
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Параметр:
; 1) Метод виділення:
; 1 - все (за замовчуванням); 2 - тільки файли; 3 - тільки каталоги
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Параметр:
; 1) Метод выделения:
; 1 - всё (по умолчанию); 2 - только файлы; 3 - только каталоги
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#NoEnv
#NoTrayIcon
#MaxMem 1024
#SingleInstance force
SetBatchLines, -1
Mode = %1%
If Mode not in 1,2,3
Mode = 1
If not ( WinExist("ahk_class TTOTAL_CMD") || WinActive("ahk_class TTOTAL_CMD") )
ExitApp
ClipSaved := ClipboardAll
Clipboard := ""
WinGet, hw_TTOTAL_CMD, ID, A
DllCall("LockWindowUpdate", "uint", hw_TTOTAL_CMD)
ControlGetFocus, aControl, % "ahk_id " hw_TTOTAL_CMD
PathA := TC_SendData("SP")
SendMessage, 0x433, 524,,, % "ahk_id " hw_TTOTAL_CMD
SendMessage, 0x433, 330 . Mode,,, % "ahk_id " hw_TTOTAL_CMD
SelItems := TC_Command("0x190", aControl, 0, 0)
if ( SelItems = 0 )
Goto, Exit
SendMessage, 0x433, 2017,,, % "ahk_id " hw_TTOTAL_CMD
FilesA := Clipboard
SendMessage, 0x433, 2018,,, % "ahk_id " hw_TTOTAL_CMD
FileListA := Clipboard
SendMessage, 0x433, 4001,,, % "ahk_id " hw_TTOTAL_CMD
ControlGetFocus, xControl, % "ahk_id " hw_TTOTAL_CMD
B_Panel := xControl = aControl ? 2 : 1
A_Panel := B_Panel = 1 ? 2 : 1
SendMessage, 0x433, 400 . B_Panel,,, % "ahk_id " hw_TTOTAL_CMD
ControlGetFocus, bControl, % "ahk_id " hw_TTOTAL_CMD
PathB := TC_SendData("SP")
SendMessage, 0x433, 524,,, % "ahk_id " hw_TTOTAL_CMD
SendMessage, 0x433, 330 . Mode,,, % "ahk_id " hw_TTOTAL_CMD
if ( PathA = PathB )
Goto, Exit
SelItems := TC_Command("0x190", bControl, 0, 0)
if ( SelItems = 0 )
Goto, NoSelection
SendMessage, 0x433, 2017,,, % "ahk_id " hw_TTOTAL_CMD
FilesB := Clipboard
SendMessage, 0x433, 2018,,, % "ahk_id " hw_TTOTAL_CMD
FileListB := Clipboard
FileListSel := ""
Loop, Parse, FilesA, `n, `r
{
CurrentFile := A_LoopField
Loop, Parse, FilesB, `n, `r
{
if ( CurrentFile = A_LoopField )
FileListSel := FileListSel A_LoopField "`r`n"
}
}
if ( FileListSel = "" )
Goto, NoSelection
FileListSelA := ""
FileListSelB := ""
FileListSelX := ""
FileListX := FileListB
Gosub, LoopFilelist
FileListSelB := FileListSelX
FileListX := FileListA
Gosub, LoopFilelist
FileListSelA := FileListSelX
StringReplace, FileListSelA, FileListSelA, % PathA, , All
StringReplace, FileListSelB, FileListSelB, % PathB, , All
Clipboard := FileListSelB
SendMessage, 0x433, 2033,,, % "ahk_id " hw_TTOTAL_CMD
SendMessage, 0x433, 400 . A_Panel,,, % "ahk_id " hw_TTOTAL_CMD
Clipboard := FileListSelA
SendMessage, 0x433, 2033,,, % "ahk_id " hw_TTOTAL_CMD
Exit:
Clipboard := ClipSaved
ClipSaved := ""
FileListA := ""
FileListB := ""
FileforSel := ""
FileListSelA := ""
FileListSelB := ""
FileListSelX := ""
DllCall("LockWindowUpdate", "uint", 0)
ExitApp
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LoopFilelist:
Loop, Parse, FileListSel, `n, `r
{
FileforSel := A_LoopField
FileLen := StrLen(FileforSel)
if ( FileLen > 0 )
{
Loop, Parse, FileListX, `n, `r
{
StringLen := StrLen(A_LoopField)
SlashSymbol := SubStr(A_LoopField, StringLen - FileLen, 1)
StringRight, CurrentFile, A_LoopField, FileLen
if (( StringLen - FileLen > 1 ) && ( SlashSymbol = "\" ) && ( CurrentFile = FileforSel ))
FileListSelX := FileListSelX A_LoopField "`r`n"
}
}
}
Return
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NoSelection:
SendMessage, 0x433, 524,,, % "ahk_id " hw_TTOTAL_CMD
SendMessage, 0x433, 400 . A_Panel,,, % "ahk_id " hw_TTOTAL_CMD
SendMessage, 0x433, 524,,, % "ahk_id " hw_TTOTAL_CMD
Goto, Exit
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Доп. функция (автор я)
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TC_Command(TCmessage, aControl, Param1, Param2)
{
global hw_TTOTAL_CMD
SendMessage, % TCmessage, % Param1, % Param2, % aControl, % "ahk_id " hw_TTOTAL_CMD
return ErrorLevel
}
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Доп. функция (автор artt)
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TC_SendData(Cmd, CmdType="", msg="", hwnd="")
{
Critical
global hw_TTOTAL_CMD
Static om := OnMessage(0x4a, "TC_SendData"), TC_ReceiveDataValue := "", TC_DataReceived := ""
If ( (msg=0x4A) and (hwnd=A_ScriptHwnd) )
Exit ( TC_ReceiveDataValue := StrGet(NumGet(CmdType + A_PtrSize * 2)), TC_DataReceived := "1" )
VarSetCapacity(CopyDataStruct, A_PtrSize * 3), TC_ReceiveDataValue := 1, TC_DataReceived := ""
If CmdType in LR,ST
DirType := CmdType, CmdType := "CD"
else if ( CmdType = "" )
CmdType := ( A_IsUnicode ? "GW" : "GA" ), TC_ReceiveDataValue := ""
If( A_IsUnicode )
{
VarSetCapacity(cmdA, StrPut(cmd, "cp0"), 0)
Loop, % StrLen(cmd)
NumPut( Asc(SubStr(cmd, A_Index, 1)), cmdA, A_Index - 1, "Char" )
}
NumPut( Asc(SubStr(CmdType, 1, 1)) + 256 * Asc(SubStr(CmdType, 2, 1)), CopyDataStruct, 0 )
NumPut( StrLen(cmd) + (CmdType = "CD" ? 5 : 0), CopyDataStruct, A_PtrSize )
NumPut( (A_IsUnicode ? &cmdA : &cmd), CopyDataStruct, A_PtrSize * 2 )
Loop, % ( CmdType=="CD" ? 2 : 0 )
NumPut( Asc(SubStr(DirType, A_Index, 1)), (A_IsUnicode ? cmdA : cmd), (StrLen(cmd) + A_Index), "Char" )
SendMessage, 0x4A, %A_ScriptHwnd%, &CopyDataStruct,, % "ahk_id " hw_TTOTAL_CMD
; SendMessage, 0x4A, %A_ScriptHwnd%, &CopyDataStruct,, ahk_class TTOTAL_CMD
While ( TC_ReceiveDataValue = "" )
{
IfEqual, TC_DataReceived, 1, Break
IfGreaterOrEqual, A_Index, 500, Break
Sleep, 10
}
Return TC_ReceiveDataValue
}
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
_________________ Windows 11 | TC DreamLair eternal pre-α |
|
Back to top |
|
|
ingerard
Joined: 04 Dec 2016 Posts: 128
|
(Separately) Posted: Wed Dec 06, 2017 01:05 Post subject: |
|
|
Flasher
Я тут немного ваш скрипт переделал под другую задачу, на удивление работает, но хотелось бы чтоб работало без затрагивания буфера. И еще не работает параметр 3 - только папки.
Code: | '===================== VBS ======================
' Выделение подобных элементов на другой панели
' Условия: 1) требуется компонент TCScript.dll;
' 2) имена папок должны иметь \ на конце
' Параметры: "%T" <выдел. всё/файлы/папки: 1/2/3>
'================================================
Set R = New RegExp : R.Global = True : P = WSH.Arguments(0)
With CreateObject("TCScript.Helper")
.NoArrayReturn = True : .LockTC True
.Pause = 0 : .Wait = True : Clip = .GetSrcSelectedFiles(0) : .Sleep 20
R.Pattern = "^[\r\n]+|[\r\n]+$|\r?\n(?=(\r?\n)+)"
RClip = Replace(R.Replace(Clip, ""), vbNewline, "|")
R.Pattern = "([.;$+^\\\(\)\{\[])" : R.MultiLine = True
R.Pattern = "(^|\r\n)([^\r\n]+\\(" & R.Replace(RClip, "\$1") & "))$"
.NoArrayReturn = True : .LockTC True : .SendCommand 4006, True
.SendCommand 3300 + WSH.Arguments(1), True
Sel = .GetSrcSelectedFiles(1) : .Sleep 20
For Each Path in R.Execute(Sel)
List = List & Path.Value
Next : .SendCommand 524, True
If P <> "" Then List = Replace(List, P, "") : .Sleep 20
.SetTextToClip List : .SendCommand 2033, True : .SendCommand 4006, True
.LockTC False
End With |
! | Avada: | Отсюда и далее цепочка сообщений, находившаяся ранее в этой теме, перенесена в более адекватное место. | |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Dec 06, 2017 01:43 Post subject: |
|
|
ingerard
Я не понял по названию в шапке, что должен делать скрипт, и как это относится к сабжу. Подобные элементы по отношению к чему? Не про эту тему речь? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
ingerard
Joined: 04 Dec 2016 Posts: 128
|
(Separately) Posted: Wed Dec 06, 2017 11:31 Post subject: |
|
|
Flasher
Получилось сделать самому, в шапке уточнил для чего это нужно, надеюсь что объяснил доступно Не знаю только насчет оптимизации, работает вроде быстро.
Code: | '===================== VBS ======================
' Выделение в противоположной панели похожих по
' названию файлов/папок, выделенных на текущей.
' Условия: 1) требуется компонент TCScript.dll;
' 2) имена папок должны иметь \ на конце
' Параметры: "%T" <выдел. всё/файлы/папки: 1/2/3>
'================================================
Set R = New RegExp : R.Global = True : P = WSH.Arguments(0)
With CreateObject("TCScript.Helper")
.NoArrayReturn = True : .LockTC True
T = .GetTextFromClip
.Pause = 0 : .Wait = True : Clip = .GetSrcSelectedFiles(0) : .Sleep 20
.SetTextToClip Clip : .SendCommand 2033, True
R.Pattern = "^[\r\n]+|[\r\n]+$|\r?\n(?=(\r?\n)+)"
RClip = Replace(R.Replace(Clip, ""), vbNewline, "|")
R.Pattern = "([.;$+^\\\(\)\{\[])" : R.MultiLine = True
R.Pattern = "(^|\r\n)([^\r\n]+\\(" & R.Replace(RClip, "\$1") & "))$"
.NoArrayReturn = True : .LockTC True : .SendCommand 4006, True
.SendCommand 3300 + WSH.Arguments(1), True
Sel = .GetSrcSelectedFiles(1) : .Sleep 20
For Each Path in R.Execute(Sel)
List = List & Path.Value
Next : .SendCommand 524, True
If P <> "" Then List = Replace(List, P, "") : .Sleep 20
.SetTextToClip List : .SendCommand 2033, True : .SendCommand 4006, True
.SetTextToClip(T)
.LockTC False
End With |
Quote: | Не про эту тему речь? |
Похоже на то, я просто искал по слову "Выделение". Этот скрипт у меня просит разрешение IE и какой-то он сильно громадской. А этот выдает ошибку "Не найден путь, строка 6, символ 3" |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Dec 06, 2017 11:54 Post subject: |
|
|
ingerard
Не, это никуда не годится. Тут такой набор манипуляций совершенно не требуется. Всё куда проще:
Code: | '=========================== VBS ============================
' Выделение в другой панели одноимённых с выбранными объектов
' Условие: требуется компонент TCScript.dll
'============================================================
With CreateObject("TCScript.Helper")
.Pause = 0 : .Wait = True : Clip = .GetTextFromClip
.LockTC True : .NoArrayReturn = True: If .GetInfo("TP") = "" Then _
.SetTextToClip .GetSrcSelectedFiles(1) Else _
.SetTextToClip Replace(.GetSrcSelectedFiles(1), .GetInfo("SP"), "")
.SendCommand 4006, True : .SendCommand 2033, True
.SendCommand 4006, True : .LockTC False : .SetTextToClip Clip
End With | И это обсуждение точно не по теме. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Wed Dec 06, 2017 16:32; edited 7 times in total |
|
Back to top |
|
|
ingerard
Joined: 04 Dec 2016 Posts: 128
|
(Separately) Posted: Wed Dec 06, 2017 11:59 Post subject: |
|
|
Flasher
Но мне нужно вернуть фокус панели и если ни один элемент не выделен, то выделяется элемент под курсором. А в какую тему если что переходить для дальнейшего обсуждение если чего? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Dec 06, 2017 12:09 Post subject: |
|
|
ingerard
Возврат добавил. Но насчёт элемента под курсором не вижу ничего криминального. Объект выбран (скрипт так и назван), кнопка нажата. Что в этом плохого? Это наоборот удобно, когда, например, нужно сравнить 2 файла по содержимому.
Переходить уже нет смысла. Теперь придётся ждать модератора для переноса. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
ingerard
Joined: 04 Dec 2016 Posts: 128
|
(Separately) Posted: Wed Dec 06, 2017 12:19 Post subject: |
|
|
Quote: | Это наоборот удобно, когда, например, нужно сравнить 2 файла по содержимому. |
Как раз для таких целей и нужно, мелочное дополнение которое иногда нужно. Достаточно добавить?
.SetTextToClip .GetSrcSelectedFiles(0) : .SendCommand 2033, True
p.s. Код не работает в режиме Branch, а тот что я подправил работает.
Last edited by ingerard on Wed Dec 06, 2017 12:28; edited 3 times in total |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Dec 06, 2017 12:26 Post subject: |
|
|
ingerard wrote: | Как раз для таких целей и нужно | В этом есть противоречие. Если бы было нужно, то зачем ограничивать поведение?
Указанная добавка вообще не годится. Для этого несколько иные механизмы нужны, но они есть в той версии Хелпера, которую я по некоторым причинам ещё не выкладывал.
Вообще применять подобную вещь в режиме DirBranch как минимум странно, потому как этот режим для восстановления выделения предполагает совпадение относительности путей в обеих панелях, а такая потребность на практике кажется мне несколько сомнительной и задействовать добавочный код в ущерб скорости я бы не советовал.
Но, если очень надо, то я подскажу, что нужно отредактировать. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
ingerard
Joined: 04 Dec 2016 Posts: 128
|
(Separately) Posted: Wed Dec 06, 2017 12:52 Post subject: |
|
|
Flasher wrote: | Но, если очень надо, то я подскажу, что нужно отредактировать. |
Очень надо Так же в режиме Branch если найдет схожие по названию файлы+расширение, то отмечать все |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|