Double Commander

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

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

Сообщение Attid » 19.04.2008 16:07:04

на deb пакеты жалуются.

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

Сообщение Alexx2000 » 19.04.2008 18:28:37

Блин и правда не работает :(
Как выяснилось есть баг в копировании файлов настроек в домашний каталог пользователя (у меня эти файлы уже были, поэтому не заметил ошибки когда у себя тестировал).
Пакеты пока убрал, баг подправлю и в понедельник закачаю по новой.
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 487
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Сообщение Attid » 20.04.2008 18:18:33

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

Сообщение ViTality » 21.04.2008 10:15:59

А что значит "навигация в стиле Lynx"?
И в этом разделе("Настройка/Параметры/Поведение") чекбоксы должны быть 3-х позиционные?

Да, хотелось бы нормальный(обычный) скролл колесиком мышки, чтоб прокручивался весь список файлов, а не курсор бегал. А то пока прокручишь его вниз...
ViTality
постоялец
 
Сообщения: 308
Зарегистрирован: 05.10.2007 15:12:02

Сообщение Alexx2000 » 21.04.2008 10:35:14

ViTality писал(а):А что значит "навигация в стиле Lynx"?

Стрелка вправо аналогично Enter, стрелка влево аналогично BackSpace (на уровень выше)
И в этом разделе("Настройка/Параметры/Поведение") чекбоксы должны быть 3-х позиционные?

Вообще-то нет
Да, хотелось бы нормальный(обычный) скролл колесиком мышки, чтоб прокручивался весь список файлов, а не курсор бегал. А то пока прокручишь его вниз...

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

Сообщение ViTality » 21.04.2008 14:48:06

Так это сейчас настраивается на вкладке "Поведение", правда не под всеми виджетсетами корректно работает

:oops: меня чекбоксы отвлекли...
ViTality
постоялец
 
Сообщения: 308
Зарегистрирован: 05.10.2007 15:12:02

Сообщение Alexx2000 » 22.04.2008 17:41:09

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

Сообщение B4rr4cuda » 22.04.2008 21:20:21

Я тут wlx плагин накатал, для проигрывания мультимедии. Запускает mplayer в окне листера.
Только основа - никаких графических приблуд.
Проблема в том, что работает только под первый gtk.
Если кто силен в Gtk2 или\и Qt гляньте плиз, может получится доработать и для других виджетсетов.
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Сообщение Alexx2000 » 23.04.2008 11:13:59

Интересный плагин :D, и видео показывает.
Как сделать для QT4 вроде нашел, покапавшись в исходниках smplayer, нужно использовать QWidget::winId ()
Дома могу попробовать сделать...
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 487
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Сообщение B4rr4cuda » 23.04.2008 12:59:00

Alexx2000 писал(а):Как сделать для QT4 вроде нашел, покапавшись в исходниках smplayer, нужно использовать QWidget::winId ()
Дома могу попробовать сделать...

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

Сообщение Alexx2000 » 23.04.2008 22:45:18

Так вроде сделал (пока не коммитил), работает и под QT4 (правда при закрытии падает) и под GTK2. Правда код какой-то корявый (или пойдет?):
Код: Выделить всё
uses
..................................
  x,
  {$IFDEF LCLGTK} gtk, gdk, glib, {$ENDIF}
  {$IFDEF LCLGTK2} gtk2, gdk2, glib2, gdk2x, {$ENDIF}
  {$IFDEF LCLQT} qt4, {$ENDIF}
................................................................

type

//Class implementing mplayer control
{ TMPlayer }

TMPlayer=class(TThread)
        public
          //---------------------
          hWidget:THandle;   //the integrable widget
          fileName:string;        //filename
          xid:TWindow;      //X window handle
          pr:TProcess;            //mplayer's process
          pmplayer:string;        //path to mplayer
          //---------------------
          constructor Create(AFilename:String);
          destructor destroy; override;
          procedure SetParentWidget(AWidget:thandle);
        protected
          procedure Execute; override;
        private

     end;

{ TMPlayer }

constructor TMPlayer.Create(AFilename:String);
var pf:TExProcess;
begin
  inherited Create(true);
  filename:='"'+AFilename+'"';
  pf:=TExProcess.Create('which mplayer');
  pf.Execute;
  pmplayer:=pf.RezList[0]+' ';
  pf.Free;
  writeln('PLUGIN : found mplayer in :' + pmplayer);
end;

destructor TMPlayer.destroy;
begin
  if pr.Running then
    pr.Terminate(0);
  pr.Free;
  inherited destroy;
end;

procedure TMPlayer.SetParentWidget(AWidget: THandle);
{$IFDEF LCLQT}
begin
  xid:= QWidget_winId(QWidgetH(AWidget));
  hWidget:= AWidget;
end;
{$ELSE}
var
   widget,
   mySocket:PGtkWidget;   //the socket
begin
  widget := gtk_vbox_new(FALSE,0);
  mySocket := gtk_socket_new();
  gtk_container_add (GTK_CONTAINER(widget), mySocket);

  gtk_widget_show(mySocket);
  gtk_widget_show(widget);

//*****
  gtk_container_add (GTK_CONTAINER (PGtkWidget(Awidget)), widget);
  gtk_widget_realize(mySocket);
  gtk_widget_hide(PGtkWidget(AWidget));
{$IFDEF LCLGTK}
  xid:=(PGdkWindowPrivate(widget^.window))^.xwindow;
{$ENDIF}
{$IFDEF LCLGTK2}
  xid:=GDK_WINDOW_XID(widget^.window);
{$ENDIF}
  hWidget:= THandle(widget);
end;
{$ENDIF}


procedure TMPlayer.Execute;
begin
   pr:=TProcess.Create(nil);
   pr.Options := Pr.Options + [poWaitOnExit,poNoConsole{,poUsePipes}]; //mplayer stops if poUsePipes used.
   pr.CommandLine:=pmplayer+fileName+' -wid '+IntToStr(xid);
   pr.Execute;
end;

.........................................................

function ListLoad(ParentWin:thandle;FileToLoad:pchar;ShowFlags:integer):thandle; stdcall;
var p:TMPlayer;
begin
   p:=TMPlayer.Create(string(FileToLoad));
   p.SetParentWidget(ParentWin);
   
   //Create list if none
   if not assigned(List) then
       List:=TStringList.Create;

   //add to list new plugin window and it's info
   List.AddObject(IntToStr(integer(p.hWidget)),TPlugInfo.Create);
   with TPlugInfo(List.Objects[List.Count-1]) do
     begin
       fFileToLoad:=FileToLoad;
       fShowFlags:=ShowFlags;
       AddControl(p);
     end;
     
Result:=integer(p.hWidget);

p.Resume;

end;


Вот только не знаю как лучше на каждый widgetset свой T(widgetset)Player класс или один на все (как в вышеприведенным примере). Пока различий не так много.

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

Сообщение alexs » 23.04.2008 22:55:58

Вынеси код, зависимый от виджета в различные инклуды - будет проще.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение B4rr4cuda » 23.04.2008 23:28:23

Alexx2000 писал(а):Так вроде сделал (пока не коммитил), работает и под QT4 (правда при закрытии падает) и под GTK2. Правда код какой-то корявый (или пойдет?):

Пойдет! :lol: Причесать не проблема, главное чтоб работало.
работает и под QT4 (правда при закрытии падает)

Это знакомая проблема. Я потому и сообщал в трекере что под qt фигово работает. Я выяснил, что если сначала скрыть контролы, а через секунду-две освобождать плагин - то не падает. Хз, почему такой танец.

Вот только не знаю как лучше на каждый widgetset свой T(widgetset)Player класс или один на все (как в вышеприведенным примере). Пока различий не так много.

Лучше T(widgetset)Player класс. Удобнее.
UPD: Хотя, знаешь, лучше оставить так, иначе будет путаница. Процедуры управления mplayer-ом все равно будут одни....

Alexx2000 писал(а):Планируешь добавить, в него что-нибудь еще?

Не, мне сам принцип интересен был - получиться это на лазаре или нет.
А дальше там строго интерфейсо-созидание с которым я стараюсь не связываться.

Мне другое интересно - будет ли этот плаг работать, если он будет запущен в панели быстрого просмотра (которая рано или поздно будет реализована)?
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Сообщение B4rr4cuda » 24.04.2008 00:31:32

Alexx2000 писал(а):QT4 (правда при закрытии падает)

Ппц. Оказываеться креш приложения вызывает
Код: Выделить всё
FreeLibrary(FModuleHandle);

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

Сообщение Alexx2000 » 24.04.2008 00:35:02

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

alexs писал(а):Вынеси код, зависимый от виджета в различные инклуды - будет проще.


Когда кода много, то да. А в данном случае не имеет смысла, разница всего в нескольких строчках.

B4rr4cuda писал(а):Мне другое интересно - будет ли этот плаг работать, если он будет запущен в панели быстрого просмотра (которая рано или поздно будет реализована)?


Теоретически должно работать, никакой принципиальной разницы вроде нет (или есть?)

B4rr4cuda писал(а):
Alexx2000 писал(а):QT4 (правда при закрытии падает)

Ппц. Оказываеться креш приложения вызывает
Код: Выделить всё
FreeLibrary(FModuleHandle);

если вызывается при закрытии окна. :shock:


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

Пред.След.

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

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

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

Рейтинг@Mail.ru