Добавляет столбец с указанной меткой в Обзор проекта. Данная функция предназначена для использования исключительно в файле «projectView.ctl» (путь_КАСКАД/[Version]/scripts/gedi/projectView.ctl). Рекомендуется не перезаписывать оригинальный файл, так как он применяется для всей программы «КАСКАД Цифра». Вместо этого необходимо скопировать оригинальный файл в каталог проекта и внести три изменения. Таким образом, изменения будут применяться только к проекту. |
Краткое описание
int pvAddColumn(string label); |
Параметры
Параметр | Описание |
метка | Метка столбца. |
Возвращаемое значение
Номер нового столбца. |
Ошибка
Недостающие или ошибочные аргументы. |
Описание
Добавляет столбец с указанной меткой в Обзор проекта. |
ПРИМЕР Пример ниже демонстрирует процесс загрузки интерфейса CVS версии системы управления в Обзор проекта (также см.путь_КАСКАД/Scripts/Gedi/projectView.ctl). #uses «CtrlPv2Admin»int versionColumn, statusColumn, tagdateColumn; string tmpFile; main() { string configFile = getPath(CONFIG_REL_PATH, «config»); string vcs; paCfgReadValue(configFile, «ui», «versionControl», vcs); paCfgReadValue(configFile, «ui», «versionControlDiff», diffProgram); if ( vcs != «CVS» ) return; pvConnect(«CVS_log», «CVS log»); pvConnect(«CVS_status», «CVS status»); pvConnect(«CVS_update», «CVS update», «cvs_update»); statusColumn = pvAddColumn(«Status»); tagdateColumn = pvAddColumn(«Tag/Date»); reload(); } //———————————————————————- void reload() { CVS_entries(getPath(PANELS_REL_PATH)); CVS_entries(getPath(SCRIPTS_REL_PATH)); CVS_entries(getPath(LIBS_REL_PATH)); CVS_entries(getPath(PICTURES_REL_PATH)); CVS_entries(getPath(COLORDB_REL_PATH)); } //———————————————————————- setTmpNam() { tmpFile = tmpnam(); } //———————————————————————- CVS_log(string fileName) { setTmpNam(); CVS_command(«log -N», fileName); showResult(fileName); } //———————————————————————- CVS_update(string fileName) { setTmpNam(); CVS_command(«update», fileName); showResult(fileName); CVS_status(fileName); } //———————————————————————- CVS_status(string fileName) { bool isDir = isDirectory(fileName); setTmpNam(); CVS_command(«status -l», fileName); /* Не рекурсивна, так как возвращаются только имена файлов, без указания пути file fd = fopen(tmpFile, «r»); string line, currentFile, version, status; int pos; bool gotFile = false; while ( ! feof(fd) && (fgets(line, 1000, fd) > 0) ) { if ( !gotFile ) { if ( line[0] == ‘?’ ) // Файл не в CVS { currentFile = baseName(substr(line, 2)); pvSetItemText(fileName + (isDir ? («/» + currentFile) : «»), statusColumn, «not in CVS»); continue; } pos = strpos(line, «File: «); if ( pos != 0 ) continue; gotFile = true; sscanf(line, «File: %s», currentFile); pos = strpos(line, «Status:»); status = substr(line, pos + strlen(«Status:»)); pvSetItemText(fileName + (isDir ? («/» + currentFile) : «»), statusColumn, status); } pos = strpos(line, «Working revision:»); if ( pos == -1 ) continue; sscanf(substr(line, pos+strlen(«Working revision:»)), «%s», version); if ( version == «No» ) // Отсутствует запись для … { pvSetItemText(fileName + (isDir ? («/» + currentFile) : «»), statusColumn, «not in CVS»); } else { gotFile = false; } } fclose(fd); remove(tmpFile); if ( isDir ) // Рекурсия { dyn_string files = getFileNamesRev(fileName, «CVS», FILTER_DIRS); for (int i = 1; i <= dynlen(files); i++) if ( (files[i] != «.») && (files[i] != «..») ) CVS_status(fileName + «/» + files[i]); } |
Доступность
Интерфейс пользователя |
См. также