Home
mc-dev
mc-dev@conference.jabber.ru
22.04.2011< ^ >

Тема: http://www.midnight-commander.org | Latest stable release: 4.7.5.2
[05:46:35] iNode зашёл в конференцию
[06:19:49] andrew_b зашёл в конференцию
[06:51:29] il.smind зашёл в конференцию
[07:45:50] <Зося Синицкая> RSS: Новости для Midnight Commander
• Ticket #2542 (not all AMD64 registers are highlighted in mcedit) created
http://www.midnight-commander.org/ticket/2542
• Ticket #2542 (not all AMD64 registers are highlighted in mcedit) updated
http://www.midnight-commander.org/ticket/2542#comment:1
[08:55:57] <andrew_b> .
[08:56:20] <il.smind > ..
[09:11:42] slavazanko/w вышел из конференции
[09:11:52] slavazanko/w зашёл в конференцию
[09:12:01] <slavazanko/w> ...
[09:12:31] <andrew_b> Проверка сввязи.
[09:12:37] <slavazanko/w> угу
[09:13:18] <il.smind > подведём итоги?
[09:13:31] <slavazanko/w> какиме?
[09:38:46] <il.smind > как функция может вернуть адрес функции?
[09:39:20] <il.smind > допустим у меня есть функция info
[09:40:13] <andrew_b> typedef (*pointer_to_function) (function arguments)
[09:40:25] <il.smind > допустим

int info (void *show_conf)
[09:40:55] <slavazanko/w> pointer_to_function myfinc(void)
{
return info;
}
[09:40:57] <il.smind > что надо сделать внутри?
[09:41:08] <slavazanko/w> имена функций - это фактически именованные указатели
[09:41:16] <il.smind > а...
[09:41:26] <slavazanko/w> return имя_функции
[09:41:52] <slavazanko/w> без ()
[09:42:06] <il.smind > т.е. если я сделаю внутри sfpt
[09:42:18] <il.smind > dialogs.c
[09:42:37] andrew_b вышел из конференции
[09:42:40] <slavazanko/w> ты опять летишь впереди паровоза
[09:43:07] <il.smind > там сделаю configure_sftp
[09:43:37] <il.smind > то
[09:43:54] <il.smind > я смогу отдать указатель на configure_sftp
[09:44:19] <il.smind > например для построения меню?
[09:44:44] <slavazanko/w> Плагин строит сам меню?
[09:45:01] <il.smind > slavazanko/w: не меню а диалог
[09:45:10] <il.smind > диалог настроек
[09:45:35] <slavazanko/w> а кто будет вызывать диалог?
[09:45:46] <slavazanko/w> в какой части кода будет вызван этот диалог?
[09:45:53] <il.smind > глобальное меню вызывает info
[09:46:14] <slavazanko/w> из глобального меню?
[09:46:16] <il.smind > info возвращает указатель
[09:46:23] <il.smind > slavazanko/w: да
[09:46:26] <Зося Синицкая> il.smind : Конференций: 3 (подробнее where)
Сервер: conference.jabber.ru | Ник: Зося_Синицкая
Лимит размера сообщений: 2048
Локальное время: 22.04.2011 11:46:19
Время работы: 2 месяца 1 день 19:27:17, Последняя сессия: 19 дней 01:24:04
Флуд: вкл | Цензор: выкл | Префикс команд: отсутствует
Выполнено тредов: 268307 | Ошибок: 0
Сообщений вх: 7811 | исх: 87
Презенсов вх: 23516 | исх: 107
Iq запросов вх: 4331 | исх: 3747
Ошибок исх: 0
Рабочих циклов: 35559 | холостых: 1653865
[09:46:37] <slavazanko/w> вот дура
[09:47:19] <slavazanko/w> Можешь показать сейчас, где именно? Что-то мне подсказывает, что там уж очень явно напрашивается mc_event
[09:47:45] <il.smind > я незнаю где
[09:47:55] <il.smind > ну пусть допустим
[09:49:09] <il.smind > Options \ VFS modules\ SFTP configuration
[09:49:31] <il.smind > подменю VFS modules строится динамически
[09:50:12] <il.smind > на основании того что получего от info
[09:52:13] <il.smind > предположим что info умеет возвращать строку "SFTP configuration" и указатель на configure_sftp
[09:52:34] <slavazanko/w> вот смотри, идея такая:
меню или что там ещё вызывает событие. Передаёт в событие название VFS-плагина.
Плагин (sftp в нашем случае) получает событие, проверяет. что в параметрах его имя. Если нет - выходит(передаёт обработку события следующему обработчику).
Если имя совпало, то обработчик события выполняет некие действия. Например. рисует диалог.
И да, таким же образом можно составить список VFS-плагинов, которые должны быть добавлены в это подменю.

Плагины вешают обработчик на уже второе событие... если происходит событие. то плагины добавляют в массив своё имя и передают управление дальше...
[09:53:33] <il.smind > а прямо сейчас это можно использовать?
[09:53:47] <slavazanko/w> да
[09:53:50] <slavazanko/w> прямо сейчас
[09:54:09] <slavazanko/w> я могу помочь в этом
[09:54:19] <slavazanko/w> я уже переключился на 1535_sftp
[09:54:49] <il.smind > я бы не хотел железобетонно привязывать sftp к mc
[09:54:55] <slavazanko/w> наверное, это будет в src/filemanager/midnight.c:318
create_options_menu()
[09:55:14] <slavazanko/w> > я бы не хотел железобетонно привязывать sftp к mc
не понял. Оно привяжется не сильнее, чем любой другой плагин
[09:55:28] <il.smind > да там
[09:55:54] <il.smind > >Оно привяжется не сильнее, чем любой другой плагин
да именно
[09:56:37] <il.smind > а мне бы хотелось чтобы по возможность почти не было привязки
[09:56:48] <slavazanko/w> Options \ VFS modules\ SFTP configuration
сто-то мне подсказывает. что у нас только двухуровневое меню... то есть, придётся делать так:
Options \ VFS module: sftp
Options \ VFS module: fish
...
[09:57:01] <slavazanko/w> > а мне бы хотелось чтобы по возможность почти не было привязки
не понял. а зачем так?
[09:57:27] <il.smind > чтобы потом всё не переделывать
[09:57:43] <il.smind > и заодно обкатать механизм
[09:57:55] <slavazanko/w> до последнего времени плагины не то. чтобы были привязаны.. они были железобетонно влиты одним монолитом в mc. Это недавно их раскидали по человечески
[09:58:04] <il.smind > да
[09:58:09] <il.smind > я понимаю
[09:58:23] <il.smind > ты проделал большую работу
[09:58:33] <il.smind > но и сейчас
[09:58:56] <il.smind > мне надо например засунуть свои диалоги в src/
[09:59:12] <slavazanko/w> какие диалоги?
[09:59:14] <il.smind > потом прописать их вызов в
[09:59:40] <il.smind > диалоги настройки, диалог параметров соединения
[10:00:03] <slavazanko/w> эти диалоги относятся к плагинам?
[10:00:11] <il.smind > нет
[10:00:15] <il.smind > только к одному
[10:00:18] <il.smind > sftp
[10:00:29] <slavazanko/w> ну ляпи в src/vfs/sftp/*
[10:00:31] <il.smind > не к плагинам а плакину
[10:00:42] <il.smind > я и леплю
[10:00:49] <il.smind > но когда слепил
[10:01:06] <il.smind > понял что придётся вызывать из srs
[10:01:09] <il.smind > понял что придётся вызывать из src
[10:02:47] <slavazanko/w> а... ну вот. система событий как раз и предназначена для такого. Я так lib от src полностью отвязал
[10:24:17] <slavazanko/w> короче, просто так меню не получится динамически менять.
[10:24:37] <slavazanko/w> надо сделать возможность привязывать к пунктам меню некие каллбэки.
[10:24:45] <slavazanko/w> а не только команды
[10:42:57] andrew_b зашёл в конференцию
[10:45:31] <andrew_b> У нас нет подменю.
[10:46:56] <slavazanko/w> Андрей. как ты смотришь на то, чтобы чуток поменять menu_entry_t?
например, так:
typedef enum
{
MENU_ENTITY_TYPE_COMMAND,
MENU_ENTITY_TYPE_CALLBACK,
} menu_entity_type_t;

...

typedef struct menu_entry_t
{
menu_entity_type_t type;
unsigned char first_letter;
hotkey_t text;
union
{
unsigned long command;
struct
{
gpointer function;
gpointer arg;
} cb;
} u;
char *shortcut;
} menu_entry_t;
[10:47:53] <andrew_b> Только не коллбэки.
[10:48:11] <slavazanko/w> гм.
события?
[10:48:55] <andrew_b> Да.
[10:49:10] <slavazanko/w> union
{
unsigned long command;
struct
{
const char *event_group;
const char *event_name;
gpointer arg;
} cb;
} u;
[10:49:27] <slavazanko/w> ок
[10:51:18] <andrew_b> Меню яавляется частью диалога, поэтому команду, которую оно посылает, обрабатывает или сам диалог, или активный виджет.
[10:51:36] <andrew_b> Не уверен, что сейчас это так, но должно быть так.
[10:51:40] <slavazanko/w> Илья. если есть что мощно запушить в 1535_sftp - пушь. Я там буду ляпить вместе с тобой.
В последствии буду делать fix_for, чтобы мощно не пушить
[11:21:58] <il.smind > я тут
[11:22:04] <il.smind > жряли-с
[11:23:49] <slavazanko/w> я добавил возможность вызывать из пункта меню события. ща запушу...
[11:24:29] <andrew_b> Надо не добавлять, а заменять старый движок событий на новый.
[11:24:44] <andrew_b> Иначе мы так и будем на двух стульях сидеть.
[11:25:27] <il.smind > andrew_b: а почему нельзя потехоньку?
[11:25:29] <slavazanko/w> ну... сейчас полностью заменить будет сложновато, ибо там цепляется до едреней фени кода
[11:26:20] <slavazanko/w> я запушу, а вы посмотрите, имеет такое решение право на жизнь или нет. ок?
[11:26:38] <il.smind > показывай
[11:26:40] <andrew_b> il.smind : потихоньку это каша.
[11:27:22] <slavazanko/w> git pull && git show b5021138018966f95f2cdf09e30bfd81301b236a
[11:30:02] <andrew_b> - entry = g_new (menu_entry_t, 1);
+ entry = g_new0 (menu_entry_t, 1);

Необязательно. Там все поля инициализируются индивидуально.
[11:30:37] <slavazanko/w> я на всякий случай подстраховываюсь уже :)
[11:30:52] <slavazanko/w> самостраховка. так сказать
[11:38:21] <il.smind > slavazanko/w: а как пользоваться то?
[11:38:28] <il.smind > куда мне что прописать?
[11:38:30] <slavazanko/w> а это я ща допишу
[11:39:35] <il.smind > можешь диалог настроек нарисовать?
[11:39:46] <il.smind > чтобы там пара кнопок и всё
[11:39:59] <il.smind > ну или по вкусу
[11:54:02] BanderOS зашёл в конференцию
[11:54:53] BanderOS вышел из конференции
[11:56:26] BanderOS зашёл в конференцию
[12:15:11] <slavazanko/w> Илья, запуль 1535_sftp
Добавил возможность вызова диалога из меню.
диалог добавляй в src/vfs/sftpfs/sftpfs.c:645

в sftpfs_plugin_show_config_dialog()
[12:22:53] <andrew_b> plugin.name.for.config.dialog
[12:22:57] <andrew_b> Эххх...
[12:23:07] <slavazanko/w> ?
[12:23:11] <slavazanko/w> переименовать?
[12:23:27] <slavazanko/w> я так. от балды... как концепт
[12:23:36] <andrew_b> Давайте придерживаться одннобразия в названии событий.
[12:23:58] <andrew_b> vfs_print_message
[12:24:00] <slavazanko/w> подчёркивания?
[12:24:04] <slavazanko/w> ок
[12:24:05] <andrew_b> Да.
[12:24:22] BanderOS вышел из конференции
[12:24:53] <andrew_b> Куда меню добавляются?
[12:25:09] <slavazanko/w> в "настройки"
[12:26:00] <andrew_b> Не. Так не пойдёт.
[12:26:08] <andrew_b> Надо делать подменю.
[12:26:15] <il.smind > в фаре есть пункт "Настройки внешних модулей" открывается отдельный диалог с перечислением подключённых
[12:26:33] <il.smind > andrew_b: да ну его это подъменю
[12:26:51] <andrew_b> Ну или отдельное окно.
[12:27:01] <slavazanko/w> гм.. ну это пусть будет заданием Илье. Моя задача: написать екзампл, как заюзать эвенты для вызова диалога настроек плагинов :)
[12:27:30] <slavazanko/w> спрыгую, короче, назад в свой DEV_new_vfs
[12:29:16] <slavazanko/w> z gjlgeibk/ gthtbvtyjdfk 'dtyns
[12:29:23] <slavazanko/w> я подпушил. переименовал эвенты
[12:31:17] BanderOS зашёл в конференцию
[12:34:58] <slavazanko/w> а отдельное окно. наверное, было бы вариантом...
[12:35:08] <slavazanko/w> дабы меню не засорять
[12:37:53] <il.smind > slavazanko/w: как спрыгиваю?
[12:38:03] <slavazanko/w> нуачо
[12:38:10] <slavazanko/w> я свою часть договора выполнил?
[12:38:15] <il.smind > не надо срыгивать! мне надо ну ваще край!
[12:38:34] <slavazanko/w> тебе что ещё осталось надо?
[12:39:15] <slavazanko/w> сам диалог нарисовать?
[12:41:27] <slavazanko/w> andrew_b: может, переделать эвенты, чтобы обработчики возвращали не TRUE/FALSE, а EVENT_CONTINUE_PROCESSING и EVENT_STOP_PROCESSING?
[12:41:27] <il.smind > ща...
[12:42:07] <andrew_b> slavazanko/w: нууу...
[12:42:17] <slavazanko/w> в клинапном бранче и попозже. если что
[12:42:29] <andrew_b> А какие ещё варианты кроме возможны?
[12:42:44] <slavazanko/w> никаких. но TRUE/FALSE как-то неговорливо...
[12:44:26] <slavazanko/w> я к тому. что исходник должен сам петь про то, что он там делает, без необходимости держать в голове логику всего и вся
[12:50:11] <slavazanko/w> il.smind : ну что там? на сон сморило?
[12:50:17] BanderOS вышел из конференции
[12:50:32] <il.smind > slavazanko/w: есть чуток
[12:50:36] <il.smind > собирается
[12:51:45] <slavazanko/w> Кстати, по поводу "Надо делать подменю.": теперь у пунктов меню появился тип...
[12:52:04] <slavazanko/w> и union
[12:52:07] <andrew_b> Да. Я понял.
[12:54:05] BanderOS зашёл в конференцию
[13:02:52] BanderOS вышел из конференции
[13:06:07] BanderOS зашёл в конференцию
[13:17:58] <il.smind > собрал
[13:18:27] <il.smind > о афигенно мне пока больше и не надо
[13:20:22] <il.smind > как этой магией то пользоваться то?
[13:20:24] <il.smind > plugin_name_for_config_dialog
[13:21:40] <il.smind > slavazanko/w: Эй
[13:21:44] <il.smind > Человек!
[13:21:58] <slavazanko/w> ?
[13:22:28] <slavazanko/w> ну как пользоваться.. в sftpfs_plugin_show_config_dialog рисуй свой диалог
[13:22:33] <slavazanko/w> и всё. больше ничего не надо
[13:22:36] <il.smind > каждый vfs плагин
[13:22:46] <slavazanko/w> зачем акждый?
[13:22:57] <slavazanko/w> не надо каждый. Только те. которым нуже диалог
[13:23:22] <il.smind > да
[13:23:35] <il.smind > каждый плагим может, но не должен
[13:23:40] <il.smind > да?
[13:23:47] <slavazanko/w> не должен
[13:23:49] <slavazanko/w> да
[13:24:32] <il.smind > там в настройках можно задать префикс
[13:24:42] <slavazanko/w> а plugin_name_for_config_dialog() не трожь. там всё уже написано
[13:24:45] <il.smind > вот только вопрос где хранить
[13:25:02] <slavazanko/w> ну.. хранить там. где и сейчас
[13:25:11] <il.smind > нигде?
[13:25:13] <slavazanko/w> а префикс в настройках не айс задавать
[13:25:18] <slavazanko/w> почему нигде?
[13:25:19] <il.smind > еще как айс
[13:25:23] <slavazanko/w> vfs_sftpfs_ops.prefix = "sftp:";
[13:25:27] <slavazanko/w> не айс
[13:25:27] <il.smind > да
[13:25:34] <slavazanko/w> конфликты?
[13:25:47] <il.smind > vfs_sftpfs_ops.prefix = plugin_prefix;
[13:26:19] <il.smind > таймаут
[13:26:30] <il.smind > slavazanko/w> конфликты?
проверить можно?
[13:26:34] <slavazanko/w> да. а plugin_prefix надо будет потом где-то g_free() делать
[13:26:38] <slavazanko/w> проверить можно
[13:26:54] <il.smind > это реально опросить подключенные?
[13:27:38] <il.smind > slavazanko/w: ну про префикс может и не надо...
[13:27:41] <slavazanko/w> lib/vfs/vfs.c:119
vfs_prefix_to_class (char *prefix)
[13:27:47] <slavazanko/w> да, префикс не надо
[13:29:35] <slavazanko/w> кстати говоря, видишь в init_sftpfs (void) код по добавлению событий?
[13:29:46] <slavazanko/w> mc_event_add ("vfs","plugin_show_config_dialog", sftpfs_plugin_show_config_dialog, NULL, NULL);
[13:29:53] <il.smind > /* some actions here */
здесь вызвать диалог?
[13:30:07] <il.smind > slavazanko/w: твой вижу
[13:30:35] <slavazanko/w> по идее. все функции должны быть таким образом добавлены. не
vfs_sftpfs_ops.fstat = sftpfs_fstat;
а
mc_event_add ("vfs","fstat", sftpfs_fstat, NULL, NULL);
[13:30:43] <slavazanko/w> > здесь вызвать диалог?
да
[13:31:09] <andrew_b> mc_event_add ("vfs",
Не айс.
MCEVENT_GROUP_VFS
[13:31:21] <il.smind > slavazanko/w> по идее. все функции должны быть таким образом добавлены. не
vfs_sftpfs_ops.fstat = sftpfs_fstat;

а что скажет Андрейка?
[13:31:21] <slavazanko/w> понято
[13:31:28] <il.smind > уже сказал
[13:33:25] <il.smind > мне нет
[13:33:31] <il.smind > я ничо не понял
[13:33:42] <il.smind > ничего пока не менять?
[13:33:48] <slavazanko/w> нет, не меняй
[13:33:52] <slavazanko/w> это ак. планы на будущее
[13:34:17] <slavazanko/w> когда VFS-плагины отпочкуются от тела mc
[13:34:27] <il.smind > ясно
[13:34:29] <il.smind > а...
[13:34:37] <il.smind > где хранить то настройки?
[13:35:44] <il.smind > ~/.config/mc
[13:35:59] <slavazanko/w> предлагаю в mc_config_get_path() + "/vfs/" + vfs_ops.name
[13:36:02] <il.smind > sftpfs.ini
[13:36:20] <slavazanko/w> mc_config_get_path() + "/vfs.d/" + vfs_ops.name+".ini"
[13:36:25] <slavazanko/w> как-то так
[13:37:01] <il.smind > зачем усложнять ?
[13:37:11] <il.smind > /vfs.d/ зачем?
[13:37:25] <il.smind > я не против но смысл?
[13:37:27] <slavazanko/w> каталог настроек. хошь в одну кучу всё свалить?
[13:37:40] <il.smind > дак там 3 файла
[13:37:56] <il.smind > будет 10 млагинов не многое изменится
[13:38:02] <andrew_b> Не надо всюду пихать .d
[13:38:13] <slavazanko/w> ну ладно. уболтали
[13:38:22] <il.smind > да и .d мне тоже не понравилось
[13:39:00] <il.smind > mc_config_get_path() + "/vfs/" + vfs_ops.name+".ini"
?
[13:39:14] <slavazanko/w> ну давай так
[13:39:16] <il.smind > или
mc_config_get_path() + "/vfs_ops.name+".ini"
[13:39:23] <il.smind > slavazanko/w> ну давай так
ок
[13:39:32] <il.smind > andrew_b: не пропив?
[13:39:38] <il.smind > andrew_b: не против?
[13:39:55] <slavazanko/w> оговорка на пять с плюсом :)
[13:40:33] <andrew_b> Без каталога vfs?
[13:40:45] <andrew_b> Давайте с каталогом.
[13:41:28] <il.smind > ок
[13:42:11] BanderOS вышел из конференции
[14:14:14] andrew_b вышел из конференции
[15:09:37] iNode вышел из конференции
[15:40:00] il.smind вышел из конференции
[16:37:06] andrew_b зашёл в конференцию
[16:52:17] andrew_b вышел из конференции
[17:36:13] andrew_b зашёл в конференцию
[18:23:21] il.smind . зашёл в конференцию
[19:30:25] andrew_b вышел из конференции
[21:10:37] slavazanko/h вышел из конференции
[21:12:41] slavazanko/h зашёл в конференцию
Powered by freQ Powered by Python Valid XHTML 1.0 Transitional Valid CSS!