Класс FarCtrl

Класс FarCtrl предназначен для выполнения различных операций с файловыми панелями и представляет собой обертку вокруг сервисной функции Control из FAR API. Поскольку эта функция требует передачи в качестве параметра хэндла плагина, этот хэндл хранится в поле экземпляра данного класса.

Использование

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

FarCtrl().RedrawPanel();

Если вызывается несколько функций, можно создать экземпляр класса на стеке:

FarCtrl ctrl;
ctrl.UpdatePanel();
ctrl.RedrawPanel();

В плагинах, создающих свою панель, необходимо передать в класс хэндл плагина. Если класс используется в пределах одной функции, можно воспользоваться конструктором с параметром:

FarCtrl ctrl (this);
ctrl.UpdatePanel();
ctrl.RedrawPanel();

Если же класс используется часто, рекомендуется сделать экземпляр этого класса полем класса панели вашего плагина и инициализировать его в конструкторе. Однако, поскольку использование this в списках инициализации недопустимо, такой вариант работать не будет:

MyPanel::MyPanel()
  : m_ctrl (this)    // Это не работает
{
  ...

Вместо этого следует воспользоваться методом SetHandle:

MyPanel::MyPanel()
{
  m_ctrl.SetHandle (this);
  ...

Методы

Класс имеет следующие методы, реализующие подфункции Control:

int ClosePlugin (const char *DestPath);

Эквивалент FCTL_CLOSEPLUGIN. Закрывает панельный плагин и устанавливает на файловой панели путь, переданный в параметре DestPath.

int GetPanelInfo (PanelInfo *pi);

PanelInfo GetPanelInfo();

Эквивалент FCTL_GETPANELINFO. Заполняет структуру PanelInfo информацией о текущей панели.

int GetAnotherPanelInfo (PanelInfo *pi);

PanelInfo GetAnotherPanelInfo();

Эквивалент FCTL_GETANOTHERPANELINFO. Заполняет структуру PanelInfo информацией о пассивной панели.

int UpdatePanel (bool clearSelection = false);

Эквивалент FCTL_UPDATEPANEL. Обновляет содержимое текущей панели и опционально сбрасывает выделение.

int UpdateAnotherPanel (bool clearSelection = false);

Эквивалент FCTL_UPDATEANOTHERPANEL. Обновляет содержимое пассивной панели и опционально сбрасывает выделение.

int RedrawPanel();

Эквивалент FCTL_REDRAWPANEL. Перерисовывает активную панель.

int RedrawAnotherPanel();

Эквивалент FCTL_REDRAWANOTHERPANEL. Перерисовывает пассивную панель.

int SetPanelDir (const char *dir)

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

int SetAnotherPanelDir (const char *dir)

Эквивалент FCTL_SETANOTHERPANELDIR. Устанавливает текущий каталог в пассивной панели.

int GetCmdLine (char *buf)

FarString GetCmdLine()

Эквивалент FCTL_GETCMDLINE. Позволяет получить текст командной строки FAR (либо копирует его в указанный буфер, либо возвращает его в виде объекта FarString).

int SetCmdLine (const char *buf)

Эквивалент FCTL_SETCMDLINE. Копирует указанный текст в командную строку FAR.

int InsertCmdLine (const char *buf)

Эквивалент FCTL_INSERTCMDLINE. Вставляет указанный текст в командную строку FAR, начиная с текущей позиции курсора.

int GetCmdLinePos()

Эквивалент FCTL_GETCMDLINEPOS. Возвращает текущую позицию курсора в командной строке.

int SetCmdLinePos (int newPos)

Эквивалент FCTL_SETCMDLINEPOS. Устанавливает курсор в указанную позицию командной строки.

int SetSelection (PanelInfo *pi);

Эквивалент FCTL_SETSELECTION. Устанавливает выделение в активной панели на основании информации, переданной в указанной структуре PanelInfo.

int SetAnotherSelection (PanelInfo *pi);

Эквивалент FCTL_SETANOTHERSELECTION. Устанавливает выделение в пассивной панели на основании информации, переданной в указанной структуре PanelInfo.

int SetUserScreen();

Эквивалент FCTL_SETUSERSCREEN. Копиpует текущее содеpжимое экpана в буфеp пользовательского экрана FAR.

int SetViewMode (int viewMode)

Эквивалент FCTL_SETVIEWMODE. Устанавливает указанный режим просмотра для активной панели (число от 0 до 9).

int SetAnotherViewMode (int viewMode)

Эквивалент FCTL_SETANOTHERVIEWMODE. Устанавливает указанный режим просмотра для пассивной панели (число от 0 до 9).