یک وبلاگ دیگر از یک برنامه نویس دیگر
zenity بخش اول
زنیتی (zenity) یک برنامه کوچک برای نمایش دیالوگ GTK+ از طریق خط فرمانه. این برنامه مجموعه کاملی از دیالوگها رو ارایه میده که میتونه برای نوشتن یک اسکریپت که دیگه از خط فرمان خارج بشه خیلی مفیده. به ترتیب دیالوگهای اون و انتخابهای (Options ) مربوط به هر دیالوگ رو توضیح میدم.
پیشنیار :
طبیعیه که zenity باید نصب بشه. برای نصبش :
# For ubuntu : apt-get install zenity # For Archlinux pacman -S zenity # Fedora yum install zenity
برای اجرای اون :
zenity [options...]
اما دیالوگهایی که zenity پشتیبانی میکنه.
- تقویم
- ورودی متن
- نمایش پنجره خطا
- انتخاب فایل
- نمایش پنجره اطلاعات
- لیست قابل انتخاب
- آیکون در System Tray
- دیالوگ پروگرس
- پنجره سوال
- پنجره حاوی متن بلند (مثل لیسانس)
- هشدار
- انتخاب عدد توسط اسلایدر
بعد از یک توضیح مختصر درباره انتخابهای عمومی یکی به یکی همه اینها رو معرفی میکنم (البته بیشتر از یک پست نیازه)
1- انتخابهای عمومی
یه سری انتخابهای عمومی هستن که برای هر حالت zenity قابل استفاده هستن. چون zenity یک سری دیالوگ نمایش میده طول و عرض دیالوگ، متن caption ، آیکون پنجره و زمان tiemout که این امکان رو میده که بعد از یه مدتی دیالوگ بسته بشه و اگر قراره جوابی برگرده جواب پیشفرض باش.
این انتخابها (که به تنهایی کار نمیکنن و حتما باید با یکی از انواع دیالوگ بالا باشن) عبارتند از :
برای تغییر متن عنوان پنجره. مثلا به این صورت :
zenity --calendar --title="This is my title"
همونطور که بالاتر هم گفتم این انتخابها نمیتونن به تنهایی استفاده بشن، تو این مثال من از calendar استفاده کردم که یک دیالوگ تقویم نشون میده (چند خط پایینتر رو ببینید.)و بعد با کمک title عنوان رو عوض میکنه با اون متنی که من دادم. نکته ای که اینجا هست، عبارتهای فارسی شاید توی کنسول درست نشون داده نشن، ولی توی پنجره درست نمایش داده میشن بنابراین میتونید عنوان رو فارسی هم بزنید.
مسیر آیکون پنجره.یادتون باشه بعضی از theme های گنوم اصلا گوشه بالا سمت چپ پنجره آیکونی نمایش نمیدن! منطقا این برای اونها بی معنیه :
zenity --calendar --window-icon="/usr/share/pixmaps/gok.png"
اینها هم (هر دو انتخاب) باعث میشن که طول و عرض پیشفرض دیالوگ عوض شه توی GTK زیاد ارزشی قایل نیستن برای این طول و عرض :D و میشه گفت این به عنوان مینیمم پیشنهادی هستش. یعنی اگه تو دیالوگ عنصر بزرگتری باشه خیلی راحت اینو زیر پا میگذاره. مثال :
zenity --calendar --width=800 --height=300
این باعث میشه دیالوگها بعد از مدت خاصی بسته بشن. مدت به ثانیه هست.
zenity --calendar ---timeout=5
اگه دیالوگ دکمه پیشفرض داشته باشه انگار کاربر اون دکمه رو فشرده. معمولا دکمه لغو دکمه پیشفرضه.
اما خود دیالوگها….
۲- تقویم
یک تقویم نشون میده که به این شکل هست :
برای ایجاد این تقویم باید آرگومان calendar رو به zenity پاس بدیم. مثلا تقویمی با عنوان “Choose your birthday” :
zenity --calendar --title="Choose your birthday"
خوب مساله اصلی اینه که حالا دیالوگ نمایش داده شد، اگه کاربر یه تاریخ رو انتخاب کنه من تو اسکریپت چطور بگیرمش؟ خیلی ساده zenity تاریخ انتخاب شده رو توی خروجی چاپ میکنه(به صورت پیشفرض اینجوری : 07/31/2010 ).شما میتونید با یه پایپ اونو به برنامه بعدی پاس بدید. اگه cancel انتخاب شه چیزی توی خروجی چاپ نمیشه. اگه timeout داشته باشه بعد ار رسیدن زمان انگار دکمه cancel فشرده شده باشه. مثلا :
zenity --calendar --title="Choose your birthday" | cut -d"/" -f3
سالی که کاربر انتخب کرده رو چاپ میکنه مثلا 2010. حالا انتخابهای ویژه تقویم .
متن بالای تقویم رو عوض میکنه (نه متن پنجره، برای اون از title استفاده میشه)
zenity --calendar --title="Choose your birthday" --text="Please select your birthday"
مقادیر انتخاب شده پیشفرض. هر کدوم از این سه تا رو به تنهایی یا با هم میشه به کار برد. مثلا :
zenity --calendar --day=29 --year=2008 --month=10
برای انتخاب طریق نمایش تاریخ استفاده میشه. مثلا %Y برای نمایش سال یا %j برای نمایش اینکه چند روز از سال گذشته. برای لیست کامل راهنمای date رو ببینید (man date رو توی کنسول بزنید)
zenity --calendar --date-format=%j
در این حالت تو خروجی چاپ میشه که این روز انتخاب شده روز چندم ساله.فقط یادتون باشه این دیالوگ فقط از روز و ماه و سال پشتیبانی میکنه نه ساعت و ثانیه و دقیقه و کل واحدهای کمتر از روز.
۳- ورودی متن
در این حالت به شما این امکان داده میشه که یک متن از کاربر بگیرید به این صورت :
zenity --entry
اینهم تصویرش :
اگه کاربر دکه OK رو کلیک کنه متن نوشته شده توی خروجی چاپ میشه و شما میتونید اون رو مثلا با پایپ پاس بدید به برنامه بعدی اگه Cancel زده بشه یا اینکه timeout سر برسه (اگه با –timeout تنظیم شده باشه) هیچی در خروجی چاپ نمیشه و خارج میشه. انتخابهای مخصوص این دیالوگ اینها هستن :
که باعث میشه متن بالای دیالوگ (نه متن داخل نوار عنوان که قبلا گفتم با title عوض میشه) عوض بشه. مثلا :
zenity --entry --text="Enter your name" --title="This is title"
متن پیشفرض داخل دیالوگ که کاربر میتونه عوضش کنه. مثلا :
zenity --entry --entry-text="Default text"
این گزینه برای اینه که متن داخل به صورت ستاره دار بشه و مناسبه برای گرفتن کلمه رمز. مثلا :
zenity --entry --hide-text --text="Enter your password"
۴-دیالوگ نمایش خطا
این دیالوگ به شما امکان میده که یک متن خطا رو به کاربر نشون بدید. البته نمایش اون به معنی ایجاد خطا نیست، شما میتونید از طریق این دیالوگ مثلا به کاربر خوش آمد بگید ولی یه کم غیر طبیعیه :) شکلش اینه :
برای ایجادش اینکار رو انجام بدید :
zenity --error
اینهم آرگومانهای این مدل دیالوگ :
برای اینکه متن نمایش داده رو عوض کنید از این انتخاب استفاده میشه مثلا :
zenity --error --text="This is an error!"
بودن این انتخاب به zenity میگه که متنهای طولانی رو هم نشکنه و توی یک خط نمایش بده. مثلا :
zenity --error --no-wrap --text="Very loooooong text"
فعلا تا همین جا بسه. تا بعدی :)
| چاپ این نوشته | این نوشته توسط فرود در روز 2010/07/17 در ساعت 04:07 نوشته شده است و در دسته Bash, zenity, لینوکس دسته بندی شده است. پاسخهای این نوشته را از طریق RSS 2.0 دنبال کنید. شما میتوانید نظر خود را ارسال کنید یا از سایت خود دنبالک ارسال کنید. |









در 1 سال پیش
سلام، امکانش هست ایمیلتون رو برای ارسال پیغامی داشته باشم؟ ممنون
موافقید یا نه :
0
0
در 1 سال پیش
یه میل زدم براتون.
موافقید یا نه :
0
0
در 1 سال پیش
عالی بود. ممنون.
موافقید یا نه :
0
0
در 1 سال پیش
بسیار عالی بود فرود عزیز….
موافقید یا نه :
0
0
در 1 سال پیش
pakage vase bazi minivissi shoma me3inke. be jaye inhame kar behtar nabo0d QT r0o moarefi mikardin?! :))
موافقید یا نه :
0
0
در 1 سال پیش
معرفی QT؟ کسایی که اهلش هستن خوبه که معرفیش کنن :) ولی من QT کار نیستم :)
بعد هم این نوشتن همه انتخابهای زنیتی یه گام بود برای کمک به جامعه لینوکس. بیشتر برای ویکی :)بعد پکیج برای بازی منظورتون چی بود اونوقت؟؟؟
موافقید یا نه :
0
0
در 5 ماه پیش
میشه راجع به زینیتی و امکان ان بر روی اسکریپ لوگ اون و شات دان و ری استارت توضیح بدبد
موافقید یا نه :
0
0
در 5 ماه پیش
یعنی اسکریپتی با زنیتی که بشه سیستم رو باهاش خاموش یا ریست کرد؟ فکر کنم یه چیزی به شکل پنجره ای که اینجا http://cyberrabbits.net/497/zenity-part-two/ درست شده؟
موافقید یا نه :
0
0