برای اینکه کم کم داشت کارهای ناتمومم زیاد میشد، تصمیم گرفتم اول یکی از اونها که دیگه آخراش بود رو تموم کنم و قرعه به نام zenity افتاد. توی دو پست قبلی :
راهنمای zenity قسمت اول | یادداشتهای بیت نیمسوز
zenity بخش دوم | یادداشتهای بیت نیمسوز
یه سری انتخابها رو نوشتم، حالا میرسم به انتخابهای بعدی.
دیالوگ پروگرس
این دیالوگ به اینصورت ایجاد میشه :
zenity --progress
در این حالت شما انتخابهایی برای تغییرات توی دیالوگ دارید که عبارتند از :
که متن دیالوگ (بالای پروگرس بار) رو عوض میکنه.
تعیین میکنه که هنگام نمایش دیالوگ، پروگرس بار روی چه مقداری باشه؟ البته فقط موقع نمایش، بعدا میشه عوضش کرد. پایینتر رو ببینید.
با استفاده از این انتخاب،اگه پروگرس به ۱۰۰ درصد برسه دیالوگ به صورت اتوماتیک بسته میشه. در غیر اینصورت منتظر میشه تا خودتون دکمه ای رو بزنید.
با انتخاب این گزینه هنگام اجرا،اگه کاربر دکمه لغو (Cancel) رو فشار بده، پروسه ای که پدر پروسه zenity بوده و اون رو اجرا کرده بسته میشه. مثلا وقتی شما چنین دستوری رو تو ترمینال بزنید :
zenity --progress --auto-kill
با فشردن دکمه Cancel ترمینال هم بسته میشه. البته، دکمه بستن پنجره در بالای پنجره چنین اثری رو نداره و فقط دکمه Cancel اینکار رو میکنه.
باعث میشه که این پروگرس به جای پر شدن، به صورت پالس، حرکت کنه. فقط نکته مهم اینه که بعد از اجرای این دیالوگ، باید توی کنسول ورودی این برنامه یه چیزی نوشته بشه و گرنه حرکت پروگرس بار شروع نمیشه. مثلا من برای دوباره سازی فونتها از این استیل استفاده میکنم :
gksudo "fc-cache -f -v" | zenity --progress --pulsate --title="Refresh font cache" \ --text="Refresh font cache, please wait..." --auto-close --width="350"
برای زمانهایی که نمیشه مدت زمان انجام کار رو حدس زد مناسبه.
با این انتخاب دکمه Cancel ناپدید میشه.
خوب مساله اصلی این دیالوگ کنترل کردن درصد پروگرس باره. یعنی چطور میشه پروگرس رو به حرکت در آورد؟ برای اینکار باید در کنسول ورودی برنامه یا همون stdin نوشت. اگه نوشته شما با # شروع بشه متن بالای پروگرس رو عوض میکنه، و اگه فقط یه عدد باشه میشه درصد فعلی پروگرس بار.
تو ترمینال بنویسید :
zenity --progress
و بعد تو همون ترمینال، در حالی که دیالوگ در حال اجراست بنویسید :
#This is text 10 20 30 40 90 100
زنیتی در این حالت هم مثل حالت notification که قبلا توضیح دادم، ترمینال ورودی رو باز میزاره. برای یه مثال کامل به این پست Bash GUI for wget | یادداشتهای بیت نیمسوز سر بزنید :)
دیالوگ سوال
این دیالوگ خیلی مشابه دیالوگهای خطا و نمایش اطلاعاته که قبلا توضیح دادم فقط این دو تا دکمه داره.
برای نمایش این دیالوگ باید اینجوری نوشت :
zenity --question
انتخابها به ترتیب اینها هستن :
برای تغییر متن سوال استفاده میشه.
باعث میشه که سوالهای طولانی شکسته نشن.
متن دکمه Yes رو تغییر میده.
اینم متن دکمه No رو تغییر میده.
برای اینکه بفهمیم کدوم دکمه فشرده شده باید ببینیم برنامه با چه کدی خارج شده. اگه کد صفر بود دکمه No و اگه یک بود دکمه Yes فشرده شده. مثال کاملتر :
#!/bin/bash zenity --question rc=$? if [[ $rc = 0 ]] ; then echo "You choose Yes" else echo "You choose No" fi
دیالوگ نمایش متن بلند
برای نمایش این دیالوگ به این صورت عمل کنید :
zenity --text-info --file-name="/PATH/TO/A/FILE"
انتخاب اول فایلی هستش که قراره متنش نمایش داده بشه. با زدن دکمه Close خیلی ساده دیالوگ بسته میشه.
با انتخاب این گزینه متن قابل ویرایش میشه و بعد از بسته شدن پنجره، محتوای تغییر یافته توسط کاربر در خروجی چاپ میشه.
دیالوگ هشدار
این دیالوگ دقیقا مثل حالت info و message هست فقط تفاوت در آیکون این دیالوگه و نیازی به تکرار اون انتخابها نیست.
دیالوگ انتخاب عدد
این دیالوگ به این صورت ایجاد میشه :
zenity --scale
با فشردن دکمه OK عدد انتخاب شده در خروجی چاپ میشه و در صورت فشرده شدن Cancel هیچ اتفاقی نمیفته و چیزی در خروجی چاپ نمیشه.
متن بالای اسلایدر رو عوض میکنه.
مقدار اولیه رو تغییر میده.
به ترتیب مینیمم و ماکزیمم مقدار رو عوض میکنن.
گام افزایش عدد رو تغییر میده. مثلا دو تا دو تا یه ۵ تا ۵ تا.
باعث میشه که دیالوگ به جای چاپ نتیجه در انتها، هر بار که کاربر عدد رو عوض میکنه اونو در خروجی چاپ کنه و بعد از زدن دکمه OK هم یک بار دیگه چاپش کنه.
باعث میشه که عدد در کنار اسلایدر نمایش داده نشه. (فقط نمایش داده نشه و گرنه در خروجی چاپ میشه)
– داشتم امیدوار میشدم که تموم میشه!!! منتها بعد از آپدیت متوجه شدم تو نسخه های جدید یه دیالوگ هم اضافه شده، تمیدونم دقیقا از چه نسخه ای ولی نسخه فعلی آرچ این دیالوگ رو داره ولی اوبونتو لوسید نداره. برای این باید نسخه ۲.۳۲ یا بالاتر رو داشته باشید این دستور رو اجرا کنید تا نسخه برنامه رو نشون بده :
zenity --version
دیالوگ انتخاب رنگ
این دیالوگ برای انتخاب رنگ به کار میره. با فشردن دکمه OK کد رنگ انتخاب شده در خروجی چاپ میشه البته با یه # در ابتدا. برای نمایشش اینطوری میتونید عمل کنید :
zenity --color-selection
این دیالوگ، دو تا انتخاب داره که عبارتند از :
مثلا :
zenity --color-selection --color=#DDDDDD
با این انتخاب، دیالوگ به اینصورت در میاد :
– تموم شد!!!!! چه سخت بود نوشتنش!
– داشتم آهنگهای شل سیلوراستین رو گوش میکردم و مینوشتم، انقدر با این شعر و اجراش توسط شاعر حال میکنم که حیفم اومد برای شما هم نذارمش!