การเขียนโปรแกรมใน Vala และ GTK + เราทุกคนเคยสงสัยว่าจะทำอย่างไรให้แอปพลิเคชันที่เขียนด้วย Vala และ GTK + สามารถบันทึกสถานะของพารามิเตอร์ขนาดหน้าต่างและอื่น ๆ ได้หรือไม่? เป็นกรณีทั่วไปที่เราใช้ gschema เพื่อบันทึกค่าเหล่านี้ (แอปพลิเคชัน dconf-editor ที่รู้จักกันดีนี้) ที่จัดการโครงร่างเหล่านี้แบบกราฟิก
ตอนนี้ฉันจะแสดงวิธีการทำในขั้นตอนง่ายๆและไม่มีความยุ่งยากโดยใช้คลาส Granite.Services.Settings จากไลบรารี Granite
เราต้องการอะไร?
ก่อนอื่นเราต้องติดตั้งไลบรารี GTK +, Granite และ Vala เพื่อคอมไพล์โค้ดของเรา ในการทำสิ่งนี้ใน Ubuntu / ElementaryOS เราใช้คำสั่ง:
sudo apt-get install libgtk-3-dev libgranite-dev granite-demo valac
และเราจะต้องมีโปรแกรมแก้ไขข้อความที่รองรับไวยากรณ์ Vala / GTK + และ XML เช่น Scratch Text Editor (ค่าเริ่มต้นของ ElementaryOS), GEdit, Sublime Text + Plugins เป็นต้น
รหัส
นี่คือไฟล์ตัวอย่าง เพื่อความเข้าใจที่ดีขึ้นฉันปล่อยรหัสไว้ใน PASTE พร้อมกับความคิดเห็น:
คำอธิบาย
ไฟล์ Schema ถ้าหรือถ้าต้องเป็น XML และเรียกว่า ORG.APLICACION.GSCHEMA.XML นั่นคือทั้ง ORG และ GSCHEMA.XML ต้องอยู่ที่นั่นเพื่อให้ dconf รับรู้ว่าเป็นสคีมา นอกจากนี้ต้องคัดลอกไดอะแกรมเหล่านี้ไปยังเส้นทาง:
/usr/share/glib-2.0/schemas/
และจำเป็นต้องรวบรวมเพื่อให้ DCONF นำไปใช้สำหรับสิ่งนี้เราดำเนินการคำสั่ง:
sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
กำลังรวบรวม
ในการคอมไพล์โปรแกรมของเราเราต้องเปิดคำสั่งต่อไปนี้ในเทอร์มินัล:
valac --pkg gtk+-3.0 --pkg granite main.vala tutorial.vala settings.vala
และรันไบนารีด้วยคำสั่ง:
./main
สรุปผลการวิจัย
เป็นวิธีที่ดีที่สุดวิธีหนึ่งในการบันทึกสถานะแอปของเราใน GSCHEMA โดยใช้ GLIB คำถามใด ๆ ฉันยินดีที่จะตอบ
นี่คือภาพหน้าจอของ Ubuntu ของฉันและตัวอย่าง:
บทความที่ดีบทช่วยสอน GTK บางส่วนใน C ++ ก็ไม่เลว สิ่งต่างๆมีการเปลี่ยนแปลงไปมากเว็บไซต์ GTK อย่างเป็นทางการแนะนำหนังสือจากปี 2002 ฉันตัดสินใจซื้อผิดพลาด
DevHelp ช่วยได้มากกว่าหนังสือเล่มใด ๆ
ขออภัยฉันหมายถึง C ไม่ใช่ C ++ เมื่อฉันเปิด codeblocks ฉันมักจะเลือก "A project ใน C ++" แต่ฉันเขียนโปรแกรมในภาษา C
ครูสอนพิเศษที่ดีฉันอยากจะรู้และฉันรู้ว่ามันไม่ใช่อย่างนั้น แต่ในความจริงฉันได้ให้ความสำคัญกับตัวเองมากพอที่จะสามารถดำเนินการตามแนวทางนี้ได้ฉันจำเป็นต้องปรับแต่งพื้นหลังและหน้าจอการเข้าสู่ระบบด้วยสถาบัน ภาพของสถานที่ที่ฉันทำงานในทีมผู้ใช้พวกเขามีโรงกลั่นของเวเนซุเอลาที่เรียกว่า Canaima ตาม Debian 7 Wheezy ผู้ใช้ตรวจสอบสิทธิ์ผ่าน LDAP และผู้ใช้หลายคนสามารถทำงานบนพีซีเครื่องเดียวกันได้ดังนั้นจึงอาจมีหลายเซสชัน ซึ่งพวกเขาต้องเป็นเจ้าของวอลเปเปอร์ทีมจะได้รับการปรับแต่งตามสคริปต์เพื่ออำนวยความสะดวกในการทำงานของช่างเทคนิคจากนั้นนโยบายจะถูกฉีดโดยเซิร์ฟเวอร์หุ่นเชิด
ฉันได้ลองใช้ gsettings แล้ว แต่ใช้ได้กับผู้ใช้ที่เข้าสู่ระบบเท่านั้นเห็นได้ชัดว่ามันบันทึกข้อมูลในฐานข้อมูลในเครื่องต่อผู้ใช้ที่ฉันยังไม่ประสบความสำเร็จฉันกำลังมองหาการกำหนดค่าบางอย่างที่ใช้กับระบบทั้งหมดไม่ใช่กับ ผู้ใช้คนเดียว
เป็นที่น่าสังเกตว่าภาพมีการเปลี่ยนแปลงตลอดเวลาเนื่องจากวันชาติและเหตุผลอื่นใดดังนั้นจึงไม่ได้เป็นเพียงแค่ภาพเท่านั้นที่หุ่นเชิดอัปโหลดไปยังลูกค้าแต่ละราย
ฉันไม่รู้ว่าสิ่งนี้สามารถนำมาใช้กับกรณีของฉันได้หรือไม่
อาศิรพจน์