+ 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> Объединить в структуру
Перенести [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
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 вышел из конференции