'\" t ...\" WML.sgm /main/10 1996/09/08 21:23:22 rws $ .de P! .fl \!!1 setgray .fl \\&.\" .fl \!!0 setgray .fl \" force out current output buffer \!!save /psv exch def currentpoint translate 0 0 moveto \!!/showpage{}def .fl \" prolog .sy sed -e 's/^/!/' \\$1\" bring in postscript file \!!psv restore . .de pF .ie \\*(f1 .ds f1 \\n(.f .el .ie \\*(f2 .ds f2 \\n(.f .el .ie \\*(f3 .ds f3 \\n(.f .el .ie \\*(f4 .ds f4 \\n(.f .el .tm ? font overflow .ft \\$1 .. .de fP .ie ! \\*(f4 \{\ . ft \\*(f4 . ds f4\" ' br \} .el .ie ! \\*(f3 \{\ . ft \\*(f3 . ds f3\" ' br \} .el .ie ! \\*(f2 \{\ . ft \\*(f2 . ds f2\" ' br \} .el .ie ! \\*(f1 \{\ . ft \\*(f1 . ds f1\" ' br \} .el .tm ? font underflow .. .ds f1\" .ds f2\" .ds f3\" .ds f4\" .ta 8n 16n 24n 32n 40n 48n 56n 64n 72n .TH "WML" "5" "OpenMotif" "فایل‌های پیکربندی" .SH "نام (NAME)" WML \- قالب فایل فرا-زبان ویجت (widget meta-language) برای ایجاد کامپایلرهای uil .iX "widget meta-language" .iX "WML" .SH "توضیحات (DESCRIPTION)" .PP امکان فرا-زبان ویجت (WML) برای تولید مؤلفه‌های کامپایلر زبان واسط کاربر (UIL) استفاده می‌شود که بسته به مجموعه ویجت‌ها می‌توانند تغییر کنند\&. با استفاده از WML می‌توانید در UIL، پشتیبانی از ویجت‌های جدید را به مجموعه ویجت Motif یا برای یک مجموعه ویجت کاملاً تازه اضافه کنید\&. .SS "فایل (File)" .PP فایل‌های WML پرونده‌های متنی ASCII هستند که می‌توانید با هر ویرایشگر متن استانداردی آن‌ها را ویرایش کنید\&. این فایل‌ها در دایرکتوری \fBtools/wml\fP توسط WML مورد دسترسی قرار می‌گیرند\&. طبق قرارداد، فایل‌های WML دارای پسوند \fB\&.wml\fP هستند\&. مجموعه ویجت Motif در فایل \fBmotif\&.wml\fP توصیف شده است\&. این فایل همچنین فایل WML پیش‌فرض هنگام استفاده از ابزار WML است\&. .PP هنگام افزودن ویجت‌های جدید یا تغییر مشخصات ویجت‌ها، باید با یک نسخه رونوشت از فایل \fBmotif\&.wml\fP شروع کنید\&. اگر در حال ساخت مجموعه ویجت جدیدی برای استفاده با UIL هستید، باید از صفر شروع کنید\&. در هر دو صورت، فایل \fBmotif\&.wml\fP نمونه خوبی از نحو WML است و باید پیش از نوشتن فایل WML اختصاصی خود، با آن آشنا شوید\&. .PP فایل‌های WML دارای نحوی ساده، و در ساختار شبیه به UIL هستند\&. این نحو از عناصر زیر تشکیل شده است: .IP " \(bu" 6 کامنت‌ها (Comments) .IP " \(bu" 6 تعاریف نوع داده (Data Type Definitions) .IP " \(bu" 6 تعاریف مجموعه کاراکتر (Character Set Definitions) .IP " \(bu" 6 تعاریف مجموعه شمارشی (Enumeration Set Definitions) .IP " \(bu" 6 تعاریف فهرست کنترل (Control List Definitions) .IP " \(bu" 6 تعاریف کلاس (Class Definitions) .IP " \(bu" 6 تعاریف فرزند (Child Definitions) .IP " \(bu" 6 تعاریف منبع (Resource Definitions) .PP می‌توانید در هر کجای نحو از فاصله، تب یا خطوط جدید استفاده کنید، تا زمانی که کلمات کلیدی یا رشته‌ها را چندپاره نکنید، به‌جز اینکه کامنت‌ها در انتهای خط پایان می‌یابند\&. ترتیب عناصر برای نحو اهمیتی ندارد\&. .PP این توضیحات از قراردادهای تکمیلی زیر برای شرح نحو فرا-زبان ویجت استفاده می‌کند: .IP "[\ \ ]" 10 نشان‌دهنده عناصر اختیاری است\&. .IP "\&.\&.\&." 10 نشان می‌دهد که یک عنصر نحوی می‌تواند تکرار شود\&. .IP "|" 10 نشان‌دهنده انتخاب بین چندین مورد است\&. .SS "کامنت‌ها (Comments)" .PP می‌توانید در فایل WML کامنت قرار دهید\&. کامنت‌ها نحو زیر را دارند: .PP .nf [any\&.element]!any\&.comment .fi .PP کامنت‌ها با یک علامت تعجب شروع می‌شوند و تا انتهای خط ادامه می‌یابند\&. یک کامنت می‌تواند در یک خط مستقل شروع شود یا به دنبال هر بخشی از یک عنصر دیگر بیاید\&. کامنت معنای هیچ عنصر دیگری را تغییر نمی‌دهد\&. به عنوان مثال: .PP .nf \f(CW!This is a comment ! that spans two lines\&. DataType !This is a comment following code\&.\fR .fi .PP .SS "تعاریف نوع داده (Data Type Definitions)" .PP تعاریف نوع داده تمام انواع داده منابع استفاده‌شده در فایل را ثبت می‌کنند\&. شما باید تمام انواع داده به کار رفته در فایل WML خود را ثبت کنید\&. تعاریف نوع داده دارای نحو زیر هستند: .PP .nf DataType any\&.datatype [{ InternalLiteral = internal\&.name | DocName = "\fIstring\fP"; [\&.\&.\&.]}]; [\&.\&.\&.] .fi .PP یک تعریف نوع داده با کلمه کلیدی \fBDataType\fP آغاز می‌شود\&. به دنبال کلمه کلیدی \fBDataType\fP فهرستی از انواع داده قرار می‌گیرد که می‌توانند با موارد زیر بیشتر اصلاح و مشخص شوند: .IP "\fBInternalLiteral\fP" 10 این مقدار، مقدار تعریف لیترال جدول نمادهای داخلی نام نوع داده را تعیین و تحمیل می‌کند\&. این اصلاح‌کننده تنها برای دور زدن تعاریف جدول نمادها که در کامپایلر UIL به‌صورت کد ثابت (hard-coded) تعریف شده‌اند به کار می‌رود\&. به‌ندرت باید از آن استفاده کرد\&. .IP "\fBDocName\fP" 10 یک رشته دلخواه برای استفاده در مستندات مشخص می‌کند\&. این رشته برای ارائه نامی متفاوت برای نوع داده جهت استفاده در مستندات، یا یک نام واحد برای نوع داده در صورتی که نوع داده دارای نام‌های مستعار باشد، در نظر گرفته شده است\&. .PP به عنوان مثال: .PP .nf \f(CWDataType OddNumber {DocName="OddNumber";}; NewString;\fR .fi .PP .SS "تعاریف مجموعه کاراکتر (Character Set Definitions)" .PP تعاریف مجموعه کاراکتر، نام جعبه‌ابزار Motif و سایر اطلاعات مربوط به نام‌های مجموعه کاراکتر مورد استفاده در UIL را ثبت می‌کنند\&. تعاریف مجموعه کاراکتر دارای نحو زیر هستند: .PP .nf CharacterSet any\&.character\&.set { [ FontListElementTag | XmStringCharsetName ] = "\fIstring\fP"; [ Alias = "\fIstring\fP" \&.\&.\&.; | Direction = [ LeftToRight | RightToLeft ]; | ParseDirection = [ LeftToRight | RightToLeft ]; | CharacterSize = [ OneByte | TwoByte ]; ] [ \&.\&.\&. ] }; [ \&.\&.\&. ] .fi .PP یک تعریف مجموعه کاراکتر با کلمه کلیدی \fBCharacterSet\fP شروع می‌شود\&. به دنبال کلمه کلیدی \fBCharacterSet\fP فهرستی از مجموعه‌های کاراکتر می‌آید که می‌توانند با موارد زیر تغییر یابند: .IP "\fBFontListElementTag\fP\ |\ \fBXmStringCharsetName\fP" 10 نام مجموعه کاراکتر را مشخص می‌کند، که به مؤلفه مجموعه کاراکتر یک بخش رشته مرکب (compound string segment) ایجادشده با این مجموعه کاراکتر تبدیل خواهد شد\&. این اصلاح‌کننده الزامی است\&. .IP "\fBAlias\fP" 10 یک یا چند نام مستعار برای نام مجموعه کاراکتر تعیین می‌کند\&. هر نام مستعار را می‌توان در UIL برای اشاره به همان مجموعه کاراکتر به کار برد\&. .IP "\fBDirection\fP" 10 جهت یک بخش رشته مرکب ایجادشده با این مجموعه کاراکتر را تعیین می‌کند\&. پیش‌فرض \fBLeftToRight\fP است\&. .IP "\fBParseDirection\fP" 10 جهتی را که رشته ورودی هنگام ایجاد یک بخش رشته مرکب با این مجموعه کاراکتر تجزیه می‌شود تعیین می‌کند\&. پیش‌فرض همان مقداری است که در \fBDirection\fP مشخص شده است\&. .IP "\fBCharacterSize\fP" 10 تعداد بایت‌های هر کاراکتر در یک بخش رشته مرکب ایجادشده با این مجموعه کاراکتر را مشخص می‌کند\&. پیش‌فرض \fBOneByte\fP است\&. .PP به عنوان مثال: .PP .nf \f(CWCharacterSet iso_latin1 { XmStringCharsetName = "ISO8859-1"; Alias = "ISOLatin1"; }; iso_hebrew_lr { XmStringCharsetName = "ISO8859-8"; Alias = "iso_latin8_lr"; Direction = RightToLeft; ParseDirection = LeftToRight; }; ksc_korean { XmStringCharsetName = "KSC5601\&.1987-0"; CharacterSize = TwoByte; };\fR .fi .PP .SS "تعاریف مجموعه شمارشی (Enumeration Set Definitions)" .PP تعاریف مجموعه شمارشی ثوابت نام‌گذاری‌شده‌ای را که در جعبه‌ابزار Motif برای مشخص کردن مقادیر برخی منابع به کار می‌روند، ثبت می‌کنند\&. تعاریف مجموعه شمارشی دارای نحو زیر هستند: .PP .nf EnumerationSet resource\&.name: resource\&.type { enum\&.value\&.name; [ \&.\&.\&. ] }; .fi .PP یک تعریف مجموعه شمارشی با کلمه کلیدی \fBEnumerationSet\fP آغاز می‌شود\&. برای هر مجموعه شمارشی تعریف‌شده، نام و نوع منبع فهرست می‌شود\&. نام منبع همان نام منبع جعبه‌ابزار Motif است که پیشوند \fBXmN\fP از ابتدای آن حذف شده و حرف اول آن بزرگ نوشته می‌شود\&. به عنوان مثال، نام منبع جعبه‌ابزار Motif برای \fBXmNrowColumnType\fP برابر \fBRowColumnType\fP است\&. نوع منبع، نوع داده برای آن منبع است؛ برای بیشتر منابع، این نوع \fIinteger\fP است\&. به دنبال نام و نوع منبع، فهرستی از نام‌های مقادیر شمارشی می‌آید که می‌توانند به عنوان تنظیمات منبع استفاده شوند\&. این نام‌ها دقیقاً همان نام‌های موجود در جعبه‌ابزار Motif هستند\&. .PP به عنوان مثال: .PP .nf \f(CWEnumerationSet RowColumnType: integer { XmWORK_AREA; XmMENU_BAR; XmMENU_POPUP; XmMENU_PULLDOWN; XmMENU_OPTION; };\fR .fi .PP .PP مجموعه‌های شمارشی همچنین از مقادیر بولی (Boolean) پشتیبانی می‌کنند\&. .SS "تعاریف فهرست کنترل (Control List Definitions)" .PP تعاریف فهرست کنترل نامی را به گروه‌هایی از کنترل‌ها اختصاص می‌دهند\&. می‌توانید بعداً از این فهرست‌های کنترل در تعاریف کلاس برای ساده‌سازی ساختار فایل WML خود استفاده کنید\&. تعاریف فهرست کنترل دارای نحو زیر هستند: .PP .nf ControlList any\&.control\&.list [{ any\&.control; [\&.\&.\&.]}]; .fi .PP یک تعریف فهرست کنترل با کلمه کلیدی \fBControlList\fP شروع می‌شود\&. پس از کلمه کلیدی \fBControlList\fP هر تعداد تعریف فهرست کنترل می‌تواند بیاید\&. تعاریف فهرست کنترل از نام فهرست کنترل و به دنبال آن مجموعه‌ای از کنترل‌هایی که نشان می‌دهد تشکیل شده‌اند\&. به عنوان مثال: .PP .nf \f(CWControlList Buttons {PushButton; RadioButton; CascadeButton; NewCascadebutton;};\fR .fi .PP .PP هر کنترل مشخص‌شده در فهرست کنترل باید به عنوان یک کلاس در فایل تعریف شده باشد\&. .SS "تعاریف کلاس (Class Definitions)" .PP تعاریف کلاس یک کلاس ویجت خاص را شامل جایگاه آن در سلسله‌مراتب کلاس، تابع کمکی (convenience function) جعبه‌ابزار، منابع و کنترل‌های آن شرح می‌دهند\&. باید برای هر ویجت یا گجت در مجموعه ویجت که می‌خواهید در UIL پشتیبانی شود، یک تعریف کلاس وجود داشته باشد\&. تعاریف کلاس دارای نحو زیر هستند: .PP .nf Class class\&.name: MetaClass | Widget | Gadget [{[ SuperClass = class\&.name; | ParentClass = parent\&.class\&.name; | InternalLiteral = internal\&.name; | Alias = \fIalias\fP; | ConvenienceFunction = convenience\&.function; | WidgetClass = widget\&.class; | DocName = "\fIstring\fP"; | DialogClass = True | False; | Resources { any\&.resource\&.name [{ Default = new\&.default\&.value; | Exclude = True | False; [\&.\&.\&.]} ]; [\&.\&.\&.]}; | Controls { any\&.control\&.name; [\&.\&.\&.]}; Children { any\&.child\&.name; [\&.\&.\&.] }; [\&.\&.\&.] ]}]; .fi .PP تعاریف کلاس با کلمه کلیدی \fBClass\fP شروع می‌شوند\&. برای هر کلاس تعریف‌شده، نام کلاس و اینکه آیا کلاس یک فراکلاس (metaclass)، ویجت (widget) یا گجت (gadget) است فهرست می‌گردد\&. هر تعریف کلاس می‌تواند با کلمات کلیدی شرح داده شده در فهرست زیر بیشتر سفارشی‌سازی شود\&. .IP "\fBSuperClass\fP" 10 نام کلاس والد (ابرکلاس) را مشخص می‌کند\&. تنها ریشه سلسله‌مراتب کلاس‌ها فاقد SuperClass است\&. .IP "\fBParentClass\fP" 10 نام کلاس والد ایجادشده خودکار ویجت را در صورت وجود مشخص می‌کند\&. این ویژگی امکان می‌دهد منابع مربوط به آن کلاسِ خودکار ایجادشده در نمونه‌های این کلاس استفاده شوند\&. به عنوان مثال، \fBXmBulletinBoardDialog\fP هم یک \fBXmBulletinBoard\fP و هم یک \fBXmDialogShell\fP ایجاد می‌کند\&. برای دسترسی به منابع کلاس والد \fBXmDialogShell\fP باید در اینجا مشخص گردد\&. .IP "\fBInternalLiteral\fP" 10 مقدار تعریف لیترال جدول نمادهای داخلیِ نام کلاس را تعیین و تحمیل می‌کند\&. این اصلاح‌کننده تنها برای دور زدن تعاریف جدول نمادها که در کامپایلر UIL به‌صورت کد ثابت قرار دارند استفاده می‌شود\&. به‌ندرت باید استفاده شود\&. .IP "\fBAlias\fP" 10 نام‌های جایگزین و مستعار کلاس را برای استفاده در مشخصات UIL تعیین می‌کند\&. .IP "\fBConvenienceFunction\fP" 10 نام تابع کمکی ساخت (creation convenience function) را برای این کلاس مشخص می‌کند\&. تمام کلاس‌های ویجت و گجت باید دارای یک \fBConvenienceFunction\fP باشند\&. .IP "\fBWidgetClass\fP" 10 کلاس ویجت مرتبط با کلاس‌های نوع گجت را مشخص می‌کند\&. در حال حاضر، هیچ عملیاتی با این مقدار انجام نمی‌شود\&. .IP "\fBDocName\fP" 10 یک رشته دلخواه برای استفاده در مستندات تعریف می‌کند\&. در حال حاضر، هیچ عملیاتی با این مقدار انجام نمی‌شود\&. .IP "\fBDialogClass\fP" 10 مشخص می‌کند که آیا این کلاس یک کلاس دیالوگ است یا خیر\&. در حال حاضر، هیچ عملیاتی با این مقدار انجام نمی‌شود\&. .IP "\fBResources\fP" 10 منابع کلاس ویجت را فهرست می‌کند\&. این کلمه کلیدی می‌تواند با موارد زیر بیشتر اصلاح شود: .RS .IP "\fBDefault\fP" 10 یک مقدار پیش‌فرض جدید برای این منبع تعیین می‌کند\&. مقادیر پیش‌فرض منابع معمولاً در تعریف منبع تنظیم می‌شوند\&. اگر مقدار پیش‌فرض یک منبع به ارث رسیده توسط کلاس تغییر کند، مقدار پیش‌فرض جدید باید در اینجا قید شود\&. .IP "\fBExclude\fP" 10 مشخص می‌کند که آیا یک منبع به ارث رسیده باید از فهرست منابع کلاس مستثنی و حذف شود یا خیر\&. پیش‌فرض \fBExclude\fP برابر False است\&. .RE .IP "\fBChildren\fP" 10 نام‌های فرزندان خودکار ایجادشده این کلاس را فهرست می‌کند تا بتوان در فایل UIL به آن فرزندان دسترسی داشت\&. .IP "\fBControls\fP" 10 کنترل‌هایی را که کلاس ویجت مجاز می‌داند فهرست می‌کند\&. کنترل‌ها می‌توانند کلاس‌های دیگر یا یک فهرست کنترل از تعاریف فهرست کنترل باشند\&. .PP مثال زیر از نمونه‌های تعاریف نوع داده و تعاریف فهرست کنترلِ بالا استفاده می‌کند\&. .PP .nf \f(CWClass TopLevelWidget: MetaClass { Resources { XtbNfirstResource; XtbNsecondResource; }; }; NewWidget: Widget { SuperClass = TopLevelWidget; ConvenienceFunction = XtbCreateNewWidget; Resources { XtbNnewResource; XtbNfirstResource {Default="XtbNEW_VALUE";}; XtbNsecondResource {Exclude=True;}; }; Controls { NewWidget; Buttons; }; };\fR .fi .PP .SS "تعاریف فرزند (Child Definitions)" .PP تعاریف فرزند کلاس‌های فرزندان خودکار ایجادشده را ثبت می‌کنند\&. فرزندان خودکار ایجادشده در جاهای دیگرِ یک فایل \fBuil\fP با استفاده از کلمه کلیدی \fBChildren\fP درون یک تعریف کلاس ارجاع داده می‌شوند\&. تعاریف فرزند دارای نحو زیر هستند: .PP \fBChild\fP \fBchild\&.name\fR \fB:\fP \fBclass\&.name\fR\fB;\fP [\&.\&.\&.] .PP که در آن \fBchild\&.name\fR نام فرزند خودکار ایجادشده و \fBclass\&.name\fR نام کلاس آن فرزند است\&. .SS "تعاریف منبع (Resource Definitions)" .PP تعاریف منبع یک منبع خاص را شامل نوع و مقدار پیش‌فرض آن شرح می‌دهند\&. باید برای هر منبع جدیدی که در تعاریف کلاس به آن ارجاع داده شده، یک تعریف منبع وجود داشته باشد\&. تعاریف منبع دارای نحو زیر هستند: .PP .nf Resource resource\&.name: Argument | Reason | Constraint | SubResource [{[ Type = \fItype\fP; [ResourceLiteral = resource\&.literal; ] [InternalLiteral = internal\&.name; ] [Alias = \fIalias\fP; ] [Related = \fIrelated\fP; ] [Default = \fIdefault\fP; ] [DocName = doc\&.name; ] [\&.\&.\&.]}] [\&.\&.\&.] .fi .PP تعاریف منبع با کلمه کلیدی \fBResource\fP شروع می‌شوند\&. برای هر تعریف منبع، نام منبع و این که منبع یک آرگومان (Argument)، دلیل/فراخوان بازگشتی (Reason)، محدودیت (Constraint) یا زیرمنبع (SubResource) است، قید می‌شود\&. .IP "\fBArgument\fP" 10 یک منبع استاندارد را نشان می‌دهد\&. .IP "\fBReason\fP" 10 یک منبع فراخوان بازگشتی (callback) را نشان می‌دهد\&. .IP "\fBConstraint\fP" 10 یک منبع محدودیت (constraint) را نشان می‌دهد\&. .IP "\fBSubResource\fP" 10 در حال حاضر، هیچ عملیاتی با این مقدار انجام نمی‌شود\&. .PP تعریف منبع می‌تواند با کلمات کلیدی زیر بیشتر اصلاح و تنظیم شود: .IP "\fBType\fP" 10 نوع داده منبع را مشخص می‌کند\&. این نوع باید در تعریف نوع داده فهرست شده باشد\&. .IP "\fBResourceLiteral\fP" 10 کلمه کلیدی مورد استفاده در فایل UIL برای ارجاع به منبع را مشخص می‌کند\&. در Motif، نام منبع همانند \fBResourceLiteral\fP است\&. .IP "\fBInternalLiteral\fP" 10 مقدار تعریف لیترال جدول نمادهای داخلیِ نام منبع را تعیین و تحمیل می‌کند\&. این اصلاح‌کننده تنها برای دور زدن تعاریف جدول نمادها که به‌صورت کد ثابت در کامپایلر UIL قرار دارند به کار می‌رود\&. به‌ندرت باید استفاده شود\&. .IP "\fBAlias\fP" 10 نام‌های جایگزین برای منبع جهت استفاده در مشخصات UIL را تعیین می‌کند\&. .IP "\fBRelated\fP" 10 یک فیلد با کاربرد ویژه است که اجازه می‌دهد منابعی که به عنوان شمارنده برای منابع جاری عمل می‌کنند، به منبع مرتبط شوند\&. کامپایلر UIL به طور خودکار مقدار این منبع مرتبط را برابر با تعداد آیتم‌ها در نمونه کامپایل‌شده از نوع \fBresource\&.name\fR تنظیم می‌کند\&. .IP "\fBDefault\fP" 10 مقدار پیش‌فرض منبع را مشخص می‌کند\&. .IP "\fBDocName\fP" 10 یک رشته دلخواه برای استفاده در مستندات تعریف می‌کند\&. در حال حاضر، هیچ عملیاتی با این مقدار انجام نمی‌شود\&. .PP مثال زیر از نمونه‌های تعاریف نوع داده، تعاریف فهرست کنترل و تعاریف کلاس در بالا استفاده می‌کند\&. .PP .nf \f(CWResource XtbNfirstResource: Argument { Type = OddNumber; Default = "XtbOLD_VALUE";}; XtbNsecondResource: Argument { Type = NewString; Default = "XtbNEW_STRING"; }; XtbNnewResource: Argument { Type = OddNumber; Default = "XtbODD_NUMBER"; };\fR .fi .PP ...\" created by instant / docbook-to-man, Sun 22 Dec 1996, 20:37