Страница 27 из 35
Добавлено: 19.04.2008 16:07:04
Attid
на deb пакеты жалуются.
подробнее пока не знаю, знаю что у меня doublecmd_0.3.5-1.gtk2_i386.deb "встал" но не запускается, только под рутом , после первого запуска из под рута запускается из под пользователя, но не закрывается.
Добавлено: 19.04.2008 18:28:37
Alexx2000
Блин и правда не работает
Как выяснилось есть баг в копировании файлов настроек в домашний каталог пользователя (у меня эти файлы уже были, поэтому не заметил ошибки когда у себя тестировал).
Пакеты пока убрал, баг подправлю и в понедельник закачаю по новой.
Добавлено: 20.04.2008 18:18:33
Attid
надо сразу отработать сиуацию когда нет достапа на запись в айл настроек. а то запустить его можно, а закрыть нельзя =) или говорить о невозможности сохранения как MC или nano , или как ТЦ тихо закрывать без сохранения.
Добавлено: 21.04.2008 10:15:59
ViTality
А что значит "навигация в стиле Lynx"?
И в этом разделе("Настройка/Параметры/Поведение") чекбоксы должны быть 3-х позиционные?
Да, хотелось бы нормальный(обычный) скролл колесиком мышки, чтоб прокручивался весь список файлов, а не курсор бегал. А то пока прокручишь его вниз...
Добавлено: 21.04.2008 10:35:14
Alexx2000
ViTality писал(а):А что значит "навигация в стиле Lynx"?
Стрелка вправо аналогично Enter, стрелка влево аналогично BackSpace (на уровень выше)
И в этом разделе("Настройка/Параметры/Поведение") чекбоксы должны быть 3-х позиционные?
Вообще-то нет
Да, хотелось бы нормальный(обычный) скролл колесиком мышки, чтоб прокручивался весь список файлов, а не курсор бегал. А то пока прокручишь его вниз...
Так это сейчас настраивается на вкладке "Поведение", правда не под всеми виджетсетами корректно работает
Добавлено: 21.04.2008 14:48:06
ViTality
Так это сейчас настраивается на вкладке "Поведение", правда не под всеми виджетсетами корректно работает

меня чекбоксы отвлекли...
Добавлено: 22.04.2008 17:41:09
Alexx2000
Пакеты обновил, теперь должны работать
Добавлено: 22.04.2008 21:20:21
B4rr4cuda
Я тут wlx плагин накатал, для проигрывания мультимедии. Запускает mplayer в окне листера.
Только основа - никаких графических приблуд.
Проблема в том, что работает только под первый gtk.
Если кто силен в Gtk2 или\и Qt гляньте плиз, может получится доработать и для других виджетсетов.
Добавлено: 23.04.2008 11:13:59
Alexx2000
Интересный плагин

, и видео показывает.
Как сделать для QT4 вроде нашел, покапавшись в исходниках smplayer, нужно использовать QWidget::winId ()
Дома могу попробовать сделать...
Добавлено: 23.04.2008 12:59:00
B4rr4cuda
Alexx2000 писал(а):Как сделать для QT4 вроде нашел, покапавшись в исходниках smplayer, нужно использовать QWidget::winId ()
Дома могу попробовать сделать...
Отлично. Попробуй, пожалуйста.
Добавлено: 23.04.2008 22:45:18
Alexx2000
Так вроде сделал (пока не коммитил), работает и под 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 класс или один на все (как в вышеприведенным примере). Пока различий не так много.
Планируешь добавить, в него что-нибудь еще?
Добавлено: 23.04.2008 22:55:58
alexs
Вынеси код, зависимый от виджета в различные инклуды - будет проще.
Добавлено: 23.04.2008 23:28:23
B4rr4cuda
Alexx2000 писал(а):Так вроде сделал (пока не коммитил), работает и под QT4 (правда при закрытии падает) и под GTK2. Правда код какой-то корявый (или пойдет?):
Пойдет!

Причесать не проблема, главное чтоб работало.
работает и под QT4 (правда при закрытии падает)
Это знакомая проблема. Я потому и сообщал в трекере что под qt фигово работает. Я выяснил, что если сначала скрыть контролы, а через секунду-две освобождать плагин - то не падает. Хз, почему такой танец.
Вот только не знаю как лучше на каждый widgetset свой T(widgetset)Player класс или один на все (как в вышеприведенным примере). Пока различий не так много.
Лучше T(widgetset)Player класс. Удобнее.
UPD: Хотя, знаешь, лучше оставить так, иначе будет путаница. Процедуры управления mplayer-ом все равно будут одни....
Alexx2000 писал(а):Планируешь добавить, в него что-нибудь еще?
Не, мне сам принцип интересен был - получиться это на лазаре или нет.
А дальше там строго интерфейсо-созидание с которым я стараюсь не связываться.
Мне другое интересно - будет ли этот плаг работать, если он будет запущен в панели быстрого просмотра (которая рано или поздно будет реализована)?
Добавлено: 24.04.2008 00:31:32
B4rr4cuda
Alexx2000 писал(а):QT4 (правда при закрытии падает)
Ппц. Оказываеться креш приложения вызывает
если вызывается при закрытии окна.

Добавлено: 24.04.2008 00:35:02
Alexx2000
Вообщем закоммитил, можно потестировать...
alexs писал(а):Вынеси код, зависимый от виджета в различные инклуды - будет проще.
Когда кода много, то да. А в данном случае не имеет смысла, разница всего в нескольких строчках.
B4rr4cuda писал(а):Мне другое интересно - будет ли этот плаг работать, если он будет запущен в панели быстрого просмотра (которая рано или поздно будет реализована)?
Теоретически должно работать, никакой принципиальной разницы вроде нет (или есть?)
B4rr4cuda писал(а):Alexx2000 писал(а):QT4 (правда при закрытии падает)
Ппц. Оказываеться креш приложения вызывает
если вызывается при закрытии окна.

Странное дело...