البرمجة في Vala و GTK + ، لقد تساءلنا جميعًا عن كيفية جعل تطبيق مكتوب بلغة Vala و GTK + قادرًا على حفظ حالات معلمات حجم النافذة وغيرها؟ هم من هذه الحالات النموذجية التي نستخدمها com.gschemas لحفظ هذه القيم (هذا التطبيق المعروف 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 مع التعليقات فيه:
تفسيرات
ملف المخطط ، إذا كان يجب أن يكون 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/
تجميع
لتجميع برنامجنا ، يتعين علينا تشغيل الأمر التالي في Terminal:
valac --pkg gtk+-3.0 --pkg granite main.vala tutorial.vala settings.vala
وقم بتشغيل الملف الثنائي باستخدام الأمر:
./main
استنتاجات
إنها واحدة من أفضل الطرق لحفظ حالة تطبيقنا في GSCHEMA باستخدام GLIB. يسعدني الرد على أي نوع من الأسئلة.
إليك لقطة شاشة لـ Ubuntu الخاص بي والمثال:
مقالة جيدة ، بعض دروس GTK في C ++ ليست سيئة. لقد تغيرت الأمور كثيرًا ، يوصي موقع GTK الرسمي بكتب من عام 2002 ، لقد أخطأت في شرائها.
DevHelp يساعد أكثر من أي كتاب.
آسف قصدت C وليس C ++. عندما أقوم بفتح قوالب الكود ، أختار دائمًا "مشروع في C ++" ، لكنني أبرمج في C.
حسنًا ، أود أن أعرف وأعلم أن الأمر ليس كذلك ، لكن في الحقيقة لقد وجهت نفسي ما يكفي من الضربات الرأسية لأتمكن من تنفيذ هذا النهج ، أحتاج إلى تخصيص الخلفية وشاشة تسجيل الدخول مع صورة مؤسسية للمكان الذي أعمل فيه في فرق المستخدمين ، لديهم توزيعة فنزويلية تسمى Canaima ، استنادًا إلى Debian 7 Wheezy ، يقوم المستخدمون بالمصادقة عبر LDAP ويمكن للعديد من المستخدمين العمل على نفس الكمبيوتر الشخصي ، لذلك قد يكون هناك العديد من الجلسات التي يجب عليهم فيها امتلاك خلفية الشاشة ، يتم تخصيص الفرق بواسطة البرنامج النصي لتسهيل عمل الفنيين ثم يتم حقن السياسات بواسطة خادم puppetmaster.
لقد حاولت باستخدام gsettings ولكنه يعمل فقط مع المستخدم الذي يقوم بتسجيل الدخول ، ويبدو أنه يحفظ المعلومات في قاعدة بيانات محلية لكل مستخدم وهو ما لم أحققه بعد ، وأنا أبحث عن بعض التكوين الذي ينطبق على النظام بأكمله وليس على مستخدم واحد.
الجدير بالذكر أن الصورة تتغير باستمرار بسبب التواريخ الوطنية وأي سبب آخر ، لذا فهي ليست مجرد صورة ، بل يتم تحميلها بواسطة puppetmaster لكل عميل.
ليس لدي أي فكرة عما إذا كان يمكن تطبيق شيء مثل هذا على حالتي.
تحية.