'\" '\" Copyright (c) 1991-1994 The Regents of the University of California. '\" Copyright (c) 1994-1996 Sun Microsystems, Inc. '\" '\" برای کسب اطلاعات درباره شرایط استفاده و توزیع مجدد این فایل، '\" و سلب هرگونه ضمانت، فایل "license.terms" را ببینید. '\" .TH wish 1 8.0 Tk "برنامه‌های Tk" .\" تعاریف -*- nroff -*- زیر ماکروهای تکمیلی مورد استفاده در .\" مدخل‌های راهنمای Tcl/Tk هستند. .\" .\" .AP type name in/out ?indent? .\" آغاز بند توصیف‌کننده یک آرگومان برای یک رویه کتابخانه‌ای. .\" type نوع آرگومان است (int و غیره)، in/out یکی از مقادیر "in"، "out"، .\" یا "in/out" برای توصیف این است که آیا رویه آرگومان را می‌خواند یا تغییر می‌دهد، .\" و indent معادل آرگومان دوم .IP است (نباید هرگز نیاز باشد؛ .\" به جای آن از .AS در زیر استفاده کنید) .\" .\" .AS ?type? ?name? .\" حداکثر اندازه آرگومان‌ها را برای تنظیم فاصله‌های تب (tab stops) تعیین می‌کند. .\" type و name نمونه‌هایی از بزرگ‌ترین آرگومان‌های ممکنی هستند که بعداً .\" به .AP ارسال می‌شوند. اگر آرگومان‌ها حذف شوند، فاصله‌های تب پیش‌فرض اعمال می‌شود. .\" .\" .BS .\" آغاز محدوده کادر. از اینجا تا .BE بعدی، همه‌چیز در یک کادر بزرگ محصور خواهد شد. .\" .\" .BE .\" پایان محدوده کادر. .\" .\" .CS .\" آغاز قطعه کد. .\" .\" .CE .\" پایان قطعه کد. .\" .\" .VS ?version? ?br? .\" آغاز نوار عمودی کناری، برای علامت‌گذاری بخش‌های تازه‌تغییریافته صفحات راهنما. .\" آرگومان اول نادیده گرفته شده و برای ثبت نسخه‌ای که .VS در آن افزوده شده به کار می‌رود .\" تا بتوان هنگام رسیدن به سنی معین نوارها را پیدا و حذف کرد. اگر آرگومان دیگری .\" وجود داشته باشد، قبل از شروع نوار کناری یک شکست خط اجباری اعمال می‌شود. .\" .\" .VE .\" پایان نوار عمودی کناری. .\" .\" .DS .\" آغاز یک نمایش تورفته پرنشده (unfilled). .\" .\" .DE .\" پایان نمایش تورفته پرنشده. .\" .\" .SO ?manpage? .\" آغاز فهرست گزینه‌های استاندارد برای یک ویجت Tk. آرگومان manpage مشخص می‌کند .\" که گزینه‌های استاندارد در کجا جستجو شوند؛ در صورت حذف، پیش‌فرض "options" است. .\" گزینه‌ها در خطوط متوالی، در سه ستون جداشده با تب می‌آیند. .\" .\" .SE .\" پایان فهرست گزینه‌های استاندارد برای یک ویجت Tk. .\" .\" .OP cmdName dbName dbClass .\" آغاز توضیحات یک گزینه خاص. cmdName نام گزینه را طبق آنچه در دستور کلاس مشخص شده می‌دهد، .\" dbName نام گزینه در پایگاه‌داده گزینه‌ها و dbClass کلاس گزینه در پایگاه‌داده گزینه‌ها را مشخص می‌کند. .\" .\" .UL arg1 arg2 .\" arg1 را با خط زیرین و سپس arg2 را به صورت عادی چاپ می‌کند. .\" .\" .QW arg1 ?arg2? .\" arg1 را درون گیومه و سپس arg2 را به طور معمول چاپ می‌کند (برای علائم نگارشی پسین). .\" .\" .PQ arg1 ?arg2? .\" یک پرانتز باز، arg1 درون گیومه، سپس arg2 به طور معمول (برای علائم نگارشی پسین) .\" و سپس پرانتز بسته را چاپ می‌کند. .\" .\" # راه‌اندازی trapها و موارد متفرقه دیگر برای صفحات راهنمای Tcl/Tk. .if t .wh -1.3i ^B .nr ^l \n(.l .ad b .\" # آغاز توصیف یک آرگومان .de AP .ie !"\\$4"" .TP \\$4 .el \{\ . ie !"\\$2"" .TP \\n()Cu . el .TP 15 .\} .ta \\n()Au \\n()Bu .ie !"\\$3"" \{\ \&\\$1 \\fI\\$2\\fP (\\$3) .\".b .\} .el \{\ .br .ie !"\\$2"" \{\ \&\\$1 \\fI\\$2\\fP .\} .el \{\ \&\\fI\\$1\\fP .\} .\} .. .\" # تعریف مقادیر تب‌بندی برای .AP .de AS .nr )A 10n .if !"\\$1"" .nr )A \\w'\\$1'u+3n .nr )B \\n()Au+15n .\" .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n .nr )C \\n()Bu+\\w'(in/out)'u+2n .. .AS Tcl_Interp Tcl_CreateInterp in/out .\" # BS - آغاز متن کادربندی‌شده .\" # ^y = محل شروع y .\" # ^b = 1 .de BS .br .mk ^y .nr ^b 1u .if n .nf .if n .ti 0 .if n \l'\\n(.lu\(ul' .if n .fi .. .\" # BE - پایان متن کادربندی‌شده (رسم کادر) .de BE .nf .ti 0 .mk ^t .ie n \l'\\n(^lu\(ul' .el \{\ .\" رسم کادر چهارطرفه به صورت معمول، اما اگر کادر .\" در صفحه‌ای پیشین شروع شده باشد بالای آن را رسم نکن. .ie !\\n(^b-1 \{\ \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .el \}\ \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul' .\} .\} .fi .br .nr ^b 0 .. .\" # VS - آغاز نوار عمودی کناری .\" # ^Y = محل شروع y .\" # ^v = 1 (برای troff؛ برای nroff تفاوتی ندارد) .de VS .if !"\\$2"" .br .mk ^Y .ie n 'mc \s12\(br\s0 .el .nr ^v 1u .. .\" # VE - پایان نوار عمودی کناری .de VE .ie n 'mc .el \{\ .ev 2 .nf .ti 0 .mk ^t \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n' .sp -1 .fi .ev .\} .nr ^v 0 .. .\" # ماکروی ویژه برای مدیریت پایین صفحه: در صورت قرار داشتن در حالت .\" # کادر/نوار کناری، آن را به پایان می‌رساند، سپس ماکروی استاندارد .\" # پایین صفحه را فراخوانی می‌کند. .de ^B .ev 2 'ti 0 'nf .mk ^t .if \\n(^b \{\ .\" اگر صفحه اول کادر است، کادر سه‌طرفه رسم کن؛ .\" در غیر این صورت دو طرف را بدون بخش بالایی رسم کن. .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c .\} .if \\n(^v \{\ .nr ^x \\n(^tu+1v-\\n(^Yu \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c .\} .bp 'fi .ev .if \\n(^b \{\ .mk ^y .nr ^b 2 .\} .if \\n(^v \{\ .mk ^Y .\} .. .\" # DS - آغاز نمایش .de DS .RS .nf .sp .. .\" # DE - پایان نمایش .de DE .fi .RE .sp .. .\" # SO - آغاز فهرست گزینه‌های استاندارد .de SO 'ie '\\$1'' .ds So \\fBoptions\\fR 'el .ds So \\fB\\$1\\fR.SH "گزینه‌های استاندارد (STANDARD OPTIONS)" .LP .nf .ta 5.5c 11c .ft B .. .\" # SE - end of list of standard options .de SE .fi .ft R .LP برای جزئیات مربوط به گزینه‌های استاندارد، مدخل راهنمای \*(So را ببینید. .. .\" # OP - start of full description for a single option .de OP .LP .nf .ta 4c نام در خط فرمان: \fB\$1\fR نام پایگاه‌داده: \fB\$2\fR کلاس پایگاه‌داده: \fB\$3\fR .fi .IP .. .\" # CS - begin code excerpt .de CS .RS .nf .ta .25i .5i .75i 1i .. .\" # CE - end code excerpt .de CE .fi .RE .. .\" # UL - underline word .de UL \$1\l'|0\(ul'\$2 .. .\" # QW - apply quotation marks to word .de QW .ie '\*(lq'"' ``\$1''\$2 .\"" fix emacs highlighting .el \*(lq\$1\*(rq\$2 .. .\" # PQ - apply parens and quotation marks to word .de PQ .ie '\*(lq'"' (``\$1''\$2)\$3 .\"" fix emacs highlighting .el (\*(lq\$1\*(rq\$2)\$3 .. .\" # QR - quoted range .de QR .ie '\*(lq'"' ``\$1''\-``\$2''\$3 .\"" fix emacs highlighting .el \*(lq\$1\*(rq\-\*(lq\$2\*(rq\$3 .. .\" # MT - "empty" string .de MT .QW "" .. .BS '\" Note: do not modify the .SH NAME line immediately below! .SH "نام (NAME)" wish \- پوسته پنجره‌ای ساده .SH "خلاصه دستور (SYNOPSIS)" \fBwish\fR ?\fB\-encoding \fIname\fR? ?\fIfileName arg arg ...\fR? .SH "گزینه‌ها (OPTIONS)" .IP "\fB\-encoding \fIname\fR" 20 کدگذاری متن ذخیره‌شده در \fIfileName\fR را مشخص می‌کند. این گزینه تنها پیش از آرگومان \fIfileName\fR شناخته می‌شود. .IP "\fB\-colormap \fInew\fR" 20 مشخص می‌کند که پنجره به جای استفاده از نقشه رنگ پیش‌فرض صفحه نمایش، باید یک نقشه رنگ (colormap) اختصاصی جدید داشته باشد. .IP "\fB\-display \fIdisplay\fR" 20 نمایشگر (و صفحه نمایشی) که پنجره باید در آن نمایش داده شود. .IP "\fB\-geometry \fIgeometry\fR" 20 ابعاد و موقعیت (geometry) اولیه برای استفاده در پنجره. در صورت مشخص شدن این گزینه، مقدار آن در متغیر سراسری \fBgeometry\fR در مفسر Tcl برنامه ذخیره می‌شود. .IP "\fB\-name \fIname\fR" 20 استفاده از \fIname\fR به عنوان عنوان نمایش‌داده‌شده در پنجره، و به عنوان نام مفسر برای دستورهای \fBsend\fR. .IP "\fB\-sync\fR" 20 اجرای همگام تمامی دستورهای کارساز X، به طوری که خطاها بی‌درنگ گزارش شوند. این امر منجر به اجرای بسیار کندتر خواهد شد، اما برای اشکال‌زدایی مفید است. .IP "\fB\-use\fR \fIid\fR" 20 مشخص می‌کند که پنجره اصلی برنامه به جای ایجاد شدن به عنوان یک پنجره مستقل سطح بالا (toplevel)، باید درون پنجره‌ای با شناسه \fIid\fR تعبیه (embed) شود. \fIId\fR باید به همان صورتی که مقدار گزینه \fB\-use\fR برای ویجت‌های toplevel مشخص می‌شود، تعیین گردد (یعنی قالبی مشابه با مقدار بازگردانده‌شده توسط دستور \fBwinfo id\fR دارد). .RS توجه داشته باشید که در برخی بسترها، این ویژگی تنها در صورتی به درستی کار می‌کند که \fIid\fR به یک \fBframe\fR یا \fBtoplevel\fR در Tk اشاره کند که گزینه \fB\-container\fR آن فعال باشد. .RE .IP "\fB\-visual \fIvisual\fR" 20 حالت بصری (visual) مورد استفاده برای پنجره را مشخص می‌کند. \fIVisual\fR می‌تواند هر یک از قالب‌های پشتیبانی‌شده توسط رویه \fBTk_GetVisual\fR را داشته باشد. .IP "\fB\-\|\-\fR" 20 تمام آرگومان‌های باقی‌مانده را بدون تفسیر به متغیر \fBargv\fR اسکریپت ارسال می‌کند. این سازوکاری را برای ارسال آرگومان‌هایی مانند \fB\-name\fR به اسکریپت فراهم می‌کند، به جای آنکه توسط \fBwish\fR تفسیر شوند. .BE .SH "توضیحات (DESCRIPTION)" .PP دستور \fBWish\fR یک برنامه ساده متشکل از زبان دستوری Tcl، جعبه‌ابزار Tk، و یک برنامه اصلی است که دستورها را از ورودی استاندارد یا از یک فایل می‌خواند. این برنامه یک پنجره اصلی ایجاد کرده و سپس دستورهای Tcl را پردازش می‌کند. اگر \fBwish\fR همراه با آرگومان فراخوانی شود، چند آرگومان نخست، ?\fB\-encoding \fIname\fR? ?\fIfileName\fR?، نام یک فایل اسکریپت و به صورت اختیاری، کدگذاری داده‌های متنی ذخیره‌شده در آن فایل اسکریپت را مشخص می‌کنند. مقداری برای \fIfileName\fR شناسایی می‌شود اگر آرگومان مربوطه با .QW \- آغاز نشود. .PP اگر هیچ آرگومانی وجود نداشته باشد، یا آرگومان‌ها یک \fIfileName\fR را مشخص نکنند، آنگاه wish دستورهای Tcl را به صورت تعاملی از ورودی استاندارد می‌خواند. پردازش دستورها تا زمانی که تمام پنجره‌ها حذف (بسته) شوند یا به انتهای فایل (EOF) در ورودی استاندارد برسد، ادامه خواهد یافت. اگر فایلی به نام .QW \fB.wishrc\fR در دایرکتوری خانگی کاربر وجود داشته باشد، \fBwish\fR درست پیش از خواندن اولین دستور از ورودی استاندارد، آن فایل را به عنوان یک اسکریپت Tcl اجرا می‌کند. .PP اگر آرگومان‌های داده‌شده به \fBwish\fR یک \fIfileName\fR را مشخص کنند، آنگاه با \fIfileName\fR به عنوان نام یک فایل اسکریپت برخورد می‌شود. \fBWish\fR اسکریپت موجود در \fIfileName\fR را ارزیابی و اجرا می‌کند (که احتمالاً یک رابط کاربری می‌سازد)، سپس تا زمانی که تمام پنجره‌ها حذف (بسته) شوند به رویدادها پاسخ می‌دهد. دستورها از ورودی استاندارد خوانده نخواهند شد. هنگامی که نام یک فایل اسکریپت در خط فرمان \fBwish\fR ارائه می‌شود، هیچ ارزیابی خودکاری از .QW \fB.wishrc\fR صورت نمی‌گیرد، اما در صورت تمایل، فایل اسکریپت همواره می‌تواند با دستور \fBsource\fR آن را اجرا کند. .PP توجه داشته باشید که در ویندوز، برنامه \fBwish\fIversion\fB.exe\fR از یک جنبه مهم دیگر نیز با برنامه \fBtclsh\fIversion\fB.exe\fR تفاوت دارد: این برنامه به کنسول استاندارد ویندوز متصل نمی‌شود و در عوض یک برنامه پنجره‌ای است. به همین دلیل، علاوه بر این دسترسی به دستور \fBconsole\fR اختصاصی خود را فراهم می‌کند..SH "پردازش گزینه‌ها (OPTION PROCESSING)" .PP \fBWish\fR به‌طور خودکار تمامی گزینه‌های خط فرمان شرح‌داده‌شده در خلاصه‌ی \fBگزینه‌ها (OPTIONS)\fR در بالا را پردازش می‌کند. هر آرگومان دیگر خط فرمان بجز این موارد، با استفاده از متغیرهای \fBargc\fR و \fBargv\fR که در ادامه توضیح داده شده‌اند، به برنامه منتقل می‌شوند. .SH "نام و کلاس برنامه (APPLICATION NAME AND CLASS)" .PP نام برنامه، که برای مقاصدی چون دستورات \fBsend\fR به کار می‌رود، از گزینه \fB\-name\fR در صورت تعیین شدن گرفته می‌شود؛ در غیر این صورت از \fIfileName\fR (چنانچه مشخص شده باشد) یا از نام دستوری که \fBwish\fR با آن فراخوانی شده است گرفته می‌شود. در دو حالت آخر، اگر نام دارای نویسه‌ی .QW / باشد، تنها نویسه‌های پس از آخرین ممیز (اسلش) به عنوان نام برنامه استفاده می‌شوند. .PP کلاس برنامه، که برای مقاصدی چون تعیین گزینه‌ها با مشخصه‌ی \fBRESOURCE_MANAGER\fR یا فایل .Xdefaults به کار می‌رود، همانند نام آن است با این تفاوت که حرف اول آن بزرگ (capitalized) نوشته می‌شود. .SH "متغیرها (VARIABLES)" .PP \fBWish\fR متغیرهای Tcl زیر را مقداردهی می‌کند: .TP 15 \fBargc\fR شامل تعداد آرگومان‌های \fIarg\fR (در صورت عدم وجود 0)، بدون احتساب گزینه‌های شرح‌داده‌شده در بالا. .TP 15 \fBargv\fR شامل یک فهرست (list) از زبان Tcl است که عناصر آن به ترتیب آرگومان‌های \fIarg\fR هستند که پس از گزینه \fB\-\|\-\fR قرار گرفته‌اند یا با هیچ‌یک از گزینه‌های توضیح‌داده‌شده در \fBگزینه‌ها (OPTIONS)\fR بالا مطابقت ندارند، یا در صورت نبود چنین آرگومان‌هایی، یک رشته‌ی خالی است. .TP 15 \fBargv0\fR در صورت تعیین \fIfileName\fR حاوی آن خواهد بود؛ در غیر این صورت، حاوی نامی است که \fBwish\fR با آن فراخوانی شده است. .TP 15 \fBgeometry\fR اگر گزینه \fB\-geometry\fR تعیین شده باشد، \fBwish\fR مقدار آن را در این متغیر کپی می‌کند. اگر این متغیر پس از ارزیابی \fIfileName\fR همچنان وجود داشته باشد، \fBwish\fR از مقدار آن در دستور \fBwm geometry\fR برای تنظیم اندازه و موقعیت (geometry) پنجره‌ی اصلی استفاده می‌کند. .TP 15 \fBtcl_interactive\fR اگر \fBwish\fR دستورات را به صورت تعاملی بخواند (\fIfileName\fR مشخص نشده باشد و ورودی استاندارد یک دستگاه شبیه ترمینال باشد) حاوی 1 است، و در غیر این صورت 0. .SH "فایل‌های اسکریپت (SCRIPT FILES)" .PP اگر یک اسکریپت Tcl را در فایلی ایجاد کنید که نخستین خط آن به این صورت باشد: .CS \fB#!/usr/local/bin/wish\fR .CE در این صورت، اگر آن را به عنوان قابل اجرا نشانه‌گذاری کنید، می‌توانید فایل اسکریپت را مستقیماً از شل (shell) خود فراخوانی نمایید. این امر بر این فرض استوار است که \fBwish\fR در مسیر پیش‌فرض در /usr/local/bin نصب شده باشد؛ اگر در جای دیگری نصب شده است باید خط بالا را متناسب با آن تغییر دهید. بسیاری از سیستم‌های UNIX اجازه نمی‌دهند طول خط \fB#!\fR از حدود ۳۰ نویسه تجاوز کند، بنابراین اطمینان حاصل کنید که فایل اجرایی \fBwish\fR با یک نام فایل کوتاه قابل دسترس باشد. .PP یک رویکرد حتی بهتر این است که فایل‌های اسکریپت خود را با این سه خط آغاز کنید: .CS \fB#!/bin/sh # the next line restarts using wish \e exec wish "$0" ${1+"$@"}\fR .CE این روش نسبت به روش ذکرشده در بند قبلی سه مزیت دارد. نخست اینکه نیازی نیست محل فایل باینری \fBwish\fR به‌صورت ثابت درون اسکریپت نوشته شود (hard-wired): می‌تواند در هر مکانی از مسیر جستجوی شل شما (search path) قرار داشته باشد. دوم، محدودیت ۳۰ نویسه‌ای نام فایل در روش قبل را دور می‌زند. سوم، این روش حتی اگر خود \fBwish\fR یک شل‌اسکریپت باشد نیز کار خواهد کرد (این کار در برخی سیستم‌ها به منظور مدیریت چندین معماری یا سیستم‌عامل انجام می‌شود: اسکریپت \fBwish\fR یکی از چندین باینری را برای اجرا انتخاب می‌کند). این سه خط سبب می‌شوند که هر دو برنامه \fBsh\fR و \fBwish\fR اسکریپت را پردازش کنند، اما \fBexec\fR تنها توسط \fBsh\fR اجرا می‌شود. ابتدا \fBsh\fR اسکریپت را پردازش می‌کند؛ خط دوم را به عنوان یک توضیح (کامنت) در نظر می‌گیرد و خط سوم را اجرا می‌کند. دستور \fBexec\fR پردازش توسط شل را متوقف کرده و در عوض \fBwish\fR را اجرا می‌کند تا تمام اسکریپت را از ابتدا بازپردازش نماید. هنگامی که \fBwish\fR شروع به کار می‌کند، هر سه خط را به عنوان توضیح در نظر می‌گیرد، چرا که بک‌اسلش در پایان خط دوم باعث می‌شود خط سوم به عنوان ادامه‌ی توضیحِ خط دوم تلقی گردد. .PP پایان یک فایل اسکریپت ممکن است با پایان فیزیکی رسانه مشخص شود، یا با نویسه‌ی .QW \e032 .PQ \eu001a "، کنترل-Z" . چنانچه این نویسه در فایل وجود داشته باشد، برنامه \fBwish\fR متن را تا این نویسه (بدون احتساب خود آن) می‌خواند. برنامه‌ای که نیازمند وجود این نویسه در فایل باشد می‌تواند آن را به صورت .QW \e032 ، .QW \ex1a ، یا .QW \eu001a کدگذاری کند؛ یا می‌تواند با استفاده از دستوراتی چون \fBformat\fR یا \fBbinary\fR آن را تولید نماید. .SH "اعلان‌ها (PROMPTS)" .PP هنگامی که \fBwish\fR به صورت تعاملی فراخوانی شود، معمولاً برای هر دستور با .QW "\fB% \fR" اعلان می‌دهد. شما می‌توانید با مقداردهی متغیرهای \fBtcl_prompt1\fR و \fBtcl_prompt2\fR اعلان را تغییر دهید. اگر متغیر \fBtcl_prompt1\fR وجود داشته باشد، باید شامل یک اسکریپت Tcl برای خروجی دادن اعلان باشد؛ در این حالت \fBwish\fR به جای نمایش اعلان پیش‌فرض، اسکریپت موجود در \fBtcl_prompt1\fR را ارزیابی می‌کند. متغیر \fBtcl_prompt2\fR نیز به همین صورت زمانی استفاده می‌شود که یک خط جدید وارد شده باشد اما دستور جاری هنوز کامل نشده باشد؛ اگر \fBtcl_prompt2\fR تنظیم نشده باشد، هیچ اعلانی برای دستورات ناتمام در خروجی چاپ نخواهد شد. .SH "همچنین ببینید (SEE ALSO)" tclsh(1), toplevel(n), Tk_Main(3), Tk_MainLoop(3), Tk_MainWindow(3).SH "کلیدواژه‌ها (KEYWORDS)" برنامه، آرگومان، مفسر، اعلان، فایل اسکریپت، پوسته، جعبه‌ابزار، toplevel