Конференция "KOL" » KOL GTK Linux? [fpc 2.2.4 , Linux]
 
  • biv © (06.04.10 11:32) [0]
    Здравствуйте, уважаемые Мастера.
    Начал портирование 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;
  • Vladimir Kladov © (06.04.10 16:41) [1]
    Компилировал я как раз fpc, под cyg-win наWindows. До запуска на живом линуксе дело не дошло. NewApplet под линуксом возможно не имеет значения, но ее хорошо было бы оставить для совместимости. Можно создать скрытое псевдо-окно, можно просто от TObj. Объединять может даже и не нужно. Если будет обеспечена совместимость с текущей версией KOL на 80-90%, это более чем достаточно. Других БОЛЬШИХ изменений в самом KOL.pas я уже не планирую. Да и не нужны они, разве только ради исправления ошибок.

    Насколько я помню, оставалось доделать аналоги listview, treeview и некоторых других common-контролов типа таб-контрола. Но потом у меня резко не стало времени и не на чем стало бороться с линуксом. Да и сейчас я его не держу, не на чем даже виртуалку развернуть.
  • iZEN (08.04.10 07:03) [2]
    Скажите, а правда ли, что по идеологии вызовов KOL похожа на SWT?
  • Vladimir Kladov © (08.04.10 15:38) [3]
    Наоборот, это SWT похож по идеологии вызовов на KOL. Сравните дату первого релиза SWT и KOL.
  • Dufa © (08.04.10 17:53) [4]
    SWT - это что?
  • biv © (13.04.10 12:10) [5]
    В чем разница между процедурами
    TMenu.Popup(x,y); и TMenu.PopupEx(x,y)?
    (у меня нет под руками ОС Windows)
  • biv © (13.04.10 13:08) [6]
    Еще вопрос. Есть две функции PostMessage , SendMessage которые в Unix системах нет. Нужно ли их эмулировать или же сделать разбор параметров в свойствах TControl.Style и TControl.ExStyle.
    Просто на просто управление чужими приложениями (то есть нажатие допустим кнопки на чужой форме) не всегда реально . Допустим на формах сделанных на qt4/kde4 не все элементы имеют свой хендл. Общее управление окна, т.е. закрыть , сверныть, равернуть вполне реализуемо но стопроценто не гарантированно.
  • Vladimir Kladov © (13.04.10 15:57) [7]
    В комментариях все написано. Для Linux достаточно наверное вызывать одно из другого (Popup(Ex)).

    Эмулировать SendMessage не надо. Это платформенно-зависимая вещь, если кто-то делает многоплатформенную программу, пусть использует IFDEF для отключения кода, который не для линукса. Тем более не интересует управление чужими приложениями.
  • Darth Revan © (12.07.10 14:48) [8]
    Надеюсь, портирование дойдёт до конца :-).
  • packpaul (16.07.10 00:51) [9]
    Очень надеюсь, что увижу KOL под Linux!
  • Jon (17.07.10 23:20) [10]
    KOL Win x64 ???
  • Darth Revan (21.07.10 21:13) [11]
    Jon
    Linux важнее.

    biv
    Надеюсь, под KDE будет выглядеть иначе, чем остальные GTK+ приложения :-D (да-да, я хренов KDE'раст).
  • MTsv DN (21.07.10 23:09) [12]
    2 Jon
    KOL-CE version with small fixes works fine under Win64...
  • Jon © (22.07.10 05:14) [13]

    > KOL-CE version with small fixes works fine under Win64...

    Wow, thank you! Maybe Vladimir will integrate your fixes?
  • Dufa © (22.07.10 17:21) [14]

    > Wow, thank you! Maybe Vladimir will integrate your fixes?


    Владимир, КОЛ-СЕ не поддерживает
  • Jon © (23.07.10 17:56) [15]

    > Владимир, КОЛ-СЕ не поддерживает

    Of course not KOL-CE, but maybe the fixes for KOL-64 he will ;-)
  • Darth Revan (29.07.10 15:18) [16]
    На счёт объединения: в Borland не зря придумали {$IFDEF MSWINDOWS}
  • Vladimyr © (28.01.13 08:20) [17]
    хотелось бы поинтересоваться, чем завершилась сия благая идея?
    кодил сейчас в Лазарусе под лин/64, всё прекрасно, удобно и пр.
    но бинарник весит 5 метров :-0
 
Конференция "KOL" » KOL GTK Linux? [fpc 2.2.4 , Linux]
Есть новые Нет новых   [118438   +22][b:0][p:0.001]