Double Commander

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

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

Сообщение B4rr4cuda » 14.03.2008 16:15:12

fpc 2.2.0 а вот лазарь лучше svn версию...
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Сообщение Attid » 14.03.2008 16:51:34

B4rr4cuda писал(а):Наконец-то разобрался с миксованием LCL и прямых GTK вызовов.Начинаю писать WLX апи для линукса.
Душа поет :), скоро, уже скоро у меня будет нормальный графический фм для линукса, там пара-пам.... =)


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

Сообщение B4rr4cuda » 14.03.2008 17:07:06

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

Сообщение B4rr4cuda » 14.03.2008 17:24:06

Attid ты меня подтолкнул к интересной мысли:
Ведь можно и интерфейс таким же макаром изменять. Только выдавать интерфейсному плагу список компонентов главного окна... Приму эту методику, как запасной вариант.

PS.
Пока я вижу и для WLX и для WI(nterface)X одну проблему:
плаг использующий GTK api не будет работать в DC скомпиленом на GTK2 и на QT.
Как быть?
Пришли в башку следующие варианты:
1) Вынести листер в отдельное приложение и скомпилить под все три интерфейса, спрашивать плагин, какой интерфейс ему нужен и вызывать необходимый.
2)Забить и предоставить плагинописателям отдуваться - писать одно и то же для всех трех интерфейсов.
Лазаровцам, в принципе, все равно (перекомпилил под нужный интерфейс и все), а вот пишущие на чистом fpc или на С завоют.
3)Жёстко извращаться, создавая для плагина пустое окно на чистом апи нужного интерфейса.

Кто что посоветует, предложит?
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Сообщение Attid » 14.03.2008 17:36:11

2 и 3 , я за 2 =) все равно к примеру для венды и линя не будешь одно и то же делать, хотя с Алексом мы нашли способ вызывать плагины ТС в лине без переделки, но не проверяли.


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

Сообщение B4rr4cuda » 14.03.2008 18:38:26

отя с Алексом мы нашли способ вызывать плагины ТС в лине без переделки, но не проверяли.

А можно поподробнее? Я думал поэксперементировать с winelib. А вы как?

Эксперимент показал, что две кнопочки из библы использующей первый GTK отлично создаются и работают в GTK2 приложении, вызывающем эту библиотеку:
Библа
Код: Выделить всё
library project1;

{$mode objfpc}{$H+}

uses
    gtk,glib,gdk;

  var GBox,GButton1,Gbutton2:PGtkWidget;
   procedure ButtonToPanel(X:PGtkWidget); stdcall;
   begin
     gBox:=gtk_hbox_new(false,0);
     gtk_container_set_border_width (GTK_CONTAINER (gBox), 2);
     gtk_container_add(GTK_CONTAINER(X),GBox );
     gtk_widget_show(gBox);


     GButton1:=gtk_button_new_with_label('Yehoo1');
     //gtk_container_add(GTK_CONTAINER(PGtkWidget(panel1.Handle)),GButton1);
     gtk_container_add(GTK_CONTAINER(gBox),GButton1);
     gtk_widget_show(GButton1);

     Gbutton2:=gtk_button_new_with_label('Yehoo2');
     gtk_container_add(GTK_CONTAINER(GBox),Gbutton2 );
     gtk_widget_show(Gbutton2);
   end;

   exports ButtonToPanel;

begin
end.


Вызов:
Код: Выделить всё
procedure TForm1.Button5Click(Sender: TObject);
begin
   Hlib:=LoadLibrary('path to lib.so');
   if Hlib<>0 then
     begin
       Button5.Caption:='LoadLib OK';
       Button7.Caption:='UnLoadLib';
     end;
end;

procedure TForm1.Button6Click(Sender: TObject);
type TPro=procedure (X:PGtkWidget); stdcall;
var Proc:TPro;
begin
proc:=TPro(GetProcAddress(HLib,'ButtonToPanel'));
if proc <> nil then
   begin
     proc(PGtkWidget(Panel1.Handle));
   end else showmessage('Error');
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
    if UnloadLibrary(Hlib) then
    begin
     Button5.Caption:='LoadLib';
     Button7.Caption:='UnLoadLib OK';
    end;
end;


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

Сообщение Attid » 15.03.2008 17:59:09

Я думал поэксперементировать с winelib. А вы как?

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

Сообщение Padre_Mortius » 16.03.2008 01:59:44

framepanel.pas(204,110) Error: Can't take the address of constant expressions


Решается очень просто:
1. добавляем в список используемых модулей uFileList
2.
Код: Выделить всё
var
  ls: TFileList;
begin
  ....
  ls := pnlFile.FileList;
  pnlFile.VFS.VFSmodule.VFSList(ExtractDirLevel(pnlFile.VFS.ArcFullName, ActiveDir), ls);
  ...
end;     
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение B4rr4cuda » 16.03.2008 04:54:10

2Padre_Mortius
Я считаю, не стоит адаптировать код под 2.3.1 версию, а точнее под эту багу фпц. Я погуглил - баг с использованием property в качестве var параметра, уже несколько раз исправляли и заново ломали.
Имхо, стоит придерживаться стайбл версий копилятора.
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Сообщение B4rr4cuda » 18.03.2008 01:42:25

Я заметил, что большинство багов из трекера - исправлено. Остались в основном мелочи. Может стоит в свн вынести текущую ревизию в отдельные ветки и, подчистив, выпустить версию 0.4 альфа и 0.3 beta (или даже "0.3 почти stable" :) )?
Зачем? Тестеры нужны. После выпуска новой версии всегда всплеск активности. Надо активность поддерживать. :)
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Сообщение Alexx2000 » 18.03.2008 02:13:25

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

Сообщение B4rr4cuda » 18.03.2008 09:15:56

Создание ветки
svn copy http://doublecmd.svn.sourceforge.net/sv ... ecmd/trunk http://doublecmd.svn.sourceforge.net/sv ... hes/dc-0.3

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

Сообщение Attid » 18.03.2008 12:34:51

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

Сообщение B4rr4cuda » 18.03.2008 14:19:14

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

Сообщение Attid » 18.03.2008 18:43:52

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

Пред.След.

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

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

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

Рейтинг@Mail.ru