Double Commander

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

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

Сообщение B4rr4cuda » 10.02.2008 13:35:30

Alex2000
Может добавить в TFrameFilePanel.dgPanelMouseDown
эту "if Button<>mbLeft then Exit;" строчку?
Иначе, контекстное меню по правой, не пашет.
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Сообщение Alexx2000 » 10.02.2008 14:13:15

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

Сообщение B4rr4cuda » 10.02.2008 14:37:08

Что не срабатывает?
Это -> "if Button<>mbLeft then Exit;" ?
У меня оно срабатывает.
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Сообщение Alexx2000 » 10.02.2008 15:24:31

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

Сообщение B4rr4cuda » 10.02.2008 18:10:58

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

Сообщение Alexx2000 » 10.02.2008 18:20:38

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

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

Сообщение B4rr4cuda » 10.02.2008 18:51:08

н присваивается в 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 07:48:35

Сообщение B4rr4cuda » 11.02.2008 00:48:56

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

Сообщение Alexx2000 » 11.02.2008 10:54:24

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

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

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

Сообщение B4rr4cuda » 11.02.2008 14:11:28

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

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

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

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

Сообщение Alexx2000 » 12.02.2008 00:26:14

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

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

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

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

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

Сообщение B4rr4cuda » 12.02.2008 02:20:18

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

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

:shock:
Form1.handle или panel1.handle или ещё какой нить хандле. Viewer1.handle например.
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Сообщение Alexx2000 » 12.02.2008 10:18:08

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.

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

Сообщение B4rr4cuda » 12.02.2008 14:37:31

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

Относится, но это не имеет значения, хэндл то существует и указывает на обьект . Хотя хз как к этому 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 07:48:35

Сообщение B4rr4cuda » 18.02.2008 05:38:54

в svn, 211 ревизии в модуле fFileAssoc наличествует включение {$I ffileassoc.lrs}, а самого файла нет.
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Пред.След.

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

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

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

Рейтинг@Mail.ru