pvAddColumn()

Добавляет столбец с указанной меткой в Обзор проекта.

Данная функция предназначена для использования исключительно в файле «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]);
  }

Доступность

Интерфейс пользователя

См. также

pvAddSeparator()pvConnect()pvSetItemText()

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *