# tk_getOpenFile

Открывает окно диалога, в котором пользователь должен выбрать файл для того, чтобы открыть его.

## СИНТАКСИС

          tk_getOpenFile ?параметр значение...?

## ОПИСАНИЕ

Процедура tk_getOpenFile открывает окно диалога, в котором пользователь должен выбрать файл для того, чтобы открыть его.

Команда tk_getOpenFile обычно выполняется при вызове команды Open из меню File. Она позволяет лишь выбрать один из существующих файлов. Если пользователь вводит имя несуществующего файла, то окно диалога информирует его об ошибке и предлагает сделать другой выбор. Если приложение позволяет пользователю создавать файлы, то для этой цели должна быть предназначена специальная команда меню New.

В качестве пар аргумент-значение в командной строке этих двух команд допускаются следующие варианты:

-defaultextension расширение
  Задает строку, которая автоматически приписывается к имени файла в случае, если имя, введенное пользователем, не имеет расширения. По умолчанию значение этого параметра пустая строка, т.е. имя файла не будет получать расширения ни в каком случае. На платформе Макинтош, где имена файлов не требуют расширения, этот параметр игнорируется.
-filetypes списокТиповФайлов
  Если в файловом диалоге на конкретной платформе имеется окно списка типов файлов, то этот параметр задает содержимое списка. При выборе типа файла в списке выводятся только файлы этого типа. Если параметр не задан или его значение пустая строка, а также если на данной платформе не поддерживается окно списка типов файлов, то выводятся имена всех файлов, несмотря на их типы. Содержимое списка обсуждается ниже (см. "ОПИСАНИЕ ОБРАЗЦОВ ТИПОВ ФАЙЛОВ").
-initialdir каталог
  Указывает, файлы какого каталога должны выводиться при появлении окна диалога. Если этот параметр не задан, то выводится список имен файлов в текущем каталоге процесса. На платформе Макинтош параметр каталог срабатывает не всегда. Это не результат ошибки. Этот эффект является следствием того, что панель управления General Controls на Макинтоше позволяет конечному пользователю подавить значение каталога приложения по умолчанию.
-initialfile имяфайла
  Задает имя файла, которое должно выводиться в окне диалога при его появлении.
-parent окно
  Делает окно логическим родителем файлового диалога. Окно файлового диалога выводится поверх родительского окна.
-title строкаЗаголовка
  Задает строку, которая выводится в качестве заголовка в окне диалога. Если параметр не задан, то в окне выводится заголовок по умолчанию. На платформе Макинтош параметр игнорируется.

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

## ОПИСАНИЕ ОБРАЗЦОВ ТИПОВ ФАЙЛОВ

Значение списокТиповФайлов параметра -filetypes представляет собой список образцов типов файлов. Каждый из образцов это список вида

          имяТипа {расширение расширение...} {макТип макТип...}

имяТипа это имя типа файлов; его значение это текстовая строка, которая попадает в список типов файлов. расширение это одно из расширений для файлов данного типа. макТип это четырехсимвольный тип файлов на платформе Макинтош. Список макТипов необязателен, и для приложений, которые не планируется использовать на платформе Макинтош, его можно опустить.

Одно и то же имяТипа может встречаться в нескольких образцах; в этом случае все они описывают файлы одного типа и им соответствует одна строка в списке типов. При выборе такой строки в списке выводится список всех файлов, имена которых подходят хотя бы под один образец. Обычно каждому типу файлов соответствует в точности один образец. Использование нескольких образцов необходимо лишь для платформы Макинтош.

На платформе Макинтош файл подходит под образец, если расширение его имени совпадает по крайней мере с одним из расширений И оно имеется по крайней мере в одном из значений параметра макТип в образце. Например, под образец исходных файлов на языке C подходят файлы с расширением .c И с макТипом TEXT. Для того, чтобы заменить конъюнкцию И дизъюнкцией ИЛИ, нужно вместо одной строки образца завести две строки, в одной из которых есть только расширения, а в другой только макТипы. Под образец файлового типа GIF подходят файлы с расширением .gif ИЛИ имеющие макТип GIFF.

На платформах Unix и Windows файл подходит под образец файлового типа, если расширение его имени соответствует одному из расширений в образце. макТипы игнорируются.

## ЗАДАНИЕ РАСШИРЕНИЙ

На платформах Unix и Macintosh соответствие образцам устанавливается обычным образом. На платформах Windows соответствие образцам устанавливается операционной системой. Возможными расширениями могут быть:

1. специальное расширение *, под которое подходит любой файл;
2. специальное расширение "", под которое подходит любой файл без расширения (т.е. файл, имя которого не содержит точки);
3. произвольная строка символов, среди которых нет символов маски (* и ?).

Ввиду того, что на различных платформах используются различные правила соответствия, появление символов маски в расширениях не допускается, за исключением специального расширения "*". Расширения, в которых нет точки (например, "~"), допустимы, но они могут работать не на всех платформах.

## ПРИМЕР

          set types {
            {{Text Files}     {.txt}     }
            {{TCL Scripts}    {.tcl}     }
            {{C Source Files} {.c}   TEXT}
            {{GIF Files}      {.gif}     }
            {{GIF Files}      {}     GIFF}
            {{All Files}      *          }
          }

          set filename [tk_getOpenFile -filetypes ]
          if { != ""} {
            # Открыть файл ...
          }