!=====================================================================================
! Класс для работы с OpenOffice.
! Вячеслав Черников, г.Рязань, 2015 - 2016 г.
!=====================================================================================

!=====================================================================================
! Класс: вывод работы с OpenOffice.
! Пример вызова.
!
! FsOOL   FsOpenOffice
!
! FsOOL.Init('1.vbs','1.txt')           !инициализация класса
! FsOOL.Kill                            !уничтожаем класс
!
!=====================================================================================

QueueBufType  Queue, type     !буфер для формирования скрипта
BufStr    STRING(1024)        !строка буфера
end

QueueImagesType  Queue, type  !список вставляемых картинок
ImageName STRING(128)         !имя файла с картинкой
ImageNum  LONG                !номер картинки
end

QueueMapType  Queue, type      !список колонок для чтения
MapName    STRING(20)          !имя переменной
MapCol     LONG                !номер колонки
MapFlagReq BYTE                !признак обязательности  
MapVal     STRING(20)          !значение для автозаполнения 
end

QueueFontsType  Queue, type    !шрифты
FontName         STRING(20)    !наименование шрифта
FontFont         STRING(40)    !шрифт
FontHeight       LONG          !высота шрифта
FontWeight       LONG          !жирность 
FontPost         BYTE          !начертание
FontUnd          BYTE          !подчеркивание
FontStrike       BYTE          !зачеркивание
FontColor        STRING(20)    !цвет шрифта
end

QueueBordersType  Queue, type  !границы
BorderName       STRING(20)    !наименование границы
BorderColor      STRING(20)    !цвет 
BorderInnerLineWidth LONG      !ширина внутренней линии
BorderOuterLineWidth LONG      !ширина внешней линии
BorderLineDistance   LONG      !расстояния между
end

QueueStylesType  Queue, type   !стили
StyleName        STRING(20)    !наименование стиля
StyleFontName    STRING(20)    !наименование шрифта
StyleBorderName  STRING(20)    !наименование границы
StyleColor       STRING(20)    !цвет фона
StyleFormat      STRING(20)    !формат вывода

StyleJustHor     BYTE          !выравнивание по горизонали
StyleJustVer     BYTE          !выравнивание по вертикали
StyleWrap        BYTE          !автоперенос строк

StyleBordLeft    BYTE          !линия лево
StyleBordRight   BYTE          !линия справа
StyleBordTop     BYTE          !линия сверху
StyleBordBottom  BYTE          !линия снизу 
end

FsOpenOffice      CLASS,TYPE,MODULE('FsOpenOffice.CLW'),LINK('FsOpenOffice.CLW')
Active         BYTE,       PRIVATE          !флаг активности
FileNameScript STRING(128)                  !файл для скрипта на vbscript
FileNameOut    STRING(128)                  !файл для получения результата
FileNameCur    STRING(128)                  !текущий открытый файл
FilePassword   STRING(40)                   !пароль        
BufPoint       LONG                         !указатель в буфере
BufPointMax    LONG                         !максимальное значение указателя

QueueBuf       &QueueBufType                !буфер для скрипта  
QueueImages    &QueueImagesType             !список картинок
QueueMap       &QueueMapType                !список колонок для чтения
QueueFonts     &QueueFontsType              !шрифты 
QueueBorders   &QueueBordersType            !границы
QueueStyles    &QueueStylesType             !стили

Init            PROCEDURE(STRING,STRING)    !инициализация объекта
Kill            PROCEDURE                   !уничтожение объекта
Destruct        PROCEDURE                   !деструктор

CalcConnect     PROCEDURE                   !Инициализировать подключение к Calc
CalcDisConnect  PROCEDURE (BYTE Reg)        !Завершить работу с Calc
CalcNew         PROCEDURE                   !Создать новый файл в Calc
CalcOpen        PROCEDURE (STRING fName)    !Открыть файл в Calc
CalcSheetFileCopy PROCEDURE (STRING fName, STRING sheetName, STRING sheetNameTarg)  !Копировать лист из другого файла по имени файла и имени листа
CalcSave        PROCEDURE                   !Сохранить текущий файл
CalcSaveTo      PROCEDURE (STRING FName)    !Сохранить файл как
CalcPrint       PROCEDURE                   !печать
CalcTerminate   PROCEDURE                   !Отключиться от Calc
CalcPageParam   PROCEDURE (<BYTE pLands>,<REAL pLeftMarg>,<REAL pRightMarg>,<REAL pTopMarg>,<REAL pBottomMarg>,<LONG pScale>)  !установить параметры страницы

CalcStylesClear      PROCEDURE                   !очистить таблицу стилей
CalcFontSet          PROCEDURE (STRING pName, STRING pFont, <LONG pHeight>, <LONG pWeight>, <BYTE pPost>, <BYTE pUnd>, <BYTE pStrike>, <STRING pColor>)  !установить шрифт
CalcBorderSet        PROCEDURE (STRING pName, <STRING pColor>, <LONG pInner>, <LONG pOuter>, <LONG pDist>)  !установить границу
CalcStyleSet         PROCEDURE (STRING pName, STRING pFontName, <STRING pColor>, <STRING pFormat>, <BYTE pJustHor>, <BYTE pJustVer>, <BYTE pWrap>)   !установить стиль
CalcStyleBordersSet  PROCEDURE (STRING pName, STRING pBorder, BYTE pLeft, BYTE pRight, BYTE pTop, BYTE pBottom)  !Установить границы для стиля
CalcCellsStyleSet    PROCEDURE (STRING pName, LONG pRowBeg, LONG pColBeg, LONG pRowEnd, LONG pColEnd)  !Установить стиль для диапазона ячеек
CalcColumnsWidthSet  PROCEDURE (LONG pNumBeg, LONG pNumEnd, REAL pVal)  !установить ширину колонок
CalcColumnsWidthAvtoSet PROCEDURE (LONG pNumBeg, LONG pNumEnd)  !Установить автоподбор ширины колонок
CalcRowsHeightSet    PROCEDURE (LONG pNumBeg, LONG pNumEnd, REAL pVal)  !установить высоту строк
CalcRowsHeightAvtoSet   PROCEDURE (LONG pNumBeg, LONG pNumEnd)  !Установить автоподбор высоты строк 
CalcCellsMerge       PROCEDURE (LONG pRowBeg, LONG pColBeg, LONG pRowEnd, LONG pColEnd)  !Объединить ячейки
CalcCellSelect       PROCEDURE (LONG pRow, LONG pCol)  !Выделить ячейку
CalcPageBreak        PROCEDURE (LONG pNum)  !Добавить переход на новую страницу
CalcSetFormat        PROCEDURE (LONG pRowBeg, LONG pColBeg, LONG pRowEnd, LONG pColEnd, STRING pStr)  !Установить формат для ячеек

CalcSetSheet         PROCEDURE (LONG Num)                  !Переключиться на закладку 
CalcSheetVisible     PROCEDURE (LONG pNum, BYTE pReg)      !Скрыть или показать закладку 
CalcSheetAdd         PROCEDURE (STRING pName, BYTE pPos)   !Добавить закладку
CalcSheetRemove      PROCEDURE (STRING pName)              !Удалить закладку
CalcSheetMove        PROCEDURE (STRING pName, byte pPos)   !Переместить закладку
CalcSheetCopy        PROCEDURE (STRING pName, STRING pNameTarg, byte pPos)  !Копировать закладку
CalcSheetRename      PROCEDURE (STRING pName, STRING pNameTarg)             !Переименовать закладку
CalcSheetProtect     PROCEDURE (LONG pNum, STRING pPswd)   !Защитить лист 
CalcSheetUnProtect   PROCEDURE (LONG pNum, STRING pPswd)   !Снять защиту с листа
CalcFileProtect     PROCEDURE (STRING pPswd)               !Защитить файл
CalcMapQueueAdd PROCEDURE (STRING pName, LONG pNum, BYTE pFlagReq, STRING pVal)   !Добавить колонку в список для чтения
CalcMapQueueFree  PROCEDURE                 !Очистить список колонок для чтения
    
CalcSetString   PROCEDURE (LONG Row, LONG Col, STRING Str)  !Вывести строку в ячейку
CalcSetFormula  PROCEDURE (LONG pRowBeg, LONG pColBeg, LONG pRowEnd, LONG pColEnd, STRING pStr)   !Вставить формулу в ячейки
CalcSetHyperLink    PROCEDURE (LONG pRowBeg, LONG pColBeg, LONG pRowEnd, LONG pColEnd, STRING pRef, STRING pStr)  !Вставить ссылку в ячейки Calc
CalcGetString   PROCEDURE (LONG Row, LONG Col, STRING Pref) !Получить строку из ячейки
CalcRangeCopy   PROCEDURE (BYTE pSheetS, STRING pDiapS, BYTE pSheetT, LONG pRowT, LONG pColT)  !Копировать диапазон ячеек 
CalcGetRangeString  PROCEDURE (LONG RowBeg, <LONG RowEnd>)    !Получить значения из диапазона ячеек
CalcAddImage        PROCEDURE (STRING fName, LONG pY, LONG pX, LONG pWidth, LONG pheight)  !Вставить картинку
CalcAddImageCell    PROCEDURE (STRING fName, LONG pRow, LONG pCol)  !Вставить картинку в ячейку Calc
CalcAddImageMnem    PROCEDURE (STRING fName, STRING pMark)   !Вставить картинку в ячейки Calc по мнемонике
CalcAddImageMnemSize  PROCEDURE (STRING fName, STRING pMark) !Вставить картинку в ячейки Calc по мнемонике и размеру
CalcGetRangeInfo    PROCEDURE (LONG pRowBeg, LONG pColBeg, LONG pRows, LONG pCols, BYTE pNum) !Получить настройки из диапазона ячеек
CalcReplace         PROCEDURE (STRING SStr, STRING TStr)   !заменить строку
CalcReplaceFromQueue PROCEDURE (QUEUE Q, *STRING SStr, *STRING TStr)  !заменить строки из очереди

CalcChartTitle     PROCEDURE (STRING pText, <LONG pSize>, <STRING pColor>) !Установить параметры заголовка графика
CalcChartSubTitle  PROCEDURE (STRING pText, <LONG pSize>, <STRING pColor>) !Установить параметры подзаголовка графика
CalcChartLegend    PROCEDURE (<BYTE pAligm>, <BYTE pStyle>, <STRING pColor>, <REAL pSize>)  !Установить параметры легенды
CalcChartLabel     PROCEDURE (BYTE pCateg, BYTE pSymb, BYTE pNumb, BYTE pNumbPer)  !Установить параметры меток
CalcChartData      PROCEDURE (LONG pSheet, LONG pX1, LONG pY1, LONG pX2, LONG pY2) !Задать область данных 
CalcChartCoord     PROCEDURE (BYTE pType, STRING pName, <LONG pTitleHeight>, <LONG pHeight>, <LONG pRotate>) !Задать параметры координат
CalcChartAdd       PROCEDURE (STRING pName, STRING pCharType, BYTE p3d, BYTE pHasLegend, REAL pX, REAL pY, REAL pW, REAL pH) !Создать график (область)
CalcChartAdd2      PROCEDURE (LONG pKol, STRING pName, STRING pCharType, BYTE p3d, BYTE pHasLegend, REAL pX, REAL pY, REAL pW, REAL pH) !Создать график (серии)
CalcChartSeriesNew PROCEDURE (LONG pRowBegD1, LONG pRowEndD1, LONG pColD1, LONG pRowBegD2, LONG pRowEndD2, LONG pColD2, LONG pRowT, LONG pColT)   !Создать серию
CalcChartSeriesPar PROCEDURE (<LONG pColorInd>, <LONG pWidth>, <LONG pHeight>)  !Установить параметры серии
CalcChartSeriesCateg  PROCEDURE (LONG pRowBeg, LONG pRowEnd, LONG pCol)  !Установить категории для серии
CalcChartSeriesAdd PROCEDURE (LONG pNum)   !Добавить серию
CalcChartSeriesFix PROCEDURE    !Фиксировать серии

WriterConnect        PROCEDURE                  !Инициализировать подключение к Writer
WriterDisConnect     PROCEDURE (BYTE Reg)       !Завершить работу с Writer
WriterNew            PROCEDURE                  !Создать новый файл в Writer
WriterOpen           PROCEDURE (STRING fName)   !Открыть файл в Writer
WriterSave           PROCEDURE                  !Сохранить файл Writer
WriterSaveTo         PROCEDURE (STRING FName)   !Сохранить файл как (Writer)
WriterPrint          PROCEDURE                  !Печать из Writer
WriterReplace        PROCEDURE (STRING SStr, STRING TStr)  !Заменить строки (Writer)
WriterReplaceFromQueue PROCEDURE (QUEUE Q, *STRING SStr, *STRING TStr)  !Заменить строки из очереди (Writer)
WriterAddImage         PROCEDURE (STRING fName, STRING pTempl, LONG pWidth, LONG pheight) !Вставить картинку в Writer

AddScriptLine   PROCEDURE (STRING Str)          !Вывести строку скрипта
AddOutLine      PROCEDURE (STRING Str)          !Вывести строку в выходной файл
AddScriptInt    PROCEDURE (STRING), PROTECTED   !добавить строку к скрипту (внутренняя)
MakeScript      PROCEDURE (BYTE Reg, <QUEUE Que>)   !сформировать скрипт
RunScript       PROCEDURE                       !выполнить скрипт
LoadOutFileToQueue PROCEDURE (QUEUE Que)        !Загрузить выходной файл в очередь

MakeUrl         FUNCTION (STRING Str), STRING   !сформировать URL
StrReplace      FUNCTION (STRING Str, STRING StrSource, STRING StrTarg), STRING   !Замена символов в строке
             END
