الجزء الثالث وثائق Arfedoracontrolcenter

بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته


الجزء الثالث وثائق Arfedoracontrolcenter .



الجزء الأول https://arfedora.blogspot.com/2017/11/arfedoracontrolcenter.html.

الجزء الثاني https://arfedora.blogspot.com/2017/11/arfedoracontrolcenter_13.html .


نوع الإضافة الثاني post clicked .


هذا النوع من الإضافات  يحمل رقم صفر 0 ويتم تمهيده عند كل ضغط على الزر الخاص به أي سيتم إعادة تنفيذ ما بداخله عند كل ضغظ على المفتاح الخاص به .

1- إستدعيت كلاس BasePlugin سبق وكتبته فقط نستدعيه ,كما سبق وقلت ليس بالضرورة أن نعرف كل التفاضيل .

2-إستدعيت دالة تجلب مسار الصور الموجودة في مجلد icons بنائا على مكان مجلد icons نفسه كما سبق وذكرت ممكن أن يكون موجود بأكثر من مكان خاص وعام .

3-غيرت النوع لرقم صفر 0 .

4-عند الضغظ على زر الإضافة سيتم قراءة كلاس Plugin وتنفيذه , لهذا هذا السطر يجب نقله كما هو.

5-أيضا هذا السطر يجب نقله كما هو .

6-أيضا هذا السطر يجب نقله كما هو .

7-من خلال مكتبة Gtk الرسومية قمت بإنشاء كائن من كلاس Image وأعطيته مسار الصورة التي حددت إسمها ومسارها من خلال دالة get_icon_location التي سبق وتكلمت عنها .

8-هذا هو اهم شيء في الإضافة وهي _self._mainbox وهي box من نوع VBox ورثتها من الكلاس BasePlugin لهذا كل شيء نخطط له في الإضافة يجب أن نعمل له pack لهذه ال box .



صورة لكلاس BasePlugin توضح ما كنت أعنيه .

ال _mainbox_ كما ذكرت سلبقا هي box من نوع VBox وتستخدم من قبل الإضافات لإضافة العناصر داخلها من أزرار وصور و ...إلخ

ال _parent_ تمثل النافذة الأب للبرنامج ويمكن أيضا إستخدام هذا المتغير في الإضافات مثلا لعمل set_sensitive للنافذة .

ال _boxparent_ هي ال box التي ستحتوي _mainbox_ التي سبق وتكلمت عنها بالمناسبة هي من النوع Gtk.ListBoxRow (في الإصدار الجديد أصبح النوع Gtk.Box والإتجاه VERTICAL ).

ليس مهم ان تعرفو التفاصيل الدقيقة المهم ان تعرفو ماذا تمثل هذه الأشياء غالبا سيكون التعامل فقط مع _mainbox_ لإضافة العناصر الرسومية لها و _parent_ مثلا كما قلت في حال أردنا عمل set_sensitive للنافذة .



الأن ما هو متغير blockclose التي سبق وأجلت شرح عنه ؟

أولا سأقوم بنقل الإضافة لمكانها الصحيح والصور أيضا إذا لم تكن موجودة ثم أشغل البرنامج .

نلاحظ ظهور الزر كنا وضعنا له معلومات الصورة والإسم والتعريف ونلاحظ انه في المجموعة الصحيحة المذكورة في category التي هي System .


بعد الضغط عن الزر نصبح هنا نلاحظ هذه الصورة التي وضعت إسمها  بالطبع يجب أن نعد الأمر بشكل أفضل حتى لا تظهر الصورة هكذا لاكن لم أرد تعقيد الشرح أكثر ,بالمناسبة نلاحظ انني جهزت الأمر بشل تلقائي من دون تدخل منا  في حال كانت العناصر أكبر من حجم النافذة نلاحظ ممكن الإزاحة للأسفل والأعلى واليمين واليسار.




اﻷن بعد التعديل على الإضافة وضع True في blockclose نلاحظ عند الدخول للإضافة إختفاء الأزرار close minimize maximize ممكن إستخدام هذا الأمر لمنع غلق البرنامج أثناء عمل الإضافة .



ملاحظة في الإصدار الجديد من البرنامج أصبح يدعم الترجمة لهذا يجب وضع النص المراد ترجمته بين ()_ وإلزامي على الاقل أن نستخدمهم في button_label و category و title وmainbuttontooltip كما في الصورة في الأسفل.  



نوع الإضافة الثاني pre clicked .

هذا النوع من الإضافات  يحمل رقم واحد 1 ويتم تمهيدها لمرة واحد أي لن يتم إعادة تنفيذ ما بداخلها عند كل ضغظ على المفتاح الخاص بها وهذا هو الإختلاف الوحيد عن نوع post clicked .

فيديو في الأسفل يوضح الفرق نلاحظ في النوع صفر أي post clicked عند كل ضغطة على زر الإضافة سيتم تنفيذ دالة print أما في pre clicked سيتم تنفيذ دالة print مرة واحدة فقط أثناء قراءة البرنامج للإضافة .



تحديث بالنسبة لإضافة من نوع pre clicked يجب فقط إضافة destroy=False كما في الصورة في الأسفل .




تحديث أخر للإصدار الثاني .

 أولا نلاحظ أني غيرت شكل البرنامج الذي أريد أن تنتبه له  هذه الأيقونات .


1-الأن في الإضافات أول تغير إذا أردت ان تأخذ أيقونة الزر Button من ثيم الأيقونات المفعل في النظام ضع إسم الأيقونة في قائمة وليس نص عادي أما إذا أردت الأيقونة من خلال صورة محددة موجودة في مجلد icons الخاص بالبرنامج لم يتغير شيء فقط ضع الإسم على أنه نص عادي خارج أي قائمة.

2-ثاني تغير عليك ان تحدد إسم الأيقونة لل category لتظهر كما الأيقونات المعلمة في أول صورة يجب فقط ان تضع إسم الأيقونة في متغير category_icon_theme مع الملاحظة الأولوية لأول إضافة يعني لنفترض لديك إضافتين بذات إسم ال category لاكن مع إختلاف إسم هذه الأيقونة سيتم الأخذ بأول إضافة يتم عمل لها load .


اﻷن بعض المعلومات .
برنامج في الرابط في الأسفل  قمت بعمله ليسهل عليا إختيار ما يسمى icontheme لإستخدامها مثلا مع البرامج الرسومية مثلا من خلال Gtk للأمانة لا أعرف إسمها أو وصفها الحقيقي لاكن على ما أظن هي أيقونات معيارية يجب ان تكون أو على الأقل أكثريتها يجب ان تكون في كل ثيمة أيقونات.
البرنامج يعرض الأيقونات لثيم الأيقونات المفعل بالفعل في النظام ويكفي الضغط على أي أيقونة ليتم نسخ إسمها مع إمكانية إختيار ثيم أيقونات أخر وأيضا إمكانية جلب معلومات عن أسماء اﻷيقونات من موقع freedesktop .
في الحقيقة البرنامج وفر عليا الكثير من المشقة قد يكون مفيد للمطوريين مثلا في برنامجي هذا ستحتاج هذه الأسماء لتضعها في متغير category_icon_theme أو إذا اردت كما ذكرت تضعها في متغير button_image لاكن داخل قائمة list.
https://github.com/yucefsourani/argait



لتجاهل الإضافات داخل مجلد محدد .

 إذا أردت تحت ظروف محددة أن يتجاهل البرنامج إضافات موجودة في مجلد ما  فقط أضف إسم المجلد إلى قائمة to_ignore وهي موجودة في ملف البرنامجي الأساسي مثلا في هذه الصورة في الاعلى لدي إضافة تعمل على فيدورا فقط وضعت شرط إذا كان dnf غير موجود تجاهل مجلد fedora ووضعت هذه الإضافة داخل مجلد fedora كما نلاحظ في الصورة في الأسفل ,يمكنك ان ترتب الإضافات وتضع الشروط أخرى تناسبك كما فعلت انا بالفعل شروط أخرى متعلقة بواجهة جنوم ,مع الملاحظة هذه طريقة ثانية لتجاهل الإضافات ممكن أن نضع الشروط داخل الإضافات نفسهم كما ذكرت سابقا لاكن هكذا أفضل إذا كان عدد الإضافات كبير.






أخيرا هذا رابط إضفافة example التي كنت أشرح عنها نلاحظ مسارها وإسمها ووضعت رقم إصدار لها أي v2.0 .
https://github.com/yucefsourani/arfedoraccframework/blob/master/plugins/example_v1.0.py

شارك الموضوع

مواضيع ذات صلة

التسميات

2016 (1) 23 (1) 24 (3) 25 (1) 26 (1) 27 (1) إتصال (1) إختراق (2) أدة (1) أدوات (1) إرسال (1) أرش (1) إسترجاع (1) إستعلام (1) أشياء (4) أشياء تفعلها (5) إصدارات (1) إصلاح (6) إصلاحrealtek (1) إضافات (1) إضافة (1) أعجوبة (1) أعجوية (1) إعداد (1) إقاف (2) أقسام (1) ألعاب (2) الفرق (1) الفلاشة (1) القسم هوم (1) الكتابة بالعربية (1) إلى جانب (1) أندرويد (1) إنشاء مستودع (1) أيات (1) أيزو (1) أيقومات (1) أيقونات (1) ايقونات (2) باتش (1) بارامتر (1) بايثون (14) برامج (48) برامج إسلامية (2) برنامج (19) برودباند (1) بعد (4) بعد التثبيت (5) بلوتوث (1) بناء (1) بناء توزيعة (1) بيئة عمل (1) تثبيت (25) تجهيز (2) تجهيو من دون (2) تحزيم (2) تحقق (1) تحويل (1) تخصيص (5) ترجمة (2) ترقية (1) تسجيل الشاشة (1) تشغيل (3) تعريف (13) تعطيل (2) تعلم (6) تفعلها (4) تفعيل (2) تقطع الأحرف (1) تقعيل (1) تنزيل (2) تورنت (1) توسعة (1) ثيم (5) ثيمات (1) جافا (1) جماليات (7) جنوم (1) حجم (1) حرق (2) حزمة (1) حل (2) دالة (1) دورة (1) ريدهات (2) سكربت (2) شرح (10) صورة متحركة (1) فايرفوكس (1) فصل (1) فلاشة (3) فيدورا (26) فيدورا بالعربي (1) قاموس (1) كالي (2) كتاب (2) كتب (2) كرت (1) كروت الشاشة (1) كلمة المرور (2) كورس (1) كورورا (1) لعبة (1) لينكس (2) لينكسو (1) ماهو (4) متغير البيئة (1) مجانا (1) محاكات (2) محاكي (1) محمل الإقلاع إصلاح (1) مستودعات (1) مشكلة (2) ملف نصي (1) من إصدار (1) نظام ملفات (1) نمط (2) نواة (1) هجين (4) واجهات (1) وايرلس (1) وهمي (2) ويندوز (2) active (2) add (1) after (4) alias (1) andoid studio (1) android (1) android studio (1) Apache (1) arboot (1) arboot fix (1) arch (3) archiso (1) arfedoraccframework (3) arfedoracontrolcenter (3) arfedy (1) atari (1) atom (1) ayat (1) bicon (1) blivet (1) blivet-gui (1) bluetooth (1) book (2) books (2) bootloader fix (1) broadband (1) broadcom (1) broadwayd (1) build (2) builddep (1) bumblebee (1) bumbleebe (2) burn (2) byzanz (1) c# (1) camera (1) cannot open display (1) cannot open display: :0 (1) ccna (1) cd (2) centos (1) change (1) chsh (1) cisco (1) clion (1) clone (1) code.org (1) command (2) command line (1) commands (2) connect (1) contra (1) convert (1) copr (1) could not connect to the debugger (1) cpu (1) cpufreq (1) createrepo (1) csharp (1) curlew (1) custom (2) dbus (1) dconf (1) dd (1) defragment (2) desktop (1) desktop entry (1) dictionary (1) disks (1) dnf (12) do (4) docker (1) download (2) downloads manager (1) dply (1) DRI PRIME (1) driver (8) dukto (1) e2fsck (1) efi (4) el forkane (1) elforkane (1) elif (1) emergency (3) emergency mode (3) enable (2) error mounting /dev/sd (1) ext4 (1) extend (1) extensions (2) fakenes (1) fast startup (2) fceux (1) fedora (40) fedora 25 alpha (1) fedora cloude (1) fedoraوفيدورا (1) fedy (1) fgmac (2) fgmac-24 (1) file (1) find (1) firefox (2) fix (8) flash mem (1) flash memory (2) flashplayer (1) flatpak (2) fpaste (1) free (1) freebsd (1) function (1) game (3) games (1) gedit (1) genymotion (1) gettext (1) gif (1) gimp (1) gio (1) github (5) github.io (1) glibc-common (1) gmaclinux (2) gnome (10) gnome disk (1) gnome shell (12) gnome terminal (1) gnome-disks (1) gnu (1) godot (1) goldendict (1) google web designer (1) gradio (1) group (1) grub (5) grub2 (1) gstreamer (1) gtk (4) gtk+ (1) hack (2) hash (3) hdmi (3) hibernate (1) home (2) hosspot (1) hybrid (2) icon (2) icons (3) ide (1) if (1) install (28) installf (9) installing (4) intellij idea (1) iso (1) java (3) jdk (2) jetbrains (1) jetbrains toolbox (1) kali (2) kde (1) kernel (1) kernel parameters (1) key (1) kickstarts (3) korora (1) krita (1) kvm (1) kvm switches (1) laps (1) learn (1) legacy (1) legacy bios (3) libreoffice (2) life is trange (1) linux (7) lv (1) lvm (2) mac (4) macros (1) mageia (1) MariaDB and PHP Lamp Server (1) markdown (1) mate terminal (1) mbr (1) md5sum (1) mirro (1) mo (1) mono (2) monodevelop (2) mount (1) mp4 (1) multi screen (1) natron (1) nautilus (2) nes (1) netbeans (1) netcut (1) nintendo (1) ntfs (2) nvidia (7) objdesktop (1) ojuba (2) oop (1) opensuse (1) opera (1) optirun (2) oracle (1) os.path (1) package (1) page (1) pages (1) pantheon (1) parameter (1) parameters (1) password (2) patch (1) path (2) pdf (1) peek (1) photoshop (1) phpstorm (1) plugin (3) plugins (1) plymouth (1) po (1) polkit (1) PostinstallerF (1) pot (1) powerline (2) powerline-go (1) primary display (1) primus (1) primusrun (1) programs (3) put (1) pv (1) pycharm (2) pygobject (1) pygtk (2) python (37) qdbus (1) qemu (2) qemu-kvm (1) query (1) radio (1) raspberry pi (4) raspbian (2) reclaim space (2) record (1) redhat (2) remix (1) remix os (1) repo (4) repofrompath (1) resize2fs (1) rhel (1) rpm (6) rpmbuild (1) rtl8188ee (1) rtl8192c (1) rtl8192ce (1) rtl8192cu (1) rtl8192de (1) rtl8192ee (1) rtl8192se (1) rtl8723ae (1) rtl8723be (1) rtl8723com (1) rtl8821ae (1) rubymine (1) salix (1) scratch (2) scratch2.scratch 2 (1) script (2) seconday display (1) self (1) send (1) settings (1) sha1256sym (1) share desktop (1) shell (2) shortcut (1) shutter (1) skel (1) skel ماهو (1) skype (1) skype.برامج (1) slackware (1) soundcloud (1) source code (1) spec (2) spin (1) sqlmap (1) ssh (3) sshd (2) st-trans (1) steam (2) su (1) sudo (2) sudoers (1) swap (2) switch (2) Switchable Graphics (1) synergy (1) teamviewer (1) terminal (2) theme (4) things (4) to (5) tor (2) tor browser (1) torrent (1) transfer closed with 736700 bytes remaining to read (1) translation (1) turn off (2) tuxcut (1) txt (1) ubuntu (1) uefi (5) unable to mount location (1) unity (1) unity3d (1) upgrade (1) usb (1) useradd (2) utf-8 (1) vega (1) vg (1) vgaوتبديل (1) vi (1) vim (1) vino (1) virtual (1) virtual box (1) virtualbox (2) vmware (3) vnc server (1) vokoscreen (1) webstorm (1) wifi (1) windows (3) windows-1256 (1) X Error: BadAccess (1) X Error: BadDrawable (1) xdg-mime (1) yum (2) zeal (1) zealdocs (1)