Gox言語-GX23.1でGUIグラフィカルインターフェイスプログラミングにSciterライブラリを使用する

Sciterは、非常に優れたクロスプラットフォームGUIグラフィカルインターフェイスプログラミングライブラリです。ダイナミックリンクライブラリファイルを添付するだけで、HTML / CSS / TiScriptに基づくグラフィカルインターフェイスを実現できます。多くの企業や商用製品でテストされており、安定しており、信頼性があります。TeamViewer、Symantec、Vmware、Evernote、360などの一般的な企業または製品は、Sciterを使用してインターフェイスを作成すると言われています。これは、Sciterが非常に信頼できることを示しています。

Sciterは複数の言語でバインディングを提供します。Gox言語では、SciterはGo言語(Golang)バインディングを通じて使用されます。特定のドキュメントについては、Go-Sciterを参照してくださいこれは、Sciterが公式に推奨するGo言語バインディングライブラリでもあります。

Gox言語の0.998aバージョンの後、グラフィカルインターフェイスを備えた小さな計算機プログラムを次のようなコードで実装できます。

sciter = github_scitersdk_gosciter
window = github_scitersdk_gosciter_window

htmlT := `
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>Calculator</title>
</head>
<body>
	<div style="margin-top: 10px; margin-bottom: 10px;">
		<span>Please enter the expression:</span>
	</div>
	<div style="margin-top: 10px; margin-bottom: 10px;">
		<input id="mainInputID" type=text />
	</div>
	<div>
		<button id="btnCal">Calculate!</button>
		<button id="btnClose">Close</button>
	</div>

    <script type="text/tiscript">
        $(#btnCal).on("click", function() {
			var result = eval($(#mainInputID).value);

			view.prints(String.printf("%v", result));

            $(#mainInputID).value = result;
        });
 
        $(#btnClose).on("click", function() {
            view.close();
        });
 
    </script>
</body>
</html>

`

runtime.LockOSThread()

w, err := window.New(sciter.DefaultWindowCreateFlag, sciter.DefaultRect)

checkError(err)

w.SetOption(sciter.SCITER_SET_SCRIPT_RUNTIME_FEATURES, sciter.ALLOW_EVAL | sciter.ALLOW_SYSINFO)

w.LoadHtml(htmlT, "")

w.SetTitle("Calculator")

w.DefineFunction("prints", func(args) {
	tk.Pl("%v", args[0].String())
	return sciter.NewValue("")
})

w.Show()

w.Run()

プログラムの実行後、インターフェイスは次のスクリーンショットのようになります。

テキストボックスに任意の計算を入力し、[計算]ボタンをクリックして計算し、[閉じる]ボタンをクリックしてプログラムを終了できます。次のコードは、バージョンを説明するために1行ずつリリースされます。SciterとGoxの一般的な組み合わせをよりよく理解できます。

// 首先按Gox语言的规则,用短名称引用github.com/scitersdk/go-sciter库和它的window子库
// 如果不使用简称,则可以直接使用github_scitersdk_gosciter这样的全称来引用,也是可以的,这样无需在一开始声明
sciter = github_scitersdk_gosciter
window = github_scitersdk_gosciter_window

// 这是默认准备加载的html文件内容,直接放在字符串里了
// 其中布局很简单,就是一个抬头,一个文本框用于输入算式,和两个按钮分别用于计算和退出程序
// 需要注意的是,Sciter并不支持Javascript来做脚本编程,而是使用自己的TiScript,据说某些方面比Javascript功能更强,相当于结合了JQuery的Javascript加强版吧
// 注意其中绑定两个按钮点击函数的方法,以及TiScript中选择器的用法
// 其中用到的view.prints函数则是绑定的后面注入的Go语言中编写的函数,这演示了如何在Sciter中调用Gox语言编写的函数,Gox语言与Sciter结合,才能发挥最大的威力
htmlT := `
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>Calculator</title>
</head>
<body>
	<div style="margin-top: 10px; margin-bottom: 10px;">
		<span>Please enter the expression:</span>
	</div>
	<div style="margin-top: 10px; margin-bottom: 10px;">
		<input id="mainInputID" type=text />
	</div>
	<div>
		<button id="btnCal">Calculate!</button>
		<button id="btnClose">Close</button>
	</div>

    <script type="text/tiscript">
        $(#btnCal).on("click", function() {
			var result = eval($(#mainInputID).value);

			view.prints(String.printf("%v", result));

            $(#mainInputID).value = result;
        });
 
        $(#btnClose).on("click", function() {
            view.close();
        });
 
    </script>
</body>
</html>

`

// 由于所有GUI编程最好都保证在一个线程中执行界面操作,因此用这句话锁定线程
runtime.LockOSThread()

// 创建一个Sciter窗口
w, err := window.New(sciter.DefaultWindowCreateFlag, sciter.DefaultRect)

// 检查,有错误则直接退出程序执行
checkError(err)

// 设置一些必要的Sciter参数,例如允许eval函数等
w.SetOption(sciter.SCITER_SET_SCRIPT_RUNTIME_FEATURES, sciter.ALLOW_EVAL | sciter.ALLOW_SYSINFO)

// 在窗口中载入HTML文本,第二个参数可以设置基础的URL
w.LoadHtml(htmlT, "")

// 设置窗口标题栏文本
w.SetTitle("Calculator")

// 给Sciter注入prints函数,在TiScript中使用view.prints来调用
w.DefineFunction("prints", func(args) {
	tk.Pl("%v", args[0].String())
	return sciter.NewValue("")
})

// 显示Sciter窗口并执行
w.Show()
w.Run()

SciterはHTML / HTML 5を完全にサポートし、CSS 2.1とCSS 3の一部を完全にサポートし、真にクロスプラットフォームをサポートします。Gox言語もクロスプラットフォームであるため、上記のプログラムはWindows、Linux、MacOSで直接実行できます(各プラットフォームに注意) Sciterのダイナミックリンクライブラリを用意する必要があります。Windowsでは、sciter.dllをメインのGoxプログラムと同じディレクトリに配置するだけで済みます。最新のGox圧縮パッケージには、LinuxおよびMacOSでは比較的複雑なdllファイルがすでに含まれています。Go-Sciterのドキュメントを参照してください。最初の2つの手順に従ってダイナミックリンクライブラリファイルを設定してください)。

Gox言語でのGUIグラフィカルインターフェイスプログラミングにSciterライブラリを使用する主な利点は次のとおりです。

  • 実際にクロスプラットフォームをサポートし、Windows、Linux、MacOSは基本的に完全にサポートされており、GoxのLCLライブラリは現在、LinuxとMacではサポートされていません。
  • 仮想マシン環境をサポートします。一般にOpenGLグラフィックカードがないため、仮想マシンとクラウドサーバーではGiuライブラリはサポートされていません。Sciterはまったく問題ありません。
  • Sciter独自のTiScriptスクリプト言語はすでに多くの小さな問題を解決できますこの例の計算関数は、TiScript言語のeval関数によって実装されています。
  • JavaScript言語に不慣れな開発者、またはGo言語に精通している開発者は、Go言語を使用して、TiScriptを使用せずに関連操作を完了することができます。基本的に、すべてのDOM操作およびその他の機能は、Gox言語を介して実行できます。 Go言語(Golang)と特別な関係があるため、Go言語のバックグラウンド処理の強みを活用することもできます。

さらに、非常に強力なGUIプログラミングライブラリとして、より複雑なGUIグラフィカルインターフェイスプログラミングを実現するために、Sciterの公式ドキュメントを十分に読んで参照することをお勧めします。また、より詳細な紹介と例については、対応する記事を公開します。

おすすめ

転載: blog.csdn.net/weixin_41462458/article/details/107653173