Автор Тема: Бинд к IUP  (Прочитано 4001 раз)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Бинд к IUP
« : Май 04, 2013, 12:40:47 pm »
Сделал бинд к основной либе IUP (на 90%)

Во вложении бинд, сама либа и тестовый пример

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Бинд к IUP
« Ответ #1 : Май 04, 2013, 12:44:04 pm »

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Бинд к IUP
« Ответ #2 : Май 04, 2013, 12:57:33 pm »
Работает.
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Бинд к IUP
« Ответ #3 : Май 04, 2013, 01:59:43 pm »
Думаю придется таки ООП обвязку делать. Напрямую будет неудобно и небезопасно.

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Бинд к IUP
« Ответ #4 : Май 04, 2013, 02:06:39 pm »
Думаю придется таки ООП обвязку делать. Напрямую будет неудобно и небезопасно.
Ну, это уже сверху и отдельно.
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Бинд к IUP
« Ответ #5 : Май 04, 2013, 03:10:53 pm »
Еще чуток подпилил. Типы оканчивающиеся на "List" - это массив который обязательно должен иметь 0 в последнем элементе.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Бинд к IUP
« Ответ #6 : Май 04, 2013, 09:34:34 pm »

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Бинд к IUP
« Ответ #7 : Май 05, 2013, 12:52:41 pm »
Еще изменения:
* Теперь типы оканчивающиеся на "List" должны иметь NIL в последнем элементе.
* Введен тип Inull. Значение этого типа всегда должно быть равно NIL
Это нужно для процедур, которые имеют переменное число параметров в Си.
PROCEDURE [ccall] Vbox* ["IupVbox"] (child: Ihandle; null: Inull): Ihandle;
В CP такие процедуры следует использовать с одним параметром.
vbox := Iup.Vbox(elem, NIL);
Для списка элементов есть отдельные процедуры:
PROCEDURE [ccall] Vboxv* ["IupVboxv"] (children: IhandleList): Ihandle;

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Бинд к IUP
« Ответ #8 : Май 05, 2013, 01:26:22 pm »
Пример:
MODULE IupTest;
    IMPORT
        Iup := IupLib,
        SYSTEM;
    CONST
        expand = "EXPAND";
    VAR
        ml: Iup.Ihandle;

PROCEDURE [ccall] BtnCB(self: Iup.Ihandle);
BEGIN
    Iup.SetAttribute(ml, "VALUE", "Hello!")     
END BtnCB; 
   
PROCEDURE Main*;
    VAR
        dlg, bt, split, vbox: Iup.Ihandle;
        res: INTEGER;
        prev: Iup.Icallback; (* the address of the previous function associated to the action. *)
BEGIN
    res := Iup.Open(NIL, NIL);
   
    bt := Iup.Button("Button", "btn_test");
    Iup.SetAttribute(bt, expand, "YES");
    prev := Iup.SetCallback(bt, "ACTION", SYSTEM.ADR(BtnCB));
   
    ml := Iup.MultiLine(NIL);
    Iup.SetAttributes(ml, "EXPAND = YES, VISIBLELINES = 5, VISIBLECOLUMNS = 10");
   
    split := Iup.Split(bt, ml);
    Iup.SetAttributes(split, "ORIENTATION = HORIZONTAL, COLOR = 127 127 255");
   
    vbox := Iup.Vbox(split, NIL);
    Iup.SetAttributes(vbox, "MARGIN = 10x10, GAP = 10");
   
    dlg := Iup.Dialog(vbox);
    Iup.SetAttribute(dlg, "TITLE", "IupSplit Example");
   
    res := Iup.Show(dlg);
    res := Iup.MainLoop();
    Iup.Close();
       
END Main;
       
BEGIN
    Main;
END IupTest.

^Q DevLinker.LinkExe
Simple.exe := IupTest ~

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Бинд к IUP
« Ответ #9 : Май 05, 2013, 02:07:10 pm »
Поправил описание нескольких функций. И модифицировал пример соответственно:
MODULE IupTest;
    IMPORT
        Iup := IupLib,
        SYSTEM;
    CONST
        expand = "EXPAND";
    VAR
        ml: Iup.Ihandle;

PROCEDURE [ccall] BtnCB(self: Iup.Ihandle);
BEGIN
    Iup.SetAttribute(ml, "VALUE", "Hello!")     
END BtnCB; 
   
PROCEDURE Main*;
    VAR
        dlg, bt, split: Iup.Ihandle;
        res: INTEGER;
        ih: Iup.Ihandle;
        prev: Iup.Icallback; (* the address of the previous function associated to the action. *)
BEGIN
    res := Iup.Open(NIL, NIL);
   
    bt := Iup.Button("Button", "btn_test");
    Iup.SetAttribute(bt, expand, "YES");
    prev := Iup.SetCallback(bt, "ACTION", SYSTEM.ADR(BtnCB));
   
    ml := Iup.SetAttributes(Iup.MultiLine(NIL), "EXPAND = YES, VISIBLELINES = 5, VISIBLECOLUMNS = 10");
   
    split := Iup.Split(bt, ml);
    Iup.SetAttribute(split, "ORIENTATION", "VERTICAL");
    Iup.SetAttribute(split, "COLOR", "255 20 20");
   
    dlg := Iup.Dialog(Iup.SetAttributes(Iup.Vbox(split, NIL), "MARGIN = 10x10, GAP = 10"));
    Iup.SetAttribute(dlg, "TITLE", "IupSplit Example");
   
    res := Iup.Show(dlg);
    res := Iup.MainLoop();
    Iup.Close();
       
END Main;
       
BEGIN
    Main;
END IupTest.

DevLinker.LinkExe
Simple.exe := IupTest ~

ps Атрибут COLOR функцией SetAttributes не устанавливается почему-то

Kemet

  • Hero Member
  • *****
  • Сообщений: 587
    • Просмотр профиля
Re: Бинд к IUP
« Ответ #10 : Май 05, 2013, 02:32:18 pm »
ps Атрибут COLOR функцией SetAttributes не устанавливается почему-то
Не устанавливается -  в смысле нет реакции?
А прочитать атрибут это можно?
Может после установки цвета нужно выполнить какое-то действо для перерисовки?

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Бинд к IUP
« Ответ #11 : Май 05, 2013, 02:38:43 pm »
Да. Нет реакции. Видимо в списке такие атрибуты (многозначные) нельзя установить. Наверно в документации про это сказано, но я не нашел.
С функцией SetAttribute все работает.
В общем не страшно.  :)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Бинд к IUP
« Ответ #12 : Май 06, 2013, 09:39:45 pm »
Бинд к XDS Oberon-2: https://code.google.com/p/o2-iup/
Зеркало: https://github.com/ilovb/o2-iup

Во вложении проект с биндом, библиотекой и примером.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Бинд к IUP
« Ответ #13 : Май 10, 2013, 09:47:09 pm »
Вышел IUP 3.8!
Цитировать
Hi All,
The 3.8 version of the IUP library has been released.
You can find the list of changes and files for download at:
http://www.tecgraf.puc-rio.br/iup/
We would like to highlight some of the improvements:
New: attribute TOGGLEVISIBLEid for IupTree when SHOWTOGGLE=Yes.
New: attribute TABVISIBLEid for IupTabs.
New: IupLink control that shows a clickable URL.
New: IupGridBox container to arrange elements in a regular grid.
New: IupScintilla control that shows a source code text editor based on the Scintilla library.
New: IupExpander container to interactively control the visibility of a child inside the dialog.
Changed: GTK stock images now uses the same size as the Windows and Motif images in IupImageLib
Best Regards,
Antonio Scuri

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems