Double Commander

Файловый менеджер

Модератор: Модераторы

Сообщение B4rr4cuda » 24.04.2008 01:00:39

Alexx2000 писал(а):Вообщем закоммитил, можно потестировать..

Я уже.. :) Отлично работает. Спасибо!
Теоретически должно работать, никакой принципиальной разницы вроде нет (или есть?)

Было бы это на чистом фпц - разницы бы не было. Но это лазарус - наслоение над надстройкой наслоеной над наслоением. :lol: Не знаю. Под первым гтк может посопротивляться. Оно же на иксовое окно выводит. Обрати внимание, под первым гтк, при запущеном плагине, на статусбар. Возможно все окно так "зальется". Под QT вообще молчу. Если с крешем не разобраться - мрачные перспективы.
если вызывается при закрытии окна. Shocked

Все хуже. Простой вызов FreeLibrary из вьювера крешит DC.
Надо протестировать это дело...
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Сообщение B4rr4cuda » 24.04.2008 01:08:51

Все хуже. Простой вызов FreeLibrary из вьювера крешит DC.

Поправка, если из закрываемой библы работали с виджетсетом.
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Сообщение B4rr4cuda » 24.04.2008 20:48:00

Ещё поправка - креш происходит при освобождении формы. Это ошибка в LCL. Я накатал две прожки - один на FPC+qt4.pas, второй, такой же, на лазаре. На чистом фпц все красиво. На лазаре - креш.
Вообще хитрый баг. Очень хорошо скрывается и в разных условия по разному себя ведет.
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Сообщение Alexx2000 » 26.04.2008 18:03:53

B4rr4cuda писал(а):Если взять его вариант на вооружение, то не придется извращаться для написания файлсистемных плагинов (апи которых нужно ОЧЕНЬ серьезно переделывать для юзабельности в линуксе ). И как приятный бонус - готовый плагин использующий Gnome-vfs, те все прелести ftp:// smb:// sftp:// - и все это средствами системы.

B4rr4cuda писал(а):
Alexx2000 писал(а):Ага, реализация интересная, хитро сделано. Можно попробовать прикрутить.

Давай попробуем. Только придется нехило поломать текущий механизм. Я покопаю в этом направлении, мож чего и нарою :).


Что нибудь накопал? Пора с этим делом точно определиться, чтоб потом проблем не было...
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 475
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Сообщение B4rr4cuda » 26.04.2008 21:30:11

Что нибудь накопал? Пора с этим делом точно определиться, чтоб потом проблем не было...

Покопал - нам нет к чему цеплять его систему. Надо расширять vfs. Также, надо расширять wfx-api , по крайней мере, под линукс. Я сейчас изучаю плагиновое sdk других фм и думаю - как бы vfs и wfx получше организовать...
Но на данном этапе подцепить (полноценно) не получиться.
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re:

Сообщение Alexx2000 » 28.04.2008 10:29:04

B4rr4cuda писал(а):Я сейчас изучаю плагиновое sdk других фм и думаю - как бы vfs и wfx получше организовать...


Ясно... А я потихоньку готовлю переход на Юникод....
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 475
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Re: Double Commander

Сообщение ev » 28.04.2008 10:31:18

предлагаю перестать писать все сообщения в одной ветке
новые обсуждения просьба открывать в выделенном форуме, дабы потом не искать нужную информацию в 28 листах ;)
ev
долгожитель
 
Сообщения: 1723
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Re: Double Commander

Сообщение Attid » 19.05.2008 22:05:15

ev писал(а):предлагаю перестать писать все сообщения в одной ветке

привычка страшная сила =)


Alexx2000
а описания файлов как в фаре и тц у нас есть ? чет не приметил =/
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2583
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Double Commander

Сообщение Alexx2000 » 19.05.2008 23:21:12

Attid писал(а):Alexx2000а описания файлов как в фаре и тц у нас есть ? чет не приметил =/

Если имеются ввиду описания, которые хранятся в файлике типа descript.ion - то пока нету.
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 475
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Re: Double Commander

Сообщение Attid » 20.05.2008 00:12:08

я тогда в трекер закину

Добавлено спустя 11 минут 57 секунд:
а на плагин мы сейчас можем назначить хоткей ?
можно было бы вынести это в плагины , вот только не знаю какой тип плагина это будет =/
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2583
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Double Commander

Сообщение B4rr4cuda » 20.05.2008 11:24:24

Attid писал(а):а на плагин мы сейчас можем назначить хоткей ?

Неа. Но это нужно. Я уже говорил, систему хоткеев надо переделывать. И уж точно не actionList для этого использовать - слишком много у него ограничений.
Например, одинаковых команд с разными параметрами на разные хоткеи. Неюзабельно.
Attid писал(а):можно было бы вынести это в плагины , вот только не знаю какой тип плагина это будет =/

Новый. :)
Распиши плиз, как ты это себе представляешь (хоткейные плагины).
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re: Double Commander

Сообщение Attid » 20.05.2008 11:58:50

B4rr4cuda писал(а):Например, одинаковых команд с разными параметрами на разные хоткеи. Неюзабельно.

не понял, или понял. =) но его выкидывать не надо он удобен, а для параметизированых акшенов надо другой тип придумать.


B4rr4cuda писал(а):Распиши плиз, как ты это себе представляешь (хоткейные плагины).

думаю что это не хоткейный плагин а контекстный, то есть он может попасть как в главное меню так и в меню на правую кнопу, соответсвенно ему можно будет назнчить хоткей

сам плагин должен давать возможность выдать где он хочет находится (хотя при настраиваемом меню на это можно будет забить) и действие аля как сделанно в ИБэксперте

Код: Выделить всё
Should contain list of integers delimited with colon,
semicolon or space.
Possible values are:

1 - Adds plugin menu items to the end of Main Menu | Databases
2 - Adds plugin menu items to the end of Main Menu | Edit
3 - Adds plugin menu items to the end of Main Menu | View
4 - Adds plugin menu items to the end of Main Menu | Options
5 - Adds plugin menu items to the end of Main Menu | Tools
6 - Adds plugin menu items to the end of Main Menu | Services
7 - Adds plugin menu items to the end of Main Menu | Plugins
8 - Adds plugin menu items to the end of Main Menu | Windows
9 - Adds plugin menu items to the end of Main Menu | Help
11 - Adds plugin menu items to the end of popup menu of code editors

To place plugin menu directly into main menu use negative
integer values or 0. For example, -1 places plugin menu
into main menu just after Database item. 0 places plugin
menu as first item of main menu etc.


*****************
MenuStructure - defines structure of the plugin menu.
Each line describes only one menu item.
Definition of menu item should contain one or more parts
delimited with '|'. The first symbol of each part is control
symbol:

C - caption of menu item
E - procedure associated with menu item (must be listed also
    in an exports clause of your dll)
B - inserts a separator before this menu item
S - shortcut
I - image index
U - update procedure. Used to disable/enable menu item. Must
    be listed also in an exports clause of your dll


Please, see also source of plugins to get examples of menu
structures.


Код: Выделить всё
library Test;

uses
  SysUtils,
  Classes,
  IBEIntfEx,
  Forms,
  Windows,
  Dialogs,
  PluginF in 'PluginF.pas' {DBInfoForm},
  TableInfoF in 'TableInfoF.pas' {TableInfoForm};

{$R *.RES}

procedure CreatePluginForm(Intf : TIBEInterfaceEx);
begin

end;

procedure get_db_info(Intf : TIBEInterfaceEx); stdcall;
begin
  OldHandle := Application.Handle;
  ShowDatabaseInfo(Intf);
end;

procedure get_table_info(Intf : TIBEInterfaceEx); stdcall;
begin
  OldHandle := Application.Handle;
  ShowTableInfo(Intf);
end;

procedure get_view_info(Intf : TIBEInterfaceEx); stdcall;
begin
  ShowMessage('Not realized yet.');
end;

procedure get_plugin_info_ex(Intf: TIBEInterfaceEx; PluginInfo: pointer); stdcall;
begin
  with PIBEPluginInfoEx(PluginInfo)^ do
  begin
    PluginName := 'Plugin Demonstration';
    Description := 'No description';
    PlaceMenu := '-10';
    MenuStructure := PChar('CPlugin Demo|B' + #13 +
                           '    CGetting Database Info|Eget_db_info|I3' + #13 +
                           '    CGetting Database Objects Info' + #13 +
                           '        CTable Info | Eget_table_info | I17' + #13 +
                           '        CView Info | Eget_view_info | I18');
  end;
end;

exports
  get_db_info,
  get_table_info,
  get_plugin_info_ex,
  get_view_info;

end.

только в этом варианте плохо с языковой поддержкой =)

что делает командир (как я предстовляю),
при запуске
1,1 смотрит спец каталог где лежат такие плгины
1,2 смотрит в настройках где ему брать плагин
2, создает экшен , запихивает иму значения из get_plugin_info_ex* типа кепшен, хинт ну и выполнение
3, получает хоткей из настроек командера
4, запихивается в меню где надо
5, ждет когда его вызовут

работа с хоткем будет стандартная.
при вызове будет передоваться выделеный файл\файлы, возможно панель.

правда где такие плагины использовать кроме дискриптион, не знаю =) но можно расширеное инфо о файле напрмер, больше пока не придумал =)
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2583
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Re: Double Commander

Сообщение B4rr4cuda » 20.05.2008 12:30:23

Attid писал(а): Например, одинаковых команд с разными параметрами на разные хоткеи. Неюзабельно.

не понял, или понял. =) но его выкидывать не надо он удобен, а для параметизированых акшенов надо другой тип придумать.

Имеется ввиду невозможность назначения разным хоткеям, одинаковых команд с разными параметрами.
Например:
cmd: ViewLister
param: /home/b4rr4/file1
hotkey: ctrl+a

cmd: ViewLister
param: /home/b4rr4/file2
hotkey: ctrl+b
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re: Double Commander

Сообщение B4rr4cuda » 04.06.2008 01:44:47

Alexx2000 писал(а):Если имеются ввиду описания, которые хранятся в файлике типа descript.ion - то пока нету.

Уже есть. :) В виде контентного lua-плагина. Смотреть в свн. Требуется Lua 5.1 скомпиленная в so или dll библиотеку, путь к которой надо указать в doublecmd.ini в секции Configuration, например:
Код: Выделить всё
[Configuration]
LuaLib=/usr/lib/lua5.1.so
....


Кстати, Алекс, этот TiniFileEx глючит не по детски - каждый запуск ДЦ увеличивает размер инишника на 430 кило забитых нулями (#0). В результате запусков-перезапусков в процессе дебага, мой doublecmd.ini стал под 15 метров размером. Мне кажется это многовато для конфига :lol:.
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re: Double Commander

Сообщение Alexx2000 » 04.06.2008 13:36:26

B4rr4cuda писал(а):Кстати, Алекс, этот TiniFileEx глючит не по детски - каждый запуск ДЦ увеличивает размер инишника на 430 кило забитых нулями (#0). В результате запусков-перезапусков в процессе дебага, мой doublecmd.ini стал под 15 метров размером. Мне кажется это многовато для конфига :lol:.

Вроде я это исправлял в 425 ревизии, похоже не до конца...

Насколько я понял ошибка в классе TIniFile, если использовать конструктор Create(AStream: TStream; AEscapeLineFeeds : Boolean = False);
То при каждой перезаписи, вместо замены значения происходит добавление новых строк, что приводит к многократному дублированию строк.
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 475
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Пред.След.

Вернуться в Double Commander

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru