Double Commander

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

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

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

Сообщение B4rr4cuda »

Alex2000
Может добавить в TFrameFilePanel.dgPanelMouseDown
эту "if Button<>mbLeft then Exit;" строчку?
Иначе, контекстное меню по правой, не пашет.
Аватара пользователя
Alexx2000
постоялец
Сообщения: 490
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи
Контактная информация:

Сообщение Alexx2000 »

Добавил, странно почему не срабатывает :?:
Аватара пользователя
B4rr4cuda
энтузиаст
Сообщения: 693
Зарегистрирован: 28.12.2007 06:48:35

Сообщение B4rr4cuda »

Что не срабатывает?
Это -> "if Button<>mbLeft then Exit;" ?
У меня оно срабатывает.
Аватара пользователя
Alexx2000
постоялец
Сообщения: 490
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи
Контактная информация:

Сообщение Alexx2000 »

Не, я имею в виду почему без этого не срабатывает, OnMouseUp не вызывается что ли.
Аватара пользователя
B4rr4cuda
энтузиаст
Сообщения: 693
Зарегистрирован: 28.12.2007 06:48:35

Сообщение B4rr4cuda »

Насколько я вижу, ручного OnMouseUp не объявлено вообще, а в OnMouseDown , незавиcимо от нажатой кнопки мыши, начинается драг и соответственно меню не вызывается. Все логично.
Аватара пользователя
Alexx2000
постоялец
Сообщения: 490
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи
Контактная информация:

Сообщение Alexx2000 »

B4rr4cuda писал(а):Насколько я вижу, ручного OnMouseUp не объявлено вообще

Он присваивается в fMain, из него и происходит вызов меню.
Хотя у меня есть одна идея почему не работает, надо проверить.
Аватара пользователя
B4rr4cuda
энтузиаст
Сообщения: 693
Зарегистрирован: 28.12.2007 06:48:35

Сообщение B4rr4cuda »

н присваивается в fMain, из него и происходит вызов меню.
Хотя у меня есть одна идея почему не работает, надо проверить.

Тогда я без понятия почему так происходит.
Кстати замени пожалуйста код в ucolumns.pas:

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

procedure TPanelColumnsClass.Load(FileName:string);
var Ini:TIniFile;
begin
  try
    Ini:=TIniFile.Create(FileName);
    Load(Ini);
  finally
    Ini.Free;
  end;

Я ступил, сдублировал код. И аналогично:

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

procedure TPanelColumnsClass.Save(FileName: string);
 var Ini:TIniFile;
begin
  try
    Ini:=TIniFile.Create(FileName);
     Save(Ini);
  finally
    Ini.Free;
  end;
end;
Аватара пользователя
B4rr4cuda
энтузиаст
Сообщения: 693
Зарегистрирован: 28.12.2007 06:48:35

Сообщение B4rr4cuda »

Я тут задумался над wlx для DC. Основа Тоталовского wlx апи - передача хэндла окна листера, а там уж делай с ним, что хочешь. Насколько показали мои поиски, аналога windows.SetParent() в лазаре нет. В Xlib или X модуле есть функция ReparentWindow, возможно она подойдет. Но в этом случае, реализация плагина в линуксе будет на лысом X11. Никаких вкусностей типа lcl, форм и прочего. Хотя, я думаю, можно извратиться...
Если есть варианты - подскажите плиз. :!:
И какие вообще планы и мысли по поводу WLX:?:
Аватара пользователя
Alexx2000
постоялец
Сообщения: 490
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи
Контактная информация:

Сообщение Alexx2000 »

Я недавно тоже немного копался в доках по Х, правда по поводу того как сделать терминал.
Даже если XReparentWindow(display, w, parent, x, y) подойдет, то как получить parent, т.е. окно просмоторщика?

И какие вообще планы и мысли по поводу WLX:?:

Собственно из-за этого, и не понятно как лучше сделать.
Аватара пользователя
B4rr4cuda
энтузиаст
Сообщения: 693
Зарегистрирован: 28.12.2007 06:48:35

Сообщение B4rr4cuda »

Я недавно тоже немного копался в доках по Х, правда по поводу того как сделать терминал.

Я тоже рыскал по поводу терминала, вот что надумал - берем компонент CmdLine дорабатываем маленько для собственного удобства. Здесь же на форуме выложен класс TExProcess дорабатываем и его. Обьединяем и получаем почти готовую консоль, "все уже написано до нас".

Даже если XReparentWindow(display, w, parent, x, y) подойдет, то как получить parent, т.е. окно просмоторщика?

Из плагина? Очень просто. Просмотрщик сам его передает плагину в функции ListLoad(ParentWin:HWND; FileToLoad:string; ShowFlags:integer):HWND;
Если рисовать чистым x11, то можно придерживаться тоталовского апи, проблем быть не должно. Кстати, вот тот самый случай, когда пригодиться расширенное апи.
Я еще покопаюсь в этом вопросе, может чего-то нарою.
Аватара пользователя
Alexx2000
постоялец
Сообщения: 490
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи
Контактная информация:

Сообщение Alexx2000 »

B4rr4cuda писал(а):
Я недавно тоже немного копался в доках по Х, правда по поводу того как сделать терминал.

Я тоже рыскал по поводу терминала, вот что надумал - берем компонент CmdLine дорабатываем маленько для собственного удобства.

Э не понял, что за компонент CmdLine.
Ну остальное ясно, т.е. просто будем перехватывать вывод программ.

Из плагина? Очень просто. Просмотрщик сам его передает плагину в функции ListLoad(ParentWin:HWND; FileToLoad:string; ShowFlags:integer):HWND;

Не, как просмоторщик узнает, так сказать Handle своего окна, чтобы передать плагину?
Аватара пользователя
B4rr4cuda
энтузиаст
Сообщения: 693
Зарегистрирован: 28.12.2007 06:48:35

Сообщение B4rr4cuda »

Э не понял, что за компонент CmdLine.

Этот
Не, как просмоторщик узнает, так сказать Handle своего окна, чтобы передать плагину?

:shock:
Form1.handle или panel1.handle или ещё какой нить хандле. Viewer1.handle например.
Аватара пользователя
Alexx2000
постоялец
Сообщения: 490
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи
Контактная информация:

Сообщение Alexx2000 »

B4rr4cuda писал(а):
Э не понял, что за компонент CmdLine.

Этот

Посмотрим...
Не, как просмоторщик узнает, так сказать Handle своего окна, чтобы передать плагину?

:shock:
Form1.handle или panel1.handle или ещё какой нить хандле. Viewer1.handle например.

:D Просто на Лазарус вики, вот здесь Прочитал нижеследующее:
Every TWinControl has a Handle, and the LCL does not need to know, what a Handle is. The meaning of the Handle is totally up to the interface:

* under gtk a Handle is often a PGtkWidget
* under windows a Handle is often a HWnd.
* under Carbon a Handle is often a object descendant of TCarbonWidget.
* under Qt, a Handle is often a pointer to a object descendent of TQtWidget.

Или к формам это не относится?
Аватара пользователя
B4rr4cuda
энтузиаст
Сообщения: 693
Зарегистрирован: 28.12.2007 06:48:35

Сообщение B4rr4cuda »

Или к формам это не относится?

Относится, но это не имеет значения, хэндл то существует и указывает на обьект . Хотя хз как к этому XReparent отнесется... Теперь я понял что ты имел ввиду. :(
Все не так просто, но выход есть:
поиск по документации qt показал, что функция SetParent наличествует

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

   void Receiver::setParent( QDialog *parent )

также есть фунца reparent

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

void QWidget::reparent ( QWidget * parent, WFlags f, const QPoint & p, bool showIt = FALSE ) [virtual] 
 Reparents the widget. The widget gets a new parent, new widget flags (f, but as usual, use 0) at a new position in its new parent (p).


Для GTK аналог тоже есть:

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

gtk_widget_reparent ()
void        gtk_widget_reparent             (GtkWidget *widget,
                                             GtkWidget *new_parent);
 Moves a widget from one GtkContainer to another, handling reference count issues to avoid destroying the widget.
widget :   a GtkWidget
  new_parent :   a GtkContainer to move the widget into

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

Сообщение B4rr4cuda »

в svn, 211 ревизии в модуле fFileAssoc наличествует включение {$I ffileassoc.lrs}, а самого файла нет.
Ответить