Архив рубрики: Native_GEDI

EWO (внешний виджет)

Что такое внешний виджет?

EWO (External Widget Object = внешний виджет) представляет собой графический объект, который может быть добавлен на любую панель «КАСКАД Цифра».

Виджеты создаются при помощи набора средств Qt (кроссплатформенного инструментария разработки ПО на языке программирования C++), см. http://qt-project.org/. EWO может отображать и содержать любые данные, которые инструментарий Qt позволяет поместить в объект QWidget. EWO динамически загружается в пользовательский интерфейс «КАСКАД Цифра» (EWO компилируется в виде подключаемого модуля и размещается в совместно используемой библиотеке/файле .dll). Свойства EWO могут настраиваться при помощи Редактора свойств GEDI.

EWO могут адресоваться из сценариев на языке Control. EWO также могут вызывать выполнение сценариев путем формирования соответствующих сигналов.

В дополнение к статичным типам данных, между EWO и сценариями «КАСКАД Цифра» может осуществляться обмен данными следующих типов:

  • все типы данных dyn_*, поддерживаемые «КАСКАД Цифра»
  • все типы данных QList <QVariant>

QVariant::Size -> dyn_int с высотой и шириной

QVariant::Polygon -> dyn_dyn_int, где каждая переменная dyn_int соответствует координатам по осям x, y

QVariant::BitArray -> до 32 бит -> bit32; от 33 до 64 бит -> bit64

QVariant::Pen -> string

QVariant::Brush -> string

QVariant::Map -> mapping

В том случае, если QBrush содержит растровое изображение pixmap, то преобразование в строку невозможно. Это означает, что чтение растровых изображений из внешнего виджета возможно только в определенных пределах. Тем не менее возможна запись во внешний виджет при помощи скрипта «КАСКАД Цифра».

ВНИМАНИЕ

Существующие внешние виджеты, которые будут использоваться в новой версии «КАСКАД Цифра», должны быть повторно скомпилированы.

ВНИМАНИЕ

В силу изменений в «КАСКАД Цифра», при привязке EWO к библиотекам Qt (только в случае использования операционной системы Linux), требуется изменение предшествующего объявления класса для библиотек Qt с «class QString;» на «QT_FORWARD_DECLARE_CLASS(QString)«. Для этих целей может использоваться следующий скрипт:

Значение параметра соответствует начальному каталогу исходного кода внешнего виджета.

Нотация «QT_FORWARD_DECLARE_CLASS(xxx)» может использоваться в любой операционной системе. В случае Linux она является обязательной.

#!/bin/shfind $1 -type f -name \*hxx -o -name \*.h | xargs sed -i -e ‘s/^\(class *\)\(Q.*\);/QT_FORWARD_DECLARE_CLASS\(\2\)/’

Реализация внешнего виджета

В качестве основы необходимо использовать класс BaseExternWidget. Также необходимо реализовать как минимум один метод, содержащий данный метод:

QWidget *widget() const = 0

Далее EWO может быть скомпилирован и использован.

Более детальная информация содержится в файле BaseExternWidget.hxx, содержащем описание всех методов (файл находится в директории путь_КАСКАД/api/include).

Пример (cmd для Windows, sh для Linux) находится в директории api/newEWO. Данный пример формирует внешний виджет, который может быть скомпилирован, и который содержит демонстрационный код.

Необходимо учитывать, что переменная окружения API_ROOT установлена на путь к папке /api, содержащейся в каталоге установки. Расширьте недостающие участки кода, отмеченные символом //TODO, своим корректным пользовательским кодом и скомпилируйте EWO. EWO может быть скомпилирован, даже если не было внесено никаких изменений, и в результате получится запускаемый EWO, который предоставляет кнопкам различные сигналы/методы.

Пожалуйста, учитывайте требования к разработке API при создании пользовательских компонентов.

Настройка собственной библиотеки QT

Для реализации внешних виджетов необходимо наличие лицензированных средств разработки Qt, при этом версия средств разработки Qt должна соответствовать версии библиотеки Qt, используемой в «КАСКАД Цифра», в противном случае скомпилированный внешний виджет не сможет быть загружен.

Номер версии Qt, используемой в настоящий момент в «КАСКАД Цифра», может быть отображен в GEDI (см. «О Qt«). В «КАСКАД Цифра» версии 3.14 используется Qt версии.

Установка внешнего виджета

Внешний виджет представляет собой совместно используемую библиотеку (файл .dll) (находящуюся в директории <путь_КАСКАД>/bin), которую необходимо скопировать в директорию проекта <путь_проекта>/bin/widgets, и имя которой должно оканчиваться на .ewo (например, MyWidget.ewo, но не .so или .dll). В качестве альтернативы файл .ewo может быть размещен в одной из следующих поддиректорий, в которых содержатся внешние виджеты, скомпилированные для конкретной платформы:

<путь_проекта>/bin/widgets/windows

<путь_проекта>/bin/widgets/windows-64

<путь_проекта>/bin/widgets/linux

<путь_проекта>/bin/widgets/linux-64

Добавление внешнего виджета на панель

Щелкните левой кнопкой мыши по иконке Внешнего виджета (EWO)  (или выберите в меню «Объекты» элемент меню «Внешний виджет (EWO)…»), в открывшемся диалоговом окне выберите требуемый файл .ewo и создайте на панели прямоугольную область, которая будет соответствовать границам виджета. Далее работа с внешним виджетом аналогична настройке стандартных виджетов (в Редакторе свойств на вкладке «Расширенные» отображены дополнительные события и свойства).

При двойном щелчке по EWO, находящемуся на панели в режиме редактирования, происходит открытие сценария для события Initialize в Редакторе сценариев.

Создание редактора для настроек собственного внешнего виджета

Для настройки некоторых комплексных внешних виджетов в «КАСКАД Цифра» существуют отдельные диалоговые окна настройки / редакторы. Подобные диалоговые окна настройки / редакторы существуют, например, для Trend Widget или Cascade Button. Диалоговые окна настройки / редакторы также могут быть созданы и для собственных внешних виджетов: Разместите сценарий в файле <путь_проекта>/scripts/gedi/<имя-EWO>_ewo.ctl (например, MyWidget_ewo.ctl), который затем сможет открывать панель и взаимодействовать с внешним объектом (см., например, gedi/sp.ctl — openDialog(), getConstructShape()).

Разработка внешнего виджета

paintEvent()

В том случае, если внешний виджет должен самостоятельно масштабировать шрифт в paintEvent(), во избежание повторного изменения шрифта интерфейсом пользователя при масштабировании, в виджете EWO необходимо создать свойство, способ создания которого описан ниже.

Q_PROPERTY(bool avoidFontTransform READ getAvoidFontTransform DESIGNABLE false SCRIPTABLE false)
bool getAvoidFontTransform() const { return true; }

inGedi()

Позволяет изменить характер отображения внешних виджетов в рамках редактора GEDI, например, повысить заметность виджета AttentionEffect.ewo в редакторе.

Q_PROPERTY(bool inGedi READ isInGedi WRITE setInGedi DESIGNABLE false SCRIPTABLE false)
bool isInGedi() const { return inGedi; }

Drop Event

Чтобы использовать перетаскивание для вашего EWO, обработка расположения меню может быть добавлена в вашу реализацию EWO. Чтобы добавить обработку событий в ваш EWO, сам EWO (не QWidget, используемый внутри EWO) должен быть расширен следующей командой в конструкторе EWO:

setProperty("-droppedEvent", QLatin1String("main(string information, int dragType)"));

Аргументы основной функции зависят от аргументов, переданных в качестве значений внутри сигнала. Это означает, что в зависимости от сигнала могут быть реализованы собственные аргументы.

Этот интерфейс используется для скрипта размещения внутри GEDI (как часть редактора свойств).

События графических объектов

«КАСКАД Цифра» предоставляет возможность создания сценариев, которые выполняются при наступлении соответствующих событий графических объектов.

Поддерживается следующий набор стандартных событий:

СобытиеДействие, приводящее к наступлению события.
ActivatedНажатие пользователем клавиши Ввод (Enter) или двойной щелчок по дате в виджете календаря.
AcknowledgeКвитирование
ClickedЩелчок левой кнопкой мыши.В том случае, если также определен сценарий для события «MousePressed», то данный сценарий выполняется первым.
ChangeИзменение положения ползунка.
ChangedВыбор элемента из списка выбора.
CommandСобытие текстового поля. Выполняется при нажатии клавиши Ввод (Enter).
CurrentPageChangedВыбор другого (относительно отображаемого в текущий момент) месяца или года в виджете календаря. Новые год и месяц передаются в качестве параметров.
CursorPositionChangedИзменение положения курсора в документе текстового редактора.
CurveDataErrorКаждый возврат функцией «dpGetPeriod» ошибки, относящейся к любому из элементов точек данных (доступно для: Тренда).
CurvesScaledCurvesScaled(dyn_string curves);Событие наступает по истечении тайм-аута 500 мс. При помощи «dyn_string» передаются все имена кривых тренда, которые были изменены (при перемещении, масштабировании и т.д.).
DoubleClickedДвойной щелчок левой кнопкой мыши.В том случае, если определен сценарий для события «MousePressed» / «MouseReleased», то данный сценарий выполняется первым.
DragDropСобытие наступает при сбросе информации на объект, при этом ранее при помощи функции «dropAccept()» в систему было передано сообщение о готовности приема объектом перетаскиваемой информации. Более подробная информация приведена в разделе «Перетаскивание во время выполнения программы«.
DragEnterСобытие наступает только в том случае, если объект готов принимать перетаскиваемую информацию (в редакторе свойств значение свойства «Принимает перетаскиваемые объекты» (Accept Drops) определено как «TRUE»), и значение свойства «Разрешен» (Enabled) объекта равняется «TRUE».  При этом графический объект должен определить свою готовность принимать перетаскиваемую информацию. Более подробная информация приведена в разделе «Перетаскивание во время выполнения программы«.
DragStartСобытие наступает только в том случае, если в редакторе свойств свойству «Перетаскиваемый» было присвоено значение «TRUE». Более подробная информация приведена в разделе «Перетаскивание во время выполнения программы«.Перетаскивание во время выполнения программы.ВНИМАНИЕ:По умолчанию возможно перетаскивание ячеек таблицы на объект (например, на Текстовое поле). Предпосылкой является неизменность сценария обработки события «DragStart». В случае добавления и последующего даже немедленного удаления какой-либо строки кода перетаскивание ячеек будет невозможно. Для восстановления работоспособности перетаскивания необходимо удалить весь сценарий, включая «main{}».
GestureTriggeredСобытие наступает при жесте скольжения (движение одним пальцем) по объекту.
HeaderClickedСобытие наступает при щелчке левой кнопкой мыши по заголовку таблицы.
InitializeСобытие наступает при открытии.
KeyboardFocusOutСобытие наступает при потере фокуса.
KeyboardFocusInСобытие наступает при получении фокуса.
LangChangedСобытие наступает при изменении языка.
ModificationChangedModificationChanged(bool mod)Данное событие наступает при изменении статуса изменения документа в текстовом редакторе. В том случае, если mod = TRUE, то документ был изменен. В противном случае статусу изменения присваивается значение «unmodified» (без изменений).
MousePressedСобытие наступает при нажатии левой кнопкой мыши.Т.е. сценарий запускается при каждом нажатии кнопкой мыши. При этом не имеет значения, будет ли кнопка отпущена позднее.Если курсор мыши при нажатой кнопке мыши предварительно переместить за границу кнопки (или простого графического объекта), событие будет наступать при каждом перемещении курсора мыши в пределы объекта.
MouseReleasedСобытие наступает при прекращении нажатия кнопки мыши по объекту.При этом сценарий запускается либо при отпускании кнопки мыши, либо при перемещении курсора мыши при нажатой кнопке мыши за пределы кнопки (или простого графического объекта).
MouseOverСобытие наступает при перемещении курсора мыши в пределы объекта. ПРИМЕЧАНИЕСобытие «MouseOver» включает в себя логический параметр «enter», значение которого устанавливается равным «TRUE » при перемещении курсора мыши в пределы объекта и «FALSE» при перемещении курсора мыши за пределы объекта. Подобная функциональность позволяет пользователю, например, задавать различные цвета фона в зависимости от положения мыши.
OnButtonDblClkСобытие наступает при двойном щелчке левой кнопкой мыши по Дереву точек данных.
OnLButtonClkСобытие наступает при щелчке левой кнопкой мыши по Дереву точек данных.
OnDpTypeChangingOnDpTypeChangedСобытие «OnDpTypeChanging» наступает при использовании Дерева точек данных и вызове функции «createDpType()» (то есть при создании типа точек данных). Событие «OnDpTypeChanged» наступает также при вызове редактора «dpTypeEditor()» и создании типа точек данных (при нажатии кнопки «ОК»).
ResizedСобытие наступает при изменении размера объекта.
ReturnPressedСобытие наступает при нажатии клавиши Ввод (Enter) при редактировании документа в Текстовом редакторе.
RightMousePressedНажатие правой кнопкой мыши.
ScrolledC целью обеспечения опроса и вывода на экран только тех данных, которые могут быть видны пользователю в настоящий момент, а также во избежание объемных запросов, обработка которых может потребовать длительного времени, реализовано событие прокрутки («Scrolled»). При этом данные, соответствующие некоторой области виджета «Таблица», будут запрашиваться только при прокрутке до данной области, но не ранее. Событие наступает через 0.3 секунды после прекращения прокрутки таблицы. Необходимо обратить внимание на то, что таблица должна быть заполнена строками.
SelectionChangedСобытие наступает при смене вкладки или при изменении значения атрибута «selected» простого объекта (либо при выборе объекта пользователем, либо программно путем изменения значения атрибута «selected» при помощи сценария на языке CTRL. См. «Множественный выбор во время выполнения программы«).или всякий раз при изменении набора выбранных строк, например, при помощи клавиатуры. Необходимо обратить внимание на то, что для использования события «SelectionChanged» следует предварительно выполнить следующие настройки таблицы:TABLE1.tableMode(TABLE_SELECT_MULTIPLE);TABLE1.selectByClick(3);
SlideПеремещение ползунка.
TextChangedДанный тип событий доступен только для графических объектов «Текстовый редактор» и «Текстовое поле«. Событие наступает при каждом вводе каких-либо данных пользователем.Для получения доступа к новому тексту в рамках обработки данного события необходимо использовать параметр «newText».
TabCloseRequestedДанный тип событий доступен только для виджета вкладки. Событие наступает при закрытии вкладки.
WheelWheel(mapping event)Событие «Wheel» может быть использовано для задания реакции на действия с колесом мыши. Данное событие поддерживается только для панели. Пример использования события представлен здесь.При возникновении события может быть получена следующая информация:КлючЗначенияtype»Wheel»buttonsMOUSE_LEFT
MOUSE_RIGHT
MOUSE_MIDDLEОтражает состояние кнопок в момент возникновения события. Значение «buttons» является результатом операции логического сложения (ИЛИ) значений элементов MOUSE_* , представленных выше.buttonsAsString“LeftButton”
“RightButton”
“MiddleButton”Наименования кнопок, которые были нажаты в момент возникновения события, в виде единой последовательности символов (string). В том случае, если на момент возникновения события были нажаты несколько кнопок, их наименования разделяются символом «|».modifiersKEY_SHIFT
KEY_CONTROL
KEY_ALT
KEY_METAОтражает состояние клавиш-модификаторов на момент возникновения события. Значение «modifiers» является результатом операции логического сложения (ИЛИ) значений элементов KEY_* , представленных выше.modifiersAsString”ShiftModifier”
”ControlModifier”
”AltModifier”
“MetaModifier”Наименования клавиш клавиатуры, которые были нажаты в момент возникновения события, в виде единой последовательности символов (string). В том случае, если на момент возникновения события были нажаты несколько клавиш, их наименования разделяются символом «|».localPosОтносительная позиция X, Y на панели.globalPosПозиция X, Y на экране.angleDeltaВращение колеса мыши X, Y.Соответствует углу поворота в 1/8 градуса. Положительное значение соответствует вращению от пользователя. Отрицательное значение соответствует вращению к пользователю. Большинство компьютерных мышей имеют шаг угла поворота колеса 15 градусов, что соответствует 120 восьмых градуса.
120 единиц * 1/8 = 15 градусов.isSynthesizedВозвращает TRUE, если событие было вызвано событием «touch» (касание).
  • События, которые наступают при открытии панели во время инициализации (Initialize) .
  • События, вызываемые пользователем (например, щелчок кнопкой мыши).
  • События, вызываемые изменением положения ползунка (Change).
  • События, вызываемые изменением положения фокуса (KeyboardFocusIn, KeyboardFocusOut).
  • События алармов, наступающие при изменении статуса алармов.
  • События, вызываемые сменой вкладки (SelectionChanged).
  • События, которые наступают при закрытии панелей (Terminate).
  • События, которые наступают при изменении языка (LangChanged).
  • События, которые наступают при перемещении курсора в пределы объекта.

ВНИМАНИЕ

Несмотря на то, что для кнопки существует событие «DoubleClicked», данное событие наступает и при одиночном, и при двойном щелчке кнопкой мыши. Для таблиц, переключателей и селекторов рекомендуется использование событий «Clicked» или «DoubleClicked».

ЗначокПРИМЕЧАНИЕ

В сценариях обработки событий «KeyboardFocusIn» не следует использовать функцию «setInputFocus()».

Рисунок: События объекта типа «Прямоугольник»

Примечание

Присвоение сценария событию типа «Acknowledge» (Квитирование) возможно только с использованием мастеров. В связи с тем, что данный сценарий используется для алармов, он обязан иметь определенный формат. В этой связи его редактирование при помощи редактора сценариев невозможно.

ЗначокПРИМЕЧАНИЕ

При наличии 2 одновременно выполняемых сценариев, одним из которых является сценарий события «KeyboardFocusOut» (например, сценарий «KeyboardFocusOut» графического объекта, который теряет фокус, и сценарий «Clicked» графического объекта, который получает фокус), «КАСКАД Цифра» обеспечивает сначала запуск сценария «KeyboardFocusOut».

ПРИМЕЧАНИЕ

В сценариях «KeyboardFocusOut» и «KeyboardFocusIn» не допускается использование функций, которые изменяют значения свойств «Видимый» и «Разрешен» объекта, а также фокус объекта.

ВНИМАНИЕ

Графические объекты Выпадающий список и Список выбора не поддерживают тип событий «Clicked», однако поддерживают тип событий «Changed».

Пример использования события «Wheel»

Данный пример демонстрирует использование события «Wheel» при масштабировании панели.

main(mapping event)
{
 float factor = (event.angleDelta.y / 120.0) * 1.1;
 if ( factor > 0.0 )
   panelZoomIn(myModuleName(), factor, event.localPos);
 else
   panelZoomOut(myModuleName(), -factor, event.localPos);
}

Управление компоновкой

С помощью компоновки можно разместить объекты на панелях для изменения их размера наилучшим образом и оптимального использования доступного пространства. Поэтому, компоновки, главным образом, используются для дочерних панелей, диалоговых окон настройки и т.д., но не для образов процесса.

Компоновка меняет размер и положение объектов согласно заданным параметрам, которые определяются в редакторе GEDI. Если компоновка определена в панели, то ВСЕ объекты панели должны контролироваться компоновкой. Размер или положение объекта, который расположен за пределами компоновки, не будут изменяться.

Типы компоновки

Существует два разных типа компоновки:

  • вертикальная (VBox),
  • горизонтальная (HBox)

ПРИМЕЧАНИЕ

Компоновка может также включать подкомпоновки.

Каждая компоновка генерирует фиксированный промежуток между элементами (шаг) и вокруг них (поле). Шаг и поле относятся к атрибутам группы компоновки и могут быть изменены в редакторе GEDI. Если они не заданы явным образом, то применяются их значения по умолчанию в соответствии с используемым стилем системы. Это значит, что панель может по-разному выглядеть в нескольких системах с различными стилями во время выполнения программы. Следовательно, панель всегда будет интегрироваться идеальным образом в окружающую систему (шаг == -1 означает, что шаг будет определяться компоновкой более высокого уровня или стилем).

В редакторе GEDI область каждой компоновки отображается красной рамкой. В модуле VISION рамка не видна.

ПРИМЕЧАНИЕ

Обратите внимание на то, что в панели с компоновками не должна использоваться функция изменения масштаба. Применение данной функции может привести к некорректному отображению панели.

Объекты

Объекты (например, графические объекты, панели-ссылки или группы объектов) можно перемещать в пределах компоновки. Компоновка распределяет доступное пространство между элементами. При помощи атрибутов каждого элемента для компоновки можно определить некоторые предельные показатели, как например, минимальный/максимальный размер или поведение размера.

ПРИМЕЧАНИЕ

Работа с прямоугольниками и рамками осуществляется особым образом. Оба данных объекта могут содержать компоновку, поэтому возможно выравнивание объектов в их пределах.

Чтобы активировать определенный шаг между объектами, используется новый объект «распорка». Для данного объекта доступны такие атрибуты, как минимальный размер, максимальный размер и поведение размера. Распорка отображается только в редакторе GEDI и не видна в модуле VISION, поскольку она используется только для поведения шага.

Рисунок: Объекты распорки в GEDI

Пользователь может изменить размер дочерних панелей, которые содержат компоновку. Более того, в компоновках можно перемещать панели-ссылки и группы объектов. Данные группы отображаются как блоки, и в зависимости от настроек их размер и положение изменяются как единое целое по размеру и положению.

Это значит, что панели-ссылки не могут содержать определения компоновки.

Иерархия компоновок

Точно также, как и группа объектов, группы компоновок тоже имеют имя, которое отображается в диалоговом окне выбранного объекта/группы. Более того, здесь можно проверить иерархию компоновок (объектов в компоновке, компоновки в компоновке).

В данном диалоговом окне компоновка выбирается щелчком мыши.

Рисунок: Выбор объекта/группы

Включение компоновок

Чтобы включить компоновки на панели, необходимо указать тип компоновки для панели при помощи нового атрибута панели «Тип компоновки» или одной из кнопок типов компоновки. Поскольку в GEDI для панели компоновки не определено (layoutType == None), то объекты, которые сгруппированы в компоновки, не будут меняться, а останутся на своих местах. В данном случае размер и положение объекта можно изменить обычным образом. Положение объекта используется для определения его размещения в компоновке.

Данный размер используется как «sizeHint». Если компоновка панели включена, то размер и положение всех объектов, которые находятся в пределах компоновки, будут меняться в зависимости от заданных им атрибутов и «sizeHint».

Работа с компоновками

В GEDI компоновку можно создать и отредактировать при помощи элементов панели инструментов.

Рисунок: Панель инструментов управления компоновкой

 формирует горизонтальную компоновку вокруг выбранных объектов или панели в целом.

 формирует вертикальную компоновку вокруг выбранных объектов или панели в целом.

 добавляет выбранный объект к выбранной компоновке.

 удаляет выбранный объект из выбранной компоновки.

 разделяет выбранную компоновку.

Компоновка является только средством, помогающим изменить размер. Если нужно выбрать группу компоновки, то щелчок по объекту в пределах данной группы обеспечивает выбор только самого объекта. Чтобы выбрать группу компоновки, используйте диалоговое окно «Выбор объекта» или, удерживая нажатой клавишу SHIFT, щелкните по любому объекту в пределах группы. После этого можно изменить атрибуты группы компоновки.

ПРИМЕЧАНИЕ

При выборе опции «Выбрать все» обеспечивается выбор всех групп компоновок, а не всех объектов в пределах компоновки. В противном случае, при использовании действия «копировать/вырезать» группы компоновок скопированы не будут.

СОЗДАНИЕ КОМПОНОВОК

В нижеприведенных примерах показан процесс создания компоновок.

  1. Выберите объекты, которые должны быть в компоновке. Для этого, удерживая нажатой клавишу SHIFT, щелкните левой кнопкой мыши по объектам.
  2. Выберите рамку (или прямоугольник), которая должна стать контейнером компоновки.
  3. Выберите тип компоновки, используя один из новых значков на панели инструментов («Вертикальная компоновка»  или «Горизонтальная компоновка» ). В приводимом примере выбрана вертикальная компоновка. Щелчком по кнопке  красная рамка показывает область компоновки.

Рисунок: Вертикальная компоновка в GEDI

4. Теперь задайте вторую компоновку, в которой содержатся 2 других объекта. Щелкните по кнопке  для создания горизонтальной компоновки.

Рисунок: Вертикальная и горизонтальная компоновки

ПРИМЕЧАНИЕ

Если требуется добавить объект в существующую компоновку, выберите группу компоновки (удерживая нажатой клавишу SHIFT, щелкните левой кнопкой мыши по любому объекту в пределах компоновки) и затем объект, который необходимо добавить (при помощи нажатой клавиши CTRL и щелчка левой кнопки мыши). Чтобы добавить объект в компоновку, щелкните по кнопке .

Если нужно удалить объект из существующей компоновки, выберите объект и щелкните по кнопке . Объект удаляется из компоновки, но остается в панели.

5. В силу отсутствия компоновки, определенной для панели, объекты не будут автоматически выравниваться. Поэтому необходимо задать тип компоновки для всей панели. Это можно сделать двумя следующими способами:

  • Щелкните по фону панели и выберите либо кнопку , либо , чтобы задать тип компоновки для панели.
  • Выберите либо вертикальный, либо горизонтальный тип компоновки в редакторе свойств.

6. Компоновка для панели включена, и вся панель отображается в красной рамке. Размер и положение объектов изменится в соответствии с заданным типом.

Рисунок: Горизонтальный тип компоновки панели

Рисунок: Вертикальный тип компоновки панели

КОМПОНОВКИ В ПРЕДЕЛАХ КОМПОНОВОК

В приводимом примере описана работа с распорками и компоновкой в пределах компоновки.

1. Сначала задайте «NONE» (Отсутствует) для типа компоновки панели.

2. Поместите новые объекты в пределах панели, выберите их и создайте вокруг них компоновку. В данном примере эллипс и прямоугольник размещены в горизонтальной компоновке.

3. Вставьте горизонтальную распорку между эллипсом и прямоугольником. Задайте для атрибута «Поведение горизонтального размера» распорки значение «Fixed» (Фиксированное).

4. Добавьте распорку в компоновку.

Рисунок: Добавление новых объектов и компоновки

5. Выберите компоновку, которая содержит две кнопки (при помощи нажатой клавиши SHIFT и щелчке по одной из кнопок) и выберите другую компоновку, удерживая нажатыми клавиши CTRL и SHIFT и выбирая один из объектов (например, прямоугольник).

6. Щелкните по кнопке , чтобы отобразить компоновку вокруг выбранных компоновок.

7. Если для панели задать горизонтальный тип компоновки, панель будет выглядеть следующим образом.

Рисунок: Компоновка в пределах компоновки — горизонтальный тип компоновки панели

РАМКА В КАЧЕСТВЕ ГРУППИРОВАНИЯ КОМПОНОВКИ

Рамка может содержать компоновку. Аналогичный принцип применим и к прямоугольнику.

1. Нарисуйте рамки и разместите в ней объекты.

2. Щелкните по кнопке  или .

Рисунок: Рамка в качестве группирования компоновки

В диалоговом окне «Выбор объекта/группы» компоновка, которая задана в рамке или прямоугольнике, будет отображаться с уникальным символом.

Рисунок: Символ рамки в окне «Выбор объекта/группы»

Свойства

Для каждого объекта, который расположен в пределах компоновки, имеется ряд свойств, определяющих характер изменения объектов.

Поведение размера

Поведение размера определяет направление увеличения объекта: в высоту (свойство «Поведение горизонтального размера») или в ширину («Поведение вертикального размера»). Для данных атрибутов можно задать следующие значения:

Фиксированное значение«sizeHint» является единственным приемлемым вариантом для того, чтобы объект не увеличивался или не уменьшался в размере (например, вертикальное направление кнопки).
Мин. значение«sizeHint» — минимальный и достаточный вариант. Ширину объекта можно увеличить, но в случае большего увеличения никакого преимущества не будет (например, горизонтальное направление кнопки). Размер не может быть меньше, чем размер, определяемый «sizeHint».
Максимальный«sizeHint» является максимальным значением. Размер объекта можно уменьшить на любую величину без каких-либо потерь в случае, если для других объектов требуется место. Размер не может быть больше, чем размер, определяемый «sizeHint».
Предпочтительный«sizeHint» является лучшим вариантом размера, но объект можно уменьшить, при этом он остается применимым. Объект можно увеличить в размере, но в случае увеличения больше, чем «sizeHint», никакого преимущества не будет.
Увеличение в ширину«sizeHint» представляет оптимальный размер, но объект можно уменьшить, при этом он остается применимым. Для объекта может потребоваться больше места, поэтому необходимо обеспечить ему максимально возможное пространство
Мин. увеличение«sizeHint» — минимальный и достаточный вариант. Для объекта может потребоваться больше места, поэтому необходимо обеспечить ему максимально возможное пространство.
Игнорируемый«sizeHint()» игнорируется. Объект получает столько места, сколько возможно.

Выравнивание компоновки

Определяет способ выравнивания объекта. Возможные значения:

  • Выровнять по центру
  • Выровнять по верхнему краю
  • Выровнять по нижнему краю
  • Выровнять по левому краю
  • Выровнять по правому краю

Макс. размер, Мин. размер

Определяет максимальный и минимальный размер объекта.

Перевод интерфейса пользователя

Для перевода меню Qt выдаются предупреждающие сообщения и другие метки окон инструментария Qt редактора GEDI, средства просмотра журналов, т.е. непереведенные (на английском языке) файлы *.ts из Qt:

  • LogViewer_untranslated.ts — меню, предупреждающие сообщения и другие метки окон инструментария Qt средства просмотра журналов
  • uim_untranslated.ts — меню, предупреждающие сообщения и другие метки окон инструментария Qt редактора GEDI
  • qt_untranslated.ts — другие меню, предупреждающие сообщения и другие метки окон инструментария Qt

Их можно найти в папке <путь_КАСКАД>/nls.

ПРОЦЕСС ПЕРЕДАЧИ МЕНЮ QT

В данном примере будут переведены записи файла LogViewer_untranslated.ts.

  1. Откройте оболочку рабочей системы и измените каталог на <путь_КАСКАД>/nls.
  2. Введите следующую команду:

linguist LogViewer_untranslated.ts

  1. Откроется диалоговое окно с настройками языка. Выберите в выпадающем списке «Целевой язык -> Язык» язык, на который будут переведены тексты, а в выпадающем списке «Страна» — страну языка. Подтвердите нажатием на кнопку «OK».
  2. Переведите текст из файла LogViewer_untranslated.ts при помощи инструментария Qt Linguist.

  3. Сразу после завершения перевода сохраните изменения и введите следующую команду в оболочку:

lrelease LogViewer_untranslated.ts

  1. В результате будет сгенерирован файл LogViewer_untranslated.qm и сохранен в каталоге /nls.
  2. путь_КАСКАДСкопируйте файл в специальный каталог языков, например, pl_PL.iso88591, в каталог <пункт_каскад>/msg и переименуйте его в LogViewer.qm. Кроме того, файл qt.qm необходимо скопировать в специальный каталог языков.
  3. Теперь при открытии средства просмотра журналов на польском языке (измените язык на польский язык при помощи интерактивного переключения языков консоли и перезапустите средство просмотра журналов через консоль) переведенные тексты отображаются на польском языке.

Доступные классы

Ниже в таблице приведен список поддерживаемых классов QT и соответствующих им виджетов «КАСКАД Цифра». Классы Qt используются в качестве селекторов в файле CSS.

ПРИМЕЧАНИЕ

Набор классов может быть изменен в последующих версиях (например, по причине наследования от других классов QT).

«КАСКАД Цифра»-виджетКласс QT
ПанельPanelQT (базовый класс QT: QWidget)
КнопкаQPushButton
Кнопка с каскадным меню (каскадное меню)QPushButton
Текстовое поле (однострочное)QLineEdit
Текстовый редактор (многострочный)QTextEdit
Контейнер для переключателя и селектораMultiLabeledParent (базовый класс QT: QWidget)
ПереключательQRadioButton
СелекторQCheckBox
ТаблицаQTableView
Список выбораQListWidget
СчетчикQSpinBox
Выпадающий списокQComboBox
ВкладкаQTabWidget
ТрендTrendQT (контейнер, базовый класс QT: QSplitter), TrendPlot (диапазон кривой, базовый класс QT: QWidget), TrendScaleQT (шкала, базовый класс QT: QWidget)
Столбчатый трендTrendArrayWidget, TrendScaleQT (шкалы)
ЧасыClockQT (базовый класс QT: QFrame)
ПолзунокQSlider
Колесо прокруткиQtThumbWheel (базовый класс QT: QWidget)
Индикатор выполненияQProgressBar
Цифровой дисплей (ЖК-индикатор)QLCDNumber
Дерево точек данныхDpTreeView (базовый класс QT: QTreeWidget)
Дерево типов точек данныхDpTypeView (базовый класс QT: QTreeWidget)
Иерархический списокTreeWidgetQT (базовый класс QT: QTreeView)
Навигатор с масштабированиемNavWidget (базовый класс QT: QWidget)
Редактор сценариевEditorWidget (базовый класс QT: QPlainTextEdit)
КалендарьQCalendarWidget

Активация таблиц стилей

Для отображения панелей «КАСКАД Цифра» проекта «КАСКАД Цифра» в соответствии с таблице стилей, созданный файл CSS необходимо внедрить в проект «КАСКАД Цифра». Для этого необходимо выполнить следующие действия:
 

ИСПОЛЬЗОВАНИЕ ТАБЛИЦЫ СТИЛЕЙ

  1. Сохраните созданный файл CSS как: config/stylesheet.css.
  2. Запустите проект / менеджер интерфейса пользователя «КАСКАД Цифра».
  3. Теперь все виджеты отображаются в соответствии с пользовательской таблицей стилей.

Альтернативный вариант:

  1. Сохраните созданный файл CSS (с расширением *.css) в директории, доступной для «КАСКАД Цифра».
  2. Добавьте для менеджера интерфейса пользователя следующие параметры запуска:

-stylesheet <абсолютный_путь>/stylesheet.css

  1. Запустите проект / менеджер интерфейса пользователя «КАСКАД Цифра».
  2. Теперь все виджеты отображаются в соответствии с пользовательской таблицей стилей.

ПРИМЕЧАНИЕ

Используемая таблица стилей может быть перезагружена при помощи элемента меню «Редактировать > Обновить стили».

Создание файла CSS

Использование индивидуальных таблиц стилей подразумевает необходимость создания и активации файлов *.css.

Файлы CSS содержат наборы правил стилей. Каждое правило стиля состоит из двух элементов: селектора и блока объявлений.

Селектор указывает на виджеты, к которым применяется правило. Блок объявлений задает подлежащие изменению свойства виджета(ов).

Ниже приведены несколько примеров, демонстрирующих применение общих правил в файле CSS, а также применение файлов CSS к панелям.

ПРИМЕР

QPushButton { color: red }

В примере в качестве селектора выступает класс кнопок QPushButton. Блоком объявлений является { color: red }. Данное правило устанавливает красный цвет рисунка для всех кнопок.

ПРИМЕР

QLineEdit, QComboBox { color: red; background-color: white }

Один и тот же блок объявлений может использоваться совместно с несколькими селекторами, перечисляемыми через запятую (,).

ПРИМЕР

PanelQT#myPanel QMenu { background-color: white }

PanelQT[type=»configuration»] { background-color: darkgray }

Для более точного указания объектов используются селекторы потомков и селекторы идентификаторов. В примере выше красный цвет фона применяется во всплывающих меню (QMenu) только в том случае, если они открываются в составе панели с именем «myPanel». Цвета фона панелей, имеющих тип «configuration», изменяется на темно-серый.

ПРИМЕЧАНИЕ

В том случае, если имя или тип панели/виджета изменяется во время выполнения программы, таблица стилей должна быть повторно применена при помощи функции «setApplicationProperty()«.

В одном блоке объявлений могут быть указаны несколько свойств. Свойства перечисляются в скобках ({}) и разделяются точкой с запятой.

Все записи свойств (в файле CSS), как правило, нечувствительны к регистру. Т.е. записи, созданные с использованием нижнего и верхнего регистров, интерпретируются одинаково. Исключением являются имена классов, имена объектов и имена свойств Qt, которые чувствительны к регистру.

Ниже в таблице приведен список наиболее важных селекторов.

СелекторПримерОписание
Универсальный селектор (universal selector)*Соответствует всем виджетам.
Селектор типа (type selector)QPushButtonСоответствует всем виджетам с указанным классом QT.
Селектор свойства (атрибута) (property selector)QPushButton[flat=»false»]Соответствует всем виджетам с указанным классом QT, свойство «flat» которых равняется» false» (ложь).Подобный селектор может использоваться для работы со свойствами с изменяющимися значениями.
Для проверки вхождения QString в свойство типа QStringList может использоваться ~= (вместо =).
Селектор класса (class selector).QPushButtonСоответствует всем виджетам, соответствующим указанному классу QT, исключая подклассы.Запись в колонке «Пример» эквивалентна записи *[class~=»QPushButton»].
Селектор идентификатора (ID selector)  QPushButton#okButtonСоответствует всем виджетам с указанным классом QT, имена объектов которых совпадают с указанным именем.
Селектор потомка (descendant selector)QDialog QPushButtonСоответствует всем виджетам с указанным классом QT, которые являются потомками (дочерними, производными от дочерних и т.д.) объектов, соответствующих первой части указанного селектора.
Дочерний селектор (селектор прямого потомка) (child selector)QDialog > QPushButtonСоответствует всем виджетам с указанным классом QT, которые являются непосредственными дочерними объектами тех объектов, которые соответствуют первой части указанного селектора.

ПРИМЕЧАНИЕ

Размер шрифта виджета «Вкладка» может быть задан только путем использования QTabBar (вместо QTabBar::tab).

ПРИМЕЧАНИЕ

Каждый виджет обладает свойством «Type» (тип), которое может использоваться в файле CSS в качестве селектора с возможностью определения дополнительных уровней отбора (см. таблицу выше). Пример: изменение цвета на красный для всех кнопок, которые используются для подачи команд закрытия (тип «BtnClose»).

Widget[type = «BtnClose»] { color: red }

ПРИМЕЧАНИЕ

При использовании атрибута «type» классов QCheckBox или QRadioButton следует использовать вышестоящий класс «MultiLabeledParent«, например:

MultiLabeledParent[type = «STYLE»] QCheckBox { color: red }

ПРИМЕР

Далее представлен внешний вид панели ASCIIMan.pnl без применения и при применении таблицы стилей. Оба рисунка дают представление о возможностях управления внешним видом панелей при помощи файлов CSS.

Рисунок: AsciiMan.pnl без применения таблицы стилей

Рисунок: Пример AsciiMan.pnl при применении таблицы стилей

QComboBox, QSpinBox, QLineEdit

{

  border: 2px solid blue;

  border-radius: 7px;

  padding: 0 3px;

  background: lightblue;

  selection-background-color: darkgray;

}

QComboBox::drop-down

{

  border-radius: 7px;

  border-left-width: 1px;

  border-left-color: darkgray;

  border-left-style: solid;

}

QComboBox::down-arrow

{

  image: url(pictures:down.xpm);

}

QCheckBox::indicator

{

  border: 1px solid blue;

  border-radius: 3px;

}

QCheckBox::indicator:checked

{

  image: url(pictures:checked.png);

}

MultiLabeledParent { background: rgba(0, 0, 0, 0); }

QPushButton

{

  border: 2px solid rgb(255, 167, 43);

  background: rgb(255, 224, 137);

  border-radius: 7px;

  font-family: «New Century Schoolbook»;

  font-size: 14px;

  font-style: bold;

}

PanelQT

{

  background-color: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 #FFAFC0, stop: 1 #FFFFFF);

}

TrendPlot, TrendScaleQT, ClockQT

{

  background-color: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 1, stop: 0 #03AFC0, stop: 1 #FF77FF);

}

Таблицы стилей, основы

Управление внешним видом виджетов может осуществляться не только посредством изменения их свойств (например, в редакторе GEDI), но и при помощи таблиц стилей, представляющих собой мощный механизм управления внешним видом виджетов. Таблицы стилей являются текстовыми спецификациями, которые могут быть применены либо на уровне всего приложения, либо на уровне отдельных виджетов (и их дочерних виджетов). Концепция, терминология и синтаксис таблиц стилей, в основном, определены каскадными таблицами стилей (Cascading Style Sheets, CSS) HTML, при этом таблицы стилей адаптированы к области виджетов. Таблицы стилей применяются дополнительно к текущим заданным настройкам свойств виджетов и используются для формирования уникального внешнего вида приложения.

ПРИМЕЧАНИЕ

Использование таблиц стилей в комбинации с мигающими цветами приводит к снижению общей производительности системы. Данное примечание относится только к графическим объектам, к которым применяются таблицы стилей.

РазделОписание
Таблицы стилей, основыОбщая информация о таблицах стилей и ссылки на следующие разделы.
Создание файла CSSИнформация о синтаксисе и правилах построения файла CSS. Примеры.
Активация таблиц стилейОписание процесса активации созданного файла CSS в «КАСКАД Цифра».
Доступные классыПеречень доступных классов (селекторов) Qt и соответствующих им виджетов «КАСКАД Цифра».

Функции SVN

По завершении интеграции SVN в редактор GEDI вызов функций SVN возможен из окна состава проекта GEDI.

При щелчке правой кнопкой мыши по директории или по файлу проекта открывается контекстное меню с доступными функциями SVN.

Рисунок: Функции SVN

Далее в таблице приведены описания всех функций SVN, доступных в GEDI. Также таблица содержит информацию о возможности применения функций к директориям (включая поддиректории) (колонка «Рекурсивная»).

Функция SVNРекурсивнаяОписание
SVN logНетОтображает историю файла или директории. Содержит информацию о файле и его местонахождении. Кроме того, содержит номера всех ревизий, сведения об авторах изменений, даты изменений и комментарии.
SVN tree updateДаОбновляет столбцы «Status» (статус), «Version» (версия) and «Author» (автор) выбранного файла или каталога.
SVN statusДаФункция выводит фактический статус SVN в столбце «Status» состава проекта.Возможны следующие статусы:СтатусЗначениеaddedСозданные файлы или каталоги были добавлены в репозиторий, но не фиксированы (commit).conflictedС момента последнего обновления SVN (update), файл был изменен из другого рабочего пространства, а также в локальном рабочем пространстве. C большой вероятностью подобный конфликт может быть разрешен средствами SVN в том случае, если файл является файлом сценария. Объединение панелей должно выполняться вручную.deletedФайл был удален с момента последнего обновления (update) SVN. Данный статус необходимо подтвердить при помощи фиксации (commit) SVN.modifiedС момента последнего обновления (update) из SVN или фиксации (commit) в SVN, файл был изменен локально.non-versionedФайл был создан в локальном рабочем пространстве и пока не существует в репозитории.normalФайл не был изменен локально, ревизия локальной версии совпадает с ревизией в репозитории.
SVN updateДаЕсли изменения в файле были фиксированы (commit) из другого рабочего пространства, то данная функция заменяет локальный выбранный файл на файл из репозитория. Статус обновленных файлов изменяется на «normal».В случае конфликта SVN (т.е. при наличии статуса «conflicted» (конфликтует)) и невозможности выполнения системой SVN объединения данных файлов автономно, следует объединить данные файлы вручную.
SVN diffНетФункция отображает различия между выбранным файлом (находящимся в локальном рабочем пространстве) и файлом в репозитории SVN. Инструментарий для сравнения файлов не входит в объем поставки «КАСКАД Цифра» и должен быть установлен отдельно. Единственное требование к данному инструменту заключается в поддержке сравнения файлов с различными именами. Инструмент TortoiseUDiff.exe расположен в поддиректории /bin директории установки TortoiseSVN.
SVN commitДаФиксирует локальные изменения файла/каталога в репозитории. Статус файлов изменяется на «normal».
SVN addДаФункция добавляет выбранные файлы/каталоги в хранилище. Дополнительная SVN Фиксация (commit) не требуется. Статус добавленных файлов изменяется на «normal».
SVN removeДаФункция удаляет выбранный файл из локального рабочего пространства и из репозитория SVN.
SVN revertДаФункция отменяет все изменения, которые были сделаны в отношении файлов или директорий в локальном рабочем пространстве.
SVN unlockДаФункция отменяет блокировку, установленную пользователем при помощи функции «SVN lock».
SVN lockДаФункция блокирует файл или директорию в репозитории с целью предотвращения изменения файла/директории другими пользователями.
SVN browserНетФункция открывает выбранную директорию в Обозревателе хранилища.
SVN renameНетФункция позволяет переименовать файл или директорию.
SVN relocateДаДанная функция позволяет изменить URL репозитория.

Настройка

Для обеспечения возможности вызова функций SVN из редактора GEDI следует выполнить настройку редактора GEDI и собственного проекта «КАСКАД Цифра». Далее приводится описание необходимых подготовительных процедур.

Настройка репозитория

Для обеспечения возможности применения функциональности SVN к проекту «КАСКАД Цифра» в первую очередь следует импортировать данный проект в репозиторий (= хранилище) SVN.

Далее приведены пошаговые инструкции создания репозитория (= хранилища) и импорта проекта «КАСКАД Цифра» в репозиторий.

ЗначокПРОЦЕСС НАСТРОЙКИ РЕПОЗИТОРИЯ SVN

  1. Перейдите в директорию, в которой должна находиться поддиректория репозитория. Создайте поддиректорию, в которой должен находиться репозиторий.
  2. Щелкните правой кнопкой мыши по созданной поддиректории и выберите «TortoiseSVN -> Создать здесь хранилище«.
  3. Для корректной работы TortoiseSVN, внутри репозитория требуется ряд других поддиректорий. В этой связи после создания хранилища в следующем диалоговом окне необходимо нажать кнопку «Создать структуру каталогов«.Рисунок: Репозиторий создан
  4. При нажатии кнопки «Просмотр репозитория» репозиторий должен иметь следующий вид:Рисунок: Репозиторий SVN — Обозреватель хранилища
  5. По завершении создания и настройки репозитория, в проводнике на папке (= директории) появится следующий значок:Рисунок: Значок репозитория

Настройка проекта «КАСКАД Цифра»

Для обеспечения возможности управления версиями файлов проекта «КАСКАД Цифра» при помощи SVN, в первую очередь следует импортировать данный проект в репозиторий (= хранилище) SVN. Для этого необходимо выполнить действия, описанные ниже.

ЗначокПРОЦЕСС НАСТРОЙКИ ПРОЕКТА «КАСКАД ЦИФРА»

  1. Выполните резервное копирование директории собственного проекта. Данное действие необходимо, поскольку в случае неправильного выполнения некоторых шагов проект может быть поврежден.
  2. Удалите все файлы из директории /log проекта «КАСКАД Цифра». Директория /log должна остаться.
  3. Необязательный шаг! Удалите историю из архивов значений. Данный шаг следует выполнять только в том случае, если достоверно известно, какие данные в них хранятся, и могут ли эти данные быть удалены.
  4. Откройте Обозреватель хранилища, щелкнув правой кнопкой мыши по любой директории и выбрав затем элемент меню «TortoiseSVN -> Обозреватель хранилища«.
  5. Появится всплывающее окно, в котором необходимо ввести URL хранилища. Подтвердите введенную ссылку нажатием кнопки «ОК».Рисунок: Задание URL хранилища
  6. Создайте поддиректорию проекта в директории /trunk, щелкнув правой кнопкой мыши по директории /trunk и выбрав элемент меню «Создать папку«. При необходимости управления несколькими проектами следует использовать легко отличимые друг от друга имена директорий.Рисунок: Обозреватель хранилища — созданная папка проекта
  7. В проводнике операционной системы щелкните правой кнопкой мыши по директории проекта «КАСКАД Цифра» и выберите элемент меню «SVN Извлечь…«.
  8. В открывшемся окне в поле «URL в хранилище» укажите ранее созданную [под]директорию проекта, а в поле «Извлечь в папку» — директорию проекта «КАСКАД Цифра». Нажмите кнопку «ОК» для подтверждения. При появлении предупреждения о том, что папка не пуста, нажмите кнопку «Да».Рисунок: Извлечение
  9. Теперь все папки проекта «КАСКАД Цифра» должны отображаться со значком вопросительного знака на них. Щелкните правой кнопкой мыши по одной из директорий, которую необходимо добавить в репозиторий (см. список ниже), и выберите «TortoiseSVN -> Добавить». Последовательно добавьте следующие папки в хранилище:
    • /panels
    • /scripts
    • /msg
    • /pictures
    • /colorDB
    • Опционально: /config
    • Опционально: /data
    • Опционально: /dplist
    • Опционально: /help
    • Опционально: /images
    • Опционально: /source
  10. Для всех других директорий, управление которыми при помощи системы управления версиями не требуется, в контекстном меню выберите «TortoiseSVN -> Добавить в список игнорирования«.
    • /bin
    • /db
    • /log
    • /printers
  11. Директории должны отображаться так, как показано на рисунке ниже.Рисунок: Директория проекта — добавленные папки
  12. Далее необходимо фиксировать (commit) директории в репозитории. Для этого следует щелкнуть правой кнопкой мыши по директории проекта «КАСКАД Цифра» и выбрать «SVN Фиксировать…«
  13. По завершении всех вышеуказанных шагов папки будут отображаться так, как показано на рисунке ниже. Теперь проект управляется SVN.Рисунок: Директория проекта после фиксации (commit)

Доступ к функциональности SVN из редактора GEDI

Для добавления функций SVN в контекстное меню состава проекта следует добавить следующие записи в раздел [ui] файла config:

versionControl = «SVN»

defaultPanelFormat =»XML»

numPanelBakFiles = 0

versionControlDiff = «<TortoiseSVN Pfad>/bin/TortoiseUDiff.exe»

ПРИМЕЧАНИЕ

Запись «versionControl» в файле config анализируется сценарием gedi/projectView.ctl для определения системы управления версиями, с которой должна быть обеспечена интеграция. При необходимости использования другой системы управления версиями имеется возможность создания отдельных сценариев для каждой из систем управления версиями. Имя сценария должно соответствовать имени, заданному в записи в файле config. Например, в случае записи versionControl = «XYZ», сценарий должен иметь имя XYZ.ctl.

Изменение формата панелей на формат XML делает доступными функции объединения и сравнения. При объединении файлов панелей следует соблюдать осторожность, поскольку объединение может привести к неработоспособности некоторых панелей.