| DIALOG() | User commands | DIALOG() |
(NAME)'>نام (NAME)
dialog - نمایش جعبههای گفتگو از طریق اسکریپتهای شل
خلاصه دستور (SYNOPSIS)
dialog --clear
dialog --create-rc file
dialog --print-maxsize
dialog common-options box-options
توضیحات (DESCRIPTION)
Dialog برنامهای است که به شما امکان میدهد انواع سؤالات را مطرح کرده یا پیامها را با استفاده از جعبههای گفتگو از درون یک اسکریپت شل نمایش دهید. این انواع از جعبههای گفتگو پیادهسازی شدهاند (اگرچه ممکن است همه آنها لزوماً در dialog کامپایل نشده باشند):
buildlist، calendar، checklist، dselect، editbox، form، fselect، gauge، infobox، inputbox، inputmenu، menu، mixedform، mixedgauge، msgbox (پیام)، passwordbox، passwordform، pause، prgbox، programbox، progressbox، radiolist، rangebox، tailbox، tailboxbg، textbox، timebox، treeview، و yesno (بله/خیر).
میتوانید بیش از یک جعبه گفتگو را در یک اسکریپت قرار دهید:
- از نشانه "--and-widget" استفاده کنید تا dialog را وادار کنید به گفتگوی بعدی برود مگر اینکه برای لغو کلید ESC را فشرده باشید، یا
- به سادگی نشانههای مربوط به جعبه گفتگوی بعدی را اضافه کنید و یک زنجیره بسازید. زمانی که کد بازگشتی یک گفتگو غیرصفر باشد (مانند Cancel یا No)، زنجیرهسازی در Dialog متوقف میشود (به وضعیت خروج مراجعه کنید).
برخی از ویجتها، مانند checklist، متنی را در خروجی dialog مینویسند. به طور معمول این خروجی خطای استاندارد است، اما گزینههایی برای تغییر آن وجود دارد: “--output-fd”، “--stderr” و “--stdout”. اگر دکمه Cancel (یا ESC) فشرده شود، هیچ متنی نوشته نمیشود؛ در این حالت dialog بلافاصله خارج میشود.
گزینهها (OPTIONS)
همه گزینهها با “--” آغاز میشوند (دو خط تیره اسکی، به نفع کسانی که از سیستمهایی با پشتیبانی لوکال نامناسب استفاده میکنند).
یک “--” به تنهایی به عنوان گریز استفاده میشود، بدین معنی که نشانه بعدی در خط فرمان به عنوان گزینه در نظر گرفته نمیشود. این رفتار با getopt(1) متفاوت است، که از آن نشانه برای در نظر گرفتن نشانههای باقیمانده به عنوان پارامتر به جای گزینه استفاده میکند.
dialog --title -- --Not an option
dialog --title This -- --title is not an option
Dialog از هیچ پارامتری استفاده نمیکند و از تجزیهکننده گزینههای اختصاصی خود بهره میبرد.
هنگامی که یک گزینه عمومی (مثلاً غیرویجتی) تکرار میشود، آخرین گزینه دریافتشده اعمال میگردد. گزینههای بولی به طور ویژه مدیریت میشوند تا بتوان آنها را لغو کرد؛ این کار با افزودن (یا حذف) پیشوند “no” پس از “--” ابتدایی انجام میشود. به عنوان مثال، --no-shadow در اینجا مستند شده است، اما --shadow نیز پذیرفته میشود.
گزینه “--args” به dialog میگوید که پارامترهای خط فرمان را در خطای استاندارد فهرست کند. این قابلیت هنگام اشکالزدایی اسکریپتهای پیچیدهای که از “--” و “--file” استفاده میکنند مفید است، چرا که ممکن است خط فرمان با باز شدن این موارد بازنویسی شود.
گزینه “--file” به dialog میگوید پارامترها را از فایلی که نام آن به عنوان مقدار داده شده است بخواند.
فاصلههای خالی که درون نقلقول دوگانه نباشند نادیده گرفته میشوند (برای گریز کاراکترهای تکی از بکاسلش استفاده کنید). نتیجه حاصل در خط فرمان درج میشود و جایگزین “--file” و مقدار آن میگردد. تفسیر خط فرمان از همان نقطه از سر گرفته میشود. اگر parameterfile با “&” آغاز شود، dialog متن پس از آن را به جای نام فایل، به عنوان شماره توصیفگر فایل در نظر میگیرد.
بیشتر ویجتها پارامترهای height و width را میپذیرند، که میتوان از آنها برای اندازهگیری خودکار ویجت جهت تطبیق با اعلانهای پیامی چندخطی (prompt) استفاده کرد:
- اگر پارامتر منفی باشد، dialog از اندازه صفحه نمایش استفاده میکند.
- اگر پارامتر صفر باشد، dialog از حداقل اندازه لازم برای ویجت جهت نمایش prompt و دادهها استفاده میکند.
- در غیر این صورت، dialog از اندازه مشخصشده برای ویجت استفاده میکند.
گزینههای عمومی (Common Options)
بیشتر گزینههای عمومی پیش از پردازش هر ویجت بازنشانی میشوند.
- --ascii-lines
- به جای ترسیم خطوط گرافیکی در اطراف جعبهها، کاراکترهای اسکی “+” و “-” را در همان محل رسم میکند. همچنین “--no-lines” را ببینید.
- --aspect ratio
- هنگام استفاده از تعیین اندازه خودکار (مشخص کردن صفر برای ارتفاع و عرض)، کنترلی روی ابعاد جعبه فراهم میکند. این مقدار نمایانگر نسبت عرض / ارتفاع است. مقدار پیشفرض 9 است، به این معنی که 9 کاراکتر در عرض به ازای هر 1 خط در ارتفاع در نظر گرفته میشود.
- --backtitle backtitle
- رشتهای را به عنوان backtitle برای نمایش در پسزمینه، در بالای صفحه نمایش مشخص میکند.
- --begin y x
- موقعیت گوشه بالا و سمت چپ جعبه گفتگو را روی صفحه نمایش مشخص میکند.
- --cancel-label string
- برچسب مورد استفاده برای دکمههای “Cancel” را تغییر میدهد.
- --clear
- صفحه ویجت را پاک میکند و تنها پسزمینه screen_color را نگه میدارد. زمانی که ویجتها را با “--and-widget” ترکیب میکنید، از این گزینه برای پاک کردن محتوای ویجت قبلی از صفحه استفاده کنید تا زیر محتوای ویجت بعدی دیده نشود. این گزینه را به عنوان مکمل “--keep-window” در نظر بگیرید. برای مقایسه اثرات، از این نمونهها استفاده کنید:
- هر سه ویجت نمایان هستند، اثر پلکانی، با ترتیب 1، 2، 3:
dialog \
--begin 2 2 --yesno "" 0 0 \
--and-widget --begin 4 4 --yesno "" 0 0 \
--and-widget --begin 6 6 --yesno "" 0 0
- تنها آخرین ویجت نمایان باقی میماند:
dialog \
--clear --begin 2 2 --yesno "" 0 0 \
--and-widget --clear --begin 4 4 --yesno "" 0 0 \
--and-widget --begin 6 6 --yesno "" 0 0
- هر سه ویجت نمایان هستند، اثر پلکانی، با ترتیب 3، 2، 1:
dialog \
--keep-window --begin 2 2 --yesno "" 0 0 \
--and-widget --keep-window --begin 4 4 --yesno "" 0 0 \
--and-widget --begin 6 6 --yesno "" 0 0
- ویجتهای اول و سوم نمایان هستند، اثر پلکانی، با ترتیب 3، 1:
dialog \
--keep-window --begin 2 2 --yesno "" 0 0 \
--and-widget --clear --begin 4 4 --yesno "" 0 0 \
--and-widget --begin 6 6 --yesno "" 0 0
- توجه داشته باشید، اگر میخواهید رنگهای کنسول اصلی را بازگردانید و نشانگر را پس از خروج برنامه به نقطه آغاز بازگردانید، از دستور clear(1) استفاده کنید. برعکس، اگر میخواهید صفحه را پاک کرده و نشانگر را پس از خروج برنامه dialog به گوشه پایین و سمت چپ منتقل کنید، از گزینه --erase-on-exit استفاده کنید.
- --color-mode code
- گزینه --colors را به محتوای programbox، tailbox و textbox گسترش میدهد. برای این ویژگی از کد “2” استفاده کنید.
- --colors
- دنبالههای توکار “\Z” را در متن گفتگو بر اساس کاراکتر پس از آن تفسیر میکند، که به dialog دستور میدهد رنگها یا ویژگیهای تصویری را تنظیم کند:
- 0 تا 7 شماره رنگهای ANSI هستند که در curses استفاده میشوند: به ترتیب سیاه، قرمز، سبز، زرد، آبی، سرخابی (magenta)، فیروزهای (cyan) و سفید.
- برجسته (Bold) با 'b' تنظیم و با 'B' لغو میشود.
- معکوس (Reverse) با 'r' تنظیم و با 'R' لغو میشود.
- خط زیرین (Underline) با 'u' تنظیم و با 'U' لغو میشود.
- تنظیمات تجمعی هستند، به عنوان مثال “\Zb\Z1” متن بعدی را پررنگ و قرمز (احتمالاً روشن) میکند.
- تنظیمات عادی را با “\Zn” بازگردانید.
- --column-separator string
- به dialog میگوید دادهها را برای دکمههای رادیویی/کادرهای علامتگذاری و منوها با رخداد رشته دادهشده تقسیم کند و دادههای تفکیکشده را در ستونها تراز کند.
- --cr-wrap
- خطوط جدید درون متن گفتگو را به عنوان خط جدید روی صفحه نمایش تفسیر میکند. در غیر این صورت، dialog خطوط را تنها در جایی میشکند که برای جا شدن درون کادر متن لازم باشد.
- حتی اگر بتوانید شکست خطوط را با این گزینه کنترل کنید، Dialog همچنان خطوطی را که برای عرض جعبه بیش از حد طولانی باشند میشکند. بدون cr-wrap، چیدمان متن شما میتواند به گونهای قالببندی شود که در کد مبدا اسکریپت ظاهر مرتبی داشته باشد بدون اینکه بر نحوه نمایش آن در گفتگو تأثیر بگذارد.
- ویژگی cr-wrap با رعایت این شرایط پیادهسازی شده است:
- رشته شامل “\n” باشد و گزینه --no-nl-expand استفاده نشده باشد، یا
- گزینه --trim استفاده شده باشد.
- برای اطلاعات بیشتر، بخش گزینههای فاصلهگذاری (Whitespace Options) را ببینید.
- --create-rc file
- زمانی که dialog از پیکربندی زمان اجرا پشتیبانی میکند، این گزینه میتواند برای استخراج یک فایل پیکربندی نمونه در فایل مشخصشده توسط file استفاده شود.
- --cursor-off-label
- نشانگر ترمینال را به جای قرار دادن روی اولین کاراکتر برچسب دکمه، در انتهای دکمه قرار میدهد. این کار برای کاهش سردرگمی بصری در مواقعی که رنگآمیزی نشانگر تداخل نامناسبی با رنگهای متن برچسب دکمه دارد، مفید است.
- --date-format format
- اگر سیستم میزبان strftime را فراهم کند، این گزینه به شما امکان میدهد قالب تاریخ چاپشده را برای ویجت --calendar مشخص کنید. زمان روز (ساعت، دقیقه، ثانیه) مطابق با زمان محلی فعلی است.
- --defaultno
- مقدار پیشفرض جعبه yes/no را به No تغییر میدهد. به همین ترتیب، دکمه پیشفرض ویجتهایی که “OK” و “Cancel” را ارائه میدهند، به عنوان Cancel در نظر میگیرد. اگر “--no-cancel” یا “--visit-items” داده شوند، آن گزینهها این مورد را لغو میکنند و دکمه پیشفرض را همیشه “Yes” قرار میدهند (که در داخل برنامه همان “OK” است).
- --default-button string
- دکمه پیشفرض (انتخابشده از پیش) را در یک ویجت تنظیم میکند. با پیشانتخاب یک دکمه، یک اسکریپت امکان فشردن کلید Enter توسط کاربر را فراهم میکند تا با حداقل تعامل، گفتگو را پیش ببرد.
- مقدار این گزینه نام دکمه است: ok، yes، cancel، no، help یا extra.
- به طور معمول اولین دکمه در هر ویجت پیشفرض است. اولین دکمه نمایشدادهشده توسط ویجت به همراه گزینههای “--no-ok” و “--no-cancel” تعیین میشود. اگر این گزینه مشخص نشود، دکمه پیشفرضی تعیین نمیشود.
- --default-item string
- آیتم پیشفرض را در یک چکلیست، فرم یا جعبه منو تنظیم میکند. به طور معمول اولین آیتم در جعبه پیشفرض است.
- --erase-on-exit
- هنگامی که dialog خارج میشود، ویجت گفتگو را حذف میکند، کل صفحه را به رنگ پسزمینه اصلی خود پاک میکند، و نشانگر ترمینال را در گوشه پایین و سمت چپ قرار میدهد.
- --exit-label string
- برچسب مورد استفاده برای دکمههای “EXIT” را تغییر میدهد.
- --extra-button
- یک دکمه اضافی بین دکمههای “OK” و “Cancel” نمایش میدهد.
- این دکمه اضافی برای ویجت yesno بین “Yes” و “No” ظاهر میشود.
- --extra-label string
- برچسب مورد استفاده برای دکمههای “Extra” را تغییر میدهد. توجه: برای ویجتهای inputmenu، این برچسب به طور پیشفرض “Rename” است.
- --help
- پیام راهنما را در خروجی استاندارد چاپ کرده و خارج میشود. همچنین اگر هیچ گزینهای داده نشود یا یک گزینه ناشناخته وارد گردد، پیام راهنما چاپ میشود.
- --help-button
- یک دکمه راهنما پس از دکمههای “OK” و “Cancel” در جعبههایی که دارای فهرستی از آیتمهای برچسبدار هستند (یعنی جعبههای checklist، radiolist، menu و treeview) نمایش میدهد.
- این دکمه راهنما برای ویجت yesno پس از “Yes” و “No” ظاهر میشود.
- در هنگام خروج، وضعیت بازگشتی مشخص میکند که دکمه Help فشرده شده است. همچنین Dialog پس از نشانه “HELP” پیامی را در خروجی خود مینویسد:
- اگر "--item-help" نیز مشخص شده باشد، متن راهنمای آیتم نوشته میشود.
- در غیر این صورت، برچسب آیتم (فیلد نخست) نوشته میشود.
- میتوانید از گزینه --help-tags و/یا متغیر محیطی DIALOG_ITEM_HELP برای تغییر این پیامها و وضعیت خروج استفاده کنید.
- این گزینه میتواند برای سایر ویجتهایی که دکمه “OK” دارند نیز اعمال شود، صرفنظر از اینکه دکمه “Cancel” استفاده شده باشد یا خیر. وضعیت بازگشتی و خروجی برای سایر ویجتها به صورت ویژه مدیریت نمیشود؛ دکمه راهنما فقط یک دکمه اضافی است.
- --help-label string
- برچسب مورد استفاده برای دکمههای “Help” را تغییر میدهد.
- --help-status
- اگر دکمه راهنما انتخاب شود، اطلاعات چکلیست، لیست رادیویی یا فرم را پس از اطلاعات “HELP” راهنمای آیتم مینویسد. این قابلیت میتواند برای بازسازی وضعیت چکلیست پس از پردازش درخواست راهنما استفاده شود.
- --help-tags
- پیامهای نوشتهشده هنگام خروج برای --help-button را تغییر میدهد تا همیشه تنها برچسب آیتم باشد. این کار بر کد وضعیت خروج تأثیری ندارد.
- --hfile filename
- فایل مشخصشده را با استفاده از یک textbox هنگامی که کاربر کلید F1 را فشار میدهد نمایش میدهد.
- --hline string
- رشته مشخصشده را به صورت وسطچین در پایین ویجت نمایش میدهد.
- پنجرههای قابل پیمایش دارای نشانگری در نزدیکی سمت چپ ویجت هستند و فضای متناظری در سمت راست رزرو شده است. این امر مقدار متنی را که میتوان نمایش داد به 9 ستون کمتر از عرض پنجره محدود میکند. اگر فضای کافی در دسترس نباشد، متنی نمایش داده نمیشود.
- --ignore
- گزینههایی را که dialog نمیشناسد نادیده میگیرد. برخی از گزینههای شناختهشده مانند “--icon” در هر حال نادیده گرفته میشوند، اما این گزینه انتخاب بهتری برای سازگاری با سایر پیادهسازیها است.
- --input-fd fd
- ورودی صفحهکلید را از توصیفگر فایل دادهشده میخواند. بیشتر اسکریپتهای dialog از ورودی استاندارد میخوانند، اما ویجت gauge از یک لوله میخواند (که همیشه ورودی استاندارد است). برخی از پیکربندیها زمانی که dialog تلاش میکند ترمینال را دوباره باز کند، به درستی کار نمیکنند. اگر اسکریپت شما باید در چنین محیطی کار کند، از این گزینه (با مدیریت مناسب توصیفگرهای فایل) استفاده کنید.
- --insecure
- ویجت گذرواژه را کاربرپسندتر اما با امنیت کمتر میکند؛ به این صورت که برای هر کاراکتر ستاره نمایش میدهد.
- --iso-week
- نقطه شروع شماره هفته نمایشدادهشده در گزینه “--calendar” را مطابق با ISO-8601 تنظیم میکند، که شمارهگذاری را با اولین هفتهای که شامل یک پنجشنبه در ماه ژانویه است آغاز میکند.
- --item-help
- دادههای برچسبها را برای جعبههای چکلیست، لیست رادیویی و منو تفسیر کرده و ستونی اضافه میکند که در خط پایینی صفحه برای آیتم انتخابشده کنونی نمایش داده میشود.
- --keep-tite
- هنگامی که با ncurses ساخته شده باشد، dialog معمولاً بررسی میکند که آیا در xterm اجرا میشود یا خیر، و در آن صورت سعی میکند رشتههای اولیهسازی را که باعث جابهجایی به صفحه متناوب میشوند، متوقف کند. جابهجایی بین صفحات عادی و متناوب در اسکریپتی که dialog را چندین بار اجرا میکند از نظر بصری آزاردهنده است. از این گزینه استفاده کنید تا به dialog اجازه دهید از آن رشتههای اولیهسازی استفاده کند.
- --keep-window
- به طور معمول زمانی که dialog چندین ویجت tailboxbg متصلشده با “--and-widget” را اجرا میکند، ویجت قدیمی را با بازنویسی روی آن از صفحه پاک میکند. از این گزینه برای جلوگیری از این بازنویسی استفاده کنید.
- در هنگام خروج، dialog تمام ویجتهایی را که با “--keep-window” علامتگذاری شدهاند دوباره ترسیم میکند، حتی اگر ویجتهای tailboxbg نباشند. این کار باعث میشود آنها با ترتیب معکوس بازترسیم شوند. برای نمونهها، توضیحات گزینه “--clear” را ببینید.
- --last-key
- در هنگام خروج، آخرین کلیدی را که کاربر وارد کرده گزارش میدهد. این مقدار کد کلید curses است نه یک نماد یا کاراکتر تحتاللفظی، و تنها برای کلیدهایی گزارش میشود که به یک عملیات متصل شدهاند. اسکریپتها میتوانند از این گزینه برای تمایز بین دو کلید که به یک عملیات متصل هستند استفاده کنند.
- --max-input size
- رشتههای ورودی را به اندازه دادهشده محدود میکند. در صورت عدم تعیین، این محدودیت 2048 است.
- --no-cancel
- دکمه “Cancel” را در حالتهای جعبه چکلیست، inputbox و منو حذف میکند. یک اسکریپت همچنان میتواند بررسی کند که آیا کاربر کلید ESC را برای لغو و خروج فشار داده است یا خیر.
- --no-collapse
- به طور معمول dialog تبها را به فاصله تبدیل کرده و فاصلههای متوالی را برای متنی که در جعبههای پیام و غیره نمایش داده میشود، به یک فاصله کاهش میدهد. از این گزینه برای غیرفعال کردن این ویژگی استفاده کنید. توجه داشته باشید که dialog همچنان متن را با توجه به گزینههای “--cr-wrap” و “--trim” میشکند.
- ویژگی no-collapse با رعایت این شرایط اعمال میشود:
- رشته شامل “\n” باشد و گزینه --no-nl-expand استفاده نشده باشد، یا
- گزینه --trim استفاده نشده باشد.
- برای اطلاعات بیشتر، بخش گزینههای فاصلهگذاری (Whitespace Options) را ببینید.
- --no-hot-list
- به dialog دستور میدهد قابلیت کلید میانبر را برای فهرستها، مثلاً کادر علامتگذاری و منوها غیرفعال کند.
- به طور معمول، اولین کاراکتر بزرگ در یک ورودی فهرست برجسته میشود و فشردن آن کاراکتر، تمرکز را به آن ورودی منتقل میکند. این گزینه هم برجستهسازی و هم انتقال تمرکز را غیرفعال میکند.
- کلیدهای میانبر دکمهها (“OK”، “Cancel” و غیره) تحت تأثیر قرار نمیگیرند.
- --no-items
- برخی ویجتها (checklist، inputmenu، radiolist، menu) فهرستی با دو ستون نمایش میدهند (یک “tag” و یک “item” یا همان “description”). این گزینه به dialog میگوید ردیفهای کوتاهتری بخواند و بخش “item” فهرست را نادیده بگیرد. این قابلیت گاهی اوقات مفید است، مثلاً زمانی که برچسبها اطلاعات کافی ارائه میدهند.
- همچنین --no-tags را ببینید. اگر هر دو گزینه داده شوند، این گزینه نادیده گرفته میشود.
- --no-kill
- به dialog دستور میدهد جعبه tailboxbg را در پسزمینه قرار دهد، و شناسه فرایند آن را در خروجی dialog چاپ کند. سیگنال SIGHUP برای فرایند پسزمینه غیرفعال میشود.
- --no-label string
- برچسب مورد استفاده برای دکمههای “No” را تغییر میدهد.
- --no-lines
- به جای ترسیم خطوط دور جعبهها، در همان محل فاصلههای خالی رسم میکند. همچنین “--ascii-lines” را ببینید.
- --no-mouse
- ماوس را فعال نمیکند.
- --no-nl-expand
- زیررشتههای “\n” در متن پیام/اعلان را به خطوط جدید تحتاللفظی تبدیل نمیکند.
- ویژگی no-nl-expand تنها در صورتی استفاده میشود که رشته حاوی “\n” باشد تا چیزی برای تبدیل وجود داشته باشد.
- برای اطلاعات بیشتر، بخش گزینههای فاصلهگذاری (Whitespace Options) را ببینید.
- --no-ok
- دکمه “OK” را حذف میکند تا نمایش داده نشود. یک اسکریپت همچنان میتواند بررسی کند که آیا کاربر کلید “Enter” را برای پذیرش دادهها فشرده است یا خیر:
- •
- هنگامی که گزینه --no-ok استفاده میشود، کلید “Enter” همیشه مانند دکمه “OK” عمل میکند. یعنی به طور پیشفرض به کلید مجازی LEAVE متصل است.
- هنگامی که --no-ok استفاده نمیشود، میتوانید از کلید Tab برای حرکت نشانگر بین فیلدها و دکمههای روی ویجت استفاده کنید. در این حالت، اگر نشانگر روی یک دکمه قرار داشته باشد، کلید “Enter” دکمه فعلی را فعال میکند.
- •
- برای حالتی که میخواهید هنگام استفاده از --no-ok دکمهای را فعال کنید، کلید مجازی دیگری به نام LEAVE وجود دارد که دکمه فعلی را فعال میکند. به طور پیشفرض، ^D (EOF) به آن کلید متصل است.
- --no-shadow
- سایههایی را که در سمت راست و پایین هر جعبه گفتگو کشیده میشوند، حذف میکند.
- --no-tags
- برخی ویجتها (checklist، inputmenu، radiolist، menu) فهرستی با دو ستون نمایش میدهند (یک “tag” و یک “description”). برچسب برای اسکریپتنویسی مفید است، اما ممکن است به کاربر کمکی نکند. گزینه --no-tags (برگرفته از Xdialog) ممکن است برای حذف ستون برچسبها از صفحه نمایش استفاده شود. برخلاف گزینه --no-items، این گزینه بر دادههایی که از اسکریپت خوانده میشوند تأثیری ندارد.
- برنامه Xdialog ستون برچسب را برای ویجتهای مشابه buildlist و treeview نمایش نمیدهد؛ dialog نیز همین کار را انجام میدهد.
- به طور معمول dialog به شما امکان میدهد تا با تطبیق یک تککاراکتر با اولین کاراکتر برچسب، به سرعت به ورودیهای فهرست نمایشدادهشده بروید. هنگامی که گزینه --no-tags داده میشود، dialog با اولین کاراکتر توضیحات تطبیق میدهد. در هر دو حالت، کاراکتر قابل تطبیق برجسته میشود.
- --ok-label string
- برچسب مورد استفاده برای دکمههای “OK” را تغییر میدهد.
- --output-fd fd
- خروجی را به توصیفگر فایل مشخصشده هدایت میکند. بیشتر اسکریپتهای dialog در خطای استاندارد مینویسند، اما بسته به اسکریپت شما، پیامهای خطا نیز ممکن است در آنجا نوشته شوند.
- --separator string
- --output-separator string
- رشتهای را مشخص میکند که خروجیهای چکلیستها را در خروجی dialog به جای خط جدید (برای --separate-output) یا فاصله، از یکدیگر جدا میکند. این گزینه برای سایر ویجتها مانند فرمها و editboxها که معمولاً از خط جدید استفاده میکنند نیز اعمال میشود.
- --print-maxsize
- حداکثر اندازه جعبههای گفتگو (یعنی اندازه صفحه نمایش) را در خروجی dialog چاپ میکند. این گزینه میتواند به تنهایی و بدون سایر گزینهها استفاده شود.
- --print-size
- اندازه هر جعبه گفتگو را هنگام راهاندازی جعبه در خروجی dialog چاپ میکند.
- --print-text-only string [ height [ width ] ]
- رشته را همانگونه که در یک جعبه پیام پیچیده میشود در خروجی dialog چاپ میکند.
- از آنجا که مقادیر اختیاری height و width به طور پیشفرض صفر هستند، در صورت حذف آنها، dialog اندازه را به طور خودکار بر اساس ابعاد صفحه تعیین میکند.
- --print-text-size string [ height [ width ] ]
- اندازه رشته را همانطور که در یک جعبه پیام پیچیده میشود، در خروجی dialog به صورت زیر چاپ میکند:
height width
- از آنجا که پارامترهای اختیاری height و width به طور پیشفرض صفر هستند، در صورت حذف آنها، dialog اندازه را به طور خودکار بر اساس ابعاد صفحه تعیین میکند.
- --print-version
- نسخه dialog را در خروجی dialog چاپ میکند. این گزینه میتواند به تنهایی و بدون گزینههای دیگر استفاده شود. این گزینه به خودی خود باعث خروج dialog نمیشود.
- --quoted
- به طور معمول dialog رشتههای بازگرداندهشده توسط چکلیست و همچنین متن راهنمای آیتم را درون نقلقول قرار میدهد. از این گزینه برای قرار دادن تمام نتایج متنی در نقلقول در صورت لزوم استفاده کنید (یعنی اگر رشته حاوی فاصله خالی یا نویسه نقلقول تکی یا دوتایی باشد).
- --reorder
- به طور پیشفرض، ویجت buildlist برای فهرست خروجی (راست) از همان ترتیبی استفاده میکند که برای فهرست ورودی (چپ) استفاده شده است. از این گزینه استفاده کنید تا به dialog بگویید از ترتیبی استفاده کند که کاربر انتخابها را به فهرست خروجی اضافه میکند.
- --scrollbar
- برای ویجتهایی که مجموعهای از دادههای قابل پیمایش را نگه میدارند، یک نوار پیمایش در حاشیه سمت راست رسم میکند. این نوار به ماوس پاسخ نمیدهد.
- --separate-output
- برای ویجتهای خاص (buildlist، checklist، treeview)، نتیجه را خط به خط و بدون نقلقول خروجی میدهد. این کار تجزیه خروجی توسط برنامههای دیگر را تسهیل میکند.
- --separate-widget string
- رشتهای را مشخص میکند که خروجی هر ویجت را در خروجی dialog از یکدیگر جدا میکند. از این گزینه برای سادهسازی تجزیه نتیجه یک گفتگو با چندین ویجت استفاده میشود. اگر این گزینه داده نشود، رشته جداکننده پیشفرض یک نویسه تب است.
- --single-quoted
- در صورت نیاز، از نقلقول تکی (و در صورت عدم نیاز بدون نقلقول) برای خروجی چکلیستها و متن راهنمای آیتم استفاده میکند.
- اگر این گزینه تنظیم نشود، dialog ممکن است از نقلقول دوتایی در اطراف هر آیتم استفاده کند. در هر دو حالت، dialog بکاسلشهایی اضافه میکند تا خروجی در اسکریپتهای شل قابل استفاده باشد.
- اگر رشته حاوی فاصله خالی یا نویسه نقلقول تکی یا دوتایی باشد، به نقلقول تکی نیاز خواهد بود.
- --size-err
- پیش از تلاش برای استفاده از جعبه گفتگو، اندازه حاصل را بررسی میکند و اگر بزرگتر از صفحه نمایش باشد، اندازه حاصل را چاپ میکند. (این گزینه منسوخ شده است، زیرا اکنون تمام فراخوانیهای ساخت پنجره جدید بررسی میشوند).
- --sleep secs
- پس از پردازش یک جعبه گفتگو، به تعداد ثانیههای مشخصشده مکث میکند.
- --stderr
- خروجی را به خطای استاندارد هدایت میکند. این حالت پیشفرض است، زیرا curses به طور معمول بهروزرسانیهای صفحه را در خروجی استاندارد مینویسد.
- --stdout
- خروجی را به خروجی استاندارد هدایت میکند. این گزینه برای سازگاری با Xdialog ارائه شده است، با این حال استفاده از آن در اسکریپتهای قابل حمل توصیه نمیشود، زیرا curses به طور معمول بهروزرسانیهای صفحه را در خروجی استاندارد مینویسد. اگر از این گزینه استفاده کنید، dialog تلاش میکند ترمینال را دوباره باز کند تا بتواند روی نمایشگر بنویسد. بسته به پلتفرم و محیط شما، این کار ممکن است با شکست مواجه شود.
- --tab-correct
- هر نویسه تب را به یک یا چند فاصله تبدیل میکند (برای ویجت textbox؛ در غیر این صورت به یک فاصله تکی). در غیر این صورت، تبها بر اساس تفسیر کتابخانه curses رندر میشوند. گزینه --no-collapse بسط تب را غیرفعال میکند.
- --tab-len n
- در صورت تعیین گزینه “--tab-correct”، تعداد فاصلههایی را که یک نویسه تب اشغال میکند مشخص میکند. مقدار پیشفرض 8 است. این گزینه تنها برای ویجت textbox مؤثر است.
- --time-format format
- اگر سیستم میزبان strftime را فراهم کند، این گزینه به شما امکان میدهد قالب زمان چاپشده برای ویجت --timebox را مشخص کنید. مقادیر روز، ماه و سال در این حالت مطابق با زمان محلی فعلی است.
- --timeout secs
- در صورت عدم پاسخ کاربر در مدت ثانیههای دادهشده، مهلت زمانی پایان مییابد. مهلت زمانی صفر ثانیه نادیده گرفته میشود.
- به طور معمول پایان مهلت زمانی باعث ارسال نویسه ESC به ویجت فعلی شده و آن را لغو میکند. سایر ویجتها ممکن است همچنان روی صفحه باقی بمانند؛ آنها لغو نمیشوند. متغیر محیطی DIALOG_TIMEOUT را تنظیم کنید تا به dialog دستور دهد مستقیماً خارج شود، یعنی تمام ویجتهای روی صفحه را لغو کند.
- این گزینه توسط ویجت “--pause” نادیده گرفته میشود. همچنین اگر گزینه پسزمینه “--tailboxbg” برای راهاندازی چندین ویجت همزمان استفاده شود، این گزینه لغو میگردد.
- --title title
- رشتهای را به عنوان title برای نمایش در بالای جعبه گفتگو مشخص میکند.
- --trace filename
- پارامترهای خط فرمان، کلیدهای فشردهشده و سایر اطلاعات را در فایل دادهشده ثبت میکند. اگر dialog یک فایل پیکربندی را بخواند، آن نیز ثبت میشود. ورودی لولهکشیشده به ویجت gauge نیز ثبت میشود. برای ثبت تصویری از پنجره گفتگوی فعلی از control/T استفاده کنید.
- برنامه dialog برخی از پارامترهای خط فرمان را به طور ویژه مدیریت کرده و با پردازش آنها، آنها را از فهرست پارامترها حذف میکند. به عنوان مثال، اگر اولین گزینه --trace باشد، پیش از آنکه dialog نمایشگر را راهاندازی کند، پردازش (و حذف) میشود.
- --week-start day
- روز شروع هفته را که در گزینه “--calendar” استفاده میشود تعیین میکند. پارامتر day میتواند یکی از موارد زیر باشد:
- یک عدد (0 تا 6، یکشنبه تا شنبه بر اساس POSIX) یا
- مقدار ویژه “locale” (این مقدار روی سیستمهای دارای glibc کار میکند و افزونهای به دستور locale ارائه میدهد، یعنی مقدار first_weekday).
- رشتهای منطبق با یکی از اختصارات روز هفته که در ویجت calendar نمایش داده میشود، به عنوان مثال “Mo” برای دوشنبه.
- --trim
- فاصلههای ابتدایی را حذف میکند، خطوط جدید تحتاللفظی و فاصلههای مکرر را از متن پیام پاکسازی میکند.
- ویژگی trim با رعایت این شرایط پیادهسازی شده است:
- رشته حاوی “\n” نباشد یا
- گزینه --no-nl-expand استفاده شده باشد.
- برای اطلاعات بیشتر، بخش گزینههای فاصلهگذاری (Whitespace Options) را ببینید.
- همچنین گزینههای “--cr-wrap” و “--no-collapse” را ببینید.
- --version
- نسخه dialog را در خروجی استاندارد چاپ کرده و خارج میشود. همچنین “--print-version” را ببینید.
- --visit-items
- پیمایش کلید Tab در چکلیست، لیست رادیویی، menubox و inputmenu را تغییر میدهد تا فهرست آیتمها را به عنوان یکی از حالتها در بر گیرد. این گزینه به عنوان یک کمک بصری مفید است؛ بدین معنا که موقعیت نشانگر به برخی کاربران کمک میکند.
- هنگامی که این گزینه داده میشود، نشانگر در ابتدا روی فهرست قرار میگیرد. اختصارات (حرف اول برچسب) برای آیتمهای فهرست اعمال میشوند. اگر با کلید Tab به ردیف دکمهها بروید، اختصارات برای دکمهها اعمال میشوند.
- --yes-label string
- برچسب مورد استفاده برای دکمههای “Yes” را تغییر میدهد.
گزینههای جعبه (Box Options)
همه جعبههای گفتگو حداقل دارای سه پارامتر هستند:
سایر پارامترها به نوع جعبه بستگی دارند.
- --buildlist text height width list-height [ tag item status ] ...
- یک گفتگوی buildlist دو فهرست را کنار هم نمایش میدهد. فهرست سمت چپ آیتمهای انتخابنشده را نشان میدهد. فهرست سمت راست آیتمهای انتخابشده را نمایش میدهد. با انتخاب یا لغو انتخاب آیتمها، آنها بین دو فهرست جابهجا میشوند.
- از کلید اینتر یا دکمه “OK” برای پذیرش مقدار فعلی در پنجره انتخابشدهها و خروج استفاده کنید. نتایج با استفاده از ترتیبی که در پنجره انتخابشدهها نمایش داده شده است نوشته میشوند.
- وضعیت اولیه فعال/غیرفعال هر ورودی توسط status مشخص میشود.
- این گفتگو مانند یک menu رفتار میکند و از --visit-items برای کنترل اینکه آیا نشانگر مجاز به بازدید مستقیم از فهرستها است یا خیر، استفاده میکند.
- اگر --visit-items داده نشود، پیمایش کلید Tab از دو حالت (OK/Cancel) استفاده میکند.
- اگر --visit-items داده شود، پیمایش کلید Tab از چهار حالت (Left/Right/OK/Cancel) استفاده میکند.
- صرفنظر از اینکه --visit-items مشخص شده باشد یا خیر، امکان انتقال نشانگر برجستهسازی بین دو فهرست با استفاده از کلیدهای پیشفرض “^” (ستون چپ) و “$” (ستون راست) وجود دارد.
- در هنگام خروج، فهرستی از رشتههای tag آن دسته از ورودیهایی که فعال هستند در خروجی dialog چاپ خواهد شد.
- اگر گزینه "--separate-output" داده نشود، رشتهها در صورت نیاز درون نقلقول قرار میگیرند تا تفکیک آنها برای اسکریپتها ساده باشد. به طور پیشفرض، در صورت نیاز از نقلقول دوتایی استفاده میشود. گزینه “--single-quoted” را ببینید که رفتار نقلقول را تغییر میدهد.
- --calendar text height width day month year
- یک جعبه calendar ماه، روز و سال را در پنجرههایی با قابلیت تنظیم جداگانه نمایش میدهد. اگر مقادیر day، month یا year ناموجود یا منفی باشند، مقادیر متناظر با تاریخ فعلی استفاده میشوند. میتوانید هر یک از آنها را با استفاده از کلیدهای جهتنما (چپ، بالا، راست، پایین) افزایش یا کاهش دهید. از کلیدهای سبک vi شامل h، j، k و l برای جابهجایی در میان روزهای یک ماه استفاده کنید. از کلید Tab یا Backtab برای جابهجایی بین پنجرهها استفاده کنید. اگر سال به عنوان صفر داده شود، تاریخ فعلی به عنوان مقدار اولیه استفاده میشود.
- در هنگام خروج، تاریخ به صورت روز/ماه/سال چاپ میشود. این قالب را میتوان با استفاده از گزینه --date-format تغییر داد.
- --checklist text height width list-height [ tag item status ] ...
- یک جعبه checklist مشابه جعبه menu است؛ ورودیهای متعددی در قالب یک منو ارائه میشوند. تفاوت دیگر این است که میتوانید با تنظیم status به on مشخص کنید کدام ورودی در حال حاضر انتخاب شده است. به جای انتخاب تنها یک ورودی از میان ورودیها، هر ورودی میتواند توسط کاربر فعال یا غیرفعال شود. وضعیت روشن/خاموش اولیه هر ورودی توسط status تعیین میشود.
- در هنگام خروج، فهرستی از رشتههای tag آن ورودیهایی که فعال هستند در خروجی dialog چاپ خواهد شد.
- اگر گزینه “--separate-output” داده نشود، رشتهها در صورت نیاز درون نقلقول قرار میگیرند تا جداسازی آنها برای اسکریپتها آسان باشد. به طور پیشفرض، در صورت نیاز از نقلقول دوتایی استفاده میشود. گزینه “--single-quoted” را ببینید که رفتار نقلقول را تغییر میدهد.
- --dselect filepath height width
- گفتگوی انتخاب دایرکتوری، یک پنجره ورود متن نمایش میدهد که در آن میتوانید نام دایرکتوری را تایپ کنید، و در بالای آن پنجرهای با نامهای دایرکتوریها نمایش داده میشود.
- در اینجا filepath میتواند مسیر فایلی باشد که در این صورت پنجره دایرکتوری محتویات مسیر را نمایش میدهد و پنجره ورود متن شامل دایرکتوری از پیشانتخابشده خواهد بود.
- از کلید Tab یا کلیدهای جهتنما برای جابهجایی بین پنجرهها استفاده کنید. درون پنجره دایرکتوری، از کلیدهای جهتنمای بالا/پایین برای پیمایش انتخاب فعلی استفاده کنید. از کلید فاصله برای کپی کردن انتخاب فعلی در پنجره ورود متن استفاده کنید.
- تایپ هر کاراکتر قابل چاپ، تمرکز را به پنجره ورود متن منتقل میکند، آن کاراکتر را وارد کرده و پنجره دایرکتوری را نیز به نزدیکترین مورد منطبق پیمایش میکند.
- از کلید اینتر یا دکمه “OK” برای پذیرش مقدار فعلی در پنجره ورود متن و خروج استفاده کنید.
- در هنگام خروج، محتوای پنجره ورود متن در خروجی dialog نوشته میشود.
- --editbox filepath height width
- گفتگوی edit-box نسخهای از فایل را نمایش میدهد. میتوانید آن را با استفاده از کلیدهای backspace، delete و کلیدهای جهتنما ویرایش کرده تا خطاهای تایپی را اصلاح کنید. این جعبه همچنین کلیدهای pageup/pagedown را تشخیص میدهد. برخلاف --inputbox، برای بستن گفتگو باید با کلید Tab به دکمههای “OK” یا “Cancel” بروید. فشردن کلید “Enter” درون جعبه، خط متناظر را میشکند.
- در هنگام خروج، محتوای پنجره ویرایش در خروجی dialog نوشته میشود.
- --form text height width formheight [ label y x item y x flen ilen ] ...
- گفتگوی form فرمی متشکل از برچسبها و فیلدها را نمایش میدهد که بر اساس مختصات ارائهشده در اسکریپت روی یک پنجره قابل پیمایش قرار میگیرند. طول فیلد flen و طول ورودی ilen مشخص میکنند که فیلد تا چه اندازه میتواند طولانی باشد. مورد اول طولی را که برای یک فیلد انتخابشده نمایش داده میشود تعریف میکند، در حالی که مورد دوم طول مجاز دادههای واردشده در فیلد را تعیین مینماید.
- اگر flen صفر باشد، فیلد متناظر قابل تغییر نیست و محتوای فیلد طول نمایشدادهشده را تعیین میکند.
- اگر flen منفی باشد، فیلد متناظر قابل تغییر نیست و مقدار منفیشده flen به عنوان طول نمایشدادهشده استفاده میشود.
- اگر ilen صفر باشد، برابر با flen تنظیم میشود.
- از کلیدهای جهتنمای بالا/پایین (یا control/N، control/P) برای جابهجایی بین فیلدها استفاده کنید. از کلید Tab برای جابهجایی بین پنجرهها استفاده کنید.
- در هنگام خروج، محتوای فیلدهای فرم در خروجی dialog نوشته میشود و هر فیلد با یک خط جدید جدا میگردد. متنی که برای پر کردن فیلدهای غیرقابل ویرایش (flen صفر یا منفی است) استفاده شده، در خروجی نوشته نمیشود.
- --fselect filepath height width
- گفتگوی fselect (انتخاب فایل) یک پنجره ورود متن نمایش میدهد که در آن میتوانید نام فایل (یا دایرکتوری) را تایپ کنید، و در بالای آن دو پنجره با نامهای دایرکتوریها و نامهای فایلها قرار دارد.
- در اینجا filepath میتواند یک مسیر فایل باشد که در این حالت پنجرههای فایل و دایرکتوری محتویات مسیر را نمایش میدهند و پنجره ورود متن شامل نام فایل از پیشانتخابشده خواهد بود.
- از کلید Tab یا کلیدهای جهتنما برای جابهجایی بین پنجرهها استفاده کنید. درون پنجرههای دایرکتوری یا نام فایل، از کلیدهای جهتنمای بالا/پایین برای پیمایش انتخاب فعلی استفاده کنید. از کلید فاصله برای کپی کردن انتخاب فعلی در پنجره ورود متن استفاده کنید.
- تایپ هر کاراکتر قابل چاپ، تمرکز را به پنجره ورود متن منتقل میکند، آن کاراکتر را وارد کرده و پنجرههای دایرکتوری و نام فایل را به نزدیکترین مورد منطبق پیمایش میکند.
- تایپ کاراکتر فاصله، dialog را وادار به تکمیل نام فعلی میکند (تا نقطهای که ممکن است با بیش از یک ورودی مطابقت داشته باشد).
- از کلید اینتر یا دکمه “OK” برای پذیرش مقدار فعلی در پنجره ورود متن و خروج استفاده کنید.
- در هنگام خروج، محتوای پنجره ورود متن در خروجی dialog نوشته میشود.
- --gauge text height width [percent]
- یک جعبه gauge یک درجه سنجش را در امتداد پایین جعبه نمایش میدهد. این درجه درصد را نشان میدهد. درصدهای جدید از ورودی استاندارد، هر عدد صحیح در یک خط خوانده میشوند. درجه با دریافت هر درصد جدید بهروزرسانی میشود. اگر ورودی استاندارد رشته “XXX” را بخواند، اولین خط پس از آن به عنوان درصد عدد صحیح در نظر گرفته میشود و خطوط بعدی تا رسیدن به “XXX” بعدی برای اعلان جدید استفاده میشوند. هنگامی که ورودی استاندارد به پایان فایل (EOF) برسد، gauge خارج میشود.
- مقدار percent نشاندهنده درصد اولیهای است که روی درجه نشان داده میشود. در صورت عدم تعیین، صفر است.
- در هنگام خروج، هیچ متنی در خروجی dialog نوشته نمیشود. این ویجت ورودی نمیپذیرد، بنابراین وضعیت خروج همیشه OK است.
- --infobox text height width
- یک جعبه info اساساً یک جعبه message است. با این حال، در این حالت، dialog بلافاصله پس از نمایش پیام به کاربر خارج میشود. هنگامی که dialog خارج میشود، صفحه پاک نمیشود تا پیام روی صفحه باقی بماند تا زمانی که اسکریپت شل فراخوان بعداً آن را پاک کند. این قابلیت زمانی مفید است که میخواهید به کاربر اطلاع دهید عملیاتی در حال انجام است که ممکن است برای تکمیل به زمان نیاز داشته باشد.
- در هنگام خروج، هیچ متنی در خروجی dialog نوشته نمیشود. وضعیت خروج OK بازگردانده میشود.
- --inputbox text height width [init]
- یک جعبه input زمانی مفید است که میخواهید سؤالاتی بپرسید که نیازمند وارد کردن یک رشته متنی به عنوان پاسخ توسط کاربر است. اگر init ارائه شود، برای اولیهسازی رشته ورودی استفاده میشود. هنگام وارد کردن رشته، کلیدهای backspace، delete و جهتنما میتوانند برای اصلاح خطاهای تایپی استفاده شوند. اگر رشته ورودی طولانیتر از گنجایش جعبه گفتگو باشد، فیلد ورودی پیمایش خواهد شد.
- در هنگام خروج، رشته ورودی در خروجی dialog چاپ خواهد شد.
- یک جعبه inputmenu بسیار شبیه به یک جعبه menu معمولی است. تنها چند تفاوت بین آنها وجود دارد:
- 1.
- ورودیها به طور خودکار وسطچین نمیشوند بلکه چپچین هستند.
- 2.
- یک دکمه اضافی (به نام Rename) در نظر گرفته شده است تا هنگام فشرده شدن، نام آیتم فعلی را تغییر دهد.
- 3.
- تغییر نام ورودی فعلی با فشردن دکمه Rename امکانپذیر است. سپس dialog عبارت زیر را در خروجی dialog مینویسد:
- RENAMED <tag> <item>
- همانطور که از نامش پیداست، جعبه menu یک جعبه گفتگو است که میتواند برای ارائه فهرستی از گزینهها در قالب یک منو به کاربر برای انتخاب استفاده شود. گزینهها به ترتیبی که داده شدهاند نمایش داده میشوند. هر ورودی منو شامل یک رشته tag و یک رشته item است. رشته tag نامی به ورودی میدهد تا آن را از سایر ورودیهای منو متمایز کند. رشته item توضیح کوتاهی از گزینهای است که ورودی نشان میدهد. کاربر میتواند با فشردن کلیدهای جهتنما، حرف اول tag به عنوان کلید میانبر، یا کلیدهای عددی 1 تا 9 بین ورودیهای منو جابهجا شود. در هر زمان menu-height ورودی در منو نمایش داده میشود، اما اگر تعداد ورودیها بیشتر از آن باشد، منو پیمایش خواهد شد.
- در هنگام خروج، tag ورودی منوی انتخابشده در خروجی dialog چاپ خواهد شد. اگر گزینه “--help-button” داده شده باشد، در صورت انتخاب دکمه راهنما توسط کاربر، متن راهنمای متناظر چاپ خواهد شد.
- --mixedform text height width formheight [ label y x item y x flen ilen itype ] ...
- گفتگوی mixedform فرمی متشکل از برچسبها و فیلدها را نمایش میدهد، بسیار شبیه به گفتگوی --form. تفاوت آن در افزودن پارامتر نوع فیلد به توضیحات هر فیلد است. هر بیت در نوع نشاندهنده یک ویژگی از فیلد است:
- 1
- مخفی، مثلاً یک فیلد گذرواژه.
- 2
- فقطخواندنی، مثلاً یک برچسب.
- --mixedgauge text height width percent [ tag1 item1 ] ...
- یک جعبه mixedgauge یک درجه را در امتداد پایین جعبه نمایش میدهد. درجه درصد را نشان میدهد.
- همچنین فهرستی از مقادیر tag و item را در بالای جعبه نمایش میدهد. برای مقادیر برچسب، dialog(3) را ببینید.
- رشته text به عنوان عنوان بین فهرست و درجه نمایش داده میشود. مقدار percent نشاندهنده درصد اولیهای است که در درجه نشان داده میشود.
- برخلاف --gauge، تمهیدی برای خواندن دادهها از ورودی استاندارد در نظر گرفته نشده است.
- در هنگام خروج، هیچ متنی در خروجی dialog نوشته نمیشود. این ویجت ورودی نمیپذیرد، بنابراین وضعیت خروج همیشه OK است.
- --msgbox text height width
- یک جعبه message بسیار شبیه به جعبه yes/no است. تنها تفاوت بین جعبه message و جعبه yes/no این است که جعبه message تنها یک دکمه OK دارد. میتوانید از این جعبه گفتگو برای نمایش هر پیامی که دوست دارید استفاده کنید. پس از خواندن پیام، کاربر میتواند کلید ENTER را فشار دهد تا dialog خارج شده و اسکریپت شل فراخوان بتواند به کار خود ادامه دهد.
- اگر پیام برای فضا بیش از حد بزرگ باشد، dialog ممکن است به شما امکان دهد آن را پیمایش کنید، به شرطی که پیادهسازی زیربنایی curses به اندازه کافی توانمند باشد. در این حالت، درصدی در پایه ویجت نمایش داده میشود.
- در هنگام خروج، متنی در خروجی dialog نوشته نمیشود. تنها یک دکمه “OK” برای ورودی ارائه شده است، اما ممکن است وضعیت خروج ESC بازگردانده شود.
- --pause text height width seconds
- یک جعبه pause یک درجه را در امتداد پایین جعبه نمایش میدهد. این درجه نشان میدهد چند ثانیه تا پایان مکث باقی مانده است. مکث با رسیدن به مهلت زمانی یا فشردن دکمه OK توسط کاربر (وضعیت OK) یا فشردن دکمه CANCEL یا کلید Esc پایان مییابد.
- --passwordbox text height width [init]
- یک جعبه password شبیه به یک inputbox است، با این تفاوت که متنی که کاربر وارد میکند نمایش داده نمیشود. این قابلیت هنگام درخواست گذرواژه یا سایر اطلاعات حساس مفید است. توجه داشته باشید که اگر چیزی در “init” ارسال شود، در جدول فرایندهای سیستم برای افراد کنجکاو قابل مشاهده خواهد بود. همچنین ارائه یک گذرواژه پیشفرض که کاربر نمیتواند آن را ببیند بسیار گیجکننده است. به این دلایل، استفاده از “init” به شدت منع میشود. اگر به امنیت گذرواژه خود اهمیتی نمیدهید، “--insecure” را ببینید.
- در هنگام خروج، رشته ورودی در خروجی dialog چاپ خواهد شد.
- --passwordform text height width formheight [ label y x item y x flen ilen ] ...
- این گزینه با --form یکسان است به جز اینکه با تمام فیلدهای متنی به عنوان ویجتهای password رفتار میشود نه ویجتهای inputbox.
- --prgbox text command height width
- --prgbox command height width
- یک prgbox بسیار شبیه به programbox است.
- این جعبه گفتگو برای نمایش خروجی دستوری استفاده میشود که به عنوان آرگومان به prgbox داده شده است.
- پس از اتمام دستور، کاربر میتواند کلید ENTER را فشار دهد تا dialog خارج شده و اسکریپت شل فراخوان به کار خود ادامه دهد.
- اگر چهار پارامتر داده شود، متن زیر عنوان را به صورت جداشده از محتوای فایل در حال پیمایش نمایش میدهد. اگر تنها سه پارامتر داده شود، این متن حذف میشود.
- --programbox text height width
- --programbox height width
- یک programbox بسیار شبیه به progressbox است. تنها تفاوت بین جعبه program و جعبه progress این است که جعبه program یک دکمه OK را نمایش میدهد (اما تنها پس از اتمام دستور).
- این جعبه گفتگو برای نمایش خروجی لولهکشیشده یک دستور استفاده میشود. پس از اتمام دستور، کاربر میتواند کلید ENTER را فشار دهد تا dialog خارج شده و اسکریپت شل فراخوان بتواند به کار خود ادامه دهد.
- اگر سه پارامتر داده شود، متن زیر عنوان را به صورت تفکیکشده از محتوای فایل در حال پیمایش نمایش میدهد. اگر تنها دو پارامتر داده شود، این متن حذف میشود.
- --progressbox text height width
- --progressbox height width
- یک progressbox شبیه به یک tailbox است، به استثنای اینکه:
- الف) به جای نمایش محتوای یک فایل، خروجی لولهکشیشده یک دستور را نمایش میدهد و
- ب) زمانی که به انتهای فایل برسد خارج خواهد شد (دکمه “OK” وجود ندارد).
- اگر سه پارامتر داده شود، متن زیر عنوان را به صورت تفکیکشده از محتوای فایل در حال پیمایش نمایش میدهد. اگر تنها دو پارامتر داده شود، این متن حذف میشود.
- --radiolist text height width list-height [ tag item status ] ...
- یک جعبه radiolist شبیه به یک جعبه menu است. تنها تفاوت این است که میتوانید با تنظیم status به on مشخص کنید کدام ورودی در حال حاضر انتخاب شده است.
- در هنگام خروج، برچسب آیتم انتخابشده در خروجی dialog نوشته میشود.
- --rangebox text height width min-value max-value default-value
- به کاربر اجازه میدهد تا از یک محدوده از مقادیر، مثلاً با استفاده از یک اسلایدر، مقداری را انتخاب کند. گفتگو مقدار فعلی را به صورت یک نوار (مانند گفتگوی gauge) نشان میدهد. کلیدهای Tab یا جهتنما نشانگر را بین دکمهها و مقدار جابهجا میکنند. هنگامی که نشانگر روی مقدار قرار دارد، میتوانید آن را با روشهای زیر ویرایش کنید:
- حرکت نشانگر به چپ/راست برای انتخاب یک رقم جهت تغییر
- نویسههای +/- برای افزایش/کاهش رقم به اندازه یک واحد
- 0 تا 9 برای تنظیم رقم روی مقدار دادهشده
- برخی کلیدها نیز در تمام موقعیتهای نشانگر شناسایی میشوند:
- home/end
- مقدار را روی حداکثر یا حداقل آن تنظیم میکنند
- pageup/pagedown
- مقدار را به گونهای افزایش میدهند که اسلایدر یک ستون حرکت کند
- --tailbox file height width
- متن یک فایل را در یک جعبه گفتگو نمایش میدهد، همانند دستور “tail -f”. با استفاده از کلیدهای سبک vi شامل 'h' و 'l' یا کلیدهای جهتنما، به چپ/راست پیمایش کنید. کلید '0' پیمایش را بازنشانی میکند.
- در هنگام خروج، هیچ متنی در خروجی dialog نوشته نمیشود. تنها یک دکمه “OK” برای ورودی ارائه شده است، اما وضعیت خروج ESC نیز ممکن است بازگردانده شود.
- --tailboxbg file height width
- متن یک فایل را در یک جعبه گفتگو به عنوان یک وظیفه پسزمینه نمایش میدهد، مانند دستور “tail -f &”. با استفاده از کلیدهای سبک vi شامل 'h' و 'l' یا کلیدهای جهتنما به چپ/راست پیمایش کنید. کلید '0' پیمایش را بازنشانی میکند.
- اگر سایر ویجتها (--and-widget) همزمان روی صفحه باشند، Dialog با وظیفه پسزمینه به طور ویژه رفتار میکند. تا زمانی که آن ویجتها بسته شوند (مثلاً با یک “OK”)، dialog تمام ویجتهای tailboxbg را در همان فرایند اجرا کرده و برای بهروزرسانیها نظرسنجی میکند. میتوانید از کلید Tab برای پیمایش بین ویجتهای روی صفحه استفاده کنید و آنها را به صورت جداگانه، مثلاً با فشردن ENTER ببندید. پس از بسته شدن ویجتهای غیر tailboxbg، برنامه dialog یک کپی از خود را به پسزمینه فورک میکند و در صورت تعیین گزینه “--no-kill” شناسه فرایند خود را چاپ میکند.
- در هنگام خروج، هیچ متنی در خروجی dialog نوشته نمیشود. تنها یک دکمه “EXIT” برای ورودی ارائه شده است، اما وضعیت خروج ESC ممکن است بازگردانده شود.
- یادداشت: نسخههای قدیمیتر dialog بلافاصله فورک میشدند و تلاش میکردند صفحه را به طور جداگانه بهروزرسانی کنند. این کار علاوه بر اینکه برای کارایی نامناسب بود، غیرقابل اجرا نیز بود. برخی از اسکریپتهای قدیمیتر ممکن است با طرح نظرسنجی به درستی کار نکنند.
- --textbox file height width
- یک جعبه text به شما امکان میدهد محتوای یک فایل متنی را در یک جعبه گفتگو نمایش دهید. این جعبه مانند یک نمایشدهنده ساده فایلهای متنی است. کاربر میتواند با استفاده از کلیدهای جهتنما، page-up، page-down و HOME/END موجود در اکثر صفحهکلیدها در فایل جابهجا شود. اگر خطوط برای نمایش در جعبه خیلی طولانی باشند، میتوان از کلیدهای LEFT/RIGHT برای پیمایش افقی ناحیه متن استفاده کرد. همچنین میتوانید از کلیدهای سبک vi شامل h، j، k و l به جای کلیدهای جهتنما، و B یا N به جای کلیدهای page-up و page-down استفاده کنید. با استفاده از 'k' و 'j' سبک vi یا کلیدهای جهتنما، به بالا/پایین پیمایش کنید. با استفاده از 'h' و 'l' سبک vi یا کلیدهای جهتنما، به چپ/راست پیمایش کنید. کلید '0' پیمایش چپ/راست را بازنشانی میکند. برای راحتی بیشتر، توابع جستجوی رو به جلو و رو به عقب به سبک vi نیز ارائه شده است.
- در هنگام خروج، هیچ متنی در خروجی dialog نوشته نمیشود. تنها یک دکمه “EXIT” برای ورودی ارائه شده است، اما وضعیت خروج ESC ممکن است بازگردانده شود.
- --timebox text height [width hour minute second]
- گفتگویی نمایش داده میشود که به شما امکان میدهد ساعت، دقیقه و ثانیه را انتخاب کنید. اگر مقادیر ساعت، دقیقه یا ثانیه ناموجود یا منفی باشند، مقادیر متناظر با زمان فعلی استفاده میشوند. میتوانید هر یک از آنها را با استفاده از کلیدهای جهتنمای چپ، بالا، راست و پایین افزایش یا کاهش دهید. از کلید Tab یا Backtab برای جابهجایی بین پنجرهها استفاده کنید.
- در هنگام خروج، نتیجه به صورت ساعت:دقیقه:ثانیه چاپ میشود. این قالب را میتوان با استفاده از گزینه --time-format تغییر داد.
- --treeview text height width list-height [ tag item status depth ] ...
- دادهها را به صورت ساختار درختی نمایش میدهد. هر گروه از دادهها شامل یک برچسب، متن برای نمایش آیتم، وضعیت آن (“on” یا “off”) و عمق آیتم در درخت است.
- تنها یک آیتم میتواند انتخاب شود (مانند radiolist). برچسب نمایش داده نمیشود.
- در هنگام خروج، برچسب آیتم انتخابشده در خروجی dialog نوشته میشود.
- --yesno text height width
- یک جعبه گفتگوی yes/no با اندازه height سطر در width ستون نمایش داده خواهد شد. رشته مشخصشده توسط text درون جعبه گفتگو نمایش داده میشود. اگر این رشته برای جا شدن در یک سطر خیلی طولانی باشد، به طور خودکار در مکانهای مناسب به چندین سطر تقسیم میشود. رشته text همچنین میتواند شامل زیررشته "\n" یا نویسههای خط جدید `\n' باشد تا شکست خط را به طور صریح کنترل کند. این جعبه گفتگو برای پرسیدن سؤالاتی که کاربر باید به آنها پاسخ بله یا خیر بدهد مفید است. جعبه گفتگو دارای دکمه Yes و دکمه No است که کاربر میتواند با فشردن کلید TAB بین آنها جابهجا شود.
- در هنگام خروج، هیچ متنی در خروجی dialog نوشته نمیشود. علاوه بر کدهای خروج “Yes” و “No” (به وضعیت خروج مراجعه کنید)، وضعیت خروج ESC نیز ممکن است بازگردانده شود.
- کدهای مورد استفاده برای “Yes” و “No” با کدهای مورد استفاده برای “OK” و “Cancel” مطابقت دارند و در داخل برنامه تفاوتی بین آنها وجود ندارد.
گزینههای منسوخشده (Obsolete Options)
- --beep
- این گزینه برای اعلام به cdialog اصلی استفاده میشد که باید هنگام بازترسیم صفحه توسط فرایندهای جداگانه ویجت tailboxbg، یک بوق صوتی ایجاد کند.
- --beep-after
- پس از اینکه کاربر با فشردن یکی از دکمهها یک ویجت را تکمیل کرد، بوق صوتی ایجاد میکند.
گزینههای فاصلهگذاری (Whitespace Options)
این گزینهها میتوانند برای تبدیل فاصلههای خالی (فاصله، تب، خط جدید) هنگامی که dialog اسکریپت را میخواند استفاده شوند:
این گزینهها مستقل از یکدیگر نیستند:
- Dialog بررسی میکند که آیا اسکریپت حاوی حداقل یک “\n” است یا خیر و (مگر اینکه --no-nl-expand تنظیم شده باشد) گزینههای --no-collapse و --trim را نادیده خواهد گرفت.
- پس از بررسی “\n” و گزینه --no-nl-expand، برنامه dialog گزینه --trim را مدیریت میکند.
- اگر گزینه --trim اعمال شود، dialog گزینه --no-collapse را نادیده میگیرد. این گزینه توالی تبها، فاصلهها (و خطوط جدید، مگر اینکه -cr-wrap تنظیم شده باشد) را به یک فاصله تکی تبدیل میکند.
- •
- اگر هیچیک از موارد “\n” یا --trim اعمال نشوند، dialog گزینه --no-collapse را بررسی میکند تا تصمیم بگیرد آیا توالی تبها و فاصلهها را به یک فاصله تکی کاهش دهد یا خیر.
- در این حالت، dialog گزینه --cr-wrap را نادیده میگیرد و خطوط جدید را تغییر نمیدهد.
با در نظر گرفتن این وابستگیها، در اینجا جدولی آورده شده است که رفتار حاصل از ترکیبهای مختلف گزینهها را خلاصه میکند. این جدول فرض میکند که اسکریپت حاوی حداقل یک “\n” است در زمانی که گزینه --no-nl-expand تنظیم نشده باشد.
| cr- | no- | no- | trim | نتیجه |
| wrap | collapse | nl-expand | ||
| no | no | no | no | تبدیل تب به فاصله. تبدیل خط جدید به فاصله. تبدیل “\n” به خط جدید. |
| no | no | no | yes | تبدیل تب به فاصله. تبدیل خط جدید به فاصله. تبدیل “\n” به خط جدید. |
| no | no | yes | no | تبدیل تب به فاصله. عدم تبدیل خط جدید به فاصله. تبدیل فاصلههای متوالی به فاصله تکی. نمایش تحتاللفظی “\n”. |
| no | no | yes | yes | تبدیل تب به فاصله. تبدیل فاصلههای متوالی به فاصله تکی. تبدیل خط جدید به فاصله. نمایش تحتاللفظی “\n”. |
| no | yes | no | no | تبدیل خط جدید به فاصله. تبدیل “\n” به خط جدید. |
| no | yes | no | yes | تبدیل خط جدید به فاصله. تبدیل “\n” به خط جدید. |
| no | yes | yes | no | عدم تبدیل خط جدید به فاصله. عدم کاهش فاصلههای متوالی. نمایش تحتاللفظی “\n”. |
| no | yes | yes | yes | تبدیل فاصلههای متوالی به فاصله تکی. تبدیل خط جدید به فاصله. نمایش تحتاللفظی “\n”. |
| yes | no | no | no | تبدیل تب به فاصله. شکستن خط در خط جدید. تبدیل “\n” به خط جدید. |
| yes | no | no | yes | تبدیل تب به فاصله. شکستن خط در خط جدید. تبدیل “\n” به خط جدید. |
| yes | no | yes | no | تبدیل تب به فاصله. عدم تبدیل خط جدید به فاصله. تبدیل فاصلههای متوالی به فاصله تکی. نمایش تحتاللفظی “\n”. |
| yes | no | yes | yes | تبدیل تب به فاصله. تبدیل فاصلههای متوالی به فاصله تکی. شکستن خط در خط جدید. نمایش تحتاللفظی “\n”. |
| yes | yes | no | no | شکستن خط در خط جدید. تبدیل “\n” به خط جدید. |
| yes | yes | no | yes | شکستن خط در خط جدید. تبدیل “\n” به خط جدید. |
| yes | yes | yes | no | عدم تبدیل خط جدید به فاصله. عدم کاهش فاصلههای متوالی. نمایش تحتاللفظی “\n”. |
| yes | yes | yes | yes | تبدیل فاصلههای متوالی به فاصله تکی. شکستن خط در خط جدید. نمایش تحتاللفظی “\n”. |
پیکربندی زمان اجرا (RUN-TIME CONFIGURATION)
- 1.
- با تایپ دستور زیر، یک فایل پیکربندی نمونه ایجاد کنید:
dialog --create-rc file
- 2.
- در هنگام شروع، dialog تنظیمات مورد استفاده را به شرح زیر تعیین میکند:
- الف)
- اگر متغیر محیطی DIALOGRC تنظیم شده باشد، مقدار آن نام فایل پیکربندی را تعیین میکند.
- ب)
- اگر فایل مشخصشده در (الف) یافت نشود، از فایل $HOME/.dialogrc به عنوان فایل پیکربندی استفاده میشود.
- ج)
- اگر فایل مشخصشده در (ب) یافت نشود، برنامه تلاش میکند از فایل GLOBALRC تعیینشده در زمان کامپایل، یعنی /etc/dialogrc استفاده کند.
- د)
- اگر فایل مشخصشده در (ج) یافت نشود، از مقادیر پیشفرض کامپایلشده در برنامه استفاده میشود.
- 3.
- فایل پیکربندی نمونه را ویرایش کرده و آن را در مکانی کپی کنید که dialog بتواند طبق مرحله ۲ بالا آن را پیدا کند.
کلیدهای میانبر (KEY BINDINGS)
میتوانید با افزودن به فایل پیکربندی، کلیدهای میانبر در dialog را لغو کرده یا کلیدهای جدیدی به آن بیفزایید. دستور bindkey در Dialog کلیدهای تکی را به کدهای داخلی خود نگاشت میکند.
bindkey widget curses_key dialog_key
نام widget میتواند “*” (همه ویجتها)، یا ویجتهای خاصی مانند textbox باشد. اتصالات مربوط به ویجتهای خاص، اتصالات “*” را لغو میکنند. اتصالات تعریفشده توسط کاربر، اتصالات پیشفرض داخلی را لغو میکنند.
کلید curses_key میتواند به شکلهای مختلفی بیان شود:
- میتواند هر یک از نامهای برگرفته از curses.h باشد، به عنوان مثال “HELP” از “KEY_HELP”.
- همچنین Dialog کاراکترهای کنترلی ANSI مانند “^A” و “^?” و همچنین کنترلهای C1 مانند “~A” و “~?” را میشناسد.
- در نهایت، dialog همانند زبان C اجازه استفاده از دنبالههای گریز بکاسلش را میدهد. این دنبالهها میتوانند مقادیر کاراکتری اکتال مانند “\033” (کاراکتر escape در اسکی) یا کاراکترهای فهرستشده در این جدول باشند:
| نویسه گریز | نویسه واقعی |
| \b | backspace |
| \f | form feed |
| \n | new line (line feed) |
| \r | carriage return |
| \s | space |
| \t | tab |
| \^ | “^” (caret) |
| \? | “?” (question mark) |
| \\ | “\” (backslash) |
نامهای کدهای کلید داخلی Dialog متناظر با نوع DLG_KEYS_ENUM در dlg_keys.h هستند، به عنوان مثال “HELP” از “DLGK_HELP”.
نام ویجتها (Widget Names)
برخی از ویجتها (مانند formbox) دارای ناحیهای هستند که میتوان فیلدها را در آن ویرایش کرد. این نواحی در یک زیرپنجره از ویجت مدیریت میشوند، و ممکن است کلیدهای میانبر جداگانهای نسبت به ویجت اصلی داشته باشند زیرا زیرپنجرهها با استفاده از نام متفاوتی ثبت شدهاند.
| ویجت | نام پنجره | نام زیرپنجره |
| calendar | calendar | |
| checklist | checklist | |
| editbox | editbox | editbox2 |
| form | formbox | formfield |
| fselect | fselect | fselect2 |
| inputbox | inputbox | inputbox2 |
| menu | menubox | menu |
| msgbox | msgbox | |
| pause | pause | |
| progressbox | progressbox | |
| radiolist | radiolist | |
| tailbox | tailbox | |
| textbox | textbox | searchbox |
| timebox | timebox | |
| yesno | yesno |
برخی از ویجتها در واقع همان ویجتهای دیگر هستند که با استفاده از تنظیمات داخلی رفتار آنها تغییر کرده است. این ویجتها از همان نام ویجتِ ویجتِ واقعی استفاده میکنند:
| ویجت | ویجت واقعی |
| dselect | fselect |
| infobox | msgbox |
| inputmenu | menu |
| mixedform | form |
| passwordbox | inputbox |
| passwordform | form |
| prgbox | progressbox |
| programbox | progressbox |
| tailboxbg | tailbox |
کلیدهای پیشفرض داخلی (Built-in Bindings)
این صفحه راهنما کلیدهای میانبر مربوط به هر ویجت را فهرست نمیکند، زیرا این اطلاعات دقیق را میتوان با اجرای dialog به دست آورد. اگر گزینه --trace را تنظیم کرده باشید، dialog اطلاعات کلیدهای میانبر هر ویجت را به محض ثبت شدن در آن مینویسد.
چند کلید میانبر به صورت پیشفرض و مستقل از ویجتهای خاص تعبیه شدهاند:
| کلید | هدف |
| Control-I | پیمایش کلید Tab به جلو، مثلاً با --tailboxbg. |
| Control-L | بازترسیم صفحه نمایش. |
| Control-T | نوشتن یک تصویر از صفحه در فایل --trace. |
| Control-V | غیرفعال کردن کلیدهای ویژه برای بایت ورودی بعدی. |
| DLGK_FIELD_NEXT | پیمایش کلید Tab به جلو، همانند Control-I. |
| DLGK_FIELD_PREV | پیمایش کلید Tab به عقب، همانند back-tab. |
| DLGK_HELPFILE | نمایش فایل راهنمای مشخصشده با --hfile. |
| KEY_BTAB | پیمایش کلید Tab به عقب، مثلاً با --tailboxbg. |
مثال (Example)
به طور معمول dialog از کلیدهای متفاوتی برای پیمایش بین دکمهها و بخش ویرایشی یک گفتگو در مقایسه با پیمایش در درون بخش ویرایشی استفاده میکند. بدین معنا که کلید Tab (و Backtab) بین دکمهها (یا بین دکمهها و بخش ویرایش) حرکت میکنند، در حالی که کلیدهای جهتنما بین فیلدهای درون بخش ویرایش جابهجا میشوند. کلیدهای Tab همچنین به عنوان حالت خاصی برای پیمایش بین ویجتها شناخته میشوند، مثلاً هنگام استفاده از چندین ویجت tailboxbg.
برخی از کاربران ممکن است تمایل داشته باشند از همان کلید برای پیمایش در درون بخش ویرایش استفاده کنند که برای پیمایش بین دکمهها استفاده میشود. ویجت form برای پشتیبانی از این نوع بازتعریف کلیدها طراحی شده است، به این صورت که گروه خاصی در dlgk_keys.h برای “form” (چپ/راست/بعدی/قبلی) اضافه شده است. در اینجا نمونهای از اتصال کلیدها آورده شده است که نحوه انجام این کار را نشان میدهد:
bindkey formfield TAB form_NEXT bindkey formbox TAB form_NEXT bindkey formfield BTAB form_prev bindkey formbox BTAB form_prev
این نوع بازتعریف در سایر ویجتها، مثلاً calendar، به دلیل تعداد زیاد فیلدهای احتمالی برای پیمایش، مفید نخواهد بود.
وضعیت خروج (EXIT STATUS)
وضعیت خروج ممکن است توسط متغیرهای محیطی بازنویسی شود. مقادیر پیشفرض و متغیرهای محیطی متناظری که میتوانند آنها را بازنویسی کنند عبارتند از:
- 0
- اگر دکمه YES یا OK فشرده شود (DIALOG_OK).
- 1
- اگر دکمه No یا Cancel فشرده شود (DIALOG_CANCEL).
- 2
- اگر دکمه Help
فشرده شود
(DIALOG_HELP)،
مگر در مواردی که در زیر درباره DIALOG_ITEM_HELP اشاره شده است. - 3
- اگر دکمه Extra فشرده شود (DIALOG_EXTRA).
- 4
- اگر دکمه Help
فشرده شود،
و گزینه --item-help تنظیم شده باشد
و متغیر محیطی DIALOG_ITEM_HELP روی 4 تنظیم شده باشد.
- اگرچه هر یک از کدهای خروج را میتوان با استفاده از متغیرهای محیطی تغییر داد، این حالت خاص در سال 2004 برای سادهسازی سازگاری معرفی شد. Dialog در داخل از DIALOG_ITEM_HELP (4) استفاده میکند، اما مگر اینکه متغیر محیطی نیز تنظیم شده باشد، آن را در هنگام خروج به DIALOG_HELP (2) تغییر میدهد.
- 5
- اگر مهلت زمانی به پایان برسد و متغیر DIALOG_TIMEOUT روی 5 تنظیم شده باشد.
- -1
- اگر خطاهایی در داخل dialog رخ دهد (DIALOG_ERROR) یا dialog به دلیل فشرده شدن کلید ESC (DIALOG_ESC) خارج شود.
محیط (ENVIRONMENT)
- DIALOGOPTS
- این متغیر را برای اعمال هر یک از گزینههای عمومی به هر ویجت تعریف کنید. بیشتر گزینههای عمومی پیش از پردازش هر ویجت بازنشانی میشوند. اگر گزینهها را در این متغیر محیطی تنظیم کنید، پس از بازنشانی روی وضعیت dialog اعمال میشوند. همانند گزینه “--file”، نقلقولهای دوتایی و بکاسلشها تفسیر میشوند.
- گزینه “--file” یک گزینه عمومی در نظر گرفته نمیشود (بنابراین نمیتوانید آن را درون این متغیر محیطی جاسازی کنید).
- DIALOGRC
- اگر میخواهید نام فایل پیکربندی مورد استفاده را مشخص کنید، این متغیر را تعریف نمایید.
- DIALOG_CANCEL
- DIALOG_ERROR
- DIALOG_ESC
- DIALOG_EXTRA
- DIALOG_HELP
- DIALOG_ITEM_HELP
- DIALOG_TIMEOUT
- DIALOG_OK
- هر یک از این متغیرها را برای تغییر کد وضعیت خروج در موارد زیر تعریف کنید:
- لغو (1)،
- خطا (-1)،
- کلید ESC (255)،
- دکمه Extra (3)،
- دکمه Help (2)،
- دکمه Help با --item-help (2)،
- پایان مهلت زمانی (5)، یا
- دکمه OK (0).
- به طور معمول اسکریپتهای شل نمیتوانند بین -1 و 255 تفاوتی قائل شوند.
- DIALOG_TTY
- این متغیر را روی “1” تنظیم کنید تا سازگاری با نسخههای قدیمیتر dialog فراهم شود که فرض میکردند اگر اسکریپت خروجی استاندارد را هدایت کند، گزینه “--stdout” داده شده است.
فایلها (FILES)
- $HOME/.dialogrc
- فایل پیکربندی پیشفرض
قابلیت حمل (PORTABILITY)
Dialog با X/Open curses کار میکند. با این حال، برخی پیادهسازیها دارای کاستیهایی هستند:
- کتابخانه curses در HPUX (و شاید موارد دیگر) ترمینال را برای تابع newterm به درستی باز نمیکند. این موضوع با گزینه --input-fd در dialog تداخل دارد و از شناسایی کلیدهای جهتنما و دنبالههای گریز مشابه جلوگیری میکند.
- کتابخانه curses در NetBSD 5.1 پشتیبانی ناقصی از کاراکترهای عریض دارد. برنامه dialog ساخته میشود، اما همه نمونهها به درستی نمایش داده نمیشوند.
سازگاری (COMPATIBILITY)
ممکن است بخواهید اسکریپتهایی بنویسید که با دیگر نسخههای شبیهسازیشده dialog کار کنند.
Dialog اصلی (Original Dialog)
نخست، باید برنامه “اصلی” dialog را در نظر گرفت (نسخههای 0.3 تا 0.9). این نسخه دارای گزینههایی با املای نادرست (یا ناسازگار) بود. برنامه dialog آن گزینههای منسوخ را به موارد ترجیحی نگاشت میکند. آنها شامل موارد زیر هستند:
| گزینه | نحوه برخورد |
| --beep-after | نادیده گرفته میشود |
| --guage | به --gauge نگاشت میشود |
Xdialog
این یک برنامه مبتنی بر محیط X است، نه یک برنامه ترمینال. با کمی دقت، میتوان اسکریپتهای مفیدی نوشت که هم با Xdialog و هم با dialog کار کنند.
برنامه dialog گزینههای زیر را که توسط Xdialog شناخته میشوند نادیده میگیرد:
| گزینه | نحوه برخورد |
| --allow-close | نادیده گرفته میشود |
| --auto-placement | نادیده گرفته میشود |
| --fixed-font | نادیده گرفته میشود |
| --icon | نادیده گرفته میشود |
| --keep-colors | نادیده گرفته میشود |
| --no-close | نادیده گرفته میشود |
| --no-cr-wrap | نادیده گرفته میشود |
| --screen-center | نادیده گرفته میشود |
| --separator | به --separate-output نگاشت میشود |
| --smooth | نادیده گرفته میشود |
| --under-mouse | نادیده گرفته میشود |
| --wmclass | نادیده گرفته میشود |
صفحه راهنمای Xdialog دارای بخشی است که سازگاری آن با dialog را مورد بحث قرار میدهد. برخی تفاوتها وجود دارند که در صفحه راهنما نشان داده نشدهاند. به عنوان مثال، مستندات html بیان میکنند:
یادداشت: نسخههای قبلی Xdialog از “\n” (خط جدید) به عنوان جداکننده نتایج برای ویجت چکلیست استفاده میکردند؛ این مورد در نسخه Xdialog 1.5.0 به “/” تغییر یافته است تا با cdialog سازگار شود. در اسکریپتهای قدیمی خود که از چکلیست Xdialog استفاده میکنند، باید گزینه --separate-output را قبل از گزینه --checklist اضافه کنید.
برنامه Dialog از جداکننده متفاوتی استفاده نکرده است؛ این تفاوت احتمالاً ناشی از سردرگمی در مورد برخی اسکریپتها بوده است.
Whiptail
سپس whiptail وجود دارد. برای اهداف عملی، این برنامه توسط دبیان نگهداری میشود (توسعهدهندگان اصلی آن کار بسیار کمی روی آن انجام میدهند). مستندات آن (README.whiptail) ادعا میکند:
whiptail(1) یک جایگزین سبکوزن برای dialog(1) است تا جعبههای گفتگو را برای اسکریپتهای شل فراهم کند. این برنامه بر پایه کتابخانه پنجرهبندی newt ساخته شده است نه کتابخانه ncurses، که به آن اجازه میدهد در محیطهای تعبیهشده مانند نصابها، دیسکهای نجات و غیره حجم کمتری داشته باشد. whiptail طوری طراحی شده است که سازگاری مستقیم با dialog داشته باشد، اما ویژگیهای کمتری دارد: برخی از جعبههای گفتگو مانند tailbox، timebox، calendarbox و غیره پیادهسازی نشدهاند.
مقایسه اندازههای واقعی (Debian testing، 2007/1/10): مجموع اندازهها برای whiptail و کتابخانههای newt، popt و slang برابر با 757 کیلوبایت است. عدد متناظر برای dialog (با احتساب ncurses) برابر با 520 کیلوبایت است. پاراگراف اول را نادیده بگیرید.
پاراگراف دوم گمراهکننده است، زیرا whiptail برای گزینههای عمومی dialog مانند جعبه gauge نیز کار نمیکند. سازگاری whiptail با dialog از برنامه اصلی dialog 0.4 در اواسط دهه 1990 نیز کمتر است.
صفحه راهنمای whiptail ویژگیهایی را از dialog وام گرفته است، اما به طرز عجیبی تنها از نسخههای dialog تا 0.4 (1994) به عنوان منبع یاد میکند. به این معنا که صفحه راهنمای آن به ویژگیهایی اشاره میکند که از نسخههای جدیدتر dialog وام گرفته شدهاند، از جمله:
- --gauge (از نسخه 0.5)
- --passwordbox (از تغییرات دبیان در 1999)،
- --default-item (از dialog تاریخ 2000/02/22)،
- --output-fd (از dialog تاریخ 2002/08/14).
دبیان از whiptail برای گونه رسمی dialog استفاده میکند.
برنامه dialog این گزینهها را که توسط whiptail شناخته میشوند نادیده گرفته یا نگاشت میکند:
| گزینه | نحوه برخورد |
| --cancel-button | به --cancel-label نگاشت میشود |
| --fb | نادیده گرفته میشود |
| --fullbutton | نادیده گرفته میشود |
| --no-button | به --no-label نگاشت میشود |
| --nocancel | به --no-cancel نگاشت میشود |
| --noitem | به --no-items نگاشت میشود |
| --notags | به --no-tags نگاشت میشود |
| --ok-button | به --ok-label نگاشت میشود |
| --scrolltext | به --scrollbar نگاشت میشود |
| --topleft | به --begin 0 0 نگاشت میشود |
| --yes-button | به --yes-label نگاشت میشود |
تفاوتهای بصری وجود دارند که توسط گزینههای خط فرمان برطرف نمیشوند:
- dialog فهرستها را در داخل پنجره وسطچین میکند. whiptail معمولاً فهرستها را در حاشیه سمت چپ قرار میدهد.
- whiptail از علامتهای زاویهدار (“<” و “>”) برای مشخص کردن دکمهها استفاده میکند. dialog از براکت استفاده میکند.
- whiptail حدود زیرعنوانها را با خطوط عمودی مشخص میکند. dialog حدود را مشخص نمیکند.
- whiptail تلاش میکند خانههای بالا/پایین نوار پیمایش را با پیکانهای بالا/پایین علامتگذاری کند. هنگامی که نمیتواند این کار را انجام دهد، آن خانهها را با رنگ پسزمینه نوار پیمایش پر میکند و باعث سردرگمی کاربر میشود. dialog از کل فضای نوار پیمایش استفاده میکند و در نتیجه وضوح بهتری به دست میآورد.
اشکالات (BUGS)
شاید وجود داشته باشد.
مثالها (EXAMPLES)
منابع dialog شامل چندین نمونه از نحوه استفاده از گزینههای مختلف جعبه و ظاهر آنها است. کافی است نگاهی به دایرکتوری samples/ در سورس برنامه بیندازید.
نویسندگان (AUTHORS)
Thomas E. Dickey (بهروزرسانیها برای 0.9b و پس از آن)
Kiran Cherupally – ویجتهای mixed form و mixed gauge.
Tobias C. Rittweiler
Valery Reznic – ویجتهای form و progressbox.
Yura Kalinichenko ویجت gauge را به عنوان “pause” تطبیق داد.
این یک بازنویسی (به جز موارد مورد نیاز برای تأمین سازگاری) از نسخه پیشین dialog 0.9a است که نویسندگان آن به شرح زیر فهرست شدهاند:
- Savio Lam – نسخه 0.3، “dialog”
- Stuart Herbert – وصله برای نسخه 0.4
- Marc Ewing – ویجت gauge.
- Pasquale De Marco “Pako” – نسخه 0.9a، “cdialog”
| 2025-12-22 |