منبع اصلی نوشتار زیر در این لینک قرار دارد

zenity بخش سوم

برای اینکه کم کم داشت کارهای ناتمومم زیاد میشد، تصمیم گرفتم اول یکی از اونها که دیگه آخراش بود رو تموم کنم و قرعه به نام zenity افتاد. توی دو پست قبلی :
راهنمای zenity قسمت اول | یادداشتهای بیت نیمسوز
zenity بخش دوم | یادداشتهای بیت نیمسوز
یه سری انتخابها رو نوشتم، حالا میرسم به انتخابهای بعدی.

دیالوگ پروگرس


این دیالوگ به اینصورت ایجاد میشه :

zenity --progress

در این حالت شما انتخابهایی برای تغییرات توی دیالوگ دارید که عبارتند از :

9-1 : –text=STRING

که متن دیالوگ (بالای پروگرس بار) رو عوض میکنه.

9-2 : –percentage=INT

تعیین میکنه که هنگام نمایش دیالوگ، پروگرس بار روی چه مقداری باشه؟ البته فقط موقع نمایش، بعدا میشه عوضش کرد. پایینتر رو ببینید.

9-3 : –auto-close

با استفاده از این انتخاب،‌اگه پروگرس به ۱۰۰ درصد برسه دیالوگ به صورت اتوماتیک بسته میشه. در غیر اینصورت منتظر میشه تا خودتون دکمه ای رو بزنید.

9-4 : –auto-kill

با انتخاب این گزینه هنگام اجرا،‌اگه کاربر دکمه لغو (Cancel) رو فشار بده، پروسه ای که پدر پروسه zenity بوده و اون رو اجرا کرده بسته میشه. مثلا وقتی شما چنین دستوری رو تو ترمینال بزنید :

zenity --progress  --auto-kill

با فشردن دکمه Cancel ترمینال هم بسته میشه. البته، دکمه بستن پنجره در بالای پنجره چنین اثری رو نداره و فقط دکمه Cancel اینکار رو میکنه.

9-5 : –pulsate

باعث میشه که این پروگرس به جای پر شدن، به صورت پالس، حرکت کنه. فقط نکته مهم اینه که بعد از اجرای این دیالوگ، باید توی کنسول ورودی این برنامه یه چیزی نوشته بشه و گرنه حرکت پروگرس بار شروع نمیشه. مثلا من برای دوباره سازی فونتها از این استیل استفاده میکنم :

gksudo "fc-cache -f -v"  |  zenity --progress --pulsate --title="Refresh font cache" \
--text="Refresh font cache, please wait..." --auto-close --width="350" 

برای زمانهایی که نمیشه مدت زمان انجام کار رو حدس زد مناسبه.

9-6 : –no-cancel

با این انتخاب دکمه Cancel ناپدید میشه.

خوب مساله اصلی این دیالوگ کنترل کردن درصد پروگرس باره. یعنی چطور میشه پروگرس رو به حرکت در آورد؟ برای اینکار باید در کنسول ورودی برنامه یا همون stdin نوشت. اگه نوشته شما با # شروع بشه متن بالای پروگرس رو عوض میکنه، و اگه فقط یه عدد باشه میشه درصد فعلی پروگرس بار.
تو ترمینال بنویسید :

zenity --progress

و بعد تو همون ترمینال، در حالی که دیالوگ در حال اجراست بنویسید :

#This is text
10
20
30
40
90
100

زنیتی در این حالت هم مثل حالت notification که قبلا توضیح دادم، ترمینال ورودی رو باز میزاره. برای یه مثال کامل به این پست Bash GUI for wget | یادداشتهای بیت نیمسوز سر بزنید :)

دیالوگ سوال


این دیالوگ خیلی مشابه دیالوگهای خطا و نمایش اطلاعاته که قبلا توضیح دادم فقط این دو تا دکمه داره.
برای نمایش این دیالوگ باید اینجوری نوشت :

zenity --question  

انتخابها به ترتیب اینها هستن :

10-1 : –text=STRING

برای تغییر متن سوال استفاده میشه.

10-2 : –no-wrap

باعث میشه که سوالهای طولانی شکسته نشن.

10-3 : –ok-label=STRING

متن دکمه Yes رو تغییر میده.

10-3 : –cancel-label=STRING

اینم متن دکمه 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"
11-1 : –file-name=”/PATH/TO/A/FILE”

انتخاب اول فایلی هستش که قراره متنش نمایش داده بشه. با زدن دکمه Close خیلی ساده دیالوگ بسته میشه.

11-2 : –editable

با انتخاب این گزینه متن قابل ویرایش میشه و بعد از بسته شدن پنجره، محتوای تغییر یافته توسط کاربر در خروجی چاپ میشه.

دیالوگ هشدار


این دیالوگ دقیقا مثل حالت info و message هست فقط تفاوت در آیکون این دیالوگه و نیازی به تکرار اون انتخابها نیست.

دیالوگ انتخاب عدد


این دیالوگ به این صورت ایجاد میشه :

zenity --scale

با فشردن دکمه OK عدد انتخاب شده در خروجی چاپ میشه و در صورت فشرده شدن Cancel هیچ اتفاقی نمیفته و چیزی در خروجی چاپ نمیشه.

13-1 : –text=STRING

متن بالای اسلایدر رو عوض میکنه.

13-2 : –value=VALUE

مقدار اولیه رو تغییر میده.

13-3 : –min-value=VALUE
13-4 : –max-value=VALUE

به ترتیب مینیمم و ماکزیمم مقدار رو عوض میکنن.

13-6 : –step=VALUE

گام افزایش عدد رو تغییر میده. مثلا دو تا دو تا یه ۵ تا ۵ تا.

13-7 : –print-partial

باعث میشه که دیالوگ به جای چاپ نتیجه در انتها، هر بار که کاربر عدد رو عوض میکنه اونو در خروجی چاپ کنه و بعد از زدن دکمه OK هم یک بار دیگه چاپش کنه.

13-8 : –hide-value

باعث میشه که عدد در کنار اسلایدر نمایش داده نشه. (فقط نمایش داده نشه و گرنه در خروجی چاپ میشه)

– داشتم امیدوار میشدم که تموم میشه!!! منتها بعد از آپدیت متوجه شدم تو نسخه های جدید یه دیالوگ هم اضافه شده، تمیدونم دقیقا از چه نسخه ای ولی نسخه فعلی آرچ این دیالوگ رو داره ولی اوبونتو لوسید نداره. برای این باید نسخه ۲.۳۲ یا بالاتر رو داشته باشید این دستور رو اجرا کنید تا نسخه برنامه رو نشون بده :

zenity --version

دیالوگ انتخاب رنگ


این دیالوگ برای انتخاب رنگ به کار میره. با فشردن دکمه OK کد رنگ انتخاب شده در خروجی چاپ میشه البته با یه # در ابتدا. برای نمایشش اینطوری میتونید عمل کنید :

zenity --color-selection

این دیالوگ، دو تا انتخاب داره که عبارتند از :

14-1 : –color=VALUE

مثلا :

zenity --color-selection --color=#DDDDDD
14-2 : –show-palette

با این انتخاب، دیالوگ به اینصورت در میاد :

– تموم شد!!!!! چه سخت بود نوشتنش!
– داشتم آهنگهای شل سیلوراستین رو گوش میکردم و مینوشتم، انقدر با این شعر و اجراش توسط شاعر حال میکنم که حیفم اومد برای شما هم نذارمش!



برچسب ها : , , , , , ,