Double Commander
Модератор: Модераторы
н присваивается в 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; Я тут задумался над wlx для DC. Основа Тоталовского wlx апи - передача хэндла окна листера, а там уж делай с ним, что хочешь. Насколько показали мои поиски, аналога windows.SetParent() в лазаре нет. В Xlib или X модуле есть функция ReparentWindow, возможно она подойдет. Но в этом случае, реализация плагина в линуксе будет на лысом X11. Никаких вкусностей типа lcl, форм и прочего. Хотя, я думаю, можно извратиться...
Если есть варианты - подскажите плиз.
И какие вообще планы и мысли по поводу WLX:?:
Если есть варианты - подскажите плиз.
И какие вообще планы и мысли по поводу WLX:?:
- Alexx2000
- постоялец
- Сообщения: 490
- Зарегистрирован: 25.10.2006 00:22:07
- Откуда: Мытищи
- Контактная информация:
Я недавно тоже немного копался в доках по Х, правда по поводу того как сделать терминал.
Даже если XReparentWindow(display, w, parent, x, y) подойдет, то как получить parent, т.е. окно просмоторщика?
Собственно из-за этого, и не понятно как лучше сделать.
Даже если XReparentWindow(display, w, parent, x, y) подойдет, то как получить parent, т.е. окно просмоторщика?
И какие вообще планы и мысли по поводу WLX:?:
Собственно из-за этого, и не понятно как лучше сделать.
Я недавно тоже немного копался в доках по Х, правда по поводу того как сделать терминал.
Я тоже рыскал по поводу терминала, вот что надумал - берем компонент 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
- Откуда: Мытищи
- Контактная информация:
B4rr4cuda писал(а):Я недавно тоже немного копался в доках по Х, правда по поводу того как сделать терминал.
Я тоже рыскал по поводу терминала, вот что надумал - берем компонент CmdLine дорабатываем маленько для собственного удобства.
Э не понял, что за компонент CmdLine.
Ну остальное ясно, т.е. просто будем перехватывать вывод программ.
Из плагина? Очень просто. Просмотрщик сам его передает плагину в функции ListLoad(ParentWin:HWND; FileToLoad:string; ShowFlags:integer):HWND;
Не, как просмоторщик узнает, так сказать Handle своего окна, чтобы передать плагину?
Э не понял, что за компонент CmdLine.
Этот
Не, как просмоторщик узнает, так сказать Handle своего окна, чтобы передать плагину?
Form1.handle или panel1.handle или ещё какой нить хандле. Viewer1.handle например.
- Alexx2000
- постоялец
- Сообщения: 490
- Зарегистрирован: 25.10.2006 00:22:07
- Откуда: Мытищи
- Контактная информация:
Посмотрим...
Не, как просмоторщик узнает, так сказать Handle своего окна, чтобы передать плагину?![]()
Form1.handle или panel1.handle или ещё какой нить хандле. Viewer1.handle например.
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.
Или к формам это не относится?
Или к формам это не относится?
Относится, но это не имеет значения, хэндл то существует и указывает на обьект . Хотя хз как к этому 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.
А хэндлы как ты мог заметить, как раз нужного типа.
