Merge branch '320_menu_reorganization'

* 320_menu_reorganization:
  New "Panel options" configuration dialog is fully described.
  New "Layout" configuration dialog is fully described.
  New "Configuration options" dialog is fully described.
  Some fixes for menu items help.
  old_esc_mode option can be setup now in 'Configure options' dialog.
  Reorganizing of 'Panel options' configuration dialog.
  Applied mouse_scroll_pages option to the mouse wheel.
  More options in configure dialogs.
  Modified loading/saving panel options.
  Configuration dialogs reorganization.
  Refactoring of configuration handling.
  Added new quick widget: quick_groupbox.
  Ticket #320: menu and configuration dialogs reorganization.
This commit is contained in:
Andrew Borodin 2010-05-14 18:48:27 +04:00
commit 1a1ae74ba6
33 changed files with 1757 additions and 1463 deletions

View File

@ -223,18 +223,6 @@ program is executed.
Also, it is possible to execute the commands assigned to the function
key labels by clicking on them.
.PP
If a mouse button is clicked on the top frame line of the directory panel,
it is scrolled one page up. Likewise, a click on the bottom frame line
will cause scrolling one page down. This frame line method works also
in the
.\"LINK2"
Help Viewer
.\"Contents"
and the
.\"LINK2"
Directory Tree\&.
.\"Directory Tree"
.PP
The default auto repeat rate for the mouse buttons is 400
milliseconds. This may be changed to other values by editing the
.\"LINK2"
@ -322,30 +310,29 @@ the input lines in the query dialogs.
Hotkey bindings may be readed from external file (keymap\-file).
A keymap\-file is searched on the following algorithm (to the first one found):
.IP
.br
.BR
1) command line option
.BR \-K
.BR \<keymap\>
or
.BR \-\-keymap=\<keymap\>
.br
.BR
2) Environment variable
.BR MC_KEYMAP
.br
.BR
3) In config file parameter
.BR keymap
in section
.BR [Midhight Commander]
.br
.BR [Midnight Commander]
.BR
4) File
.BR ~/.mc/mc.keymap
.br
.BR
5) File
.BR @sysconfdir@/mc/mc.keymap
.br
6) File
.BR @prefix@/share/mc/mc.keymap
.PP
Command line option, environment variable and parameter in config file may
contain the absolute path to the keymap\-file (with the extension \.keymap
@ -353,14 +340,13 @@ or without it). Search of keymap\-file will occur in (to the first one found):
.IP
1)
.BR ~/.mc/
.br
.BR
2)
.BR @sysconfdir@/mc/
.br
.BR
3)
.BR @prefix@/share/mc/
.br
.BR
.\"NODE " Miscellaneous Keys"
.SH " Miscellaneous Keys"
Here are some keys which don't fall into any of the other categories:
@ -595,15 +581,6 @@ again, the next match is searched for.
.P
Besides the filename characters, you can also use wildcard
characters '*' and '?'.
.P
Quick search mode is defined by
.I quick_search_case_sensitive
option located in [Midnight-Commander] section in configuration file.
This option can have one of the following values: 0, 1 or 2.
If quick_search_case_sensitive=0, quick search is case insensitive.
If quick_search_case_sensitive=1, quick search is case sensitive.
If quick_search_case_sensitive=2 (default value), quick search mode
is matched to the the panel sort order: case sensitive or not.
.\"NODE " Shell Command Line"
.SH " Shell Command Line"
This section lists keys which are useful to avoid excessive typing when
@ -965,9 +942,9 @@ order by checking the reverse box.
By default directories are sorted before files but this can be changed
from the
.\"LINK2"
Options menu
.\"Options Menu"
(option
Panel options
.\"Panel options"
menu (option
.BR "Mix all files" ).
.\"NODE " Filter..."
.SH " Filter..."
@ -1705,6 +1682,12 @@ looks like on the screen.
.PP
The
.\"LINK2"
Panel options
.\"Panel options"
command pops up a dialog from which you specify options of file manager panels.
.PP
The
.\"LINK2"
Confirmation
.\"Confirmation"
command pops up a dialog from which you specify which actions you want to
@ -1738,72 +1721,10 @@ command saves the current settings of the Left, Right and Options
menus. A small number of other settings is saved, too.
.\"NODE " Configuration"
.SH " Configuration"
The options in this dialog are divided into three groups:
Panel Options, Pause after run and Other Options.
The options in this dialog are divided into several groups: "File
operation options", "Esc key mode", "Pause after run" and "Other options".
.PP
.B Panel Options
.PP
.I Use SI size units.
If this option is set, Midnight Commander will use SI units (powers of 1000)
when displaying any byte sizes. The suffixes (k, m ...) are shown in lowercase.
If unset (default), Midnight Commander will use binary units (powers of 1024)
and the suffixes are shown in upper case (K, M ...)
.PP
.I Show Backup Files.
If enabled, the Midnight Commander will show files ending with a tilde.
Otherwise, they won't be shown (like GNU's ls option \-B).
.PP
.I Show Hidden Files.
If enabled, the Midnight Commander will show all files that start with
a dot (like ls \-a).
.PP
.I Mark moves down.
If enabled, the selection bar will move down when you mark a file (with
Insert key).
.PP
.I Drop down menus.
When this option is enabled, the pull down menus will be activated as
soon as you press the
.B F9
key. Otherwise, you will only get the menu title, and you will have
to activate the menu either with the arrow keys or with the hotkeys.
It is recommended if you are using hotkeys.
.PP
.I Mix all files.
If this option is enabled, all files and directories are shown mixed
together. If the option is off, directories (and links to directories)
are shown at the beginning of the listing, and other files below.
.PP
.I Fast directory reload.
If this option is enabled, the Midnight Commander will use a trick to
determine if the directory contents have changed. The trick is to reload
the directory only if the i\-node of the directory has changed; this means
that reloads only happen when files are created or deleted. If what
changes is the i\-node for a file in the directory (file size changes,
mode or owner changes, etc) the display is not updated. In these cases,
if you have the option on, you have to rescan the directory manually
(with C\-r).
.PP
.B Pause after run
.PP
After executing your commands, the Midnight Commander can pause, so
that you can examine the output of the command. There are three
possible settings for this variable:
.PP
.I Never.
Means that you do not want to see the output of your command. If you
are using the Linux or FreeBSD console or an xterm, you will be able to
see the output of the command by typing C\-o.
.PP
.I On dumb terminals.
You will get the pause message on terminals that are not capable of
showing the output of the last command executed (any terminal that is
not an xterm or the Linux console).
.PP
.I Always.
The program will pause after executing all of your commands.
.PP
.B Other Options
.B File operation options
.PP
.I Verbose operation.
This toggles whether the file Copy, Rename and Delete operations are
@ -1813,30 +1734,64 @@ automatically turned off if the speed of your terminal is less than
9600 bps.
.PP
.I Compute totals.
If this option is enabled, the Midnight
Commander computes total byte sizes and total number of files
prior to any Copy, Rename and Delete operations. This will
provide you with a more accurate progress bar at the expense
of some speed. This option has no effect, if
.I Verbose operation
If this option is enabled, the Midnight Commander computes total byte
sizes and total number of files prior to any Copy, Rename and Delete
operations. This will provide you with a more accurate progress bar
at the expense of some speed. This option has no effect, if
.I Verbose operation
is disabled.
.PP
.I Shell Patterns.
By default the Select, Unselect and Filter commands will use shell\-like
regular expressions. The following conversions are performed to achieve
this: the '*' is replaced by '.*' (zero or more characters); the '?'
is replaced by '.' (exactly one character) and '.' by the literal
dot. If the option is disabled, then the regular expressions are the
ones described in ed(1).
.I Classic progressbar.
If this option is enabled, the progressbar of Copy/Move/Delete operations
is always grown form left to right. If disabled, the growing direction
of progressbar follows to direction of Copy/Move/Delete operation:
from left panel to right one and vice versa. Enabled by default.
.PP
.I Auto Save Setup.
If this option is enabled, when you exit the Midnight Commander the
configurable options of the Midnight Commander are saved in the
~/.mc/ini file.
.I Mkdir autoname
When you press F7 to create a new directory, the input line in popup dialog
will be filled by name of current file or directory in active panel.
Disabled by default.
.PP
.I Auto menus.
If this option is enabled, the user menu will be invoked at startup.
Useful for building menus for non\-unixers.
.B Esc key mode.
.PP
By default the Midnight Commander treats the ESC key as a key prefix.
Therefore, you should press Esc code twice to exit a dialog. But there is
a possibility to use a single press of ESC key for that action.
.PP
.I Single press.
By default this option is disabled. If you'll enable it, the ESC key
will act as a prefix key for set up time interval (see
.I Timeout
option below), and if no extra keys have arrived, then the ESC key
is interpreted as a cancel key (ESC ESC).
.PP
.I Timeout.
This options is used to setup the time interval (in microseconds)
for single press of ESC key. By default, this inrerval is one second
(1000000 microseconds). Also the timeout can be set via KEYBOARD_KEY_TIMEOUT_US
environment variable (also in microseconds), which has higher priority
than Timeout option value.
.PP
.B Pause after run
.PP
After executing your commands, the Midnight Commander can pause, so
that you can examine the output of the command. There are three
possible settings for this variable:
.PP
.IR Never .
Means that you do not want to see the output of your command. If you
are using the Linux or FreeBSD console or an xterm, you will be able to
see the output of the command by typing C\-o.
.PP
.IR On dumb terminals .
You will get the pause message on terminals that are not capable of
showing the output of the last command executed (any terminal that is
not an xterm or the Linux console).
.PP
.IR Always .
The program will pause after executing all of your commands.
.PP
.B Other options
.PP
.I Use internal editor.
If this option is enabled, the built\-in file editor is used to edit
@ -1862,6 +1817,24 @@ command is used. See the section on the
internal file viewer\&.
.\"Internal File Viewer"
.PP
.I Auto menus.
If this option is enabled, the user menu will be invoked at startup.
Useful for building menus for non\-unixers.
.PP
.I Drop down menus.
When this option is enabled, the pull down menus will be activated as
soon as you press the F9 key. Otherwise, you will only get the menu title,
and you will have to activate the menu either with the arrow keys or with
the hotkeys. It is recommended if you are using hotkeys.
.PP
.I Shell Patterns.
By default the Select, Unselect and Filter commands will use shell\-like
regular expressions. The following conversions are performed to achieve
this: the '*' is replaced by '.*' (zero or more characters); the '?'
is replaced by '.' (exactly one character) and '.' by the literal
dot. If the option is disabled, then the regular expressions are the
ones described in ed(1).
.PP
.I Complete: show all.
By default the Midnight Commander pops up all possible
.\"LINK2"
@ -1880,12 +1853,6 @@ If this option is enabled, the
Midnight Commander shows a rotating dash in the upper right corner
as a work in progress indicator.
.PP
.I Lynx\-like motion.
If this option is enabled,
you may use the arrows keys to automatically chdir if the
current selection is a subdirectory and the shell command
line is empty. By default, this setting is off.
.PP
.I Cd follows links.
This option, if set, causes the Midnight Commander to follow the
logical chain of directories when changing current directory
@ -1900,17 +1867,132 @@ If this option is enabled, deleting files and directory hotlist entries
unintentionally becomes more difficult. The default selection in the
confirmation dialogs for deletion changes from "Yes" to "No".
This option is disabled by default.
.PP
.I Auto save setup.
If this option is enabled, when you exit the Midnight Commander the
configurable options of the Midnight Commander are saved in the
~/.mc/ini file.
.\"NODE " Layout"
.SH " Layout"
The layout dialog gives you a possibility to change the general layout
of screen. You can specify whether the menubar, the command prompt, the
hintbar and the function keybar are visible. On the Linux or FreeBSD
console you can specify how many lines are shown in the output window.
of screen. The options in this dialog are divided into several groups:
"Panel split", "Console output" and "Other options".
.PP
.B Panel split
.PP
The rest of the screen area is used for the two directory panels. You
can specify whether the area is split to the panels in vertical or
horizontal direction. The split can be equal or you can specify an
unequal split.
can specify whether the area is split to the panels in
.I Vertical
or
.I Horizontal
direction. Panel layout can be changed using Alt\-, (Alt\-comma) shortcut.
.PP
.I Equal split.
By default, panels have equal sizes. Using this option you can specify
an unequal split.
.PP
.B Console output
.PP
On the Linux or FreeBSD console you can specify how many lines are shown
in the output window. This option is available if Midnight Commander runs
on native console only.
.PP
.B Other options
.PP
.I Menu bar visible.
If enabled, main menu of Midnight Commander is always visible on the top row
of screen above panels. Enabled by default.
.PP
.I Show mini\-status.
If enabled, one line of status information about the currently selected item
is shown at the bottom of the panels. Enabled by default.
.PP
.I Command prompt.
If enabled, command line is avalable. Enabled by default.
.PP
.I Keybar visible.
If enabled, 10 lables associated with F1\-F10 keys are located at the bottom
row of screen. Enabled by default.
.PP
.I Hintbar visible.
If enabled, the one\-line hints are visible below panels. Enabled by default.
.PP
.I XTerm window title.
When run in a terminal emulator for X11, Midnight Commander sets the
terminal window title to the current working directory and updates it
when necessary. If your terminal emulator is broken and you see some
incorrect output on startup and directory change, turn off this option.
Enabled by default.
.PP
.I Show free space.
If enabled, free space and total space of current file system is shown
at the bottom frame of panel. Enabled by default.
.\"NODE " Panel options"
.SH " Panel options"
.B Main panel options
.PP
.I Use SI size units.
If this option is enabled, Midnight Commander will use SI units (powers of 1000)
when displaying any byte sizes. The suffixes (k, m ...) are shown in lowercase.
If disabled (default), Midnight Commander will use binary units (powers of 1024)
and the suffixes are shown in upper case (K, M ...)
.PP
.I Mix all files.
If this option is enabled, all files and directories are shown mixed
together. If the option is desabled (default), directories (and links to
directories) are shown at the beginning of the listing, and other files below.
.PP
.I Show backup files.
If enabled, the Midnight Commander will show files ending with a tilde.
Otherwise, they won't be shown (like GNU's ls option \-B). Enabled by default.
.PP
.I Show hidden files.
If enabled, the Midnight Commander will show all files that start with
a dot (like ls \-a). Disabled by default.
.PP
.I Fast directory reload.
If this option is enabled, the Midnight Commander will use a trick to
determine if the directory contents have changed. The trick is to reload
the directory only if the i\-node of the directory has changed; this means
that reloads only happen when files are created or deleted. If what
changes is the i\-node for a file in the directory (file size changes,
mode or owner changes, etc) the display is not updated. In these cases,
if you have the option on, you have to rescan the directory manually
(with C\-r). Disabled by default.
.PP
.I Mark moves down.
If enabled, the selection bar will move down when you mark a file (with
Insert key). Enabled by default.
.PP
.I Reverse files only.
Allow revert selection of files only. Enabled by default.
If enabled, the reverse selection is applied to files only, not to directories.
The selection of directories is untouched. If off, the reverse selection
is applied to files as well to directories: all unselected items become
selected, and vice versa.
.PP
.I Auto save panels setup.
If this option is enabled, when you exit the Midnight Commander the
current settings of panels are saved in the ~/.mc/panels.ini file.
Disabled by default.
.PP
.B Navigation
.PP
.I Lynx\-like motion.
If this option is enabled, you may use the arrows keys to automatically
chdir if the current selection is a subdirectory and the shell command
line is empty. By default, this setting is off.
.PP
.I Page scrolling.
If set (the default), panel will scroll by half the display when the
cursor reaches the end or the beginning of the panel, otherwise it
will just scroll a file at a time.
.PP
.I Mouse page scrolling.
Controls whenever scrolling with the mouse wheel is done by pages or
line by line on the panels.
.PP
.B File highlight
.PP
You can specify whether
.I permissions
@ -1937,17 +2019,14 @@ Filenames Highlight
.\"Filenames Highlight"
for more info.
.PP
If the
.I Show Mini\-Status
option is enabled, one line of status information about the currently
selected item is shown at the bottom of the panels.
.B Quick search
.PP
When run in a terminal emulator for X11, Midnight Commander sets the
terminal window title to the current working directory and updates it
when necessary. If your terminal emulator is broken and you see some
incorrect output on startup and directory change, turn off the
.I Xterm Window Title
option.
You can specify how the
.\"LINK2"
Quick search
.\"Quick search"
mode should works: case insensitively, case sensitively or be matched
to the the panel sort order: case sensitive or not.
.\"NODE " Confirmation"
.SH " Confirmation"
In this dialog you configure the confirmation options for file deletion,
@ -3385,7 +3464,7 @@ base_color=normal=white,default:marked=magenta,default
.\"NODE "Skins"
.SH "Skins"
You can change the appearance of Midhight Commander.
You can change the appearance of Midnight Commander.
To do this, you must specify a file that contain descriptions of colors
and lines to draw boxes. Redefining of the colors is entirely compatible
with the assignment of colors, as described in Section
@ -3497,7 +3576,6 @@ color of input lines used in query dialogs.
.TP
.I reverse
reverse color
.PP
Section
.B [dialog]
@ -3794,20 +3872,10 @@ updates too jumpy.
It seems that setting max_dirt_limit to 10 causes the best behavior,
and that is the default value.
.TP
.I mouse_move_pages
Controls whenever scrolling with the mouse is done by pages or line by
line on the panels.
.TP
.I mouse_move_pages_viewer
Controls if scrolling with the mouse is done by pages or line by line
on the internal file viewer.
.TP
.I old_esc_mode
By default the Midnight Commander treats the ESC key as a key prefix
(old_esc_mode=0). If this option is set (old_esc_mode=1), the ESC key
will act as a prefix key for one second, and if no extra keys have
arrived, then the ESC key is interpreted as a cancel key (ESC ESC).
.TP
.I only_leading_plus_minus
Allow special treatment for '+', '\-', '*' in the command line (select,
unselect, reverse selection) only if the command line is empty. You
@ -3815,18 +3883,6 @@ don't need to quote those characters in the middle of the command line.
On the other hand, you cannot use them to change selection when the
command line is not empty.
.TP
.I reverse_files_only
Allow revert selection of files only. This variable is on by default.
If on, the reverse selection is applied to files only, not to directories.
The selection of directories is untouched. If off, the reverse
selection is applied to files as well to directories: all unselected
items become selected, and vice versa.
.TP
.I panel_scroll_pages
If set (the default), panel will scroll by half the display when the
cursor reaches the end or the beginning of the panel, otherwise it
will just scroll a file at a time.
.TP
.I show_output_starts_shell
This variable only works if you are not using the subshell support.
When you use the C\-o keystroke to go back to the user screen, if this

View File

@ -214,19 +214,6 @@ Commander, просто набрав имя этой команды (прогр
функциональной клавишей, щелкнув по соответствующей экранной кнопке в
самой нижней строке экрана.
.PP
Если щелкнуть мышью по верхней рамке панели, отображающей очень длинный
список файлов, происходит перемещение списка на одну колонку назад.
Щелчок по нижней рамке панели приводит, соответственно, к перемещению по
списку на целую колонку вперед. Этот метод перемещения работает также
при просмотре
.\"LINK2"
встроенной подсказки
.\"Contents"
и просмотре окна
.\"LINK2"
Дерево каталогов\&.
.\"Directory Tree"
.PP
По умолчанию скорость эмуляции повторных нажатий на клавишу в случае ее
удержания (auto repeat rate) составляет 400 миллисекунд. Это значение
можно изменить путем изменения параметра
@ -274,7 +261,6 @@ S\-<символ> означает, что нужно держать в нажа
.PP
Все последующие описания клавиатурных команд относятся к поведению по
умолчанию.
.PP
Описания клавиатурных команд даются в нескольких разделах помощи.
Наиболее важными являются следующие разделы:
@ -333,7 +319,7 @@ S\-<символ> означает, что нужно держать в нажа
3) В конфигурационном файле параметр
.BR keymap
в секции
.BR [Midhight Commander]
.BR [Midnight Commander]
.br
4) Файл
.BR ~/.mc/mc.keymap
@ -598,15 +584,6 @@ Midnight Commander\-а. Для возврата к вашему приложен
Кроме обычных символов в имени файла также можно использовать
символы маски '*' и '?'.
.P
Режим быстрого поиска определяется параметром
.I quick_search_case_sensitive
который должен располагаться в секции [Midnight-Commander] конфигурационного
файла. Этот параметр может иметь одно из следующих значений: 0, 1 или 2.
Если quick_search_case_sensitive=0, при быстром поиске не учитывается
регистр имён файлов. Если quick_search_case_sensitive=1, регистр имён файлов
учитывается. Если quick_search_case_sensitive=2 (значение по умолчанию),
режим быстрого поиска соответствует порядку сортировки в панели: с учётом
регистра или без.
.\"NODE " Shell Command Line"
.SH " Командная строка оболочки"
В этом разделе перечислены команды, которые позволяют сократить число
@ -769,10 +746,10 @@ Commander\-ом (например, символ '+').
.PP
Пункты меню
.\"LINK2"
"Левая" и "Правая"
"Левая" и "Правая " ("Верхняя" и "Нижняя")
.\"Left and Right Menus"
позволяют изменить вид, соответственно, левой и правой панелей, и
характер отображаемой в панели информации, в частности, выполнить
позволяют изменить вид, соответственно, левой и правой (или верней и нижней)
панелей и характер отображаемой в панели информации, в частности, выполнить
соединения с удаленными компьютерами.
.PP
Меню
@ -797,12 +774,12 @@ Commander\-ом (например, символ '+').
программы Midnight Commander. Один из пунктов этого меню служит для
сохранения настроек, заданных пользователем.
.\"NODE " Left and Right Menus"
.SH "Меню левой и правой панелей ('Левая' и 'Правая')"
.SH "Меню левой и правой (или верхней и нижней) панелей"
Вид панелей, в которых отображаются списки файлов и каталогов, может
быть изменен через пункты меню
.B "Левая" ("Left")
.B "Левая" (или "Верхняя")
и
.B "Правая" ("Right").
.B "Правая" (или "Нижняя").
.\"NODE " Listing Mode..."
.SH " Формат списка..."
Этот пункт меню предназначен для определения формата вывода списка
@ -987,10 +964,10 @@ half name | size:7 | type mode:3
По умолчанию каталоги отображаются в начале списка, но это можно
изменить, проставив отметку возле опции
.B "Смешивать файлы и каталоги" ("Mix all files")
пункта "Конфигурация" меню
пункта меню
.\"LINK2"
"Настройки"\&.
.\"Options Menu"
Настройки панелей\&.
.\"Panel options"
.\"NODE " Filter..."
.SH " Фильтр..."
Пункт меню "Фильтр" позволяет задать шаблон, которому должны
@ -1822,21 +1799,27 @@ L List the contents of a compressed tar\-archive
.PP
Пункт
.\"LINK2"
Внешний вид (Layout)
Внешний вид
.\"Layout"
служит для задания настроек, определяющих положение и вид окна программы
mc на экране.
.PP
Пункт
.\"LINK2"
Подтверждение (Confirmation)
Настройки панелей
.\"Panel options"
служит для задания настроек панелей файлового менеджера.
.PP
Пункт
.\"LINK2"
Подтверждение
.\"Confirmation"
вызывает диалоговое окно, в котором вы указываете, на выполнение каких
действий программа будет требовать подтверждения.
.PP
Пункт
.\"LINK2"
Биты символов (Display bits)
Биты символов
.\"Display bits"
вызывает диалоговое окно, в котором вы указываете, в каком формате ваш
терминал будет обрабатывать (вводить и отображать на дисплее)
@ -1844,7 +1827,7 @@ mc на экране.
.PP
Пункт
.\"LINK2"
Распознавание клавиш (Learn keys)
Распознавание клавиш
.\"Learn keys"
вызывает диалоговое окно, в котором вы можете протестировать работу
некоторых клавиш, которые работают не на всех типах терминалов, и
@ -1853,98 +1836,25 @@ mc на экране.
.PP
Пункт
.\"LINK2"
Виртуальные ФС (Virtual FS)
Виртуальные ФС
.\"Virtual FS"
вызывает диалоговое окно, в котором вы можете задать значения некоторых
параметров, связанных с использованием виртуальных файловых систем.
.PP
По команде
.\"LINK2"
Сохранить настройки (Save setup)
Сохранить настройки
.\"Save Setup"
введенные значения параметров сохраняются в ini\-файле программы.
.\"NODE " Configuration"
.SH " Конфигурация"
Параметры конфигурации, задаваемые в этом окне, делятся на три группы:
"Настройки панелей", "Пауза после исполнения" и "Прочие настройки".
Параметры конфигурации, задаваемые в этом окне, делятся на несколько
групп: "Параметры операций с файлами", "Клавиша Esc", "Пауза после
исполнения" и "Прочие настройки".
.PP
.B Настройки панелей (Panel Options)
.B Параметры операций с файлами
.PP
.I Размеры в единицах СИ.
Если эта опция включена, то Midnight Commander отображает размеры файлов
и каталогов в единицах СИ (по основанию 1000). Суффиксы к, м, и т. д.
отображаются в нижнем регистре. По умолчанию опция выключена. В этом случае
Midnight Commander отображат размеры в двоичных единицах (по снованию
1024), и суффиксы К, М, и т. д. отображаются в верхнем регистре.
.PP
.I Показывать резервные (Backup) файлы.
По умолчанию программа Midnight Commander не показывает файлы, имена
которых заканчиваются на '~' (подобно ключу \-B команды ls в GNU).
.PP
.I Показывать скрытые файлы.
По умолчанию Midnight Commander показывает все файлы, имена которых
начинаются точкой (как ls \-a).
.PP
.I Отметка перемещает курсор.
Когда вы отмечаете файл (клавишей
.BR Insert ),
то по умолчанию подсветка на имени файла смещается на одну строку вниз.
.PP
.I Выпадение меню при вызове.
Если эта опция включена, то при вызове главного меню нажатием клавиши
.B F9,
будет сразу отображаться перечень пунктов меню (выпадающее меню). В
противном случае активизируются только пункты главного меню и вы должны
(после выбора одного из них клавишами стрелок) нажать клавишу
.B Enter,
либо выбрать нужный пункт по первой букве названия, и только после этого
получите возможность выбрать пункт выпадающего меню.
.PP
.I Смешивать файлы/каталоги.
Если эта опция включена, имена файлов и каталогов отображаются
вперемежку. Если опция отключена, каталоги (и ссылки на каталоги)
показываются в начале списка, а имена файлов \- после имен всех
каталогов.
.PP
.I Быстрая загрузка каталога.
По умолчанию эта опция выключена. Если вы активизируете ее, Midnight
Commander будет использовать для вывода содержимого каталога следующий
трюк: содержимое каталога перечитывается только в том случае, если
изменилась запись в i\-node каталога, то есть если в каталоге создавались
или удалялись файлы; если изменялись только записи в i\-node файлов
каталога (изменялся размер файла, режим доступа или владелец и т.п.)
содержимое панели не обновляется. В этом случае (если опция включена) вы
должны обновлять список файлов вручную (клавишами
.BR C\-r ).
.PP
.B Пауза после исполнения
.PP
После выполнения вашей команды Midnight Commander может обеспечить
паузу, чтобы вы могли просмотреть и изучить вывод команды. Есть три
варианта установки этой опции:
.IP
.I <Никогда>
Это значит, что вы не хотите видеть вывод команды. На консоли Linux или
FreeBSD или при использовании xterm вы можете просмотреть этот вывод,
нажав C\-o.
.IP
.I <На "тупых" терминалах>
Пауза будет создаваться на терминалах, которые не способны обеспечить
показ вывода последней из выполнявшихся команд (это любые терминалы,
отличные от xterm или Linux\-консоли).
.IP
.I <Всегда>
Программа обеспечит паузу после выполнения любой команды.
.PP
.PP
.B Прочие настройки
.PP
.I Mkdir autoname.
При создании нового каталога по F7 в поле ввода имени нового каталога
будет автоматически подставляться имя файла или каталога, находящегося
под курсором.
.PP
.I Детали операций (Verbose operation).
.I Детали операций.
Этот переключатель определяет, будет ли при выполнении операций
копирования, перемещения и удаления выводится дополнительное окно,
отображающее ход выполнения операции. Если у вас медленный терминал, вы
@ -1960,25 +1870,61 @@ FreeBSD или при использовании xterm вы можете про
опция
.I Детали операций.
.PP
.I Образцы в стиле shell (Shell Patterns).
По умолчанию команды Select, Unselect и Filter используют регулярные
выражения, которые строятся по правилам, действующим в оболочке (shell\-
like regular expressions). Для того, чтобы достичь такого эффекта,
выполняются следующие преобразования: '*' заменяется на '.*' (ноль или
больше символов); '?' заменяется на '.' (в точности один символ) и '.'
заменяется на обычную точку. Если опция отключена, то регулярные
выражения должны строиться так, как описано в ed(1).
.I Обычный индикатор прогресса.
Если эта опция включена, индикатор прогресса файловых операций (копирование,
перемещение, удаление) всегда увеличивается слева направо. Если опция
выключена, направление увеличения индикатора прогресса совпадает с направлением
файловой операции: с левой панели на правую или наоборот. По умолчанию включено.
.PP
.I Автосохранение настроек.
Если эта опция включена, то при выходе из программы Midnight Commander
значения всех настраиваемых параметров сохраняются в файле
.BR ~/.mc/ini .
.I Автоимя каталога.
При создании нового каталога по F7 в поле ввода имени нового каталога
будет автоматически подставляться имя файла или каталога, находящегося
под курсором. По умолчанию выключено.
.PP
.I Автоматические меню.
Если эта опция включена, пользовательское меню будет автоматически
вызываться на экран при запуске программы. Это бывает полезно, если на
компьютере работают неопытные пользователи (операторы), которые должны
выполнять только стандартные операции.
.B Клавиша Esc
.PP
По умолчанию Midnight Commander трактует нажатие на клавишу ESC как
действие, предшествующее нажатию какой\-то другой клавиши и совместно
обрабатывает комбинацию <Esc\-key>. Поэтому вы должны нажимать ESC
дважды, чтобы закрыть диалог. Но существует возможность использовать
однократное нажатие ESC для этого действия.
.PP
.I Однократное нажатие.
По умолчанию эта опция выключена. Если вы её включите, то программа будет
ожидать нажатия второй клавиши только в течение некоторого временного
интервала (см. ниже опцию
.IR Интервал ),
и если за это время ни одна клавиша не нажата, то ESC интерпретируется
как каоманда "Отмена" (ESC ESC).
.PP
.I Интервал.
Эта опция используется для задания временного интервала (в микросекундах)
для использования однократного нажатия на клавишу ESC. По умолчанию этот
интервал равен 1 секунде (1000000 микросекунд). Кроме того, этот интервал
может быть установлен через переменную окружения KEYBOARD_KEY_TIMEOUT_US
(также в микросекундах), которая имеет приоритет над над значеним этой
опции.
.PP
.B Пауза после исполнения
.PP
После выполнения вашей команды Midnight Commander может обеспечить
паузу, чтобы вы могли просмотреть и изучить вывод команды. Есть три
варианта установки этой опции:
.PP
.IR Никогда.
Это значит, что вы не хотите видеть вывод команды. На консоли Linux или
FreeBSD или при использовании xterm вы можете просмотреть этот вывод,
нажав C\-o.
.PP
.IR "На "тупых" терминалах" .
Пауза будет создаваться на терминалах, которые не способны обеспечить
показ вывода последней из выполнявшихся команд (это любые терминалы,
отличные от xterm или Linux\-консоли).
.PP
.IR Всегда .
Программа обеспечит паузу после выполнения любой команды.
.PP
.B Прочие настройки
.PP
.I Встроенный редактор.
Если эта опция включена, то для редактирования файлов вызывается
@ -2004,7 +1950,30 @@ like regular expressions). Для того, чтобы достичь таког
Встроенная программа просмотра файлов\&.
.\"Internal File Viewer"
.PP
.I Дополнение: показывать все (Complete: show all).
.I Автоматические меню.
Если эта опция включена, пользовательское меню будет автоматически
вызываться на экран при запуске программы. Это бывает полезно, если на
компьютере работают неопытные пользователи (операторы), которые должны
выполнять только стандартные операции.
.PP
.I Выпадение меню при вызове.
Если эта опция включена, то при вызове главного меню нажатием клавиши F9
будет сразу отображаться перечень пунктов меню (выпадающее меню).
В противном случае активизируются только пункты главного меню, и вы должны
(после выбора одного из них клавишами стрелок) нажать клавишу Enter
либо выбрать нужный пункт по "горячей клавише" и только после этого
получите возможность выбрать пункт выпадающего меню.
.PP
.I Образцы в стиле shell.
По умолчанию команды Select, Unselect и Filter используют регулярные
выражения, которые строятся по правилам, действующим в оболочке (shell\-
like regular expressions). Для того, чтобы достичь такого эффекта,
выполняются следующие преобразования: '*' заменяется на '.*' (ноль или
больше символов); '?' заменяется на '.' (в точности один символ) и '.'
заменяется на обычную точку. Если опция отключена, то регулярные
выражения должны строиться так, как описано в ed(1).
.PP
.I Дополнение: показывать все.
В процессе ввода команд Midnight Commander может выполнять
.\"LINK2"
Завершение ввода
@ -2028,13 +1997,6 @@ like regular expressions). Для того, чтобы достичь таког
углу вращающуюся черточку, как индикатор того, что выполняется какое\-то
задание (операция).
.PP
.I Навигация в стиле lynx (Lynx\-like motion).
Если эта опция включена, вы имеете возможность использовать клавиши
"стрелка вправо" для перехода в подсвеченный в данный момент каталог и
"стрелка влево" для перехода в родительский по отношению к текущему
каталог (при условии, что командная строка пуста). По умолчанию опция
отключена.
.PP
.I Смена каталога по ссылкам.
Установка этой опции приводит к тому, что Midnight Commander будет
следовать логической цепочке подкаталогов при выполнении команд смены
@ -2059,18 +2021,141 @@ like regular expressions). Для того, чтобы достичь таког
на
.BR Нет .
По умолчанию эта опция отключена.
.PP
.I Автосохранение настроек.
Если эта опция включена, то при выходе из программы Midnight Commander
значения всех настраиваемых параметров сохраняются в файле
.BR ~/.mc/ini .
.\"NODE " Layout"
.SH " Внешний вид"
Диалоговое окно "Внешний вид" дает вам возможность изменить некоторые
параметры отображения на экране главного окна программы Midnight
Commander. Вы можете вывести на экран или отменить вывод строки главного
меню, командной строки, строки подсказок, мини\-статуса, строки с
подсказкой по функциональным клавишам. На консоли Linux или FreeBSD
можно задать число строк, которые будут оставлены для отображения вывода
команды.
Commander. Параметры, задаваемые в этом окне, делятся на несколько
групп: "Разбиение панелей", "Консольный вывод" и "Прочие настройки".
.PP
Можно также указать, должны ли панели располагаться горизонтально или
вертикально, изменить размеры панелей.
.B Разбиение панелей
.PP
Большую часть экрана занимают файловые панели. Вы можете указать,
каким должно быть расположение панелей:
.I вертикальное
или
.IR горизонтальное .
Изменить расположение панелей можно также с помощью клавиатурного сочетания
Alt\-, (Alt\-запятая).
.PP
.I Равные размеры
По умолчанию панели имеют равные разменры. Эта опция позволяет изменить их.
.PP
.B Консольный вывод
.PP
Эта опция доступна, если Midnight Commander запущен на консоли Linux или
FreeBSD. Она устанавливает число строк, которые будут оставлены для отображения
вывода команды.
.PP
.B Прочие настройки
.PP
.I Линейка меню.
Если включено, основное меню программы будет отображаться постоянно вверху
экрана. По умолчанию включено.
.PP
.I Мини\-статус.
Если включено, в нижней части каждой панели выводится строка информации
о выделенном подсветкой файле или каталоге каждой панели. По умолчанию включено.
.PP
.I Командная строка.
Если включено, в нижней части экрана будет доступна командная строка.
По умолчанию включено.
.PP
.I Метки клавиш.
Если включено, внизу экрана будут отображаться 10 меток, соответствующих
функциональным клавишам F1\-F10. По умолчанию включено.
.PP
.I Строка подсказки.
Если включено, ниже панелей будут отображаться однострочные подсказки
по приёмам работы в Midnight Commander. По умолчанию включено.
.PP
.I Заголовок xterm.
При исполнении в эмуляторе терминала системы X11 Midnight Commander
отображает в заголовке xterm текущий каталог и изменяет этот заголовок
при необходимости. Если ваш эмулятор терминала неисправен и вы видите
неверный заголовок при старте или изменении каталога, выключите эту опцию.
По умолчанию включено.
.PP
.I Свободное место.
Если включено, на нижней рамке панели будет показано свободное место и общий
размер текущей файловой системы. По умолчанию включено.
.\"NODE " Panel options"
.SH " Настройки панелей"
.B Основные настройки панелей
.PP
.I Размеры в единицах СИ.
Если эта опция включена, то Midnight Commander отображает размеры файлов
и каталогов в единицах СИ (по основанию 1000). Суффиксы к, м, и т. д.
отображаются в нижнем регистре. По умолчанию опция выключена. В этом случае
Midnight Commander отображат размеры в двоичных единицах (по снованию
1024), и суффиксы К, М, и т. д. отображаются в верхнем регистре.
.PP
.I Смешивать файлы/каталоги.
Если эта опция включена, имена файлов и каталогов отображаются вперемежку.
Если опция выключена, каталоги (и ссылки на каталоги) показываются в начале
списка, а имена файлов \- после имен всех каталогов. По умолчанию выключено.
.PP
.I Показывать резервные (Backup) файлы.
Если эта опция выключена, Midnight Commander не показывает файлы, имена которых
заканчиваются на '~' (подобно ключу \-B команды ls в GNU). По умолчанию включено.
.PP
.I Показывать скрытые файлы.
Если эта опция включена, Midnight Commander показывает все файлы, имена которых
начинаются точкой (как ls \-a). По умолчанию включено.
.PP
.I Быстрая загрузка каталога.
По умолчанию эта опция выключена. Если вы активизируете ее, Midnight
Commander будет использовать для вывода содержимого каталога следующий трюк:
содержимое каталога перечитывается только в том случае, если изменилась
запись в i\-node каталога, то есть если в каталоге создавались или удалялись
файлы; если изменялись только записи в i\-node файлов каталога (изменялся
размер файла, режим доступа или владелец и т.п.) содержимое панели
не обновляется. В этом случае (если опция включена) вы должны обновлять список
файлов вручную (используя клавиатурное сочетание C\-r).
.PP
.I Отметка перемещает курсор.
Когда вы отмечаете файл (клавишей Insert), то по умолчанию подсветка
на имени файла смещается на одну строку вниз.
.PP
.I Инвертировать только файлы.
Если опция включена (по умолчанию она включена), инвертирование
выбора применяется только к файлам, но не к каталогам. Выбор каталогов
не изменяется. Если не установлена, производится инвертирование как файлов,
так и каталогов. Все невыбранные объекты становятся выбранными и наоборот.
.PP
.I Автосохранение настроек панелей.
Если опция включена (по умолчанию она выключена), то при выходе из
Midnight Commander'а текущие настройки панелей соханяются в файле
~/.mc/panels.ini.
.PP
.B Навигация
.PP
.I Навигация в стиле lynx.
Если эта опция включена, вы имеете возможность использовать клавиши
"стрелка вправо" для перехода в подсвеченный в данный момент каталог и
"стрелка влево" для перехода в родительский по отношению к текущему
каталог (при условии, что командная строка пуста). По умолчанию опция
отключена.
.PP
.I Страничное листание.
Если опция установлена (по умолчанию она установлена), то когда курсор
(подсветка) достигает конца или начала списка файлов, отображаемого на
панели, будет производиться смещение на половину этого списка (то есть
половина отображаемого списка остается на экране, а половина пропадает,
заменяясь следующими пунктами общего списка). Если опция не установлена,
происходит смещение только на одну строку.
.PP
.I Страничное листание мышью.
Определяет, будет ли прокрутка информации (scrolling) в панелях,
осуществляемая с помощью мышки, производиться страницами или на одну
строку.
.PP
.B Расцветка файлов
.PP
По умолчанию вся информация отображаются одним цветом, но вы можете
сделать так, чтобы
@ -2099,39 +2184,15 @@ Commander, выделены цветом, определенным ключев
.\"Filenames Highlight"
для получения большей информации.
.PP
При включенной опции
.IR Линейка меню
вызываемое при нажатии клавиши F9 меню будет отображаться постоянно.
.B Быстрый поиск
.PP
Если включена опция
.IR Мини\-статус ,
в нижней части каждой панели выводится строка информации о выделенном
подсветкой файле или каталоге каждой панели.
.PP
Если включена опция
.IR Командная строка ,
в нижней части экрана будет отображаться приглашение командной строки.
.PP
Включение опции
.IR Метки клавиш
будет постоянно отображать в нижней части экрана строку подсказок
функциональных клавиш.
.PP
Если включена опция
.IR Строка подсказки ,
в нижней части экрана будут отображаться произвольно выбранные подсказки
(tips) по приёмам работы с Midmight Commander.
.PP
При исполнении в эмуляторе терминала системы X11 Midnight Commander
отображает в заголовке xterm текущий каталог и изменяет этот заголовок
при необходимости. Если ваш эмулятор терминала неисправен и вы видите
неверный заголовок при старте или изменении каталога, выключите параметр
.I Заголовок xterm
(Xterm Window Title).
.PP
Включение опции
.IR show free space ,
покажет свободное место / всего места на разделах.
.\"LINK2"
Быстрый поиск файлов
.\"Quick search"
может работать в одном из трёх режимов: с учётом регистра имён файлов,
без учёта регистра или в соответствии с порядком сортировки файлов в панели:
с учётом регистра или без. Режим по умолчанию \- использование порядка
сортировки файлов в панели.
.\"NODE " Confirmation"
.SH " Подтверждения"
Используя это диалоговое окно, вы можете сделать так, чтобы перед
@ -3684,7 +3745,7 @@ base_color=normal=white,default:marked=magenta,default
.\"NODE "Skins"
.SH "Внешний вид"
Вы можете изменить внешний вид Midhight Commander'а. Для этого необходимо
Вы можете изменить внешний вид Midnight Commander'а. Для этого необходимо
указать файл, в котором указаны цвета и линии для отрисовки рамок. Такой
файл называется далее скин\-файл. переопределение внешнего вида полностью
совместимо с заданием цветов, описанным в секции
@ -3709,7 +3770,7 @@ base_color=normal=white,default:marked=magenta,default
3) В конфигурационном файле параметр
.BR skin
в секции
.BR [Midhight Commander]
.BR [Midnight Commander]
.br
4) Файл
.BR @sysconfdir@/mc/skins/default.ini
@ -4106,31 +4167,15 @@ router). Эта опция работает только в том случае,
значение этого параметра может привести к тому, что процедура обновления
экрана начнет вaс раздражать.
.IP
По\-видимому значение max_dirt_limit, равное 10, обеспечивает наилучший
По\-видимому, значение max_dirt_limit, равное 10, обеспечивает наилучший
выбор, и именно такое значение устанавливается по умолчанию.
.PP
.I mouse_move_pages
.IP
Определяет, будет ли прокрутка информации (scrolling) в панелях,
осуществляемая с помощью мышки, производиться страницами или на одну
строку.
.PP
.I mouse_move_pages_viewer
.IP
Определяет, будет ли прокрутка информации (scrolling) во встроенной
программе просмотра, осуществляемая с помощью мышки, производиться
страницами или на одну строку.
.PP
.I old_esc_mode
.IP
По умолчанию Midnight Commander трактует нажатие на клавишу ESC как
действие, предшествующее нажатию какой\-то другой клавиши
(old_esc_mode=0), и совместно обрабатывает комбинацию <Esc\-key>. Если
установить эту опцию в 1 (old_esc_mode=1), то программа будет ожидать
нажатия второй клавиши только в течение 1 секунды, и если за это время
ни одна клавиша не нажата, то ESC интерпретируется как требование отказа
от выполнения предыдущей команды (ESC ESC).
.PP
.I only_leading_plus_minus
.IP
Устанавливает специальный режим обработки символов '+', '\-', '*' в
@ -4141,22 +4186,6 @@ router). Эта опция работает только в том случае,
использовать эти символы для таких операций, если командная строка не
пуста.
.PP
.I reverse_files_only
.IP
Если опция установлена (по умолчанию она установлена), инвертирование
выбора применяется только к файлам, но не к каталогам. Выбор каталогов
не изменяется. Если не установлена, производится инвертирование как файлов,
так и каталогов. Все невыбранные объекты становятся выбранными и наоборот.
.PP
.I panel_scroll_pages
.IP
Если опция установлена (по умолчанию она установлена), то когда курсор
(подсветка) достигает конца или начала списка файлов, отображаемого на
панели, будет производиться смещение на половину этого списка (то есть
половина отображаемого списка остается на экране, а половина пропадает,
заменяясь следующими пунктами общего списка). Если опция не установлена,
происходит смещение только на одну строку.
.PP
.I show_output_starts_shell
.IP
Эта переменная работает только в том случае, когда не включена поддержка

View File

@ -489,7 +489,7 @@ static key_define_t qansi_key_defines[] = {
};
/* timeout for old_esc_mode in usec */
static int keyboard_key_timeout = 1000000; /* settable via env */
int old_esc_mode_timeout = 1000000; /* settable via env */
/* This holds all the key definitions */
static key_def *keys = NULL;
@ -983,8 +983,8 @@ xgetch_second (void)
int c;
struct timeval time_out;
time_out.tv_sec = keyboard_key_timeout / 1000000;
time_out.tv_usec = keyboard_key_timeout % 1000000;
time_out.tv_sec = old_esc_mode_timeout / 1000000;
time_out.tv_usec = old_esc_mode_timeout % 1000000;
tty_nodelay (TRUE);
FD_ZERO (&Read_FD_Set);
FD_SET (input_fd, &Read_FD_Set);
@ -1039,9 +1039,6 @@ void
init_key (void)
{
const char *term = getenv ("TERM");
const char *kt = getenv ("KEYBOARD_KEY_TIMEOUT_US");
if (kt != NULL)
keyboard_key_timeout = atoi (kt);
/* This has to be the first define_sequence */
/* So, we can assume that the first keys member has ESC */
@ -1520,8 +1517,8 @@ get_key_code (int no_delay)
if (esctime.tv_sec == -1)
return -1;
GET_TIME (current);
time_out.tv_sec = keyboard_key_timeout / 1000000 + esctime.tv_sec;
time_out.tv_usec = keyboard_key_timeout % 1000000 + esctime.tv_usec;
time_out.tv_sec = old_esc_mode_timeout / 1000000 + esctime.tv_sec;
time_out.tv_usec = old_esc_mode_timeout % 1000000 + esctime.tv_usec;
if (time_out.tv_usec > 1000000) {
time_out.tv_usec -= 1000000;
time_out.tv_sec++;

View File

@ -32,6 +32,8 @@ typedef struct {
extern const key_code_name_t key_name_conv_tab[];
extern int old_esc_mode_timeout;
/* mouse support */
struct Gpm_Event;
int tty_get_event (struct Gpm_Event *event, gboolean redo_event, gboolean block);

View File

@ -57,13 +57,6 @@
int easy_patterns = 1;
/*
* If true, SI units (1000 based) will be used for
* larger units (kilobyte, megabyte, ...).
* If false binary units (1024 based) will be used.
*/
int kilobyte_si = 0;
char *user_recent_timeformat = NULL; /* time format string for recent dates */
char *user_old_timeformat = NULL; /* time format string for older dates */
@ -289,7 +282,7 @@ path_trunc (const char *path, size_t trunc_len)
}
const char *
size_trunc (double size)
size_trunc (double size, gboolean use_si)
{
static char x[BUF_TINY];
long int divisor = 1;
@ -297,12 +290,12 @@ size_trunc (double size)
if (size > 999999999L)
{
divisor = kilobyte_si ? 1000 : 1024;
xtra = kilobyte_si ? "k" : "K";
divisor = use_si ? 1000 : 1024;
xtra = use_si ? "k" : "K";
if (size / divisor > 999999999L)
{
divisor = kilobyte_si ? (1000 * 1000) : (1024 * 1024);
xtra = kilobyte_si ? "m" : "M";
divisor = use_si ? (1000 * 1000) : (1024 * 1024);
xtra = use_si ? "m" : "M";
}
}
g_snprintf (x, sizeof (x), "%.0f%s", (size / divisor), xtra);
@ -310,14 +303,14 @@ size_trunc (double size)
}
const char *
size_trunc_sep (double size)
size_trunc_sep (double size, gboolean use_si)
{
static char x[60];
int count;
const char *p, *y;
char *d;
p = y = size_trunc (size);
p = y = size_trunc (size, use_si);
p += strlen (p) - 1;
d = x + sizeof (x) - 1;
*d-- = 0;
@ -348,7 +341,7 @@ size_trunc_sep (double size)
* 0=bytes, 1=Kbytes, 2=Mbytes, etc.
*/
void
size_trunc_len (char *buffer, unsigned int len, off_t size, int units)
size_trunc_len (char *buffer, unsigned int len, off_t size, int units, gboolean use_si)
{
/* Avoid taking power for every file. */
static const off_t power10[] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000,
@ -367,7 +360,7 @@ size_trunc_len (char *buffer, unsigned int len, off_t size, int units)
* We can't just multiply by 1024 - that might cause overflow
* if off_t type is too small
*/
if (units && kilobyte_si)
if (units && use_si)
{
for (j = 0; j < units; j++)
{
@ -391,26 +384,22 @@ size_trunc_len (char *buffer, unsigned int len, off_t size, int units)
/* Use "~K" or just "K" if len is 1. Use "B" for bytes. */
g_snprintf (buffer, len + 1, (len > 1) ? "~%s" : "%s",
(j > 1) ? (kilobyte_si ? suffix_lc[j - 1] : suffix[j - 1]) : "B");
(j > 1) ? (use_si ? suffix_lc[j - 1] : suffix[j - 1]) : "B");
break;
}
if (size < power10[len - (j > 0)])
{
g_snprintf (buffer, len + 1, "%lu%s", (unsigned long) size,
kilobyte_si ? suffix_lc[j] : suffix[j]);
use_si ? suffix_lc[j] : suffix[j]);
break;
}
/* Powers of 1000 or 1024, with rounding. */
if (kilobyte_si)
{
if (use_si)
size = (size + 500) / 1000;
}
else
{
size = (size + 512) >> 10;
}
}
}

View File

@ -14,6 +14,9 @@
#include <sys/stat.h>
#include <unistd.h>
extern char *user_recent_timeformat; /* time format string for recent dates */
extern char *user_old_timeformat; /* time format string for older dates */
/* Returns its argument as a "modifiable" string. This function is
* intended to pass strings to legacy libraries that don't know yet
* about the "const" modifier. The return value of this function
@ -55,18 +58,18 @@ const char *path_trunc (const char *path, size_t trunc_len);
/* return a static string representing size, appending "K" or "M" for
* big sizes.
* NOTE: uses the same static buffer as size_trunc_sep. */
const char *size_trunc (double size);
const char *size_trunc (double size, gboolean use_si);
/* return a static string representing size, appending "K" or "M" for
* big sizes. Separates every three digits by ",".
* NOTE: uses the same static buffer as size_trunc. */
const char *size_trunc_sep (double size);
const char *size_trunc_sep (double size, gboolean use_si);
/* Print file SIZE to BUFFER, but don't exceed LEN characters,
* not including trailing 0. BUFFER should be at least LEN+1 long.
*
* Units: size units (0=bytes, 1=Kbytes, 2=Mbytes, etc.) */
void size_trunc_len (char *buffer, unsigned int len, off_t size, int units);
void size_trunc_len (char *buffer, unsigned int len, off_t size, int units, gboolean use_si);
int is_exe (mode_t mode);
const char *string_perm (mode_t mode_bits);

View File

@ -227,6 +227,7 @@ CmdSingleDirsize = ctrl-space
CmdSuspend = ctrl-z
CmdSwapPanel = ctrl-u
CmdHistory = alt-h
CmdListing =
CmdToggleListing = alt-t
CmdToggleShowHidden = alt-dot
CmdTogglePanelsSplit = alt-comma

View File

@ -231,6 +231,7 @@ CmdSingleDirsize = ctrl-space
CmdSuspend = ctrl-z
CmdSwapPanel = ctrl-u
CmdHistory = alt-h
CmdListing =
CmdToggleListing = alt-t
CmdToggleShowHidden = alt-dot
CmdTogglePanelsSplit = alt-comma

View File

@ -3054,7 +3054,7 @@ msgid "&Horizontal"
msgstr "&Горизонтальное"
msgid "show free sp&Ace"
msgstr "показать свободное пространство"
msgstr "Сво&бодное место"
msgid "&Xterm window title"
msgstr "&Заголовок xterm"

View File

@ -43,13 +43,12 @@
#include "widget.h"
/* Needed for the extern declarations of integer parameters */
#include "dir.h"
#include "panel.h" /* Needed for the externs */
#include "chmod.h"
#include "main.h" /* update_panels() */
#include "layout.h" /* repaint_screen() */
#include "chown.h"
#include "wtools.h" /* For init_box_colors */
#include "wtools.h" /* init_box_colors() */
#include "setup.h" /* panels_options */
#define UX 5
#define UY 2
@ -75,7 +74,8 @@ static int single_set;
static WListbox *l_user, *l_group;
/* *INDENT-OFF* */
static struct {
static struct
{
int ret_cmd, flags, y, x;
const char *text;
} chown_but[BUTTONS] = {
@ -91,11 +91,11 @@ static struct {
int y, x;
WLabel *l;
} chown_label [LABELS] = {
{ TY + 2, TX + 2, NULL },
{ TY + 4, TX + 2, NULL },
{ TY + 6, TX + 2, NULL },
{ TY + 8, TX + 2, NULL },
{ TY + 10,TX + 2, NULL }
{ TY + 2, TX + 2, NULL },
{ TY + 4, TX + 2, NULL },
{ TY + 6, TX + 2, NULL },
{ TY + 8, TX + 2, NULL },
{ TY + 10, TX + 2, NULL }
};
/* *INDENT-ON* */
@ -282,7 +282,7 @@ chown_cmd (void)
chown_label (0, str_trunc (fname, 15));
chown_label (1, str_trunc (get_owner (sf_stat.st_uid), 15));
chown_label (2, str_trunc (get_group (sf_stat.st_gid), 15));
size_trunc_len (buffer, 15, sf_stat.st_size, 0);
size_trunc_len (buffer, 15, sf_stat.st_size, 0, panels_options.kilobyte_si);
chown_label (3, buffer);
chown_label (4, string_perm (sf_stat.st_mode));

View File

@ -105,9 +105,6 @@ int use_internal_edit = 1;
/* Automatically fills name with current selected item name on mkdir */
int auto_fill_mkdir_name = 1;
/* if set, only selection of files is inverted */
int reverse_files_only = 1;
/* selection flags */
typedef enum
{
@ -546,7 +543,7 @@ reverse_selection_cmd (void)
for (i = 0; i < current_panel->count; i++)
{
file = &current_panel->dir.list[i];
if ((reverse_files_only == 0) || !S_ISDIR (file->st.st_mode))
if (!panels_options.reverse_files_only || !S_ISDIR (file->st.st_mode))
do_file_mark (current_panel, i, !file->f.marked);
}
}
@ -1340,8 +1337,8 @@ single_dirsize_cmd (void)
compute_dir_size_destroy_ui (ui);
}
if (mark_moves_down)
send_message (&(panel->widget), WIDGET_KEY, KEY_DOWN);
if (panels_options.mark_moves_down)
send_message (&panel->widget, WIDGET_KEY, KEY_DOWN);
recalculate_panel_summary (panel);
@ -1453,6 +1450,12 @@ switch_to_listing (int panel_index)
void
listing_cmd (void)
{
switch_to_listing (MENU_PANEL_IDX);
}
void
change_listing_cmd (void)
{
int list_type;
int use_msformat;

View File

@ -60,6 +60,7 @@ char *get_random_hint (int force);
void user_file_menu_cmd (void);
void info_cmd (void);
void listing_cmd (void);
void change_listing_cmd (void);
void quick_cmd_no_menu (void);
void info_cmd_no_menu (void);
void quick_view_cmd (void);

View File

@ -306,77 +306,79 @@
/* main commands */
#define CK_AddHotlist 7001
#define CK_ChmodCmd 7002
#define CK_ChownAdvancedCmd 7003
#define CK_ChownCmd 7004
#define CK_CompareDirsCmd 7005
#define CK_ConfigureBox 7006
#define CK_ConfigureVfs 7007
#define CK_ConfirmBox 7008
#define CK_CopyCmd 7009
#define CK_CopyCurrentPathname 7010
#define CK_CopyCurrentReadlink 7011
#define CK_CopyCurrentTagged 7012
#define CK_CopyOtherPathname 7013
#define CK_CopyOtherReadlink 7014
#define CK_CopyOtherTagged 7015
#define CK_DeleteCmd 7016
#define CK_DirsizesCmd 7017
#define CK_DisplayBitsBox 7018
#define CK_EditCmd 7019
#define CK_EditExtFileCmd 7020
#define CK_EditFhlFileCmd 7021
#define CK_EditMcMenuCmd 7022
#define CK_EditSymlinkCmd 7023
#define CK_EditSyntaxCmd 7024
#define CK_EditUserMenuCmd 7025
#define CK_ExternalPanelize 7026
#define CK_FilterCmd 7027
#define CK_FilteredViewCmd 7028
#define CK_FindCmd 7029
#define CK_FishlinkCmd 7030
#define CK_FtplinkCmd 7031
#define CK_HistoryCmd 7032
#define CK_InfoCmd 7033
#define CK_JobsCmd 7034
#define CK_LayoutCmd 7035
#define CK_LearnKeys 7036
#define CK_LinkCmd 7037
#define CK_ListingCmd 7038
#define CK_ListmodeCmd 7039
#define CK_MenuLastSelectedCmd 7042
#define CK_MkdirCmd 7044
#define CK_NetlinkCmd 7045
#define CK_QuickCdCmd 7046
#define CK_QuickChdirCmd 7047
#define CK_QuickViewCmd 7048
#define CK_QuietQuitCmd 7049
#define CK_QuitCmd 7050
#define CK_RenameCmd 7051
#define CK_RereadCmd 7052
#define CK_ReselectVfs 7053
#define CK_ReverseSelectionCmd 7054
#define CK_SaveSetupCmd 7055
#define CK_SelectCmd 7056
#define CK_SingleDirsizeCmd 7057
#define CK_SmblinkCmd 7058
#define CK_SuspendCmd 7059
#define CK_SwapCmd 7060
#define CK_SymlinkCmd 7061
#define CK_ToggleListingCmd 7062
#define CK_ToggleShowHidden 7063
#define CK_TreeCmd 7064
#define CK_TreeBoxCmd 7065
#define CK_UndeleteCmd 7066
#define CK_UnselectCmd 7067
#define CK_UserFileMenuCmd 7068
#define CK_UserMenuCmd 7069
#define CK_ViewCmd 7070
#define CK_ViewFileCmd 7071
#define CK_HelpCmd 7072
#define CK_MenuCmd 7073
#define CK_TogglePanelsSplit 7074
#define CK_DiffViewCmd 7075
#define CK_ChangeListingCmd 7002
#define CK_ChmodCmd 7003
#define CK_ChownAdvancedCmd 7004
#define CK_ChownCmd 7005
#define CK_CompareDirsCmd 7006
#define CK_ConfigureBox 7007
#define CK_ConfigureVfs 7008
#define CK_ConfirmBox 7009
#define CK_CopyCmd 7010
#define CK_CopyCurrentPathname 7011
#define CK_CopyCurrentReadlink 7012
#define CK_CopyCurrentTagged 7013
#define CK_CopyOtherPathname 7014
#define CK_CopyOtherReadlink 7015
#define CK_CopyOtherTagged 7016
#define CK_DeleteCmd 7017
#define CK_DirsizesCmd 7018
#define CK_DisplayBitsBox 7019
#define CK_EditCmd 7020
#define CK_EditExtFileCmd 7021
#define CK_EditFhlFileCmd 7022
#define CK_EditMcMenuCmd 7023
#define CK_EditSymlinkCmd 7024
#define CK_EditSyntaxCmd 7025
#define CK_EditUserMenuCmd 7026
#define CK_ExternalPanelize 7027
#define CK_FilterCmd 7028
#define CK_FilteredViewCmd 7029
#define CK_FindCmd 7030
#define CK_FishlinkCmd 7031
#define CK_FtplinkCmd 7032
#define CK_HistoryCmd 7033
#define CK_InfoCmd 7034
#define CK_JobsCmd 7035
#define CK_LayoutBox 7036
#define CK_LearnKeys 7037
#define CK_LinkCmd 7038
#define CK_ListingCmd 7039
#define CK_ListmodeCmd 7042
#define CK_MenuLastSelectedCmd 7044
#define CK_MkdirCmd 7045
#define CK_NetlinkCmd 7046
#define CK_QuickCdCmd 7047
#define CK_QuickChdirCmd 7048
#define CK_QuickViewCmd 7049
#define CK_QuietQuitCmd 7050
#define CK_QuitCmd 7051
#define CK_RenameCmd 7052
#define CK_RereadCmd 7053
#define CK_ReselectVfs 7054
#define CK_ReverseSelectionCmd 7055
#define CK_SaveSetupCmd 7056
#define CK_SelectCmd 7057
#define CK_SingleDirsizeCmd 7058
#define CK_SmblinkCmd 7059
#define CK_SuspendCmd 7060
#define CK_SwapCmd 7061
#define CK_SymlinkCmd 7062
#define CK_ToggleListingCmd 7063
#define CK_ToggleShowHidden 7064
#define CK_TreeCmd 7065
#define CK_TreeBoxCmd 7066
#define CK_UndeleteCmd 7067
#define CK_UnselectCmd 7068
#define CK_UserFileMenuCmd 7069
#define CK_UserMenuCmd 7070
#define CK_ViewCmd 7071
#define CK_ViewFileCmd 7072
#define CK_HelpCmd 7073
#define CK_MenuCmd 7074
#define CK_TogglePanelsSplit 7075
#define CK_DiffViewCmd 7076
#define CK_PanelOptionsBox 7077
/* panels */
#define CK_PanelChdirOtherPanel 8001

View File

@ -37,15 +37,7 @@
#include "wtools.h"
#include "treestore.h"
#include "dir.h"
/* If true show files starting with a dot */
int show_dot_files = 1;
/* If true show files ending in ~ */
int show_backups = 1;
/* If false then directories are shown separately from files */
int mix_all_files = 0;
#include "setup.h" /* panels_options */
/* Reverse flag */
static int reverse = 1;
@ -84,13 +76,13 @@ sort_name (file_entry *a, file_entry *b)
int ad = MY_ISDIR (a);
int bd = MY_ISDIR (b);
if (ad == bd || mix_all_files) {
if (ad == bd || panels_options.mix_all_files) {
/* create key if does not exist, key will be freed after sorting */
if (a->sort_key == NULL)
if (a->sort_key == NULL)
a->sort_key = str_create_key_for_filename (a->fname, case_sensitive);
if (b->sort_key == NULL)
if (b->sort_key == NULL)
b->sort_key = str_create_key_for_filename (b->fname, case_sensitive);
return str_key_collate (a->sort_key, b->sort_key, case_sensitive)
* reverse;
}
@ -103,7 +95,7 @@ sort_vers (file_entry *a, file_entry *b)
int ad = MY_ISDIR (a);
int bd = MY_ISDIR (b);
if (ad == bd || mix_all_files) {
if (ad == bd || panels_options.mix_all_files) {
return str_verscmp(a->fname, b->fname) * reverse;
} else {
return bd - ad;
@ -117,10 +109,10 @@ sort_ext (file_entry *a, file_entry *b)
int ad = MY_ISDIR (a);
int bd = MY_ISDIR (b);
if (ad == bd || mix_all_files){
if (a->second_sort_key == NULL)
if (ad == bd || panels_options.mix_all_files) {
if (a->second_sort_key == NULL)
a->second_sort_key = str_create_key (extension (a->fname), case_sensitive);
if (b->second_sort_key == NULL)
if (b->second_sort_key == NULL)
b->second_sort_key = str_create_key (extension (b->fname), case_sensitive);
r = str_key_collate (a->second_sort_key, b->second_sort_key, case_sensitive);
@ -138,7 +130,7 @@ sort_time (file_entry *a, file_entry *b)
int ad = MY_ISDIR (a);
int bd = MY_ISDIR (b);
if (ad == bd || mix_all_files) {
if (ad == bd || panels_options.mix_all_files) {
int result = a->st.st_mtime < b->st.st_mtime ? -1 :
a->st.st_mtime > b->st.st_mtime;
if (result != 0)
@ -156,7 +148,7 @@ sort_ctime (file_entry *a, file_entry *b)
int ad = MY_ISDIR (a);
int bd = MY_ISDIR (b);
if (ad == bd || mix_all_files) {
if (ad == bd || panels_options.mix_all_files) {
int result = a->st.st_ctime < b->st.st_ctime ? -1 :
a->st.st_ctime > b->st.st_ctime;
if (result != 0)
@ -174,7 +166,7 @@ sort_atime (file_entry *a, file_entry *b)
int ad = MY_ISDIR (a);
int bd = MY_ISDIR (b);
if (ad == bd || mix_all_files) {
if (ad == bd || panels_options.mix_all_files) {
int result = a->st.st_atime < b->st.st_atime ? -1 :
a->st.st_atime > b->st.st_atime;
if (result != 0)
@ -192,7 +184,7 @@ sort_inode (file_entry *a, file_entry *b)
int ad = MY_ISDIR (a);
int bd = MY_ISDIR (b);
if (ad == bd || mix_all_files)
if (ad == bd || panels_options.mix_all_files)
return (a->st.st_ino - b->st.st_ino) * reverse;
else
return bd-ad;
@ -205,7 +197,7 @@ sort_size (file_entry *a, file_entry *b)
int bd = MY_ISDIR (b);
int result = 0;
if (ad != bd && !mix_all_files)
if (ad != bd && !panels_options.mix_all_files)
return bd - ad;
result = a->st.st_size < b->st.st_size ? -1 :
@ -300,10 +292,11 @@ handle_dirent (dir_list *list, const char *fltr, struct dirent *dp,
return 0;
if (dp->d_name[0] == '.' && dp->d_name[1] == '.' && dp->d_name[2] == 0)
return 0;
if (!show_dot_files && (dp->d_name[0] == '.'))
if (!panels_options.show_dot_files && (dp->d_name[0] == '.'))
return 0;
if (!show_backups && dp->d_name[NLENGTH (dp) - 1] == '~')
if (!panels_options.show_backups && dp->d_name[NLENGTH (dp) - 1] == '~')
return 0;
if (mc_lstat (dp->d_name, buf1) == -1) {
/*
* lstat() fails - such entries should be identified by
@ -362,7 +355,8 @@ get_dotdot_dir_stat (const char *path, struct stat *st)
}
/* handle_path is a simplified handle_dirent. The difference is that
handle_path doesn't pay attention to show_dot_files and show_backups.
handle_path doesn't pay attention to panels_options.show_dot_files
and panels_options.show_backups.
Moreover handle_path can't be used with a filemask.
If you change handle_path then check also handle_dirent. */
/* Return values: -1 = failure, 0 = don't add, 1 = add to the list */

View File

@ -66,9 +66,4 @@ int sort_inode (file_entry *a, file_entry *b);
int link_isdir (const file_entry *);
int if_link_is_exe (const char *full_name, const file_entry *file);
extern int show_backups;
extern int show_dot_files;
extern int mix_all_files;
extern int kilobyte_si;
#endif
#endif /* MC_DIR_H */

View File

@ -155,6 +155,7 @@ typedef struct
struct stat *s_stat, *d_stat;
} FileOpContextUI;
int classic_progressbar = 1;
/* Used to save the hint line */
static int last_hint_line;
@ -339,8 +340,7 @@ file_op_context_create_ui_without_init (FileOpContext * ctx, gboolean with_eta,
add_widget (ui->op_dlg, ui->file_string[0] = label_new (3, FCOPY_LABEL_X, ""));
add_widget (ui->op_dlg, ui->file_label[0] = label_new (2, FCOPY_LABEL_X, ""));
if ((right_panel == current_panel)
&& !mc_config_get_bool (mc_main_config, "Layout", "classic_progressbar", TRUE))
if ((right_panel == current_panel) && !classic_progressbar)
{
ui->progress_file_gauge->from_left_to_right = FALSE;
if (dialog_type == FILEGUI_DIALOG_MULTI_ITEM)
@ -543,8 +543,8 @@ file_progress_show_total (FileOpTotalContext * tctx, FileOpContext * ctx, double
g_snprintf (buffer, BUF_TINY, _("Time: %s %s (%s)"), buffer2, buffer3, buffer4);
label_set_text (ui->time_label, buffer);
size_trunc_len (buffer2, 5, tctx->copyed_bytes, 0);
size_trunc_len (buffer3, 5, ctx->progress_bytes, 0);
size_trunc_len (buffer2, 5, tctx->copyed_bytes, 0, panels_options.kilobyte_si);
size_trunc_len (buffer3, 5, ctx->progress_bytes, 0, panels_options.kilobyte_si);
g_snprintf (buffer, BUF_TINY, _(" Total: %s of %s "), buffer2, buffer3);

View File

@ -27,6 +27,8 @@
#define MC_HISTORY_FM_PANEL_FILTER "mc.fm.panel-filter"
#define MC_HISTORY_FM_MENU_EXEC_PARAM "mc.fm.menu.exec.parameter"
#define MC_HISTORY_ESC_TIMEOUT "mc.esc.timeout"
#define MC_HISTORY_VIEW_GOTO "mc.view.goto"
#define MC_HISTORY_VIEW_GOTO_LINE "mc.view.goto-line"
#define MC_HISTORY_VIEW_GOTO_ADDR "mc.view.goto-addr"

View File

@ -36,12 +36,11 @@
#include "dialog.h"
#include "widget.h" /* default_proc */
#include "main-widgets.h" /* the_menubar */
#include "dir.h" /* required by panel */
#include "panel.h" /* for the panel structure */
#include "main.h" /* other_panel, current_panel definitions */
#include "menu.h" /* menubar_visible */
#include "layout.h"
#include "mountlist.h"
#include "setup.h" /* panels_options */
#include "info.h"
#ifndef VERSION
@ -125,8 +124,8 @@ info_show_info (struct WInfo *info)
if (myfs_stats.avail > 0 || myfs_stats.total > 0)
{
char buffer1[6], buffer2[6];
size_trunc_len (buffer1, 5, myfs_stats.avail, 1);
size_trunc_len (buffer2, 5, myfs_stats.total, 1);
size_trunc_len (buffer1, 5, myfs_stats.avail, 1, panels_options.kilobyte_si);
size_trunc_len (buffer2, 5, myfs_stats.total, 1, panels_options.kilobyte_si);
tty_printf (_("Free space: %s (%d%%) of %s"), buffer1, myfs_stats.total ?
(int) (100 * (double) myfs_stats.avail / myfs_stats.total) : 0, buffer2);
}
@ -181,7 +180,7 @@ info_show_info (struct WInfo *info)
#endif
{
char buffer[10];
size_trunc_len (buffer, 9, st.st_size, 0);
size_trunc_len (buffer, 9, st.st_size, 0, panels_options.kilobyte_si);
tty_printf (_("Size: %s"), buffer);
#ifdef HAVE_STRUCT_STAT_ST_BLOCKS
tty_printf (ngettext (" (%ld block)", " (%ld blocks)",

View File

@ -355,9 +355,10 @@ static name_keymap_t command_names[] = {
#ifdef WITH_BACKGROUND
{ "CmdJobs", CK_JobsCmd },
#endif
{ "CmdLayout", CK_LayoutCmd },
{ "CmdLayout", CK_LayoutBox },
{ "CmdLearnKeys", CK_LearnKeys },
{ "CmdLink", CK_LinkCmd },
{ "CmdChangeListing", CK_ChangeListingCmd },
{ "CmdListing", CK_ListingCmd },
#ifdef LISTMODE_EDITOR
{ "CmdListmodeCmd", CK_ListmodeCmd }.
@ -366,6 +367,7 @@ static name_keymap_t command_names[] = {
#if defined (USE_NETCODE) && defined (ENABLE_VFS_MCFS)
{ "CmdNetlink", CK_NetlinkCmd },
#endif
{ "CmdPanelOptions", CK_PanelOptionsBox },
{ "CmdQuickCd", CK_QuickCdCmd },
{ "CmdQuickChdir", CK_QuickChdirCmd },
{ "CmdQuickView", CK_QuickViewCmd },

View File

@ -141,8 +141,6 @@ static int _keybar_visible;
static int _message_visible;
static int _xterm_title;
static int _free_space;
static int _permission_mode;
static int _filetype_mode;
static int height;
@ -150,8 +148,6 @@ static int height;
#define MINWIDTH 12
#define MINHEIGHT 5
#define BY 12
#define B_2LEFT B_USER
#define B_2RIGHT (B_USER + 1)
#define B_PLUS (B_USER + 2)
@ -171,26 +167,22 @@ static struct {
int *variable;
WCheck *widget;
} check_options [] = {
{ N_("show free sp&Ace"), &free_space, 0 },
{ N_("&Xterm window title"), &xterm_title, 0 },
{ N_("h&Intbar visible"), &message_visible, 0 },
{ N_("&Keybar visible"), &keybar_visible, 0 },
{ N_("command &Prompt"), &command_prompt, 0 },
{ N_("show &Mini status"), &show_mini_info, 0 },
{ N_("menu&Bar visible"), &menubar_visible, 0 },
{ N_("&Equal split"), &equal_split, 0 },
{ N_("pe&Rmissions"), &permission_mode, 0 },
{ N_("&File types"), &filetype_mode, 0 },
{ 0, 0, 0 }
{ N_("show free sp&Ace"), &free_space, NULL },
{ N_("&XTerm window title"), &xterm_title, NULL },
{ N_("h&Intbar visible"), &message_visible, NULL },
{ N_("&Keybar visible"), &keybar_visible, NULL },
{ N_("command &Prompt"), &command_prompt, NULL },
{ N_("show &Mini status"), &show_mini_info, NULL },
{ N_("menu&Bar visible"), &menubar_visible, NULL },
{ N_("&Equal split"), &equal_split, NULL }
};
#define LAYOUT_OPTIONS_COUNT 10
#define HIGHLIGHT_OPTIONS_COUNT 2
#define SPLIT_OPTIONS_COUNT 1
#define OTHER_OPTIONS_COUNT 7
#define LAYOUT_OPTIONS_COUNT sizeof (check_options) / sizeof (check_options[0])
#define OTHER_OPTIONS_COUNT (LAYOUT_OPTIONS_COUNT - 1)
static gsize first_width, second_width;
static const char *output_lines_label;
static gsize first_width;
static const char *output_lines_label = 0;
static int output_lines_label_len;
static WButton *bleft_widget, *bright_widget;
@ -308,17 +300,15 @@ layout_callback (Dlg_head *h, Widget *sender,
if (old_output_lines != _output_lines){
old_output_lines = _output_lines;
tty_setcolor (COLOR_NORMAL);
dlg_move (h, LAYOUT_OPTIONS_COUNT, 16 + first_width);
dlg_move (h, 9, 6);
tty_print_string (output_lines_label);
dlg_move (h, LAYOUT_OPTIONS_COUNT, 10 + first_width);
dlg_move (h, 9, 6 + 3 + output_lines_label_len);
tty_printf ("%02d", _output_lines);
}
}
return MSG_HANDLED;
case DLG_POST_KEY:
_filetype_mode = check_options [9].widget->state & C_BOOL;
_permission_mode = check_options [8].widget->state & C_BOOL;
_equal_split = check_options [7].widget->state & C_BOOL;
_menubar_visible = check_options [6].widget->state & C_BOOL;
_command_prompt = check_options [5].widget->state & C_BOOL;
@ -353,7 +343,7 @@ layout_callback (Dlg_head *h, Widget *sender,
if (old_output_lines != _output_lines){
old_output_lines = _output_lines;
tty_setcolor (COLOR_NORMAL);
dlg_move (h, LAYOUT_OPTIONS_COUNT, 10 + first_width);
dlg_move (h, 9, 6 + 3 + output_lines_label_len);
tty_printf ("%02d", _output_lines);
}
}
@ -378,12 +368,12 @@ init_layout (void)
if (!i18n_layt_flag) {
gsize l1;
first_width = 19; /* length of line with '<' '>' buttons */
first_width = 0;
title1 = _(" Panel split ");
title2 = _(" Highlight... ");
title2 = _(" Console output ");
title3 = _(" Other options ");
output_lines_label = _("output lines");
output_lines_label = _("Output lines: ");
while (i--) {
s_split_direction[i] = _(s_split_direction[i]);
@ -399,25 +389,19 @@ init_layout (void)
first_width = l1;
}
l1 = str_term_width1 (title1) + 1;
l1 = str_term_width1 (title1) + 1;
if (l1 > first_width)
first_width = l1;
l1 = str_term_width1 (title2) + 1;
l1 = str_term_width1 (title2) + 1;
if (l1 > first_width)
first_width = l1;
second_width = str_term_width1 (title3) + 1;
for (i = 0; i < OTHER_OPTIONS_COUNT; i++) {
check_options[i].text = _(check_options[i].text);
l1 = str_term_width1 (check_options[i].text) + 7;
if (l1 > second_width)
second_width = l1;
}
if (console_flag) {
l1 = str_term_width1 (output_lines_label) + 13;
if (l1 > second_width)
second_width = l1;
output_lines_label_len = str_term_width1 (output_lines_label);
l1 = output_lines_label_len + 12;
if (l1 > first_width)
first_width = l1;
}
/*
@ -433,7 +417,7 @@ init_layout (void)
+ str_term_width1 (save_button) /* notice: it is 3 char less because */
+ str_term_width1 (cancel_button); /* of '&' char in button text */
i = (first_width + second_width - l1) / 4;
i = (first_width * 2 - l1) / 4;
b1 = 5 + i;
b2 = b1 + str_term_width1 (ok_button) + i + 6;
b3 = b2 + str_term_width1 (save_button) + i + 4;
@ -442,47 +426,33 @@ init_layout (void)
}
layout_dlg =
create_dlg (0, 0, 15, first_width + second_width + 9,
create_dlg (0, 0, 14, first_width * 2 + 9,
dialog_colors, layout_callback, "[Layout]",
_("Layout"), DLG_CENTER | DLG_REVERSE);
add_widget (layout_dlg, groupbox_new (2, 4, 6, first_width, title1));
add_widget (layout_dlg, groupbox_new (8, 4, 4, first_width, title2));
add_widget (layout_dlg,
groupbox_new (2, 5 + first_width, 10, second_width,
groupbox_new (2, 5 + first_width, 9, first_width,
title3));
add_widget (layout_dlg,
button_new (BY, b3, B_CANCEL, NORMAL_BUTTON, cancel_button,
button_new (11, b3, B_CANCEL, NORMAL_BUTTON, cancel_button,
0));
add_widget (layout_dlg,
button_new (BY, b2, B_EXIT, NORMAL_BUTTON, save_button,
button_new (11, b2, B_EXIT, NORMAL_BUTTON, save_button,
0));
add_widget (layout_dlg,
button_new (BY, b1, B_ENTER, DEFPUSH_BUTTON, ok_button,
button_new (11, b1, B_ENTER, DEFPUSH_BUTTON, ok_button,
0));
if (console_flag) {
add_widget (layout_dlg,
button_new (LAYOUT_OPTIONS_COUNT, 12 + first_width, B_MINUS,
NARROW_BUTTON, "&-", bminus_cback));
add_widget (layout_dlg,
button_new (LAYOUT_OPTIONS_COUNT, 7 + first_width, B_PLUS, NARROW_BUTTON,
"&+", bplus_cback));
}
#define XTRACT(i) *check_options[i].variable, check_options[i].text
for (i = 0; i < OTHER_OPTIONS_COUNT; i++) {
check_options[i].widget =
check_new (LAYOUT_OPTIONS_COUNT - i - 1, 7 + first_width, XTRACT (i));
check_new (OTHER_OPTIONS_COUNT - i + 2, 7 + first_width, XTRACT (i));
add_widget (layout_dlg, check_options[i].widget);
}
check_options[9].widget = check_new (10, 6, XTRACT (9));
add_widget (layout_dlg, check_options[9].widget);
check_options[8].widget = check_new (9, 6, XTRACT (8));
add_widget (layout_dlg, check_options[8].widget);
_filetype_mode = filetype_mode;
_permission_mode = permission_mode;
_equal_split = equal_split;
_menubar_visible = menubar_visible;
_command_prompt = command_prompt;
@ -490,6 +460,18 @@ init_layout (void)
_message_visible = message_visible;
_xterm_title = xterm_title;
_free_space = free_space;
if (console_flag) {
add_widget (layout_dlg, groupbox_new (8, 4, 3, first_width, title2));
add_widget (layout_dlg,
button_new (9, output_lines_label_len + 6 + 5, B_MINUS,
NARROW_BUTTON, "&-", bminus_cback));
add_widget (layout_dlg,
button_new (9, output_lines_label_len + 6, B_PLUS,
NARROW_BUTTON, "&+", bplus_cback));
}
bright_widget =
button_new (6, 15, B_2RIGHT, NARROW_BUTTON, "&>", b2right_cback);
add_widget (layout_dlg, bright_widget);
@ -497,12 +479,14 @@ init_layout (void)
button_new (6, 9, B_2LEFT, NARROW_BUTTON, "&<", b2left_cback);
add_widget (layout_dlg, bleft_widget);
check_options[7].widget = check_new (5, 6, XTRACT (7));
old_first_panel_size = -1;
old_horizontal_split = -1;
old_output_lines = -1;
_first_panel_size = first_panel_size;
_output_lines = output_lines;
add_widget (layout_dlg, check_options[7].widget);
radio_widget = radio_new (3, 6, 2, s_split_direction);
add_widget (layout_dlg, radio_widget);
@ -521,7 +505,7 @@ layout_change (void)
load_hint (1);
}
void layout_cmd (void)
void layout_box (void)
{
int result;
int i;
@ -532,7 +516,7 @@ void layout_cmd (void)
result = layout_dlg->ret_value;
if (result == B_ENTER || result == B_EXIT){
for (i = 0; check_options [i].text; i++)
for (i = 0; i < LAYOUT_OPTIONS_COUNT; i++)
if (check_options [i].widget)
*check_options [i].variable = check_options [i].widget->state & C_BOOL;
horizontal_split = radio_widget->sel;

View File

@ -10,7 +10,7 @@
#include "widget.h"
void layout_change (void);
void layout_cmd (void);
void layout_box (void);
void setup_panels (void);
void destroy_panels (void);
void sigwinch_handler (int dummy);

View File

@ -148,9 +148,6 @@ int cd_symlinks = 1;
/* they do a complete refresh, refreshing all the parts of the program */
int fast_refresh = 0;
/* If true, marking a files moves the cursor down */
int mark_moves_down = 1;
/* If true, at startup the user-menu is invoked */
int auto_menu = 0;
@ -191,15 +188,6 @@ int utf8_display = 0;
/* If true use the internal viewer */
int use_internal_view = 1;
/* Have we shown the fast-reload warning in the past? */
int fast_reload_w = 0;
/* Move page/item? When clicking on the top or bottom of a panel */
int mouse_move_pages = 1;
/* If true: l&r arrows are used to chdir if the input line is empty */
int navigate_with_arrows = 0;
/* The prompt */
const char *mc_prompt = NULL;
@ -302,7 +290,7 @@ mc_main_error_quark (void)
void
save_cwds_stat (void)
{
if (fast_reload)
if (panels_options.fast_reload)
{
mc_stat (current_panel->cwd, &(current_panel->dir_stat));
if (get_other_type () == view_listing)
@ -671,18 +659,16 @@ create_panel_menu (void)
{
GList *entries = NULL;
entries = g_list_append (entries, menu_entry_create (_("&Listing mode..."), CK_ListingCmd));
entries = g_list_append (entries, menu_entry_create (_("&Quick view"), CK_QuickViewCmd));
entries = g_list_append (entries, menu_entry_create (_("&Info"), CK_InfoCmd));
entries = g_list_append (entries, menu_entry_create (_("&Tree"), CK_TreeCmd));
entries = g_list_append (entries, menu_entry_create (_("File listin&g"), CK_ListingCmd));
entries = g_list_append (entries, menu_entry_create (_("&Quick view"), CK_QuickViewCmd));
entries = g_list_append (entries, menu_entry_create (_("&Info" ), CK_InfoCmd));
entries = g_list_append (entries, menu_entry_create (_("&Tree"), CK_TreeCmd));
entries = g_list_append (entries, menu_separator_create ());
entries = g_list_append (entries, menu_entry_create (_("&Sort order..."), CK_Sort));
entries = g_list_append (entries, menu_separator_create ());
entries = g_list_append (entries, menu_entry_create (_("&Filter..."), CK_FilterCmd));
entries = g_list_append (entries, menu_entry_create (_("&Listing mode..."), CK_ChangeListingCmd));
entries = g_list_append (entries, menu_entry_create (_("&Sort order..."), CK_Sort));
entries = g_list_append (entries, menu_entry_create (_("&Filter..."), CK_FilterCmd));
#ifdef HAVE_CHARSET
entries = g_list_append (entries, menu_separator_create ());
entries =
g_list_append (entries, menu_entry_create (_("&Encoding..."), CK_PanelSetPanelEncoding));
entries = g_list_append (entries, menu_entry_create (_("&Encoding..."), CK_PanelSetPanelEncoding));
#endif
#ifdef USE_NETCODE
entries = g_list_append (entries, menu_separator_create ());
@ -694,7 +680,7 @@ create_panel_menu (void)
#ifdef ENABLE_VFS_SMB
entries = g_list_append (entries, menu_entry_create (_("SM&B link..."), CK_SmblinkCmd));
#endif /* ENABLE_VFS_SMB */
#endif
#endif /* USE_NETCODE */
entries = g_list_append (entries, menu_separator_create ());
entries = g_list_append (entries, menu_entry_create (_("&Rescan"), CK_RereadCmd));
@ -798,10 +784,11 @@ create_options_menu (void)
GList *entries = NULL;
entries = g_list_append (entries, menu_entry_create (_("&Configuration..."), CK_ConfigureBox));
entries = g_list_append (entries, menu_entry_create (_("&Layout..."), CK_LayoutCmd));
entries = g_list_append (entries, menu_entry_create (_("C&onfirmation..."), CK_ConfirmBox));
entries = g_list_append (entries, menu_entry_create (_("&Display bits..."), CK_DisplayBitsBox));
entries = g_list_append (entries, menu_entry_create (_("Learn &keys..."), CK_LearnKeys));
entries = g_list_append (entries, menu_entry_create (_("&Layout..."), CK_LayoutBox));
entries = g_list_append (entries, menu_entry_create (_("&Panel options..."), CK_PanelOptionsBox));
entries = g_list_append (entries, menu_entry_create (_("C&onfirmation..."), CK_ConfirmBox));
entries = g_list_append (entries, menu_entry_create (_("&Display bits..."), CK_DisplayBitsBox));
entries = g_list_append (entries, menu_entry_create (_("Learn &keys..."), CK_LearnKeys));
#ifdef ENABLE_VFS
entries = g_list_append (entries, menu_entry_create (_("&Virtual FS..."), CK_ConfigureVfs));
#endif
@ -878,41 +865,10 @@ midnight_get_shortcut (unsigned long command)
return NULL;
}
/* Flag toggling functions */
void
toggle_fast_reload (void)
{
fast_reload = !fast_reload;
if (fast_reload_w == 0 && fast_reload)
{
message (D_NORMAL, _(" Information "),
_
(" Using the fast reload option may not reflect the exact \n"
" directory contents. In this case you'll need to do a \n"
" manual reload of the directory. See the man page for \n"
" the details. "));
fast_reload_w = 1;
}
}
void
toggle_mix_all_files (void)
{
mix_all_files = !mix_all_files;
update_panels (UP_RELOAD, UP_KEEPSEL);
}
void
toggle_show_backup (void)
{
show_backups = !show_backups;
update_panels (UP_RELOAD, UP_KEEPSEL);
}
void
toggle_show_hidden (void)
{
show_dot_files = !show_dot_files;
panels_options.show_dot_files = !panels_options.show_dot_files;
update_panels (UP_RELOAD, UP_KEEPSEL);
}
@ -924,13 +880,6 @@ toggle_panels_split (void)
do_refresh ();
}
void
toggle_kilobyte_si (void)
{
kilobyte_si = !kilobyte_si;
update_panels (UP_RELOAD, UP_KEEPSEL);
}
/*
* Just a hack for allowing url-like pathnames to be accepted from the
* command line.
@ -1176,6 +1125,9 @@ midnight_execute_cmd (Widget * sender, unsigned long command)
case CK_AddHotlist:
add2hotlist_cmd ();
break;
case CK_ChangeListingCmd:
change_listing_cmd ();
break;
case CK_ChmodCmd:
chmod_cmd ();
break;
@ -1283,8 +1235,8 @@ midnight_execute_cmd (Widget * sender, unsigned long command)
jobs_cmd ();
break;
#endif
case CK_LayoutCmd:
layout_cmd ();
case CK_LayoutBox:
layout_box ();
break;
case CK_LearnKeys:
learn_keys ();
@ -1314,6 +1266,9 @@ midnight_execute_cmd (Widget * sender, unsigned long command)
netlink_cmd ();
break;
#endif
case CK_PanelOptionsBox:
panel_options_box ();
break;
#ifdef HAVE_CHARSET
case CK_PanelSetPanelEncoding:
encoding_cmd ();

View File

@ -34,12 +34,7 @@ extern char *mc_run_param0;
*/
extern char *mc_run_param1;
/* Toggling functions */
void toggle_fast_reload (void);
void toggle_mix_all_files (void);
void toggle_show_backup (void);
void toggle_show_hidden (void);
void toggle_kilobyte_si (void);
extern int quote;
extern volatile int quit;
@ -54,20 +49,15 @@ struct WButtonBar;
void midnight_set_buttonbar (struct WButtonBar *b);
/* See main.c for details on these variables */
extern int mark_moves_down;
extern int auto_menu;
extern int pause_after_run;
extern int auto_save_setup;
extern int use_internal_view;
extern int use_internal_edit;
extern int fast_reload_w;
extern int clear_before_exec;
extern int mouse_move_pages;
extern int option_tab_spacing;
extern int quick_search_case_sensitive;
#ifdef HAVE_CHARSET
extern int source_codepage;
extern int default_source_codepage;
@ -82,7 +72,6 @@ extern int full_eight_bits;
extern int utf8_display;
extern int fast_refresh;
extern int navigate_with_arrows;
extern int drop_menus;
extern int cd_symlinks;
extern int show_all_if_ambiguous;

View File

@ -1,6 +1,6 @@
/* Configure box module for the Midnight Commander
Copyright (C) 1994, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
2007, 2009 Free Software Foundation, Inc.
2007, 2009, 2010 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -18,11 +18,12 @@
*/
/** \file option.c
* \brief Source: configure box module
* \brief Source: configure boxes module
*/
#include <config.h>
#include <stdlib.h> /* atoi() */
#include <stdio.h>
#include <string.h>
@ -31,220 +32,370 @@
#include <unistd.h>
#include "lib/global.h"
#include "lib/tty/tty.h"
#include "lib/mcconfig.h" /* For mc_config_save_file */
#include "lib/strutil.h"
#include "lib/mcconfig.h" /* mc_config_save_file() */
#include "lib/strutil.h" /* str_term_width1() */
#include "lib/tty/key.h" /* old_esc_mode_timeout */
#include "dialog.h"
#include "widget.h"
#include "setup.h" /* For save_setup() */
#include "dialog.h" /* B_ constants */
#include "setup.h" /* panels_options */
#include "main.h"
#include "panel.h" /* Needed for the externs */
#include "file.h" /* safe_delete */
#include "layout.h" /* For nice_rotating_dash */
#include "file.h" /* file_op_compute_totals */
#include "layout.h" /* nice_rotating_dash */
#include "wtools.h" /* QuickDialog */
#include "history.h" /* MC_HISTORY_ESC_TIMEOUT */
#include "option.h"
static Dlg_head *conf_dlg;
#define TOGGLE_VARIABLE 0
static int first_width, second_width;
static struct {
const char *text;
int *variable;
void (*toggle_function)(void);
WCheck *widget;
} check_options [] = {
/* other options */
{N_("safe de&Lete"), &safe_delete, TOGGLE_VARIABLE, 0 },
{N_("cd follows lin&Ks"), &cd_symlinks, TOGGLE_VARIABLE, 0 },
{N_("L&ynx-like motion"), &navigate_with_arrows,TOGGLE_VARIABLE, 0 },
{N_("rotatin&G dash"), &nice_rotating_dash,TOGGLE_VARIABLE, 0 },
{N_("co&Mplete: show all"),&show_all_if_ambiguous,TOGGLE_VARIABLE, 0 },
{N_("&Use internal view"), &use_internal_view, TOGGLE_VARIABLE, 0 },
{N_("use internal ed&It"), &use_internal_edit, TOGGLE_VARIABLE, 0 },
{N_("auto m&Enus"), &auto_menu, TOGGLE_VARIABLE, 0 },
{N_("&Auto save setup"), &auto_save_setup, TOGGLE_VARIABLE, 0 },
{N_("shell &Patterns"), &easy_patterns, TOGGLE_VARIABLE, 0 },
{N_("Compute &Totals"), &file_op_compute_totals, TOGGLE_VARIABLE, 0 },
{N_("&Verbose operation"), &verbose, TOGGLE_VARIABLE, 0 },
{N_("Mkdir autoname"), &auto_fill_mkdir_name, TOGGLE_VARIABLE, 0 },
/* panel options */
{N_("&Fast dir reload"), &fast_reload, toggle_fast_reload, 0 },
{N_("mi&X all files"), &mix_all_files, toggle_mix_all_files, 0 },
{N_("&Drop down menus"), &drop_menus, TOGGLE_VARIABLE, 0 },
{N_("ma&Rk moves down"), &mark_moves_down, TOGGLE_VARIABLE, 0 },
{N_("show &Hidden files"), &show_dot_files, toggle_show_hidden, 0 },
{N_("show &Backup files"), &show_backups, toggle_show_backup, 0 },
{N_("Use SI si&ze units"), &kilobyte_si, toggle_kilobyte_si, 0 },
{ 0, 0, 0, 0 }
};
/* Make sure this corresponds to the check_options structure */
#define OTHER_OPTIONS 13
#define PANEL_OPTIONS 7
static WRadio *pause_radio;
static const char *pause_options [3] = {
N_("&Never"),
N_("on dumb &Terminals"),
N_("Alwa&ys") };
#define PAUSE_OPTIONS (sizeof(pause_options) / sizeof(pause_options[0]))
/* Heights of the panes */
#define PY 3
#define OY PY
/* Align bottoms of "pause after run" and "other options" */
#define RY (OTHER_OPTIONS - PAUSE_OPTIONS + OY)
#define DLG_Y (OTHER_OPTIONS + 9)
#define BY (DLG_Y - 3)
/* Horizontal dimensions */
#define X_MARGIN 3
#define X_PANE_GAP 1
#define PX X_MARGIN
#define RX X_MARGIN
#define OX (first_width + X_MARGIN + X_PANE_GAP)
/* Create the "Configure options" dialog */
static void
init_configure (void)
void
configure_box (void)
{
int i;
static int i18n_config_flag = 0;
static int b1, b2, b3;
const char *ok_button = _("&OK");
const char *cancel_button = _("&Cancel");
const char *save_button = _("&Save");
static const char *title1, *title2, *title3;
int dlg_width = 60;
int dlg_height = 20;
if (!i18n_config_flag) {
register int l1;
char time_out[BUF_TINY] = "";
char *time_out_new;
/* Similar code is in layout.c (init_layout()) */
const char *pause_options[] = {
N_("&Never"),
N_("On dum&b terminals"),
N_("Alwa&ys")
};
title1 = _(" Panel options ");
title2 = _(" Pause after run... ");
title3 = _(" Other options ");
int pause_options_num = sizeof (pause_options) / sizeof (pause_options[0]);
first_width = str_term_width1 (title1) + 1;
second_width = str_term_width1 (title3) + 1;
QuickWidget quick_widgets[] = {
/* buttons */
QUICK_BUTTON (38, dlg_width, dlg_height - 3, dlg_height, N_("&Cancel"), B_CANCEL, NULL),
QUICK_BUTTON (26, dlg_width, dlg_height - 3, dlg_height, N_("&Save"), B_EXIT, NULL),
QUICK_BUTTON (14, dlg_width, dlg_height - 3, dlg_height, N_("&OK"), B_ENTER, NULL),
/* other options */
QUICK_CHECKBOX (dlg_width / 2 + 2, dlg_width, 12, dlg_height, N_("A&uto save setup"),
&auto_save_setup),
QUICK_CHECKBOX (dlg_width / 2 + 2, dlg_width, 11, dlg_height, N_("Sa&fe delete"),
&safe_delete),
QUICK_CHECKBOX (dlg_width / 2 + 2, dlg_width, 10, dlg_height, N_("Cd follows lin&ks"),
&cd_symlinks),
QUICK_CHECKBOX (dlg_width / 2 + 2, dlg_width, 9, dlg_height, N_("Rotating d&ash"),
&nice_rotating_dash),
QUICK_CHECKBOX (dlg_width / 2 + 2, dlg_width, 8, dlg_height, N_("Co&mplete: show all"),
&show_all_if_ambiguous),
QUICK_CHECKBOX (dlg_width / 2 + 2, dlg_width, 7, dlg_height, N_("Shell &patterns"),
&easy_patterns),
QUICK_CHECKBOX (dlg_width / 2 + 2, dlg_width, 6, dlg_height, N_("&Drop down menus"),
&drop_menus),
QUICK_CHECKBOX (dlg_width / 2 + 2, dlg_width, 5, dlg_height, N_("Auto m&enus"), &auto_menu),
QUICK_CHECKBOX (dlg_width / 2 + 2, dlg_width, 4, dlg_height, N_("Use internal vie&w"),
&use_internal_view),
QUICK_CHECKBOX (dlg_width / 2 + 2, dlg_width, 3, dlg_height, N_("Use internal edi&t"),
&use_internal_edit),
QUICK_GROUPBOX (dlg_width / 2, dlg_width, 2, dlg_height, dlg_width / 2 - 4, 15,
N_("Other options")),
/* pause options */
QUICK_RADIO (5, dlg_width, 13, dlg_height, pause_options_num, pause_options,
&pause_after_run),
QUICK_GROUPBOX (3, dlg_width, 12, dlg_height, dlg_width / 2 - 4, 5, N_("Pause after run")),
for (i = 0; check_options[i].text; i++) {
check_options[i].text = _(check_options[i].text);
l1 = str_term_width1 (check_options[i].text) + 7;
if (i >= OTHER_OPTIONS) {
if (l1 > first_width)
first_width = l1;
} else {
if (l1 > second_width)
second_width = l1;
}
}
/* Esc key mode */
QUICK_INPUT (10, dlg_width, 10, dlg_height, (const char *) time_out, 8, 0,
MC_HISTORY_ESC_TIMEOUT, &time_out_new),
QUICK_LABEL (5, dlg_width, 10, dlg_height, N_("Timeout:")),
QUICK_CHECKBOX (5, dlg_width, 9, dlg_height, N_("S&ingle press"), &old_esc_mode),
QUICK_GROUPBOX (3, dlg_width, 8, dlg_height, dlg_width / 2 - 4, 4, N_("Esc key mode")),
i = PAUSE_OPTIONS;
while (i--) {
pause_options[i] = _(pause_options[i]);
l1 = str_term_width1 (pause_options[i]) + 7;
if (l1 > first_width)
first_width = l1;
}
/* file operation options */
QUICK_CHECKBOX (5, dlg_width, 6, dlg_height, N_("Mkdi&r autoname"), &auto_fill_mkdir_name),
QUICK_CHECKBOX (5, dlg_width, 5, dlg_height, N_("Classic pro&gressbar"), &classic_progressbar),
QUICK_CHECKBOX (5, dlg_width, 4, dlg_height, N_("Compute tota&ls"),
&file_op_compute_totals),
QUICK_CHECKBOX (5, dlg_width, 3, dlg_height, N_("&Verbose operation"), &verbose),
QUICK_GROUPBOX (3, dlg_width, 2, dlg_height, dlg_width / 2 - 4, 6,
N_("File operation options")),
QUICK_END
};
l1 = str_term_width1 (title2) + 1;
if (l1 > first_width)
first_width = l1;
const size_t qw_num = sizeof (quick_widgets) / sizeof (quick_widgets[0]) - 1;
l1 = 11 + str_term_width1 (ok_button)
+ str_term_width1 (save_button)
+ str_term_width1 (cancel_button);
QuickDialog Quick_input = {
dlg_width, dlg_height, -1, -1,
N_("Configure options"), "[Configuration]",
quick_widgets, TRUE
};
i = (first_width + second_width - l1) / 4;
b1 = 5 + i;
b2 = b1 + str_term_width1 (ok_button) + i + 6;
b3 = b2 + str_term_width1 (save_button) + i + 4;
int qd_result;
i18n_config_flag = 1;
int b0_len, b1_len, b2_len;
int b_len, c_len, g_len, l_len;
size_t i;
#ifdef ENABLE_NLS
{
for (i = 0; i < qw_num; i++)
if (i < 3)
/* buttons */
quick_widgets[i].u.button.text = _(quick_widgets[i].u.button.text);
else if ((i == 13) || (i == 15) || (i == 19) || (i == 24))
/* groupboxes */
quick_widgets[i].u.groupbox.title = _(quick_widgets[i].u.groupbox.title);
else if (i == 14)
{
/* radio button */
size_t j;
for (j = 0; j < pause_options_num; j++)
pause_options[j] = _(pause_options[j]);
}
else if (i == 17)
/* label */
quick_widgets[i].u.label.text = _(quick_widgets[i].u.label.text);
else if (i != 16)
/* checkboxes */
quick_widgets[i].u.checkbox.text = _(quick_widgets[i].u.checkbox.text);
Quick_input.title = _(Quick_input.title);
}
#endif /* ENABLE_NLS */
conf_dlg =
create_dlg (0, 0, DLG_Y,
first_width + second_width + 2 * X_MARGIN + X_PANE_GAP,
dialog_colors, NULL, "[Configuration]",
_("Configure options"), DLG_CENTER | DLG_REVERSE);
/* calculate widget and dialog widths */
/* dialog title */
dlg_width = max (dlg_width, str_term_width1 (Quick_input.title) + 4);
/* buttons */
b0_len = str_term_width1 (quick_widgets[0].u.button.text) + 3;
b1_len = str_term_width1 (quick_widgets[1].u.button.text) + 3;
b2_len = str_term_width1 (quick_widgets[2].u.button.text) + 5;
b_len = b0_len + b1_len + b2_len + 2;
add_widget (conf_dlg,
groupbox_new (PY, PX, PANEL_OPTIONS + 2, first_width, title1));
/* checkboxes within groupboxes */
c_len = 0;
for (i = 3; i < 24; i++)
if ((i < 13) || (i == 18) || (i > 19))
c_len = max (c_len, str_term_width1 (quick_widgets[i].u.checkbox.text) + 3);
/* radiobuttons */
for (i = 0; i < pause_options_num; i++)
c_len = max (c_len, str_term_width1 (pause_options[i]) + 3);
/* label + input */
l_len = str_term_width1 (quick_widgets[17].u.label.text);
c_len = max (c_len, l_len + 1 + 8);
/* groupboxes */
g_len = max (c_len + 2, str_term_width1 (quick_widgets[24].u.groupbox.title) + 4);
g_len = max (g_len, str_term_width1 (quick_widgets[19].u.groupbox.title) + 4);
g_len = max (g_len, str_term_width1 (quick_widgets[15].u.groupbox.title) + 4);
g_len = max (g_len, str_term_width1 (quick_widgets[13].u.groupbox.title) + 4);
/* dialog width */
Quick_input.xlen = max (dlg_width, g_len * 2 + 9);
Quick_input.xlen = max (Quick_input.xlen, b_len + 2);
if ((Quick_input.xlen & 1) != 0)
Quick_input.xlen++;
add_widget (conf_dlg,
groupbox_new (RY, RX, PAUSE_OPTIONS + 2, first_width, title2));
/* fix widget parameters */
for (i = 0; i < qw_num; i++)
quick_widgets[i].x_divisions = Quick_input.xlen;
add_widget (conf_dlg,
groupbox_new (OY, OX, OTHER_OPTIONS + 2, second_width, title3));
/* groupboxes */
quick_widgets[15].u.groupbox.width =
quick_widgets[19].u.groupbox.width =
quick_widgets[24].u.groupbox.width = Quick_input.xlen / 2 - 4;
quick_widgets[13].u.groupbox.width = Quick_input.xlen / 2 - 3;
add_widget (conf_dlg,
button_new (BY, b3, B_CANCEL, NORMAL_BUTTON,
cancel_button, 0));
/* input */
quick_widgets[16].relative_x = quick_widgets[17].relative_x + l_len + 1;
quick_widgets[16].u.input.len = quick_widgets[19].u.groupbox.width - l_len - 4;
add_widget (conf_dlg,
button_new (BY, b2, B_EXIT, NORMAL_BUTTON,
save_button, 0));
/* right column */
quick_widgets[13].relative_x = Quick_input.xlen / 2;
for (i = 3; i < 13; i++)
quick_widgets[i].relative_x = quick_widgets[13].relative_x + 2;
add_widget (conf_dlg,
button_new (BY, b1, B_ENTER, DEFPUSH_BUTTON,
ok_button, 0));
/* buttons */
quick_widgets[2].relative_x = (Quick_input.xlen - b_len) / 2;
quick_widgets[1].relative_x = quick_widgets[2].relative_x + b2_len + 1;
quick_widgets[0].relative_x = quick_widgets[1].relative_x + b1_len + 1;
#define XTRACT(i) *check_options[i].variable, check_options[i].text
g_snprintf (time_out, sizeof (time_out), "%ld", old_esc_mode_timeout);
/* Add checkboxes for "other options" */
for (i = 0; i < OTHER_OPTIONS; i++) {
check_options[i].widget =
check_new (OY + (OTHER_OPTIONS - i), OX + 2, XTRACT (i));
add_widget (conf_dlg, check_options[i].widget);
}
qd_result = quick_dialog (&Quick_input);
pause_radio =
radio_new (RY + 1, RX + 2, 3, pause_options);
pause_radio->sel = pause_after_run;
add_widget (conf_dlg, pause_radio);
if ((qd_result == B_ENTER) || (qd_result == B_EXIT))
old_esc_mode_timeout = atoi (time_out_new);
/* Add checkboxes for "panel options" */
for (i = 0; i < PANEL_OPTIONS; i++) {
check_options[i + OTHER_OPTIONS].widget =
check_new (PY + (PANEL_OPTIONS - i), PX + 2,
XTRACT (i + OTHER_OPTIONS));
add_widget (conf_dlg, check_options[i + OTHER_OPTIONS].widget);
g_free (time_out_new);
/* Save button */
if (qd_result == B_EXIT)
{
save_config ();
mc_config_save_file (mc_main_config, NULL);
}
}
void configure_box (void)
void
panel_options_box (void)
{
int result, i;
init_configure ();
run_dlg (conf_dlg);
int dlg_width = 60;
int dlg_height = 19;
result = conf_dlg->ret_value;
if (result == B_ENTER || result == B_EXIT){
for (i = 0; check_options [i].text; i++)
if (check_options [i].widget->state & C_CHANGE){
if (check_options [i].toggle_function)
(*check_options [i].toggle_function)();
else
*check_options [i].variable =
!(*check_options [i].variable);
}
pause_after_run = pause_radio->sel;
const char *qsearch_options[] = {
N_("Case &insensitive"),
N_("Case s&ensitive"),
N_("Use panel sort mo&de")
};
QuickWidget quick_widgets[] = {
/* buttons */
QUICK_BUTTON (38, dlg_width, dlg_height - 3, dlg_height, N_("&Cancel"), B_CANCEL, NULL),
QUICK_BUTTON (26, dlg_width, dlg_height - 3, dlg_height, N_("&Save"), B_EXIT, NULL),
QUICK_BUTTON (14, dlg_width, dlg_height - 3, dlg_height, N_("&OK"), B_ENTER, NULL),
/* quick search */
QUICK_RADIO (dlg_width / 2 + 2, dlg_width, 12, dlg_height, QSEARCH_NUM, qsearch_options,
(int *) &panels_options.qsearch_mode),
QUICK_GROUPBOX (dlg_width / 2, dlg_width, 11, dlg_height, dlg_width / 2 - 4, QSEARCH_NUM + 2,
N_("Quick search")),
/* file highlighting */
QUICK_CHECKBOX (dlg_width / 2 + 2, dlg_width, 9, dlg_height, N_("&Permissions"),
&panels_options.permission_mode),
QUICK_CHECKBOX (dlg_width / 2 + 2, dlg_width, 8, dlg_height, N_("File &types"),
&panels_options.filetype_mode),
QUICK_GROUPBOX (dlg_width / 2, dlg_width, 7, dlg_height, dlg_width / 2 - 4, 4,
N_("File highlight")),
/* navigation */
QUICK_CHECKBOX (dlg_width / 2 + 2, dlg_width, 5, dlg_height, N_("&Mouse page scrolling"),
&panels_options.mouse_move_pages),
QUICK_CHECKBOX (dlg_width / 2 + 2, dlg_width, 4, dlg_height, N_("Pa&ge scrolling"),
&panels_options.scroll_pages),
QUICK_CHECKBOX (dlg_width / 2 + 2, dlg_width, 3, dlg_height, N_("L&ynx-like motion"),
&panels_options.navigate_with_arrows),
QUICK_GROUPBOX (dlg_width / 2, dlg_width, 2, dlg_height, dlg_width / 2 - 4, 5,
N_("Navigation")),
/* main panel options */
QUICK_CHECKBOX (5, dlg_width, 10, dlg_height, N_("A&uto save panels setup"),
&panels_options.auto_save_setup),
QUICK_CHECKBOX (5, dlg_width, 9, dlg_height, N_("Re&verse files only"),
&panels_options.reverse_files_only),
QUICK_CHECKBOX (5, dlg_width, 8, dlg_height, N_("Ma&rk moves down"),
&panels_options.mark_moves_down),
QUICK_CHECKBOX (5, dlg_width, 7, dlg_height, N_("&Fast dir reload"),
&panels_options.fast_reload),
QUICK_CHECKBOX (5, dlg_width, 6, dlg_height, N_("Show &hidden files"),
&panels_options.show_dot_files),
QUICK_CHECKBOX (5, dlg_width, 5, dlg_height, N_("Show &backup files"),
&panels_options.show_backups),
QUICK_CHECKBOX (5, dlg_width, 4, dlg_height, N_("Mi&x all files"),
&panels_options.mix_all_files),
QUICK_CHECKBOX (5, dlg_width, 3, dlg_height, N_("Use SI si&ze units"),
&panels_options.kilobyte_si),
QUICK_GROUPBOX (3, dlg_width, 2, dlg_height, dlg_width / 2 - 4, 14, N_("Main panel options")),
QUICK_END
};
const size_t qw_num = sizeof (quick_widgets) / sizeof (quick_widgets[0]) - 1;
QuickDialog Quick_input = {
dlg_width, dlg_height, -1, -1,
N_("Panel options"), "[Panel options]",
quick_widgets, TRUE
};
int qd_result;
int b0_len, b1_len, b2_len;
int b_len, c_len, g_len;
size_t i;
#ifdef ENABLE_NLS
{
for (i = 0; i < qw_num; i++)
if (i < 3)
/* buttons */
quick_widgets[i].u.button.text = _(quick_widgets[i].u.button.text);
else if (i == 3)
{
/* radio button */
size_t j;
for (j = 0; j < QSEARCH_NUM; j++)
qsearch_options[j] = _(qsearch_options[j]);
}
else if ((i == 4) || (i == 7) || (i == 11) || (i == 20))
/* groupboxes */
quick_widgets[i].u.groupbox.title = _(quick_widgets[i].u.groupbox.title);
else
/* checkboxes */
quick_widgets[i].u.checkbox.text = _(quick_widgets[i].u.checkbox.text);
Quick_input.title = _(Quick_input.title);
}
#endif /* ENABLE_NLS */
/* calculate widget and dialog widths */
/* dialog title */
dlg_width = max (dlg_width, str_term_width1 (Quick_input.title) + 4);
/* buttons */
b0_len = str_term_width1 (quick_widgets[0].u.button.text) + 3;
b1_len = str_term_width1 (quick_widgets[1].u.button.text) + 3;
b2_len = str_term_width1 (quick_widgets[2].u.button.text) + 5;
b_len = b0_len + b1_len + b2_len + 2;
/* checkboxes within groupboxes */
c_len = 0;
for (i = 5; i < 20; i++)
if ((i != 7) && (i != 11))
c_len = max (c_len, str_term_width1 (quick_widgets[i].u.checkbox.text) + 4);
/* radiobuttons */
for (i = 0; i < QSEARCH_NUM; i++)
c_len = max (c_len, str_term_width1 (qsearch_options[i]) + 3);
/* groupboxes */
g_len = max (c_len + 2, str_term_width1 (quick_widgets[4].u.groupbox.title) + 4);
g_len = max (g_len, str_term_width1 (quick_widgets[ 7].u.groupbox.title) + 4);
g_len = max (g_len, str_term_width1 (quick_widgets[11].u.groupbox.title) + 4);
g_len = max (g_len, str_term_width1 (quick_widgets[20].u.groupbox.title) + 4);
/* dialog width */
Quick_input.xlen = max (dlg_width, g_len * 2 + 9);
Quick_input.xlen = max (Quick_input.xlen, b_len + 2);
if ((Quick_input.xlen & 1) != 0)
Quick_input.xlen++;
/* fix widget parameters */
for (i = 0; i < qw_num; i++)
quick_widgets[i].x_divisions = Quick_input.xlen;
/* groupboxes */
quick_widgets[4].u.groupbox.width =
quick_widgets[ 7].u.groupbox.width =
quick_widgets[11].u.groupbox.width = Quick_input.xlen / 2 - 3;
quick_widgets[20].u.groupbox.width = Quick_input.xlen / 2 - 4;
/* right column */
quick_widgets[4].relative_x =
quick_widgets[ 7].relative_x =
quick_widgets[11].relative_x = Quick_input.xlen / 2;
for (i = 3; i < 11; i++)
if ((i != 4) && (i != 7))
quick_widgets[i].relative_x = quick_widgets[4].relative_x + 2;
/* buttons */
quick_widgets[2].relative_x = (Quick_input.xlen - b_len) / 2;
quick_widgets[1].relative_x = quick_widgets[2].relative_x + b2_len + 1;
quick_widgets[0].relative_x = quick_widgets[1].relative_x + b1_len + 1;
qd_result = quick_dialog (&Quick_input);
if ((qd_result == B_ENTER) || (qd_result == B_EXIT))
{
if (!panels_options.fast_reload_msg_shown && panels_options.fast_reload)
{
message (D_NORMAL, _("Information"),
_(" Using the fast reload option may not reflect the exact \n"
" directory contents. In this case you'll need to do a \n"
" manual reload of the directory. See the man page for \n"
" the details. "));
panels_options.fast_reload_msg_shown = TRUE;
}
update_panels (UP_RELOAD, UP_KEEPSEL);
}
/* If they pressed the save button */
if (result == B_EXIT){
save_configure ();
mc_config_save_file (mc_main_config, NULL);
if (qd_result == B_EXIT)
{
/* save panel options */
panels_save_options ();
mc_config_save_file (mc_main_config, NULL);
}
destroy_dlg (conf_dlg);
}

View File

@ -7,5 +7,6 @@
#define MC_OPTION_H
void configure_box (void);
void panel_options_box (void);
#endif

View File

@ -104,11 +104,7 @@ WPanel *panel_new_with_dir (const char *panel_name, const char *dr);
void panel_clean_dir (WPanel *panel);
extern int torben_fj_mode;
extern int permission_mode;
extern int filetype_mode;
extern int show_mini_info;
extern int panel_scroll_pages;
extern int fast_reload;
void panel_reload (WPanel *panel);
void panel_set_sort_order (WPanel *panel, const panel_field_t *sort_order);

View File

@ -97,33 +97,12 @@ typedef struct format_e
const char *id;
} format_e;
enum
{
QSEARCH_CASE_INSENSITIVE = 0, /* quick search in case insensitive mode */
QSEARCH_CASE_SENSITIVE = 1, /* quick search in case sensitive mode */
QSEARCH_PANEL_CASE = 2 /* quick search get value from panel case_sensitive */
};
int quick_search_case_sensitive = QSEARCH_PANEL_CASE;
/* If true, show the mini-info on the panel */
int show_mini_info = 1;
/* If true, then use stat() on the cwd to determine directory changes */
int fast_reload = 0;
/* If true, use some usability hacks by Torben */
int torben_fj_mode = 0;
/* If true, up/down keys scroll the pane listing by pages */
int panel_scroll_pages = 1;
/* If 1, we use permission hilighting */
int permission_mode = 0;
/* If 1 - then add per file type hilighting */
int filetype_mode = 1;
/* The hook list for the select file function */
Hook *select_file_hook = 0;
@ -266,7 +245,7 @@ string_file_size (file_entry * fe, int len)
else
#endif
{
size_trunc_len (buffer, (unsigned int) len, fe->st.st_size, 0);
size_trunc_len (buffer, (unsigned int) len, fe->st.st_size, 0, panels_options.kilobyte_si);
}
return buffer;
}
@ -676,7 +655,7 @@ file_compute_color (int attr, file_entry * fe)
return (NORMAL_COLOR);
case NORMAL:
default:
if (!filetype_mode)
if (!panels_options.filetype_mode)
return (NORMAL_COLOR);
}
@ -727,7 +706,7 @@ format_file (char *dest, int limit, WPanel * panel, int file_index, int width, i
break;
perm = 0;
if (permission_mode)
if (panels_options.permission_mode)
{
if (!strcmp (format->id, "perm"))
perm = 1;
@ -906,7 +885,7 @@ display_total_marked_size (WPanel * panel, int y, int x, gboolean size_only)
*/
g_snprintf (b_bytes, sizeof (b_bytes),
ngettext ("%s byte", "%s bytes", (unsigned long) panel->total),
size_trunc_sep (panel->total));
size_trunc_sep (panel->total, panels_options.kilobyte_si));
if (!size_only)
g_snprintf (buffer, sizeof (buffer),
ngettext ("%s in %d file", "%s in %d files", panel->marked),
@ -973,8 +952,8 @@ show_free_space (WPanel * panel)
if (myfs_stats.avail > 0 || myfs_stats.total > 0)
{
char buffer1[6], buffer2[6], tmp[BUF_SMALL];
size_trunc_len (buffer1, sizeof (buffer1) - 1, myfs_stats.avail, 1);
size_trunc_len (buffer2, sizeof (buffer2) - 1, myfs_stats.total, 1);
size_trunc_len (buffer1, sizeof (buffer1) - 1, myfs_stats.avail, 1, panels_options.kilobyte_si);
size_trunc_len (buffer2, sizeof (buffer2) - 1, myfs_stats.total, 1, panels_options.kilobyte_si);
g_snprintf (tmp, sizeof (tmp), " %s/%s (%d%%) ", buffer1, buffer2,
myfs_stats.total > 0 ?
(int) (100 * (double) myfs_stats.avail / myfs_stats.total) : 0);
@ -1004,10 +983,9 @@ show_dir (WPanel * panel)
widget_move (&panel->widget, 0, 1);
tty_print_string (panel_history_prev_item_sign);
tmp = (show_dot_files) ? panel_hiddenfiles_sign_show : panel_hiddenfiles_sign_hide;
tmp =
g_strdup_printf ("%s[%s]%s", tmp, panel_history_show_list_sign,
panel_history_next_item_sign);
tmp = panels_options.show_dot_files ? panel_hiddenfiles_sign_show : panel_hiddenfiles_sign_hide;
tmp = g_strdup_printf ("%s[%s]%s", tmp, panel_history_show_list_sign,
panel_history_next_item_sign);
widget_move (&panel->widget, 0, panel->widget.cols - 6);
tty_print_string (tmp);
@ -1033,7 +1011,8 @@ show_dir (WPanel * panel)
char buffer[BUF_SMALL];
g_snprintf (buffer, sizeof (buffer), " %s ",
size_trunc_sep (panel->dir.list[panel->selected].st.st_size));
size_trunc_sep (panel->dir.list[panel->selected].st.st_size,
panels_options.kilobyte_si));
tty_setcolor (NORMAL_COLOR);
widget_move (&panel->widget, panel->widget.lines - 1, 4);
tty_print_string (buffer);
@ -1435,7 +1414,7 @@ panel_reload (WPanel * panel)
{
struct stat current_stat;
if (fast_reload && !stat (panel->cwd, &current_stat)
if (panels_options.fast_reload && !stat (panel->cwd, &current_stat)
&& current_stat.st_ctime == panel->dir_stat.st_ctime
&& current_stat.st_mtime == panel->dir_stat.st_mtime)
return;
@ -1957,21 +1936,19 @@ mini_status_format (WPanel * panel)
static cb_ret_t
maybe_cd (int move_up_dir)
{
if (navigate_with_arrows)
if (panels_options.navigate_with_arrows && (cmdline->buffer[0] == '\0'))
{
if (!cmdline->buffer[0])
if (move_up_dir)
{
if (move_up_dir)
{
do_cd ("..", cd_exact);
return MSG_HANDLED;
}
if (S_ISDIR (selection (current_panel)->st.st_mode)
|| link_isdir (selection (current_panel)))
{
do_cd (selection (current_panel)->fname, cd_exact);
return MSG_HANDLED;
}
do_cd ("..", cd_exact);
return MSG_HANDLED;
}
if (S_ISDIR (selection (current_panel)->st.st_mode)
|| link_isdir (selection (current_panel)))
{
do_cd (selection (current_panel)->fname, cd_exact);
return MSG_HANDLED;
}
}
return MSG_NOT_HANDLED;
@ -2057,7 +2034,7 @@ move_down (WPanel * panel)
unselect_item (panel);
panel->selected++;
if (panel->selected - panel->top_file == ITEMS (panel) && panel_scroll_pages)
if (panels_options.scroll_pages && panel->selected - panel->top_file == ITEMS (panel))
{
/* Scroll window half screen */
panel->top_file += ITEMS (panel) / 2;
@ -2076,7 +2053,7 @@ move_up (WPanel * panel)
unselect_item (panel);
panel->selected--;
if (panel->selected < panel->top_file && panel_scroll_pages)
if (panels_options.scroll_pages && panel->selected < panel->top_file)
{
/* Scroll window half screen */
panel->top_file -= ITEMS (panel) / 2;
@ -2357,7 +2334,7 @@ static void
do_mark_file (WPanel * panel, mark_act_t do_move)
{
do_file_mark (panel, panel->selected, selection (panel)->f.marked ? 0 : 1);
if ((mark_moves_down && do_move == MARK_DOWN) || do_move == MARK_FORCE_DOWN)
if ((panels_options.mark_moves_down && do_move == MARK_DOWN) || do_move == MARK_FORCE_DOWN)
move_down (panel);
else if (do_move == MARK_FORCE_UP)
move_up (panel);
@ -2438,7 +2415,7 @@ do_search (WPanel * panel, int c_code)
search = mc_search_new (esc_str, -1);
search->search_type = MC_SEARCH_T_GLOB;
search->is_entire_line = TRUE;
switch (quick_search_case_sensitive)
switch (panels_options.qsearch_mode)
{
case QSEARCH_CASE_SENSITIVE:
search->is_case_sensitive = TRUE;
@ -3311,7 +3288,7 @@ do_panel_event (Gpm_Event * event, WPanel * panel, gboolean * redir)
{
if (is_active)
{
if (panel->top_file > 0)
if (panels_options.mouse_move_pages && (panel->top_file > 0))
prev_page (panel);
else /* We are in first page */
move_up (panel);
@ -3323,7 +3300,8 @@ do_panel_event (Gpm_Event * event, WPanel * panel, gboolean * redir)
{
if (is_active)
{
if (panel->top_file + ITEMS (panel) < panel->count)
if (panels_options.mouse_move_pages
&& (panel->top_file + ITEMS (panel) < panel->count))
next_page (panel);
else /* We are in last page */
move_down (panel);
@ -3339,32 +3317,20 @@ do_panel_event (Gpm_Event * event, WPanel * panel, gboolean * redir)
if (!is_active)
change_panel ();
if (event->y <= 0)
{
mark_if_marking (panel, event);
if (mouse_move_pages)
prev_page (panel);
else
move_up (panel);
return MOU_REPEAT;
}
if (event->y > lines)
return MOU_NORMAL;
if (!((panel->top_file + event->y <= panel->count) && event->y <= lines))
{
mark_if_marking (panel, event);
if (mouse_move_pages)
next_page (panel);
else
move_down (panel);
return MOU_REPEAT;
}
my_index = panel->top_file + event->y - 1;
if (panel->split && (event->x > ((panel->widget.cols - 2) / 2)))
my_index += llines (panel);
if (my_index >= panel->count)
if (panel->top_file + event->y > panel->count)
my_index = panel->count - 1;
else
{
my_index = panel->top_file + event->y - 1;
if (panel->split && (event->x > ((panel->widget.cols - 2) / 2)))
my_index += llines (panel);
if (my_index >= panel->count)
my_index = panel->count - 1;
}
if (my_index != panel->selected)
{

File diff suppressed because it is too large Load Diff

View File

@ -6,39 +6,82 @@
#ifndef MC_SETUP_H
#define MC_SETUP_H
#include "panel.h"
#include <config.h>
char *setup_init (void);
void save_layout (void);
void save_configure (void);
void load_setup (void);
gboolean save_setup (void);
void done_setup (void);
void load_key_defs (void);
char *load_anon_passwd (void);
#include "lib/global.h" /* GError */
void panel_save_setup (struct WPanel *panel, const char *section);
void panel_load_setup (struct WPanel *panel, const char *section);
void save_panel_types (void);
void load_keymap_defs (void);
void free_keymap_defs (void);
#include "panel.h" /* WPanel, panel_view_mode_t */
/* global paremeters */
extern char *profile_name;
extern char *global_profile_name;
extern char *setup_color_string;
extern char *term_color_string;
extern char *color_terminal_string;
extern int verbose;
extern int mouse_close_dialog;
extern int select_flags;
extern int setup_copymove_persistent_attr;
extern int num_history_items_recorded;
extern int classic_progressbar;
char *setup_init (void);
void load_setup (void);
gboolean save_setup (void);
void done_setup (void);
void save_config (void);
void setup_save_config_show_error (const char *filename, GError **error);
void save_layout (void);
void load_key_defs (void);
#if defined(ENABLE_VFS) && defined (USE_NETCODE)
char *load_anon_passwd (void);
#endif /* ENABLE_VFS && defined USE_NETCODE */
void load_keymap_defs (void);
void free_keymap_defs (void);
typedef enum
{
QSEARCH_CASE_INSENSITIVE = 0, /* quick search in case insensitive mode */
QSEARCH_CASE_SENSITIVE = 1, /* quick search in case sensitive mode */
QSEARCH_PANEL_CASE = 2, /* quick search get value from panel case_sensitive */
QSEARCH_NUM
} qsearch_mode_t;
/* panels ini options; [Panels] section */
typedef struct
{
gboolean kilobyte_si; /* If TRUE, SI units (1000 based) will be used for larger units
* (kilobyte, megabyte, ...). If FALSE, binary units (1024 based) will be used */
gboolean mix_all_files; /* If FALSE then directories are shown separately from files */
gboolean show_backups; /* If TRUE, show files ending in ~ */
gboolean show_dot_files; /* If TRUE, show files starting with a dot */
gboolean fast_reload; /* If TRUE then use stat() on the cwd to determine directory changes */
gboolean fast_reload_msg_shown; /* Have we shown the fast-reload warning in the past? */
gboolean mark_moves_down; /* If TRUE, marking a files moves the cursor down */
gboolean reverse_files_only; /* If TRUE, only selection of files is inverted */
gboolean auto_save_setup;
gboolean navigate_with_arrows; /* If TRUE: l&r arrows are used to chdir if the input line is empty */
gboolean scroll_pages; /* If TRUE, panel is scrolled by half the display when the cursor reaches
the end or the beginning of the panel */
gboolean mouse_move_pages; /* Scroll page/item using mouse wheel */
gboolean filetype_mode; /* If TRUE then add per file type hilighting */
gboolean permission_mode; /* If TRUE, we use permission hilighting */
qsearch_mode_t qsearch_mode; /* Quick search mode */
} panels_options_t;
extern panels_options_t panels_options;
extern panel_view_mode_t startup_left_mode;
extern panel_view_mode_t startup_right_mode;
extern int verbose;
extern int mouse_close_dialog;
extern int reverse_files_only;
extern int select_flags;
void panel_load_setup (struct WPanel *panel, const char *section);
void panel_save_setup (struct WPanel *panel, const char *section);
void save_panel_types (void);
void panels_load_options (void);
void panels_save_options (void);
extern int setup_copymove_persistent_attr;
void setup_save_config_show_error(const char *filename, GError **error);
#endif
#endif /* MC_SETUP_H */

View File

@ -43,10 +43,11 @@
#include "lib/tty/key.h"
#include "lib/strutil.h"
#include "src/main.h"
#include "src/dialog.h" /* Dlg_head */
#include "src/charsets.h"
#include "src/widget.h" /* WButtonBar */
#include "src/charsets.h"
#include "src/setup.h" /* panels_options */
#include "src/main.h" /* source_codepage */
#include "internal.h"
#include "mcviewer.h"
@ -152,7 +153,7 @@ mcview_display_status (mcview_t * view)
}
else
{
size_trunc_len (buffer, 5, mcview_get_filesize (view), 0);
size_trunc_len (buffer, 5, mcview_get_filesize (view), 0, panels_options.kilobyte_si);
tty_printf ("%9lli/%s%s %s", view->dpy_end,
buffer, mcview_may_still_grow (view) ? "+" : " ",
#ifdef HAVE_CHARSET

View File

@ -60,6 +60,7 @@
#include "keybind.h" /* global_keymap_t */
#include "panel.h" /* current_panel */
#include "main.h" /* confirm_history_cleanup */
#include "setup.h" /* num_history_items_recorded */
static void
widget_selectcolor (Widget * w, gboolean focused, gboolean hotkey)

View File

@ -411,6 +411,13 @@ quick_dialog_skip (QuickDialog *qd, int nskip)
qw->widget = (Widget *) label_new (ypos, xpos, I18N (qw->u.label.text));
break;
case quick_groupbox:
qw->widget = (Widget *) groupbox_new (ypos, xpos,
qw->u.groupbox.height,
qw->u.groupbox.width,
I18N (qw->u.groupbox.title));
break;
case quick_radio:
{
int i;

View File

@ -31,7 +31,8 @@ typedef enum {
quick_button = 2,
quick_input = 3,
quick_label = 4,
quick_radio = 5
quick_radio = 5,
quick_groupbox = 6
} quick_t;
/* The widget is placed on relative_?/divisions_? of the parent widget */
@ -75,6 +76,12 @@ typedef struct {
const char **items;
int *value; /* in/out */
} radio;
struct {
int width;
int height;
const char *title;
} groupbox;
} u;
} QuickWidget;
@ -162,6 +169,23 @@ typedef struct {
} \
}
#define QUICK_GROUPBOX(x, xdiv, y, ydiv, w, h, t) \
{ \
.widget_type = quick_groupbox, \
.relative_x = x, \
.x_divisions = xdiv, \
.relative_y = y, \
.y_divisions = ydiv, \
.widget = NULL, \
.u = { \
.groupbox = { \
.width = w, \
.height = h, \
.title = t \
} \
} \
}
#define QUICK_END \
{ \
.widget_type = quick_end, \