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

Тема: http://www.midnight-commander.org | Latest release: 4.8.0-pre1 | Latest stable release: 4.7.5.3
[00:14:03] il.smind зашёл в конференцию
[00:22:20] repolainen вышел из конференции
[06:09:32] andrew_b зашёл в конференцию
[06:35:21] repolainen зашёл в конференцию
[06:58:52] <il.smind > привет всем!
[07:47:26] <andrew_b> Привет.
[07:49:22] <il.smind > сделал я удаление
[07:49:30] <il.smind > с временной панели...
[07:59:50] <andrew_b> il.smind :

diff --git a/src/filemanager/panel.c b/src/filemanager/panel.c
index 0d065f1..0b06d8a 100644
--- a/src/filemanager/panel.c
+++ b/src/filemanager/panel.c
@@ -1897,16 +1897,17 @@ goto_parent_dir (WPanel * panel)
do_cd ("..", cd_exact);
else
{
- char *fname;
+ char *fname = panel->dir.list[panel->selected].fname;
const char *bname;
char *dname;
- if (panel->dir.list[panel->selected].fname[0] == PATH_SEP)
- fname = g_strdup (panel->dir.list[panel->selected].fname);
+
+ if (g_path_is_absolute (fname)
+ fname = g_strdup (fname);
else
- fname = mc_build_filename (panelize_root, panel->dir.list[panel->selected].fname, NULL);
+ fname = mc_build_filename (panelize_root, fname, (char *) NULL);
bname = x_basename (fname);
- dname = g_path_get_dirname (fname);

+ dname = g_strndup (fname, bname - fname);
do_cd (dname, cd_exact);
try_to_select (panel, bname);
[08:03:00] <andrew_b> Не.
[08:03:18] <andrew_b> Проверки одной не хватает.
[08:16:31] <il.smind > кушалис
[08:16:43] <il.smind > + dname = g_strndup (fname, bname - fname);
так делать?
[08:17:05] <il.smind > или "andrew_b: Не. Проверки одной не хватает."
[08:17:25] <andrew_b> Ща я запушу. Потом засквошишь.
[08:17:33] <il.smind > ок
[08:20:21] <andrew_b> Готово.
[08:22:15] <andrew_b> il.smind : делай как я.
[08:22:30] <andrew_b> Спанелизируй что-то в панели.
[08:23:04] <andrew_b> Перейди в другую панель.
[08:23:17] <andrew_b> Спанелизируй там что-то другое.
[08:23:34] <andrew_b> Имеем две разные панелизации.
[08:24:13] <andrew_b> Первая панелизация стала невалидной.
[08:24:25] <andrew_b> Надо перерисовывать панель.
[08:27:42] <andrew_b> Либо сделать возможность иметь несколько панелизаций с выбором.
[08:28:12] <andrew_b> Как минимум две.
[08:28:30] <andrew_b> У каждой панели своя.
[08:50:25] <il.smind > (10:27:43) andrew_b: Либо сделать возможность иметь несколько панелизаций с выбором.
думал над этим
[08:50:47] <il.smind > но как то оно усложняет юзабилити
[08:51:06] <andrew_b> Тогда надо обновлять вторую панель.
[08:51:20] <il.smind > непонятно зачем нужны 2 темповые панели
[08:51:26] <il.smind > я об этом
[08:51:37] <il.smind > обновлять, да наверное...
[08:52:00] <il.smind > в фаре 10 временных панелей
[08:52:25] <il.smind > но за 10 лет мне ниразу не пришлось пользоваться даже 2-мя
[08:52:31] <il.smind > не говоря о 10
[08:54:08] <il.smind > хотел по валидности данных еще спросить
[08:54:36] <il.smind > можно stat проверять при копировании файлов на временную панель
[08:55:07] <il.smind > но это будет сильное замедление для нелокальных фс
[08:55:15] <andrew_b> Да.
[08:55:51] iNode зашёл в конференцию
[09:06:56] <il.smind > andrew_b: эта...
[09:07:10] <il.smind > а чем отличаются F8 и F18 ?
[09:07:42] <andrew_b> Забыл?
[09:07:57] <il.smind > форсе?
[09:07:57] <andrew_b> f8 удаляет всё, что помечено.
[09:08:00] <il.smind > один
[09:08:07] <il.smind > под курсором?
[09:08:10] <andrew_b> f18 только то, что под курсором.
[09:08:25] <il.smind > значит отличаются...
[09:08:33] <andrew_b> Да.
[09:09:21] <il.smind > ну вот будет тогда у меня f8 слищается и временной а f18 физическое удаление
[09:09:39] <andrew_b> Нет.
[09:09:41] <il.smind > f8 счищается с временной
[09:09:47] <andrew_b> Не надо так.
[09:09:50] <il.smind > твои предложения
[09:10:15] <andrew_b> Другую кнопку для счищения.
[09:10:25] <il.smind > F7
[09:10:30] <il.smind > в фаре
[09:10:45] <andrew_b> Если других нет, то её.
[09:11:05] <il.smind > нет других
[09:11:48] <il.smind > а можно подпись поменять?
[09:12:23] <andrew_b> Да.
[09:14:23] <andrew_b> Только этого мало.
[09:14:37] <il.smind > ман я поменяю
[09:14:46] <andrew_b> Не ман.
[09:15:01] <andrew_b> Надо бы отдельный экшн для очистки панели.
[09:15:10] <il.smind > ок
[09:15:28] <andrew_b> Но не получится.
[09:15:28] <il.smind > будет экшен, и он будет с F7 запускаться
[09:15:36] <il.smind > получится
[09:15:40] <il.smind > имхо
[09:16:02] <andrew_b> А CK_Mkdir ты куда денешь?
[09:16:09] <il.smind > я могу событие возбудить
[09:16:45] <andrew_b> А старое событие?
[09:16:55] <il.smind > думаю пока над этим
[09:17:03] <andrew_b> Которое уже привязано к f7.
[09:17:11] <il.smind > я понимаю
[09:17:25] <andrew_b> Надо переделать buttonbar на новые события.
[09:17:34] <andrew_b> Но это отдельный тикет.
[09:17:39] <il.smind > да
[09:17:52] <andrew_b> После релиза.
[09:18:35] <il.smind > само собой
[09:18:55] <il.smind > я свое панелизе тоже после релиза
[09:19:17] <il.smind > в релиз я так ппонимаю только фикс по кодировке панели...
[09:20:32] <andrew_b> В части vfs?
[09:20:41] <andrew_b> Может, ещё что.
[09:21:17] <andrew_b> http://www.midnight-commander.org/ticket/2590
[09:21:28] <andrew_b> Похоже, тоже из-за vfs.
[09:26:12] <il.smind > возможно, но там не сложно
[09:31:28] <il.smind > про кодировку пытаюсь повторить
[09:31:36] <il.smind > но я наверное что то не то делаю
[09:31:50] <andrew_b> В восьмибитной локали надо.
[09:31:55] <il.smind > а...
[09:31:58] <andrew_b> Там лучше видно.
[09:32:26] <il.smind > я в утф делал
[09:32:47] <andrew_b> Там тоже не всё хорошо.
[09:33:05] <il.smind > делал так
на правой панели кодировка утф8
на левой koi8
[09:33:22] <il.smind > скопировал справа налево
[09:33:38] <il.smind > скопировалось правильно
[09:33:51] <andrew_b> Надо не копировать, а зайти в каталог после смены кодировки.
[09:33:52] <il.smind > перекодировалось на-лету
[09:36:32] <andrew_b> Не, 2580 не из-за vfs.
[09:36:46] <andrew_b> 2590
[09:37:01] <andrew_b> chdir_other_panel ни при чём.
[09:37:07] <andrew_b> Бля.
[09:37:25] <andrew_b> Новая vfs не при чём. chdir_other_panel не менялась много лет.
[09:42:18] <il.smind > :)
[09:42:47] <il.smind > у меня есть на неё кое какие планы :)
[09:43:11] <andrew_b> А там баг.
[09:43:57] <il.smind > пока не вижу
[09:44:02] <il.smind > в какой строке?
[09:44:17] <il.smind > !S_ISDIR ?
[09:44:19] <andrew_b> if (!S_ISDIR
[09:44:41] <il.smind > лстат нужен или как там его
[09:44:51] <il.smind > для линка
[09:46:14] <il.smind > у меня похожее было с линками на каталоги в sftp
[09:46:29] <andrew_b> Не нужен.
[09:46:39] <andrew_b> link_to_dir
[09:46:46] <il.smind > а...
[09:46:47] <andrew_b> Я уже починил.
[09:46:53] <il.smind > тут готовое есть...
[09:47:08] <andrew_b> Всё украдено до нас.
[09:47:17] <il.smind > да...
[09:47:21] <andrew_b> Надо найти и перепрятать.
[09:47:54] <il.smind > :))
[09:48:07] <il.smind > короче...
[09:48:19] <il.smind > я стал смотреть mkdir
[09:48:29] <andrew_b> Я на обед.
[09:48:30] <il.smind > ну там обработку события
[09:48:36] <il.smind > эх не успел
[09:48:48] <il.smind > короче основная проблема это меню
[09:49:00] <il.smind > оно же не изменное
[09:50:08] <il.smind > оно же неизменное
[10:21:17] <andrew_b> Ну и что.
[10:22:09] <andrew_b> Если нажали пункт меню, то выдаётся ошибка "mkdir on temp panel is not supported".
[10:22:38] <andrew_b> Если f7, то это батонбар обрабатывает.
[11:10:34] <il.smind > охох
[11:11:24] <andrew_b> Там всё просто.
[11:11:30] <andrew_b> Я же для себя делал. :)
[11:13:22] <andrew_b> Например:
1258 case CK_PanelInfo:
1259 if (sender == (Widget *) the_menubar)
1260 info_cmd (); /* menu */
1261 else
1262 info_cmd_no_menu (); /* shortcut or buttonbar */
1263 break;
[11:23:27] <il.smind > эта..
[11:23:48] <il.smind > а можно вас попросить подпушить к 289_copy_to_panelize
[11:24:45] <il.smind > а?
[11:24:57] <andrew_b> Что?
[11:25:12] <il.smind > про батон бар
[11:25:22] <il.smind > изменение вида
[11:25:43] <andrew_b> Попозже.
[11:26:00] <andrew_b> Что писать?
[11:30:48] <il.smind > F7 Remove
[11:31:45] <il.smind > По русски
F7 Убрать
[11:31:56] <il.smind > По-русски
F7 Убрать
[11:32:44] <andrew_b> По-русски будет в другом месте.
[11:32:49] <il.smind > да
[11:32:55] <il.smind > потом
[11:33:00] <il.smind > не скоро
[11:33:54] <il.smind > ну и добавление/удаление я тоже сделал
[11:34:33] <il.smind > осталась проблема с синхронизацией 2-х темповых панелей
[12:03:12] <andrew_b> +delete_from_panelize_cmd (void)
+{
+ delete_from_panelize (current_panel);
+}
+

Зачем этот враппер?
[12:14:12] <andrew_b> il.smind : запушил.
[12:18:37] <il.smind > незнаю, чтобы без параметров запускать если понадобится
[12:19:16] <andrew_b> Не обижайся, но delete_from_panelize -- это какой-то трэш.
[12:19:57] <andrew_b> copy_files_to_panelize не лучше.
[12:20:08] <il.smind > а чего обижаться то?
[12:20:40] <il.smind > давай более конкретно по реализации
[12:20:55] <il.smind > тебе не нравится что есть большая избыточность?
[12:21:24] <andrew_b> 85 extern dir_list panelize_list;
86 extern int panelize_count;
87 extern char *panelize_root;

Почему бы их не объединить в структуру?
[12:21:39] <il.smind > а зачем?
[12:21:48] <il.smind > можно, но смысл какой?
[12:22:09] <andrew_b> Получится некий цельный объект.
[12:22:21] <andrew_b> Который потом можно переделать в класс.
[12:22:47] <il.smind > это да, но кода станет чуть больше
[12:23:38] <il.smind > переделать можно...
[12:23:47] <il.smind > ну в смысле переделаю
[12:28:33] <andrew_b> Что такое panelize_count?
[12:29:34] <andrew_b> А, понятно.
[12:30:06] <andrew_b> То же, что и WPanel::count.
[12:30:28] slavazanko/h зашёл в конференцию
[12:57:35] <il.smind > да
[12:58:28] <il.smind > как улучшить ужасный код то?
[13:00:50] <repolainen> по лицу его /me спратался
[13:02:47] slavazanko/h вышел из конференции
[13:05:03] slavazanko/h зашёл в конференцию
[13:31:24] <andrew_b> У тебя при входе в delete_from_panelize() panel->is_panelized?
[13:34:25] <il.smind > да
[13:35:17] <andrew_b> Тогда зачем эти копирования из одного списка в другой?
[13:35:28] <il.smind > а ты про это...
[13:35:34] <andrew_b> Почему на месте нельзя удалить помеченные элементы?
[13:35:36] <il.smind > чтобы восстановить потом
[13:35:53] <il.smind > если выйдешь из панелизации
[13:36:27] <andrew_b> Классно. Удаляли-удаляли, и ничего не удалили.
[13:37:41] <andrew_b> 500 for (i = 0; i <= panel->count; i++)
[13:37:57] <andrew_b> Почему <= panel->count ?
[13:40:53] <andrew_b> 461 if (next_free >= panelize_list.size)
462 {
463 panelize_list.list = g_try_realloc (panelize_list.list,
464 sizeof (file_entry) * (next_free + RESIZE_STEPS));
465 }

panelize_list.size не обновляется.
[13:46:22] <il.smind > Почему <= panel->count ?
а как иначе?
[13:46:44] <andrew_b> Почему <= ?
[13:46:57] <il.smind > эм...
[13:46:59] <andrew_b> 451 while (i <= source_panel->count)
[13:47:03] <il.smind > незнаю
[13:47:43] <il.smind > а предлагаешь то до скольки?
[13:47:48] <il.smind > !=
[13:47:58] <il.smind > или <
[13:49:04] <andrew_b> Я предлагаю сделать правильно.
[13:49:09] <il.smind > как?
[13:49:26] <andrew_b> Ты же это писал, ты и должен знать.
[13:49:31] <il.smind > а...
[13:49:36] <andrew_b> Может <= и правильно.
[13:49:37] <il.smind > дак и щас правильно
[13:50:11] <il.smind > я думал ты предлагаешь пооптимизировать
[13:51:07] <il.smind > list.size += RESIZE_STEPS; добавлю
[13:51:10] <andrew_b> 507 else if (list->list[i].f.marked)

Скорее всего, когда i станет равной panel->count, мы попадём на элемент, слежующий за последним. Или вообще за границу цикла.
[13:51:44] <andrew_b> за границу массива
[13:55:50] <il.smind > поправил
[13:57:02] <il.smind > ну скажем так работает удаление быстро
[13:57:29] <il.smind > ща список из 50 000 сделаю
[13:57:35] <il.smind > проверю
[13:57:53] <il.smind > на 10 000 моментально удаляет
[13:58:08] <il.smind > о... 96 000
[13:58:20] <il.smind > 120т
[13:58:34] <il.smind > панелизирует
[13:58:49] <il.smind > удаляет мгновенно
[13:59:47] <il.smind > ну, я не вижу смысла особого оптимизировать, если ты про неоптимальность мего говнокода
[14:05:52] <il.smind > устранил все замечания
[14:05:56] <il.smind > готов пушить
[14:06:13] <il.smind > кроме структуры
[14:06:22] <il.smind > ее пока не сделал
[14:13:00] <andrew_b> Короче, я против копирования списков.
[14:13:07] <andrew_b> Массивов то есть.
[14:13:16] <il.smind > почему?
[14:13:48] <andrew_b> Зачем это нужно?
[14:13:56] <il.smind > оно же копируется чтобы когда ты выйдешь из панелизации
[14:14:10] <il.smind > ты мог бы к последнему состоянию вернуться
[14:14:57] <andrew_b> А если мне не надо? Ечли я список из 10500 файлов чисти-чистил, вышел из панелизации и все труды насмарку?
[14:15:11] <il.smind > нет
[14:15:25] <il.smind > запоминается последнее состояние
[14:15:34] <il.smind > после чистки
[14:15:57] <andrew_b> А список зачем копировать?
[14:16:27] <il.smind > дак он один в переменной panelize_
[14:16:47] <il.smind > а второй на панели
[14:17:33] <andrew_b> А не один и тот же список?
[14:17:39] <il.smind > копирую в панельный list чтобы на панели оно появилось
[14:18:06] <il.smind > пока мы в этом каталоге они одинаковые
[14:18:19] <il.smind > как только вышел то разными становятся
[14:18:40] <il.smind > я хотел приделать запоминание списка на выход из каталога
[14:18:48] <il.smind > но там херня получается
[14:20:17] <andrew_b> Когда я жму на f7, я ещё никуда не выхожу.
[14:20:32] <andrew_b> Я остаюсь в состоянии панелизации.
[14:20:38] <il.smind > да
[14:21:29] <il.smind > но как узнать тот момент когда уже надо запомнить список?
[14:21:47] <andrew_b> Выход из панелизации.
[14:22:12] <il.smind > это сложно
[14:22:24] <andrew_b> Когда panel->is_panelized становится равным 0.
[14:22:44] <il.smind > а когда оно становится 0
[14:22:50] <il.smind > там много вариантов
[14:23:09] <andrew_b> Запоминание списка сразу нужно, если ты на второй панели тоже откроешь панелизацию.
[14:23:23] <il.smind > да
[14:23:49] <andrew_b> А оно нам надо?
[14:23:55] <il.smind > я хочу сейчас сделать чтобы можно было добавлять файлы
[14:24:02] <il.smind > из второй панелизации
[14:24:13] <andrew_b> Она у нас одна.
[14:24:16] <il.smind > вот такой вариант
[14:24:33] <il.smind > на правой панелизации у нас некий список
[14:24:38] <il.smind > нет
[14:24:44] <il.smind > на левой панелизации у нас некий список
[14:25:06] <il.smind > на правой мы ищем файлы
[14:25:29] <il.smind > нашли, панелизируем, копируем в левую панелизацию
[14:25:37] <il.smind > например
[14:26:31] <il.smind > можно таким способом сделать список файлов которые надо например запаковать или куда то скопировать
[14:27:33] <andrew_b> Доделай сначала 275. Он два тикета закроет.
[14:28:50] <il.smind > 275 ?
[14:28:59] <andrew_b> Да.
[14:28:59] <il.smind > а что там надо еще доделать?
[14:29:27] <il.smind > переменные перенести?
[14:29:33] <andrew_b> Объединить в структуру

85 extern dir_list panelize_list;
86 extern int panelize_count;
87 extern char *panelize_root;

Перенести
[14:29:44] <andrew_b> Синхронизировать панели.
[14:32:31] <il.smind > andrew_b: Объединить в структуру
ээх...
[14:32:49] <il.smind > сейчас буду 2 часа думать как это сделать...
[14:33:07] <andrew_b> Еадо сразу было.
[14:33:12] <andrew_b> Надо
[14:33:23] <il.smind > пачему?
[14:33:52] <il.smind > мне для структуры придумать название сложно...
[14:34:08] <il.smind > а код по тексту заменю без проблем
[14:38:57] <andrew_b> В 275

457 if (panel->count >= panelize_list.size)
458 panelize_list.list = g_try_realloc (panelize_list.list, sizeof (file_entry) * (panel->count));

panelize_list.size не обновляется.
[14:44:02] <andrew_b> 451 if (panelize_count > 0)
452 clean_dir (&panelize_list, panelize_count);

Условие можно убрать.
[15:03:14] <il.smind > 16:38:58) andrew_b: В 275

457 if (panel->count >= panelize_list.size)
458 panelize_list.list = g_try_realloc (panelize_list.list, sizeof (file_entry) * (panel->count));

panelize_list.size не обновляется.
я нечайно в 289 поправил
[15:03:21] <il.smind > исправлю в 275
[15:04:21] <il.smind > Условие можно убрать.
ок
[15:05:25] <il.smind > 85 extern dir_list panelize_list;
86 extern int panelize_count;
87 extern char *panelize_root;
>Объединить в структуру
мастер научи!
[15:07:05] <andrew_b> struct придумай имя
{
dir_list list;
int count;
char root[MC_MAXPATHLEN];
}
[15:07:33] <andrew_b> Лучше
char root[MC_MAXPATHLEN];
а не
char *root;
[15:07:38] <andrew_b> Как в панели.
[15:07:50] <andrew_b> Тогда аллокировать каждый раз не надо будет.
[15:12:42] <il.smind > а использовать?
[15:13:03] <il.smind > придумай имя.root =
[15:13:23] <il.smind > или
придумай имя->root =
[15:15:02] <andrew_b> g_strlcpy (придумай имя.root, panel->cwd, MC_MAXPATHLEN);
[15:15:40] <andrew_b> Или наоборот.
[15:21:48] andrew_b вышел из конференции
[16:09:21] il.smind вышел из конференции
[19:01:45] <repolainen> объявляется конкурс. кто хочен 50 килобайт трэша от трака каждое утро? :]
[19:01:57] <repolainen> slavazanko/h: ты! смотрю, у тя глоза блестять :]
[19:02:14] <repolainen> ты участвован в настройке трака? :]
[19:02:25] <repolainen> подпиливании там плугов и вскиого такого
[19:06:26] <repolainen> 2011-08-11 06:25:57,666 Trac[loader] ERROR: Skipping "TracMasterTickets 2.1.3": (version conflict "VersionConflict: (TracMasterTickets 3.0.2 (/usr/lib/python2.5/site-packages/TracMasterTickets-3.0.2-py2.5.egg), Requirement.parse('TracMasterTickets==2.1.3'))")

Это нехорошо :]
[19:06:57] <repolainen> 2011-08-11 07:00:02,293 Trac[loader] ERROR: Skipping "TracAccountManager 0.3dev-r10371": (version conflict "VersionConflict: (TracAccountManager 0.2.1dev-r7731 (/usr/lib/python2.5/site-packages/TracAccountManager-0.2.1dev_r7731-py2.5.egg), Requirement.parse('TracAccountManager==0.3dev-r10371'))")
[19:07:17] il.smind зашёл в конференцию
[19:07:32] <repolainen> 2011-08-11 08:35:30,368 Trac[formatter] ERROR: Macro TracGuideToc(None) failed:
Traceback (most recent call last):
File "build/bdist.linux-i686/egg/trac/wiki/formatter.py", line 717, in _macro_formatter
return macro.process(args, in_paragraph=True)
File "build/bdist.linux-i686/egg/trac/wiki/formatter.py", line 304, in process
text = self.processor(text)
File "build/bdist.linux-i686/egg/trac/wiki/formatter.py", line 291, in _macro_processor
text)
File "build/bdist.linux-i686/egg/trac/wiki/macros.py", line 701, in expand_macro
idx = curpage.find('/')
AttributeError: 'NoneType' object has no attribute 'find'
[19:07:34] <repolainen> такие
[19:07:45] <repolainen> хто самый неленивый? :]
[19:08:41] <il.smind > repolainen: это славег, точняк тебе говорю
[19:12:35] <repolainen> о норм, буим на него наседать :]
[21:09:59] slavazanko/h вышел из конференции
[21:10:28] slavazanko/h зашёл в конференцию
[21:11:11] slavazanko/h вышел из конференции
[21:11:20] slavazanko/h зашёл в конференцию
[22:37:54] il.smind вышел из конференции
[23:02:54] repolainen вышел из конференции
Powered by freQ Powered by Python Valid XHTML 1.0 Transitional Valid CSS!