Russian Qt Forum
Ноябрь 10, 2024, 22:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3 ... 20   Вниз
  Печать  
Автор Тема: Файловый менеджер  (Прочитано 222253 раз)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« : Апрель 10, 2009, 17:55 »

Всем доброго.
Вот задумал я написать свой ФМ. Как сказал Max Diesel (создатель Unreal Commander), у каждого программиста есть период, когда он начинает писать ФМ.  Улыбающийся Брался несколько раз (на делфи, билдере), но забрасывал. Сейчас вроде дело пошло. Уже вторую неделю красноглазю и уже есть эффект.
Зачем оно нужно? Под виндой единственный ФМ, в котором можно работать - платный Тотал Коммандер. Есть еще Анреал коммандер, благодаря которому я и решил взяться за это дело. Пользовался им больше полугода, красиво, удобно, но:
1. Задолбал подход автора к регистрации.
2. Глюкавит.
3. Один разработчик, так что работа продвигается медленно.
Вот и решил...  Строит глазки
На данный момент реализованно:
1. Табы каталогов.
2. Основной функционал:
  • Переименование
  • Копирование
  • Перемещение
  • Удаление
  • Запуск программ
  • Коммандная строка
3. Несколько панелей инструментов.
4. Просмотр (пока глючный), только на посмотреть. Улыбающийся
5. Очереди для файловых операций. Т.е создаешь новую очередь или добавляешь в существующую.

Не реализованно:
1. Нормальное выделение. Т.е. как в нормальном ФМ выделять правой кнопкой мыши. Скорее всего придется наследоваться от QTreeVew и самому все рисовать.
2. Ворнинги при файловых операциях (файл существует, ошибка записи, и т.д.)
3. Драг и дроп.
4. Нормальная строка адреса с автодополнением и прочими фишками(пока используется QLineEdit только для показа текущего пути).
5. Показ прав доступа (легко, но пока руки не дошли).
6. Раскраска по расширениям.

Несколько оговорок:
1. Пока не сделаю то, что не реализованно, выкладывать не буду.
2. Код грязный, так как пишу на скорость. Сделаю основной функционал и можно зачищать.
3. Если решу забросить, обязательно выложу то, что будет на тот момент.
4. Конечно GPL.

Кому интересно, присоединяйтесь. Буду в этой теме задавать насущные вопросы и ждать ответов. Пока вот такие проблемы:
1. Для файловых операций создается диалог, в котором запускается поток, в котором и происходят все операции.  В потоке нельзя использовать QMessageBox, поэтому столкнулся с проблемой, как спросить у пользователя что делать (перезаписывать, повторить, прервать). Решение пока видется так:
а. В функции копирования проблема, файл уже существует.
б. Вызывается функция error, которая заполняет определенные поля (код ошибки, имена файлов), ставит пазу, выкидывает сигнал, ждет снятия паузы
в. Диалог ловит сигнал, задает вопрос, в зависимости от ответа заполняет поля в потоке, снимает паузу.
г. Возвращается управление в функцию копирования и, в зависимости от полей, оно продолжается или нет.
Правильно мыслю или можно проще(правильнее)?
2. Чтобы нормально работать с выделением придется наследоваться от QTreeView? Что не нравится в стандартном поведении:
а. Селект при установки курента.
б. Нет возможности через эвент фильтр перехватить мышиные комманды (чтобы по правому клику делать селект).

Пока все. Жду ваших отзывов. Может у кого есть свои наработки?
Текущая версия в аттаче.
« Последнее редактирование: Апрель 29, 2009, 17:03 от panter_dsd » Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Апрель 10, 2009, 18:00 »

Совсем забыл. Вот скриншот под Линухом.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #2 : Апрель 10, 2009, 19:05 »

Классно!

Как выложишь код, можно тоже будет что-то доработать! Были тоже некоторые идеи, надо будет вспомнить
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
IMPOMEZIA
Гость
« Ответ #3 : Апрель 10, 2009, 19:21 »

у каждого программиста есть период, когда он начинает писать ФМ.  Улыбающийся
Всегда мечтал сделать кроссплатформенный файловый менеджер, ещё с тех пор, когда к программированию никакого отношения не имел. Улыбающийся

Цитировать
1. Для файловых операций создается диалог, в котором запускается поток, в котором и происходят все операции.  В потоке нельзя использовать QMessageBox,

ИМХО об использовании QMessageBox вообще нужно забыть, пусть диалог сам реагирует на проблемы в операциях. Total Commander например сильно грешит избыточным использованием MessageBox.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Апрель 13, 2009, 17:16 »

ИМХО об использовании QMessageBox вообще нужно забыть, пусть диалог сам реагирует на проблемы в операциях. Total Commander например сильно грешит избыточным использованием MessageBox.

И перезаписывать файлы без ведома пользователя? Улыбающийся А в ТС с диалогами все нормально, ненужные в настройках отключаются на вкладке Misс.

Сегодня сделал нормальное выделение правой кнопкой мыши. Улыбающийся Все оказалось не так сложно. Приступил к драгу/дропу, но пока что-то не получается, первый раз таким делом занимаюсь. Придется книжку проштудировать. Смеющийся
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Апрель 13, 2009, 17:42 »

Кстати, нашел одну интересную вещь. Если в QTreeView сделать:
setAllColumnsShowFocus(true);
setSelectionMode(QAbstractItemView::NoSelection);
То в стиле Оксиген не видно курсора. Что делать и кто виноват?

Кстати, как задать цвет курсора? Что-то в palette не нашел. Грустный
« Последнее редактирование: Апрель 13, 2009, 17:54 от panter_dsd » Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #6 : Апрель 13, 2009, 21:20 »

А смотрели ли krusader  - аналог WinCommader под KDE? может лучше им помочь? ))
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Апрель 13, 2009, 21:35 »

Отстой. По уши завязан на кедах. Пользовался им, потом на МС ушел. Улыбающийся
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #8 : Апрель 14, 2009, 10:19 »

У mc текстовый гуй!
А вы тут графический собрались писать. Или щас стало модно Qt-only вещи писать  Улыбающийся
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #9 : Апрель 14, 2009, 11:25 »

Вот будет прикол вантузятникам качать инсталягу кед для запуска ФМ. :\ По мне, должно быть именно Qt-only.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #10 : Апрель 15, 2009, 11:01 »

Во общем если человеку нужен велосипед - то пусть себе его сделает. Для меня к сожалению, есть всего 2 нормальных редактора. Это FAR и MC (миднайт коммандер).  Гуевые поделки меня бесят тем, что нельзя быстро ввести консольную комманду - типа ipconfig. Так что, я считаю что командер должен быть текстовый.   Смеющийся
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #11 : Апрель 15, 2009, 11:33 »

Как это нельзя быстро ввести?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #12 : Апрель 15, 2009, 12:36 »

я считаю, что у нормального (удобного) ФМ, должна быть кнопочка для вываливания с низу полноценной консоли, в которую не только писать можно, но и читать результат работы.

А еще в ФМ не хватет настройки наборов окружения. Я сечас пускаю Тотал с помощью bat-файла. А хотелось бы забить несколько комплектов окружения. И оперативно их переключать в ФМе
Записан

Юра.
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #13 : Апрель 15, 2009, 19:02 »

1. Пока рано такое делать, есть вещи поважнее. Можешь свою консоль написать, присобачу с удовольствием.
2. Тут немного поподробнее зачем это нужно.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #14 : Апрель 15, 2009, 19:29 »

зачем? Хм, я думал это довольно очевидная вещь, поэтому уменя даже нет готового объяснения. Также как и на вопрос "зачем мы живём?" Подмигивающий
Записан

Юра.
Страниц: [1] 2 3 ... 20   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 19.