GSL Shell 学習:IUP で GUI アプリ

2016-04-26 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での blogramのランクインカテゴリは、
7、2、0、0、1、 0、0、0、0、0(40)で、換算ポイント 88pt 。
「Perl」「C言語」「化学業界」「硝子業界」「グルコサミン」、
「Python」「Firefox」bg値変動のみ。
「FM COCOLO」「e-radio」「FM青森」全く変化無し。
・-・ - -・

さて、本文。

先月(2016-03-16)の記事:「GSL Shell 学習:IUP 実用的使用例(?)
では、

  “GSL Shell”即ち“LuaJIT”から ( IUPLua を ) 使うことは出来ない。
  でも、
  「IupFileDlg」を使った、実用的(?)なコードが出来た。

と書いた。

その後(2016-03-19)の記事:「GSL Shell 学習:IUP でドラッグ&ドロップ
から更に学習し、GUI アプリ を作れそうな気がしてきた。


出来たのは、

  <ラベル>:<エントリ>
  <ラベル>:<エントリ>
    <ボタン>

と、
お試し窓を表示し、
<ボタン>クリックで、
<エントリ>フィールドに入力された文字列を
(コンソールに)表示する。

と云ったもの。


GSL Shell ソース・コードは、・・・・・
charA = |s|  ffi.cast( 'char*', s )
voidA = |x| ffi.cast( 'void*', x )
-----
local iup = ffi.load( 'iup' )
ffi.cdef[[
typedef struct Ihandle_ Ihandle;
typedef int (*Icallback)(Ihandle*);
int IupOpen( int ); // 正式には、int IupOpen( int *argc, char ***argv );
void IupClose( );
Ihandle* IupDialog( Ihandle* child );
void IupSetAttribute( Ihandle*, const char* name, const char* value );
char* IupGetAttribute( Ihandle*, const char* name );
void IupSetCallback( Ihandle*, const char*, Icallback func );
void IupPopup( void*, int, int );
Ihandle* IupLabel( const char *title );
Ihandle* IupText( const char* action );
Ihandle* IupButton(const char *title, const char *action );
Ihandle* IupVbox( Ihandle* child, ... );
Ihandle* IupHbox( Ihandle* child, ... );
]]
iup.IupOpen( 0 ) ------------ これ必須!!!
----------------------
Bcb = ffi.cast( 'Icallback', function( z ) -- コールバック関数
tt1 = ffi.string( iup.IupGetAttribute( txt1, charA('VALUE') ) )
tt2 = ffi.string( iup.IupGetAttribute( txt2, charA('VALUE') ) )
print( 'Button Clicked' )
print( tt1 )
print( tt2 )
return -2
end )

dm1 = iup.IupLabel( charA(' ') )
dm2 = iup.IupLabel( charA(' ') )
dm3 = iup.IupLabel( charA(' ') )
dm4 = iup.IupLabel( charA(' ') )
dm5 = iup.IupLabel( charA(' ') )
dm6 = iup.IupLabel( charA(' ') )
lbl1 = iup.IupLabel( charA('TEXT1 : ') )
lbl2 = iup.IupLabel( charA('TEXT2 : ') )
txt1 = iup.IupText( charA('') )
txt2 = iup.IupText( charA('') )
btn1 = iup.IupButton( charA(' Go '), charA('') )

hbx1 = iup.IupHbox( dm1, voidA(0) )
hbx2 = iup.IupHbox( dm2, lbl1, txt1, voidA(0) )
hbx3 = iup.IupHbox( dm3, lbl2, txt2, voidA(0) )
hbx4 = iup.IupHbox( dm4, voidA(0) )
hbx5 = iup.IupHbox( dm5, dm6, btn1, voidA(0) )
vbx = iup.IupVbox( hbx1, hbx2, hbx3, hbx4, hbx5, voidA(0) )

dlg = iup.IupDialog( vbx )

iup.IupSetAttribute( dlg, charA('SIZE'), charA('100x90') )
iup.IupSetAttribute( dlg, charA('TITLE'), charA('test') ) -- 窓のタイトル
iup.IupSetCallback( btn1, charA('ACTION'), Bcb )

iup.IupPopup( dlg, 350, 250 ) -- 窓表示左上隅
iup.IupClose() -- <=== 右上[X]で終了。
----------------------------------------------------------
print( tt1 )
print( tt2 )
_ = io.read(1) -- [Enter]キー待ち。
これで、一通り使えそう。

“IupLabel”、“IupText”、“IupButton”
そして、
“IupHbox”、“IupVbox”、や“IupDialog”
さらに、
“IupSetAttribute”、“IupGetAttribute”、や“IupSetCallback”
最後に、
“IupOpen”、“IupPopup”、“IupClose”

更なる「IUP」の学習ダ。


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


160406
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
04 | 2017/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク