إطار عمل سريع منظمة واجهة المستخدم الرسومية عبر النظام الأساسي لـ GO على أساس عزيزي Imgui و Great Go Binding Imgui-go.
أي مساهمة (ميزات ، واجهة مستخدم ، دروس ، مستندات ، إلخ ...) موضع تقدير!
(تتوفر هذه المكتبة بموجب ترخيص مجاني ومتسامح ، ولكنها تحتاج إلى دعم مالي للحفاظ على تحسيناتها المستمرة. بالإضافة إلى الصيانة والاستقرار ، هناك العديد من الميزات المرغوبة التي لم يتم إضافتها بعد. إذا كنت تستخدم GIU ، فيرجى التفكير في التواصل.)
الشركات: دعم الاستمرار في التطوير والصيانة من خلال الدعم الفني الفاتورة ، والصيانة ، والعقود الراعية:
البريد الإلكتروني: [email protected]
الأفراد: دعم الاستمرار في التطوير والصيانة هنا.
بالنسبة للوثائق ، راجع ويكي أو أمثلة أو Godoc أو مجرد إلقاء نظرة على التعليقات في الكود.
تم بناء GIU على GLFW V3.3 ، لذلك يمكن لـ GIU من الناحية المثالية أن تدعم جميع المنصات التي يدعمها GLFW V3.3.
بالمقارنة مع روابط Imgui Golang الأخرى العزيزة ، لدى GIU الميزات التالية:
package main
import (
"fmt"
g "github.com/AllenDang/giu"
)
func onClickMe () {
fmt . Println ( "Hello world!" )
}
func onImSoCute () {
fmt . Println ( "Im sooooooo cute!!" )
}
func loop () {
g . SingleWindow (). Layout (
g . Label ( "Hello world from giu" ),
g . Row (
g . Button ( "Click Me" ). OnClick ( onClickMe ),
g . Button ( "I'm so cute" ). OnClick ( onImSoCute ),
),
)
}
func main () {
wnd := g . NewMasterWindow ( "Hello world" , 400 , 200 , g . MasterWindowFlagsNotResizable )
wnd . Run ( loop )
}
هذه هي النتيجة:
يعني نظام واجهة المستخدم الرسومية للوضع الفوري أن التحكم في واجهة المستخدم لا يحتفظ بحالته وقيمته. على سبيل المثال ، سيعرض استدعاء giu.InputText(&str)
مربع نص إدخال على الشاشة ، وسيتم تخزين القيمة التي تم إدخالها للمستخدم في &str
. مربع نص الإدخال لا يعرف أي شيء عنه.
وطريقة loop
في مثال Hello World هي المسؤولة عن رسم جميع الأدوات المستندة إلى المعلمات التي تم تمريرها إليها. سيتم استدعاء هذه الطريقة 30 مرة في الثانية لتعكس الحالات التفاعلية (مثل النقر ، تحوم ، متغيرة ، وما إلى ذلك). سيكون المكان الذي تحدد بنية واجهة المستخدم.
بشكل افتراضي ، سيتم وضع أي عنصر واجهة مستخدم موضوعة داخل Layout
الحاوية رأسياً.
لإنشاء صف من الأدوات المصغرة (أي مكانة مكان واحد تلو الآخر أفقيًا) ، استخدم طريقة Row()
. على سبيل المثال giu.Row(Label(...), Button(...))
سيقوم بإنشاء ملصق بجوار زر.
لإنشاء عمود من الأدوات المصغّرة (أي مكانة مكان واحد تلو الآخر) داخل صف ، استخدم طريقة Column()
.
أي عنصر واجهة مستخدم له طريقة Size()
، يمكن أن يحدد حجمه بشكل صريح. لاحظ أنه يمكنك تمرير قيمة سالبة إلى Size()
، والتي ستملأ قيمة العرض/الارتفاع المتبقية. على سبيل المثال ، سيقوم InputText(...).Size(giu.Auto)
بإنشاء مربع نص إدخال مع أطول عرض تركه الحاوية.
يعني MasterWindow
النافذة الأصلية للمنصة التي ينفذها نظام التشغيل. سيتم وضع جميع النوافذ الفرعية والعملاء داخلها.
Window
عبارة عن حاوية بها شريط عنوان ، ويمكن انهيارها. SingleWindow
هو نوع خاص من النوافذ التي ستحتل جميع المساحة المتاحة لـ MasterWindow
.
يشبه Child
لوحة في أطر عمل واجهة المستخدم الرسومية الأخرى - يمكن أن يكون لها لون الخلفية والحدود.
تحقق من examples/widgets
لجميع أنواع الأدوات.
يعتمد الواجهة الخلفية لـ GIU على OpenGL 3.3 ، تأكد من دعم بيئتك (على حد علمي ، فإن بعض الأجهزة الافتراضية مثل VirtualBox لا تدعمها).
xcode-select --install
go get github.com/AllenDang/giu
تحتاج أولاً إلى تثبيت التبعيات المطلوبة:
sudo apt install libx11-dev libxcursor-dev libxrandr-dev libxinerama-dev libxi-dev libglx-dev libgl1-mesa-dev libxxf86vm-dev
على التوزيعات القائمة على القبعة الحمراء:
sudo dnf install libX11-devel libXcursor-devel libXrandr-devel libXinerama-devel libXi-devel libGL-devel libXxf86vm-devel
قد تحتاج أيضًا إلى تثبيت برنامج التحويل البرمجي C/C ++ (مثل G ++) إذا لم يتم تثبيته بالفعل. اتبع مطالبات برنامج التحويل البرمجي.
بعد ذلك ، سيعمل go build
البسيط.
المتقاطع هو أكثر تعقيدا قليلا. دعنا نقول أنك تريد بناء ARM64. هذا ما تحتاج إلى القيام به:
sudo dpkg --add-architecture arm64
sudo apt update
sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
libx11-dev:arm64 libxcursor-dev:arm64 libxrandr-dev:arm64 libxinerama-dev:arm64 libxi-dev:arm64 libglx-dev:arm64 libgl1-mesa-dev:arm64 libxxf86vm-dev:arm64
GOOS=linux GOARCH=arm64 CGO_ENABLED=1 CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ HOST=aarch64-linux-gnu go build -v
go build -ldflags " -s -w " .
go build -ldflags " -s -w -H=windowsgui -extldflags=-static " .
على ماك:
brew install mingw-w64
على Linux:
sudo dnf install mingw64-gcc mingw64-gcc-c++ mingw64-winpthreads-static
cat > YourExeName.rc << EOL
id ICON "./res/app_win.ico"
GLFW_ICON ICON "./res/app_win.ico"
EOL
x86_64-w64-mingw32-windres YourExeName.rc -O coff -o YourExeName.syso
GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ HOST=x86_64-w64-mingw32 go build -ldflags " -s -w -H=windowsgui -extldflags=-static " -p 4 -v -o YourExeName.exe
rm YourExeName.syso
rm YourExeName.rc
جميع أنواع طلبات السحب (المستند ، العرض التجريبي ، لقطات الشاشة ، الرمز ، إلخ) هي أكثر من موضع ترحيب!