<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
<html>
  <head>
    <title>tk_getOpenFile</title>
  </head>
  <body>
    <h1>tk_getOpenFile</h1>

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

    <h2><a name=СИНТАКСИС></a>СИНТАКСИС</h2> 

    <pre>
      <strong>tk_getOpenFile</strong> ?<em>параметр значение...</em>? 
    </pre>

    <h2><a name=ОПИСАНИЕ></a>ОПИСАНИЕ</h2> 

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

    <dl>
      <dt><strong>-defaultextension</strong> <em>расширение</em></dt>

      <dd>Задает строку, которая автоматически приписывается к имени
	файла в случае, если имя, введенное пользователем, не имеет
	расширения. По умолчанию значение этого параметра пустая
	строка, т.е. имя файла не будет получать расширения ни в каком
	случае. На платформе Макинтош, где имена файлов не требуют
	расширения, этот параметр игнорируется.</dd>

      <dt><strong>-filetypes</strong> <em>списокТиповФайлов</em></dt>

      <dd>Если в файловом диалоге на конкретной платформе имеется окно
	списка типов файлов, то этот параметр задает содержимое
	списка. При выборе типа файла в списке выводятся только файлы
	этого типа. Если параметр не задан или его значение пустая
	строка, а также если на данной платформе не поддерживается
	окно списка типов файлов, то выводятся имена всех файлов,
	несмотря на их типы. Содержимое списка обсуждается ниже
	(см. &quot;<a href=#ОПИСАНИЕ_ОБРАЗЦОВ_ТИПОВ_ФАЙЛОВ>ОПИСАНИЕ
	ОБРАЗЦОВ ТИПОВ ФАЙЛОВ</a>&quot;).</dd>

      <dt><strong>-initialdir</strong> <em>каталог</em></dt>

      <dd>Указывает, файлы какого каталога должны выводиться при
	появлении окна диалога. Если этот параметр не задан, то
	выводится список имен файлов в текущем каталоге процесса. На
	платформе Макинтош параметр <em>каталог</em> срабатывает не
	всегда. Это не результат ошибки. Этот эффект является
	следствием того, что панель управления General Controls на
	Макинтоше позволяет конечному пользователю подавить значение
	каталога приложения по умолчанию.</dd>

      <dt><strong>-initialfile</strong> <em>имяфайла</em></dt>

      <dd>Задает имя файла, которое должно выводиться в окне диалога
	при его появлении.</dd>

      <dt><strong>-parent</strong> <em>окно</em></dt>

      <dd>Делает <em>окно</em> логическим родителем файлового
	диалога. Окно файлового диалога выводится поверх родительского
	<em>окна</em>.</dd>

      <dt><strong>-title</strong> <em>строкаЗаголовка</em></dt>

      <dd>Задает строку, которая выводится в качестве заголовка в окне
	диалога. Если параметр не задан, то в окне выводится заголовок
	по умолчанию. На платформе Макинтош параметр игнорируется.</dd>
    </dl>
    
    <p>После того, как пользователь выбрал файл, команда
      <strong>tk_getSaveFile</strong> возвращают полное имя пути к этому
      файлу. Если пользователь прерывает выполнение операции, то обе
      команды возвращают пустую строку.</p>

    <h2><a name=ОПИСАНИЕ_ОБРАЗЦОВ_ТИПОВ_ФАЙЛОВ></a>ОПИСАНИЕ ОБРАЗЦОВ
      ТИПОВ ФАЙЛОВ</h2>

    <p>Значение <em>списокТиповФайлов</em> параметра
      <strong>-filetypes</strong> представляет собой список образцов
      типов файлов. Каждый из образцов это список вида
      
    <pre>
      имяТипа {расширение расширение...} {макТип макТип...}
    </pre>

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

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

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

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

    <h2><a name=ЗАДАНИЕ_РАСШИРЕНИЙ></a>ЗАДАНИЕ РАСШИРЕНИЙ</h2>

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

    <ol>
      <li>специальное расширение *, под которое подходит любой файл;</li>

      <li>специальное расширение &quot;&quot;, под которое подходит
	любой файл без расширения (т.е. файл, имя которого не содержит
	точки);</li>

      <li>произвольная строка символов, среди которых нет символов
	маски (* и ?).</li>
    </ol>

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

    <h2><a name=ПРИМЕР></a>ПРИМЕР</h2>

    <pre>
      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 { != &quot;&quot;} {
        # Открыть файл ...
      }
    </pre>
  </body>
</html>