-
Здравствуйте, уважаемые Мастера. Начал портирование KOL под Linux используя компилятор fpc, методом скопировал-вставил-исправил. Есть несколько вопросов: 1 На сколько рабочий код для GTK2 (я так понимаю он был написан для Kylix ныне мертвой)? 2 Как лучше поступить с ресурсами приложение ведь по стандартам unix-приложений ресурсы находятся в каталоге /usr[/local]/share/appname или все же сделать так как это придумали ребята сделавшие Lazarus? 3 насколько нужна фунция NewApplet? 4 Имеет ли смысл потом обьеденять Kol под Windows и под Linux (так как у меня модуль назван KOLLinux и под windows он не работоспособен)?
Работает: NewButton NewEditbox-не все свойства NewForm-не все свойства NewTimer NewMenu-несделан Checkbox, Popup, и иконки NewLabel MsgBox MsgOK ShowMsg ShowMessage
пример как делаю было
function NewForm( AParent: PControl; const Caption: KOLString ): PControl; {$IFDEF GTK} var widget: PGtkWidget; {$ENDIF GTK} begin if not GTK_initialized then begin GTK_initialized := TRUE; gtk_init( @ argc, {@ argv} nil ); end; {$IFDEF GDI} Result := _NewWindowed( AParent, 'Form', True ); {$ELSE _X_} {$IFDEF GTK} widget := gtk_window_new( GTK_WINDOW_TOPLEVEL ); Result := _NewWindowed( AParent, 'Form', widget, FALSE ); {$ENDIF GTK} {$ENDIF _X_} Result.fGetCaption := getFormCaption; Result.fSetCaption := setFormCaption; Result.Caption := Caption; Result.fIsForm := TRUE; gtk_signal_connect( Pointer( Result.fHandle ), 'destroy', @ DestroyForm, Result ); end; {$ENDIF GTK} {$ENDIF _X_}
стало
function NewForm( AParent: PControl; const Caption: KOLString ): PControl; var widget: PGtkWidget; begin if not GTK_initialized then begin GTK_initialized := TRUE; gtk_init( @ argc, @ argv{ nil} ); end; widget := gtk_window_new(GTK_WINDOW_TOPLEVEL); Result := _NewWindowed(AParent, 'Form', widget, FALSE); Result.fFixed:= gtk_fixed_new (); Result.fVBox:=gtk_vbox_new(false,0); gtk_container_add (PGtkContainer(Result.fHandle), Result.fVBox); gtk_widget_set_events( Result.fFixed, GDK_ALL_EVENTS_MASK ); gtk_widget_set_extension_events(Result.fFixed,GDK_EXTENSION_EVENTS_ALL); gtk_widget_show(Result.fFixed); gtk_widget_show(Result.fVBox); gtk_box_pack_start(GTK_BOX(Result.fVBox),Result.fFixed,true,true,0); Result.fGetCaption := getFormCaption; Result.fSetCaption := setFormCaption; Result.Caption := Caption; Result.fIsForm := TRUE; g_signal_connect (G_OBJECT (Result.fHandle), 'delete_event', G_CALLBACK (@DeleteForm_event), Result); gtk_fixed_set_has_window(GTK_FIXED(Result.fFixed), true); end;
-
Компилировал я как раз fpc, под cyg-win наWindows. До запуска на живом линуксе дело не дошло. NewApplet под линуксом возможно не имеет значения, но ее хорошо было бы оставить для совместимости. Можно создать скрытое псевдо-окно, можно просто от TObj. Объединять может даже и не нужно. Если будет обеспечена совместимость с текущей версией KOL на 80-90%, это более чем достаточно. Других БОЛЬШИХ изменений в самом KOL.pas я уже не планирую. Да и не нужны они, разве только ради исправления ошибок.
Насколько я помню, оставалось доделать аналоги listview, treeview и некоторых других common-контролов типа таб-контрола. Но потом у меня резко не стало времени и не на чем стало бороться с линуксом. Да и сейчас я его не держу, не на чем даже виртуалку развернуть.
-
Скажите, а правда ли, что по идеологии вызовов KOL похожа на SWT?
-
Наоборот, это SWT похож по идеологии вызовов на KOL. Сравните дату первого релиза SWT и KOL.
-
SWT - это что?
-
В чем разница между процедурами TMenu.Popup(x,y); и TMenu.PopupEx(x,y)? (у меня нет под руками ОС Windows)
-
Еще вопрос. Есть две функции PostMessage , SendMessage которые в Unix системах нет. Нужно ли их эмулировать или же сделать разбор параметров в свойствах TControl.Style и TControl.ExStyle. Просто на просто управление чужими приложениями (то есть нажатие допустим кнопки на чужой форме) не всегда реально . Допустим на формах сделанных на qt4/kde4 не все элементы имеют свой хендл. Общее управление окна, т.е. закрыть , сверныть, равернуть вполне реализуемо но стопроценто не гарантированно.
-
В комментариях все написано. Для Linux достаточно наверное вызывать одно из другого (Popup(Ex)).
Эмулировать SendMessage не надо. Это платформенно-зависимая вещь, если кто-то делает многоплатформенную программу, пусть использует IFDEF для отключения кода, который не для линукса. Тем более не интересует управление чужими приложениями.
-
Надеюсь, портирование дойдёт до конца :-).
-
Очень надеюсь, что увижу KOL под Linux!
-
KOL Win x64 ???
-
Jon Linux важнее.
biv Надеюсь, под KDE будет выглядеть иначе, чем остальные GTK+ приложения :-D (да-да, я хренов KDE'раст).
-
2 Jon KOL-CE version with small fixes works fine under Win64...
-
> KOL-CE version with small fixes works fine under Win64...
Wow, thank you! Maybe Vladimir will integrate your fixes?
-
> Wow, thank you! Maybe Vladimir will integrate your fixes?
Владимир, КОЛ-СЕ не поддерживает
-
> Владимир, КОЛ-СЕ не поддерживает
Of course not KOL-CE, but maybe the fixes for KOL-64 he will ;-)
-
На счёт объединения: в Borland не зря придумали {$IFDEF MSWINDOWS}
-
хотелось бы поинтересоваться, чем завершилась сия благая идея? кодил сейчас в Лазарусе под лин/64, всё прекрасно, удобно и пр. но бинарник весит 5 метров :-0
|