• طراحی رابط کاربری گرافیکی توسعه یک بلوک آموزشی در زمینه "پایگاه های اطلاعاتی و سیستم های مدیریت پایگاه داده"

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

    با این حال، تعدادی از وجود دارد توصیه عملی، که باید توسط توسعه دهندگان برای تسهیل طراحی رابط ها دنبال شود.

    ¦ از ساختارهای پیچیده (مانند درخت) برای پیوند منوهای مختلف باید اجتناب شود. بهتر است بیش از شش منو در یک نوار منو گنجانده شود که هر کدام شامل بیش از شش گزینه نباشد.

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

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

    ¦ هنگام فعال کردن تمام نمادها، همانطور که در بالا ذکر شد، روی ماوس دوبار کلیک کنید. و برای به دست آوردن نتیجه مشابه برای آیکون های اشیایی که با یک کلیک ماوس فعال می شوند، توصیه می شود یک دوبار کلیک را نیز برنامه ریزی کنید. بسیاری از گزینه ها، مانند آنهایی که در منوی کنترل پنل هستند، شبیه نمادها هستند، اما اشیایی هستند که با یک کلیک ماوس فعال می شوند. شما باید رفتار احتمالی کاربران را هنگام کار با چنین اشیایی پیش بینی کنید (یعنی فرض کنید با ماوس روی آنها دوبار کلیک می کنند) و به آنها کمک کنید تا به نتیجه دلخواه برسند.

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

    ¦ عناصری که در منوهای مختلف مشترک هستند باید در یک مکان قرار گیرند. به عنوان مثال، دکمه های OK و Cancel باید همیشه نسبت به یکدیگر یکسان قرار داشته باشند و در کادرهای گفتگوی مختلف یک مکان را اشغال کنند.

    ¦ اگر این با نظر کاربران مطابقت ندارد، نباید برای یکنواختی آیتم های منو تلاش کنید. به عنوان مثال، کاربران متوجه می شوند که کشیدن یک فایل از یک پوشه به پوشه دیگر واقع در همان دستگاه باعث می شود که فایل به پوشه دوم منتقل شود.

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

    مشخص شد که الزامات ارگونومیک برای رابط های کاربر گرافیکی با توسعه "چند رسانه ای" (چند رسانه ای) کافی نیست - سیستم های تعاملی که کار با تصاویر ثابت و فیلم متحرک، گرافیک کامپیوتری متحرک و متن، گفتار و صدای با کیفیت بالا را ارائه می دهند. تحقیق و توسعه ارگونومیک این سیستم ها یک کار پیچیده و از نظر حرفه ای هیجان انگیز است.

    بیشتر مدیران پروژه توسعه برنامه، یادداشت B. Tognazzini، منتظر تکمیل پروژه برای شروع کار بر روی رابط هستند. این یادآور ساختن یک خانه است، زمانی که معمار پس از نصب قاب ساختمان دعوت می شود. همه توسعه دهندگان رویکرد متفاوتی برای سازماندهی فرآیند ایجاد یک رابط دارند. با این حال، نکات کلی وجود دارد که همه توسعه دهندگان باید به آن پایبند باشند:

    1) هدف را درک کنید محصول نرم افزاریدر تمام جزئیات با برقراری ارتباط نزدیک با کاربران، اغلب تمام روزهای کاری را با آنها می گذرانید تا سبک کاری و عادات فردی آنها را بهتر درک کنید.

    2) ایجاد یک رابط کار یک شخص نیست، بلکه نمایندگان سه حوزه است: متخصصی که نظر کاربران را در مورد عناصر اصلی رابط می یابد و آنها را توصیف می کند. توسعه دهنده رابط و خالق گرافیک؛

    3) یک نفر با تجربه به عنوان کارشناس رابط و واسطه بین کارگروه و کاربران معرفی شود.

    4) بررسی، ایجاد یک طرح و بررسی مجدد، زیرا حتی اگر هدف محصول نرم افزار کاملاً درک شود، نمی توان تمام نیازهای کاربران را پیش بینی کرد.

    D.Norman معتقد است که رابط ها باید توسط افرادی ایجاد شوند که در توسعه برنامه شرکت نمی کنند، زیرا توسعه دهندگان بیش از حد در مورد اصول برنامه می دانند و این فقط مانع ایجاد یک رابط می شود. فضایل یک رابط کاربری گرافیکی به طور کلی شناخته شده و شاید شاعرانه است
    بنابراین، موضوع مورد تحلیل جدی قرار نگرفته است. قاعده سنتی توسعه‌دهنده نرم‌افزار، که طبق آن سهولت یادگیری اغلب کاربر را از استفاده کامل از تمام ویژگی‌های برنامه بازمی‌دارد، به رابط گرافیکی نیز مربوط می‌شود. به عنوان مثال توسعه پروژه ای برای یک شرکت بیمه آمریکایی است که از یک برنامه بیمه برای مکینتاش استفاده کرده است که با رابط کاربری زیبا و یادگیری بسیار آسان ارائه شده است. با این حال، پس از دو سال کار، کاربران نهایی بسیار ماهر شده اند توابع مختلفاین نرم افزار که رابط کاربری گرافیکی آنها را تنها کند کرده است. انتخاب یک رابط گرافیکی باید بر اساس ماهیت وظیفه کاربر تعیین شود.

    استاندارد رابط کاربری گرافیکی

    یکی از تغییرات عمدهدر صنعت کامپیوتر - ظهور یک رابط گرافیکی. بنابراین نیاز به اتخاذ استانداردهای رابط کاربری گرافیکی وجود داشت که تعریف کنند برنامه های ویندوز چگونه باید باشند؟ مکینتاش و غیره حتی برنامه های صدور گواهینامه وجود دارد که فروشندگان برنامه های خود را برای دریافت نشان ویندوز طراحی می کنند. این کار به چند دلیل انجام می شود.

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

    هفت اصل توسعه رابط کاربری گرافیکی

    هفت اصل عمومی طراحی رابط کاربری گرافیکی از راهنمای رابط کاربری ویندوز مایکروسافت گرفته شده است. آنها طرحی را تشکیل می دهند که از آن می توانید استانداردهای خود را ایجاد کنید. این طرح دو مزیت قابل توجه را برای توسعه دهندگان و کاربران فراهم می کند. اول، برنامه ها حرفه ای به نظر می رسند. دوم، آنها کاربردی، سازگار با سایر برنامه‌ها و یادگیری آسان برای کاربران هستند.

    البته، برای موفقیت یک برنامه، باید به خوبی نوشته شده و مفید باشد - این شرط اصلی است. اصولی که ما در مورد آنها صحبت می کنیم به سادگی به توسعه دهنده غذای فکری می دهد.

    1. اجازه دهید کاربر برنامه را کنترل کند.

    2. از پارادایم شی/عمل پیروی کنید.

    3. ثابت قدم باشید.

    4. برنامه های خود را ساده و واضح کنید.

    5. برای هماهنگی تلاش کنید.

    6. ارائه بازخورد کاربر.

    7. زیاده‌روی کنید

    اصل اول: اجازه دهید کاربر برنامه را کنترل کند.

    کاربر باید برنامه را مدیریت کند، یعنی از هر ماژول دیگری به هر ماژول برنامه دسترسی داشته باشد. پیش از این، یک منوی سلسله مراتبی برای چنین دسترسی استفاده می شد.


    فرض کنید کاربر می خواهد یک کلاینت جدید اضافه کند، در مثال، کاربر باید به ماژول ACCOUNTS RECCIEVAable رفته و سپس یک کلاینت جدید از آنجا اضافه کند. او از کجا می داند باید چه کار کند؟ احتمالاً از تجربه من با این برنامه است. و در دنیای رابط کاربری گرافیکی، کاربر به سادگی دستور New را از منو و سپس Customer را انتخاب می کند، همانطور که در شکل نشان داده شده است. در این سیستم مدرناز طریق منوی File می‌توانید یک مشتری، فروشنده یا موجودی جدید اضافه کنید. این به شما امکان می‌دهد رکورد مشتری را در حالی که روی صفحه فروشنده هستید تغییر دهید و بالعکس. کاربر دیگر نیازی به درک منوی سلسله مراتبی پیچیده و گیج کننده ندارد.

    اصل دوم: از پارادایم شی/عمل پیروی کنید.

    پارادایم شی/عمل بیان می کند که هر عملیاتی را می توان بر روی تمام اشیاء در سیستم انجام داد. ساده ترین و واضح ترین مثال صفحه پشتیبانی پایگاه مشتری است (شکل). صفحه شامل مجموعه‌ای از دکمه‌ها است و هر یک از دکمه‌ها به شما اجازه می‌دهد تا برخی از اقدامات را روی اطلاعات مشتری انتخاب‌شده انجام دهید. می توانید آن را حذف کنید، ویرایش کنید، چاپ کنید و غیره. اقداماتی که می توان روی یک کلاینت خاص انجام داد باید در زمان های مناسب در دسترس باشند یا در دسترس نباشند. به عنوان مثال، زمانی که یک رکورد مشتری در حالت ویرایش است، دکمه‌های Delete و New باید غیرفعال شوند.

    اصل سوم: سازگار باشید.

    سازگاری یکی از مهمترین اصول توسعه رابط کاربری گرافیکی است. رابط کاربری گرافیکی - به کاربران اجازه می دهد تا برنامه های بیشتری را نسبت به برنامه های قدیمی تر بررسی کنند. و همه اینها به لطف اصل سازگاری است. هنگامی که کاربر با یک برنامه جدید روبرو می شود، قبلاً با آن آشنا شده است دستورات اصلی: باز کردن، چاپ و ذخیره فایل ها. برنامه های توسعه یافته در این پلتفرم ها معمولاً با یکدیگر سازگار هستند.

    بنابراین، هنگام ایجاد برنامه های جدید، سازگار باشید. اگر از دستور New برای افزودن یک ورودی جدید استفاده کرده اید، از آن در همه جا استفاده کنید. شما نباید این کلمه را با دیگران جایگزین کنید - به عنوان مثال، کلمه Add 9 add). با هماهنگی شما، کاربران می‌دانند که هر جا دستور New را ببینند، می‌توانند از آن برای افزودن ورودی جدید استفاده کنند.

    اصل چهارم: برنامه را ساده و واضح کنید.

    شما می توانید این فکر را به این صورت بیان کنید: از اصطلاحات تخصصی استفاده نکنید. یک صفحه نمایش با دو دکمه وجود دارد. یکی از آنها می گوید "Pack the database" و دیگری می گوید "Remove records marked for delete". ورودی دوم مطمئنا برای کاربر قابل درک تر خواهد بود.

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

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

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

    ویندوز می تواند میلیون ها ترکیب رنگ را انتقال دهد. آیا این بدان معنی است که همه آنها باید استفاده شوند؟ البته که نه. شما باید رنگ های ساده و آرام را انتخاب کنید و از اختلاط تصادفی آنها که به دلایلی برخی از برنامه نویسان را دوست دارند اجتناب کنید.

    اصل ششم. ارائه بازخورد کاربر

    تصور کنید درخواست شما دارای فرآیندی است که تکمیل آن زمان زیادی می برد. در این مدت می‌توانید پیامی مانند این را روی صفحه نمایش دهید: «برنامه در حال اجرا است، لطفاً صبر کنید». راه حل مناسب؛ اما کاربر چگونه می داند که آویزان نشده است؟ بنابراین، به احتمال زیاد او به برنامه "سلام با سه انگشت" (Ctrl + Alt + Del) می دهد، اگرچه همه چیز با برنامه خوب خواهد بود.

    بهتر است به کاربر نشان دهیم که چه بخشی از فرآیند انجام شده است. سپس برنامه را بی جهت قطع نمی کند، می تواند ارزیابی کند که کار تا چه حد پیشرفت کرده است و تا زمانی که فرآیند تکمیل شود، کارهای دیگری انجام دهد. بنابراین بهره وری کاربر حدود 25 درصد افزایش خواهد یافت. این نتیجه را می توان به سادگی با نمایش متر روی صفحه به دست آورد. به طور معمول، پیام هایی مانند "10 از 100 ورودی پردازش شد" یا "40% تکمیل شد" نمایش داده می شود. حتی بهتر است، هم تعداد رکوردهای پردازش شده و هم درصد آنها را نشان دهید."

    اصل هفتم: متمسک باشید

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

    اهمیت قراردادها در استاندارد رابط کاربری گرافیکی

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

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

    دانشجویان، دانشجویان تحصیلات تکمیلی، دانشمندان جوانی که از دانش پایه در تحصیل و کار خود استفاده می کنند از شما بسیار سپاسگزار خواهند بود.

    نوشته شده در http://www.allbest.ru/

    نوشته شده در http://www.allbest.ru/

    آژانس فدرال برای آموزش فدراسیون روسیه

    موسسه آموزشی دولتی

    آموزش عالی حرفه ای

    کمک بشردوستانه دولتی روسیهدانشگاه

    پژوهشگاه علوم اطلاعات و فناوری های امنیتی

    گروه انفورماتیک عمومی

    تست

    برای فناوری های اطلاعاتی

    رابط های گرافیکی و ابزار برای توسعه آنها

    لیسیچنوک کنستانتین ویکتورویچ

    تحصیل خارجی 3 سال تحصیل

    (دوره تحصیلی 4 ساله)

    گروه b (حوزه اطلاعات)

    مشاور علمی

    کاندیدای علوم فنی، مدرس: Mashintsov E.A.

    مسکو 2005

    طرح

    معرفی

    سیستم پنجره ایکس

    ترتیب کلی سیستمپنجره X

    برنامه نویسی با کتابخانه X Toolkit Intrinsic (Xt).

    اشیاء Xt، طبقه بندی آنها

    منابع اطلاعاتی

    معرفی

    هنگامی که برای اولین بار در سال 1959، در کنفرانس یونسکو در مورد پردازش اطلاعات، آقای استرچی یک حالت اشتراک زمانی را برای حل مسائل در رایانه پیشنهاد کرد، از آن لحظه مرسوم شد که شروع محاسبات تعاملی و در نتیجه، مطالعه رابط انسان و ماشین با افزایش قدرت رایانه ها، هزینه بخش نرم افزار مکالمه نیز افزایش یافت. موضوع کارآیی ماشین با ورود سریع به بازار ایستگاه های کاری که تعامل تعاملی را با گرافیک ترکیب می کنند تشدید شده است. اصطلاح بهره وری از آن زمان به بعد معنای خود را تغییر داده است - اگر قبلاً ویژگی هایی مانند زمان پردازنده و مقدار حافظه اشغال شده را منعکس می کرد ، اکنون به عنوان سهولت توسعه ، سهولت نگهداری و راحتی کار با برنامه درک می شود. بنابراین، هزینه های تحقیق و توسعه رابط کاربری موجه است.

    توسعه هر نرم افزار کاربردی، به عنوان یک قاعده، شامل ایجاد یک رابط کاربری است. از آنجایی که بیشتر رابط های کاربری مدرن مبتنی بر ایده های مشابه هستند ( استفاده فعال"موس"، تمرکز بر روی اشیاء، گرافیک و غیره. - تقلید از فرآیندها و پدیده‌ها، امکان استفاده از الگوریتم‌هایی که برای هر فرد از زندگی روزمره‌اش آشناست)، سپس امکان و نیاز به توسعه نرم‌افزارهای کمکی برای ایجاد این نوع رابط‌های «استاندارد» یا بهتر بگوییم پایه‌های آنها وجود دارد. .

    از سوی دیگر، سخت‌افزارها و پلتفرم‌های سیستمی متعدد و متنوعی که این نرم‌افزار نیاز به اجرا دارد، مستلزم قابل حمل بودن آن در سطح کد منبع است. الزامات فوق به طور منطقی منجر به ایده یک جعبه ابزار نرم افزاری یکپارچه قابل حمل برای ایجاد رابط کاربری می شود یا اگر محصول نرم افزار کاربردی نهایی را در نظر بگیریم، سیستمی (ماژول، بلوک) که مدیریت (مدیریت، اجرا، نگهداری، مدیریت) رابط کاربری

    می توانید چنین ابزارهایی (ابزارهای رابط کاربری) را بر اساس این طرح طبقه بندی کنید:

    * سیستم های صفحه نمایش مبتنی بر متن (نفرین، نفرین، و غیره).

    * سیستم های صفحه نمایش گرافیکی

    * سیستم های چند پنجره ای (WMS):

    * شخصیت گرا (متن)؛

    * گرافیک؛

    * جعبه ابزار UI

    * سنتی؛

    * شی گرا؛

    * UIDS - سیستم توسعه رابط کاربری - سیستم توسعه رابط کاربری (کیت ابزار).

    * UIMS - سیستم مدیریت رابط کاربری - سیستم رابط کاربری (مدیریت) (ماژول نرم افزار - بخشی جدایی ناپذیر از محصول نهایی در ارتباط با UIDS مربوطه).

    * UIDE - محیط توسعه رابط کاربری - محیط توسعه رابط کاربری.

    این طرح وانمود نمی کند که یک طبقه بندی سیستماتیک است، بلکه فقط یک شمارش است.

    در حال حاضر تلاش های زیادی برای توسعه روش ها و ایجاد ابزارهای درون سیستم هایی به نام UIMS - User Interface Management System در حال انجام است.

    سیستمپنجره X

    پنجره Xیا به سادگی ایکس- سیستمی است برای ایجاد یک رابط کاربری گرافیکی، در اصل - در رایانه هایی که یونیکس دارند. X در MIT (موسسه فناوری ماساچوست) ایجاد شد. نسخه 11.6 (X11R6) قبلا منتشر شده است و آماده سازی برای انتشار نسخه 7 در حال انجام است.

    یکی از ویژگی های پنجره X معماری آن است - طبق طرح مشتری-سرور ساخته شده است. تعامل بین X-client و X-server در چارچوب پروتکل سطح برنامه مربوطه - پروتکل X انجام می شود. پنجره X نسبت به حمل و نقل مورد استفاده، که می تواند یک سوکت محلی یونیکس یا هر شبکه ای مانند TCP باشد، بی تفاوت است. این بدان معنی است که سرویس گیرنده X و سرور X نیز می توانند در رایانه های مختلف "زندگی" کنند، یعنی. برنامه می تواند I/O انجام دهد اطلاعات گرافیکیروی صفحه رایانه دیگری، و تفاوت در معماری سرویس گیرنده X و سرور X هیچ نقشی ندارد - این توسط استاندارد پروتکل X ارائه شده است. این سیستم خروجی گرافیکی را به صفحه دستگاه ارائه می دهد، سیگنال های دستگاه های ورودی مانند صفحه کلید و ماوس را می پذیرد و آنها را به برنامه ها منتقل می کند. لازم به ذکر است که یک دستگاه خروجی ممکن است بیش از یک صفحه نمایش داشته باشد. X خروجی هر یک از آنها را فراهم می کند. همه اینها: صفحه نمایش (صفحه نمایش)، دستگاه های ورودی (صفحه کلید، ماوس) از نظر پنجره X نامیده می شود - نمایشگر.

    با توجه به معماری آن، پنجره X آزادانه در سیستم های محاسباتی توزیع شده، به عنوان مثال، در شبکه های TCP / IP (اینترنت) استفاده می شود.

    X به کاربر (پشت صفحه نمایش) اجازه می دهد تا با بسیاری از برنامه ها به طور همزمان ارتباط برقرار کند. به طوری که خروجی از آنها مخلوط نشود، سیستم "صفحه های فرعی مجازی" - پنجره هایی را روی صفحه نمایش ایجاد می کند. هر برنامه (معمولاً) فقط در پنجره خود (یا پنجره های آن) ترسیم می کند. X مجموعه ای از ابزارها را برای ایجاد پنجره ها، جابجایی آنها در اطراف صفحه نمایش، تغییر اندازه، نمایش آنها و غیره فراهم می کند.

    به عنوان یک قاعده، برنامه ها دارای مجموعه ای از پارامترهای پیکربندی - منابع هستند. این می تواند رنگ پنجره، پارامترهای مختلف فونت متن (لیگاتور، اندازه و غیره) و موارد دیگر باشد. این سیستم نحوه تعریف و مدیریت منابع برنامه را استاندارد می کند و شامل تعدادی رویه برای کار با آنها است. این مجموعه از توابع "مدیر منابع" (Xrm - X Resource Manager) نامیده می شود. "ذخیره" تنظیمات برنامه پایگاه داده منابع نامیده می شود.

    X بر اساس ایدئولوژی معماری رویداد محور عمل می کند - ارتباط بین خود برنامه ها و بین برنامه ها و محیط خارجی را از طریق رویدادها سازماندهی می کند. رویداد واحدی از اطلاعات است که تغییرات یا اعمالی را که در سیستم رخ می دهد را شناسایی می کند. با شناسه رویداد، می توانید اطلاعاتی در مورد آن به دست آورید - نوع رویداد، ویژگی های آن، محل وقوع آن و غیره.

    دستگاه پنجره X اشتراکی

    سیستم پنجره Xمجموعه ای از برنامه ها و کتابخانه ها است. "قلب" آن یک برنامه ویژه است - سرور X. این یک فرآیند یونیکس جداگانه است که در رایانه ای که نمایشگر به آن متصل است انجام می شود. این سروری است که ویژگی‌های یک سخت‌افزار خاص را می‌داند، می‌داند برای نمایش هر شیء گرافیکی، به عنوان مثال، یک نمونه اولیه، چه کاری باید انجام شود. او همچنین می داند که چگونه سیگنال های دریافتی از صفحه کلید و ماوس را درک و پردازش کند.

    سرور با ارسال یا دریافت بسته های داده از برنامه های مشتری با آنها ارتباط برقرار می کند. اگر سرور و کلاینت روی ماشین‌های متفاوتی باشند، داده‌ها از طریق شبکه ارسال می‌شوند و اگر روی یک ماشین باشند، از کانال داخلی استفاده می‌شود. به عنوان مثال، اگر سرور تشخیص دهد که کاربر دکمه ماوس را فشار داده است، بسته (رویداد) مناسب را آماده می کند و آن را برای مشتری ارسال می کند که در پنجره ای که نشانگر ماوس در لحظه فشردن دکمه در پنجره آن قرار داشت. برعکس، اگر برنامه نیاز به نمایش چیزی بر روی صفحه نمایش داشته باشد، بسته داده لازم را ایجاد کرده و به سرور ارسال می کند. بدیهی است که شرح این تعامل، فرمت های بسته و غیره. و مشخصات پروتکل X فوق الذکر را انجام می دهد.

    اما برای برنامه نویسی برای X نیازی به دانستن جزئیات پیاده سازی سرور و پروتکل X نیست. این سیستم یک کتابخانه استاندارد از رویه ها را فراهم می کند که توسط آن برنامه ها به خدمات "سطح بالا" X دسترسی پیدا می کنند. بنابراین، برای نمایش یک نقطه روی صفحه، کافی است مورد مربوطه را فراخوانی کنید رویه استاندارد، پارامترهای مورد نیاز را به آن منتقل می کند. این روش تمام کار تشکیل بسته های داده و انتقال آنها به سرور را انجام می دهد.

    پنجره X

    همانطور که قبلاً ذکر شد، پنجره یک مفهوم اساسی در X است. معمولاً یک ناحیه مستطیلی را بر روی صفحه نمایش می دهد که توسط سیستم به برنامه مشتری ارائه می شود. دومی از یک پنجره برای نمایش اطلاعات گرافیکی استفاده می کند.

    پنجره دارای یک داخل و یک لبه است. ویژگی های اصلی یک پنجره عرض و ارتفاع داخلی و همچنین عرض (ضخامت) لبه است. به این پارامترها هندسه پنجره می گویند.

    هر پنجره با یک سیستم مختصات مرتبط است که منشا آن در گوشه سمت چپ بالای پنجره (به طور دقیق تر، داخلی آن) است. محور x به سمت راست و محور y پایین است. واحد اندازه گیری هر دو محور یک پیکسل است.

    X Window به یک برنامه اجازه می دهد چندین پنجره را همزمان ایجاد کند. آنها در سلسله مراتبی به هم متصل هستند که در آن برخی "والدین" و برخی دیگر "فرزند" هستند. خود سرور در هر صفحه یک پنجره اصلی ایجاد می کند که بالاترین "والد" در بین سایر پنجره ها است. این پنجره را پنجره "ریشه" می نامند.

    مدیریت پنجره

    ویندوز را می توان بر روی صفحه نمایش به روش دلخواه مرتب کرد و روی یکدیگر همپوشانی کرد. X Window دارای مجموعه ای از ابزارها است که یک برنامه کلاینت می تواند از آنها برای تغییر اندازه پنجره ها و تغییر مکان آنها بر روی صفحه استفاده کند. یکی از ویژگی های سیستم این است که توانایی داخلی برای مدیریت ویندوز با استفاده از ماوس یا صفحه کلید ندارد. برای انجام این کار، به یک مشتری خاص نیاز دارید - مدیر پنجره (مدیر پنجره).

    با این حال، مدیر نمی تواند به درستی ویندوز را بدون دانستن چیزی در مورد آنها مدیریت کند. ویندوز می تواند ویژگی های مختلفی داشته باشد که مدیر پنجره باید ارائه دهد: به عنوان مثال، در بسیاری از موارد داشتن عناوین پنجره راحت است، در موارد دیگر مطلوب است که پنجره را نتوان کوچکتر کرد، یا برعکس - بزرگتر از یک اندازه خاص. پنجره را می توان به یک نماد ("نماد") "جمع کرد" - در این مورد، مدیر باید بداند که از کدام نماد استفاده کند و آن را چه نامی بگذارد. مشتریان می توانند خواسته های خود در مورد ویندوز را از دو طریق به مدیر منتقل کنند:

    * هنگام ایجاد یک پنجره X، "توصیه ها" (نکات) در مورد موقعیت اولیه پنجره، هندسه آن، حداقل و حداکثر اندازه و غیره قابل انتقال است.

    * می توانید از روش داخلی X برای برقراری ارتباط بین برنامه ها استفاده کنید - مکانیسم "خواص".

    قابلیت های گرافیکی X Window

    سیستم پنجره X برای کار بر روی نمایشگرهای بیت مپ طراحی شده است. به تعداد بیت ها در هر پیکسل، عمق یا ضخامت نمایشگر می گویند. بیت با همان اعداد(ارقام باینری یکسان) در همه پیکسل ها، به عنوان یک صفحه، که گویی موازی با صفحه نمایش است. به آن صفحه رنگ می گویند. X به شما این امکان را می دهد که در هر صفحه رنگی بدون تأثیرگذاری روی سایرین نقاشی کنید.

    مقدار پیکسل مستقیماً رنگ یک نقطه روی صفحه را تنظیم نمی کند، بلکه تعداد سلول را در یک آرایه خاص تنظیم می کند که در آن مقدار رنگ ذخیره می شود. مقدار پیکسل شماره رنگ را در پالت فعلی مشخص می کند.

    X دارای مجموعه بزرگی از رویه ها است که به شما امکان می دهد تا ابتدائی های گرافیکی را ترسیم کنید: نقاط، خطوط، قوس ها، متن. کار با مناطق آزاد

    «خواص» و اتم ها

    پنجره X دارای امکانات داخلی برای ارائه اطلاعات بین برنامه های مشتری است. برای این کار از مکانیسم "خواص" استفاده می شود. یک "ویژگی" یک ساختار اطلاعاتی است که با برخی شیء مرتبط است، مانند یک پنجره، که در دسترس همه مشتریان X است. هر ویژگی یک نام و یک شناسه منحصر به فرد دارد - یک اتم. معمولاً نام اموال با حروف بزرگ نوشته می شود. اتم ها برای دسترسی به محتویات ویژگی ها به منظور کاهش میزان اطلاعات ارسال شده بین کلاینت ها و سرور X استفاده می شوند.

    X تعدادی روش ارائه می دهد که به شما امکان می دهد نام ویژگی را به یک اتم منحصر به فرد ترجمه کنید و برعکس، داده های لازم را از اتم دریافت کنید.

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

    برنامه نویسی کتابخانهX Toolkit Intrinsic (Xt)

    برای تسهیل برنامه نویسی در سیستم پنجره X، بسته های متعددی ایجاد شده است. استاندارد فعلی، کتابخانه X Toolkit Intrinsics (Xt) است که در توزیع استاندارد سیستم گنجانده شده است. Xt راه اندازی اولیه برنامه ها و ایجاد ویندوز را آسان می کند. علاوه بر این، کتابخانه حاوی ابزارهایی برای ایجاد اشیاء (عناصر کنترل) است که توسط برنامه ها هنگام برقراری ارتباط با کاربران استفاده می شود. در اصطلاح Xt، کنترل ویجت نامیده می شود.

    در حال حاضر، مجموعه های (مجموعه) مختلفی از عناصر کنترل (اشیاء) بر اساس بسته پیاده سازی می شوند، به عنوان مثال، Athena، OSF / Motif، Open Look. این مجموعه ها به همراه خود Xt به عنوان ابزاری مناسب برای ایجاد رابط ها استفاده می شوند. آنها در هنگام نوشتن کارهای معمولی را انجام می دهند برنامه خودتنها با استفاده از روال های کتابخانه هسته X Window، برنامه نویس باید این کار را به صورت دستی انجام دهد.

    مبانی Xt

    برنامه نویسی رابط گرافیکی کاربر

    اشیاء Xt

    بسته Xt پایه ای برای ایجاد عناصر کنترل - ویجت ها (جاهای خالی) است. در مفهوم Xt، یک ویجت صرفاً یک ساختار داده است که فیلدهای آن شامل شناسه خود عنصر، شناسه پنجره آن، در صورت وجود، و موارد دیگر است. ویژگی های چنین شیئی منابع نامیده می شوند. منابع یک ویجت می تواند به عنوان مثال رنگ پنجره آن، رنگ حاشیه پنجره، فونت متن نمایش داده شده و غیره باشد.

    هر شی متعلق به یکی از کلاس های از پیش تعریف شده (کلاس ویجت) است. یک کلاس به معنای معمول برای برنامه نویسی شی گرا درک می شود، به عنوان مثال: یک کلاس را می توان به عنوان مجموعه ای از نمونه ها (اشیاء) در نظر گرفت که ویژگی های یکسانی دارند. کلاس های Xt یک سلسله مراتب را تشکیل می دهند.

    در حین اجرا، برنامه خود اشیاء را ایجاد می کند (نمونه های کلاس -- ویجت). آنها مجموعه هایی را تشکیل می دهند که هر کدام نشان دهنده یک سلسله مراتب خاص هستند. هر چنین سلسله مراتبی درخت ویجت نامیده می شود. ریشه درخت لزوما ویجت است که متعلق به یکی از زیر کلاس های کلاس ویژه - Shell است. اگر در بین دو ویجت A و B درختی از اشیاء، اولی به ریشه نزدیکتر از دومی باشد، A والد ("والد") B و B شی فرعی (یا شی "فرزند" است. (فرزند)) از A. بنابراین، شی پوسته ویجت والد همه ویجت های دیگر در این درخت شی است. این اوست که تعامل برنامه و مدیر پنجره را انجام می دهد.

    سلسله مراتب ویجت توصیف شده مربوط به رابطه ویندوز آنها است که یکی از ویژگی های پنجره X است. علاوه بر این، سلسله مراتب دیگری بر روی اشیا قرار می گیرد. واقعیت این است که در طول عملیات، برخی از اشیاء می توانند دیگران را کنترل کنند. به عنوان مثال، اگر یک شی دارای اشیاء فرعی باشد، هنگامی که هندسه تغییر می کند، می تواند به طور خودکار هندسه فرزندان خود را بازسازی کند. برای اینکه این اتفاق بیفتد، یک پیوند بین ویجت ایجاد می شود - پیوند "مدیریت". هر شی می تواند یک یا چند شیء فرعی "مدیریت شده" داشته باشد.

    سه مکانیسم برای تعامل برنامه های Xt با ویجت و پنجره X وجود دارد.

    * پاسخ به تماس

    رویه ها ("روش های برگشت به تماس"). برای هر کلاس، مجموعه ای از اقدامات تعریف شده است که اشیاء متعلق به آن باید به آن پاسخ دهند. به عنوان مثال، برای هر کلاس، یک واکنش برای از بین بردن ویجت ارائه شده است. هنگامی که یک عمل انجام می شود، یک تابع استاندارد Xt یا یک یا چند روال ارائه شده توسط برنامه فراخوانی می شود. چنین توابعی را رویه های برگشت تماس یا به سادگی callback می نامند.

    *عمل

    -روش ها این برنامه می تواند واکنشی به یک یا آن رویداد پیچیده (گروهی از رویدادها) که از Xt می آید را سفارش دهد. اگر رویدادی رخ دهد، Xt تابع مناسب را جستجو و فراخوانی می کند.

    * گردانندگان رویداد

    - کنترل کننده رویداد. این روش مشابه روش قبلی است، اما سریعتر و کمتر انعطاف پذیر است. این به شما امکان می دهد فقط به رویدادهای ساده (تک) واکنش نشان دهید، اما نه به دنباله آنها.

    طرح برنامه نویسی عمومی

    برنامه هایی که در X اجرا می شوند باید تعدادی عملکرد استاندارد مانند برقراری ارتباط با سرور، تنظیم ویژگی های لازم برای مدیر پنجره و بسیاری از مراحل دیگر را انجام دهند. اگر از Xt استفاده می شود، تمام این کارها توسط یک رویه انجام می شود - XtInitialize(). این بسته خود، مدیر منبع X Window (\term resource manager) را مقداردهی اولیه می کند و سایر عملیات های ضروری را انجام می دهد. shell-widget، که می تواند به عنوان ریشه درخت شی برنامه استفاده شود. به عنوان یک قاعده، نام کلاس برنامه با نام خود برنامه یکسان است و فقط با یک حرف بزرگ شروع می شود. مدیر منابع از نام و کلاس برنامه برای جستجوی پارامترهای آن در پایگاه داده منابع.

    هر برنامه می تواند برخی از گزینه ها را در خط فرمان مشخص کند. Xt پارامترهای "استاندارد" را تعریف می کند که هنگام شروع یک برنامه می توان آنها را ارسال کرد. علاوه بر این، خط فرمان ممکن است حاوی پارامترهای غیر استانداردی باشد که منحصر به این برنامه هستند. XtInitialize () خط فرمان را اسکن می کند و مقادیر داده مناسب را در پایگاه داده قرار می دهد.

    در طول مقداردهی اولیه، یک زمینه برنامه نیز ایجاد می شود - ساختاری که تمام اطلاعات مربوط به برنامه را ذخیره می کند. این زمینه برای محافظت از برنامه در برابر تأثیر تغییرات مختلف در سیستم عامل در نظر گرفته شده است. XtInitialize() مقداری زمینه استاندارد (زمینه پیش فرض) ایجاد می کند، اما، با این وجود، با شروع از نسخه چهارم X، توصیه می شود برای هر نمونه از برنامه، یک زمینه "شخصی" جداگانه ایجاد کنید، که برای آن، از نظر Xt ، باید از فراخوانی رویه XtAppInitialize() (به جای XtInitialize()) استفاده کنید. در اینجا توجه داشته باشید که یک برنامه در Xt می تواند نه یک، بلکه چندین شیء داشته باشد. سطح بالا".

    مرحله بعدی پس از مقداردهی اولیه، مرحله ایجاد عناصر کنترل برنامه، توصیف رابطه بین آنها، تنظیم واکنش ها به رویدادهای مختلف (ثبت کنترل کننده رویداد و سایر اشیاء مشابه) است. این را می توان به روش های مختلفی انجام داد، روش سنتی استفاده از روش XtCreateWidget() برای ایجاد یک شی، رویه XtManageChild() برای انتقال کنترل شی به والد آن، رویه XtAddEventHandler() برای ثبت نام است. کنترل کننده رویداد برای ویجت، و غیره. و غیره

    پس از آماده شدن تمام اشیاء برنامه برای کار، نمایش های گرافیکی آنها (به عنوان مثال، پنجره های مربوط به این ویجت ها) توسط رویه XtRealizeWidget () روی صفحه نمایش داده می شود.

    مرحله بعدی چرخه اصلی است - چرخه دریافت و ارسال رویدادها. با فراخوانی رویه XtMainLoop () ()XtAppMainLoop پیاده سازی می شود.

    برنامه‌ای که فقط از روال‌های کتابخانه هسته X (Xlib) استفاده می‌کند باید خودش هر رویداد ورودی را در نظر بگیرد (دریافت آن از صف رویداد با یک فراخوان صریح، به عنوان مثال، XNextEvent() یا XPeekEvent()) و مطابق با آن واکنش نشان دهد. اگر کار دارای چندین پنجره باشد، قبل از انجام هر اقدامی، باید مشخص شود که رویداد در کدام یک از پنجره ها رخ داده است و این رویداد در چه سطحی از سلسله مراتب پردازش می شود (آیا این شی یا والد آن این رویداد را پردازش می کند؟ ). همه اینها کاملا خسته کننده است.

    Xt از تمام کارهای معمول مراقبت می کند. XtMainLoop () رویداد بعدی را دریافت می کند و پنجره ای را که برای آن در نظر گرفته شده است تعیین می کند. ویجت مربوطه در پنجره قرار دارد. برای دومی، یک کنترل کننده رویداد، رویه اقدام، یا پاسخ به تماس برای ثبت برای پاسخ به رویدادی که رخ داده است، تعریف شده است. اگر شبکه ای وجود داشته باشد، آنها فراخوانی می شوند. مکانیسمی که در بالا توضیح داده شد، اعزام رویداد نامیده می شود.

    XtMainLoop() (XtAppMainLoop()) برنامه را در صورت درخواست مدیر پنجره به طور خودکار خاتمه می دهد.

    اشیاء Xt، طبقه بندی آنها

    Xt مجموعه ای از امکانات را برای ایجاد اشیاء فراهم می کند که توسط برنامه ها برای برقراری ارتباط با کاربر و به طور کلی با بقیه جهان خارج استفاده می شود.

    هر برنامه تولید شده استویجت نماینده یک کلاس یا کلاس دیگر است. Xt و بسته های مبتنی بر آن مانند OSF/Motif، Athena، Tk/tcl، Open Look و غیره دارای تعداد زیادی ازچنین کلاس هایی ایجاد ویجت‌های جدید که در کتابخانه‌های استاندارد ارائه نشده‌اند نیز نیازمند ایجاد (تعریف) کلاس مربوطه است که معمولاً کاری زمان‌بر است.

    هر کلاس دارای تعدادی مشخصه ثابت است که در تمام نمونه های آن مشترک است (مثلاً لیستی از رویه های برگشت تماس). مقادیر این ویژگی ها برای خود اشیا ممکن است متفاوت باشد.

    تمام کلاس های Xt یک سلسله مراتب را تشکیل می دهند. اگر کلاس B نسبت به کلاس D به بالای سلسله مراتب نزدیکتر باشد، B را کلاس پایه D و D را کلاس مشتق شده (یا زیر کلاس) B می نامند.

    زیر کلاس ها ویژگی های تمام کلاس های پایه خود را به ارث می برند. این بدان معنی است که یک نمونه از یک کلاس نه تنها ویژگی های کلاس خود، بلکه ویژگی های همه کلاس های پایه را دارد.

    در برنامه ها، هر کلاس با یک متغیر مشخص می شود که به ساختار داده مربوطه اشاره می کند. این متغیر را نشانگر کلاس می نامند. داده های این ساختار با مقداردهی اولیه Xt پر می شود.

    کلاس های ابزارک اصلی:

    هدف - شی. یک کلاس انتزاعی (کلاسی که شیء خود را تولید نمی کند) که به عنوان ریشه درخت همه اشیا استفاده می شود. این شامل یک زیر کلاس است:

    RectObj. یک کلاس انتزاعی که برای تعریف برخی از ویژگی های کلی لازم برای عملکرد انواع مختلف اشیاء (مثلاً برای اشیایی که پنجره ندارند) استفاده می شود. این شامل یک زیر کلاس است:

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

    کامپوزیت. ویجت های متعلق به این کلاس می توانند والد برای اشیاء دیگر باشند. نمونه هایی از کلاس Composite رفتارهای زیر را برای زیر اشیاء خود تعریف می کنند:

    * مکان ویجت "کودک" را با توجه به محدودیت های خاصی تنظیم می کند.

    * هنگامی که از بین می رود، حافظه مورد استفاده توسط اشیاء فرعی را آزاد می کند (هنگام تخریب ویجت کلاس کامپوزیت، ابتدا تمام "فرزندان" آن از بین می روند).

    * ظاهر ویجت های فرزند خود را بر روی صفحه نمایش پنجره ها کنترل می کند.

    * انتقال فوکوس ورودی بین اشیا را کنترل می کند.

    کلاس Composite شامل زیر کلاس‌هایی است:

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

    پوسته. این یک کلاس ویژه است که برای تعامل با مدیر پنجره طراحی شده است. ویجت از این کلاس فقط می تواند یک فرزند داشته باشد. کلاس Shell شامل زیر کلاس های زیر است:

    OverrideShell. این یک زیر کلاس مهم از کلاس شل است. برای یک پنجره ویجت از این کلاس، ویژگی override_redirect روی True تنظیم شده است، یعنی. مدیر پنجره هیچ کنترلی روی آن ندارد. به عنوان یک قاعده، پنجره های اشیاء این کلاس دارای لوازم جانبی اضافه شده توسط مدیر پنجره (عنوان، قاب، دکمه های استاندارد) نیستند و عمدتاً برای ایجاد انواع منوها استفاده می شوند.

    WMShel. این یک زیر کلاس خاص از کلاس Shell است که حاوی فیلدهای اضافی مورد نیاز برای تعامل با مدیر پنجره است. حاوی:

    VendorShell. این کلاس برای فعال کردن تعامل با مدیران پنجره خاص در نظر گرفته شده است. این کلاس شامل زیر کلاس های زیر است:

    TopLevelShell. ویجت های این کلاس معمولاً به عنوان اشیاء پوسته درخت شی برنامه استفاده می شوند. او حاوی:

    ApplicationShell. یک برنامه معمولاً می تواند فقط یک نمونه داشته باشد که به کلاس ApplicationShell تعلق دارد.

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

    هر یک از کلاس‌های ویجت، و از این رو، اشیاء ایجاد شده بر اساس آن، دارای تعداد نسبتاً زیادی پارامتر هستند. از نظر Xt به آنها "منابع" گفته می شود. Xt طیف وسیعی از ابزارها را برای کار با آنها فراهم می کند.

    ویژگی های اضافی Xt

    Xt مکانیزمی برای کار با فایل ها (و به طور کلی دستگاه های خارجی) در حالت ناهمزمان ارائه می دهد. یک برنامه کاربردی می تواند رویه ای را ثبت کند تا زمانی که داده ها آماده هستند یا زمانی که یک خطای خواندن/نوشتن رخ می دهد فراخوانی شود.

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

    Xt توانایی انجام برخی اقدامات را در زمانی که صف رویداد خالی است را فراهم می کند. این کار با ثبت یک رویه «کار» ویژه انجام می شود که در صورت خالی بودن صف رویداد، Xt آن را فراخوانی می کند. معمولاً از چنین توابعی برای انجام اقدامات و محاسبات مختلف در مدت زمان بسیار کوتاهی استفاده می شود.

    هر برنامه، در صورت لزوم، می تواند چرخه معمول دریافت و ارسال (پردازش) رویدادها را تغییر دهد - Xt مجموعه کاملی از رویه ها را برای کار با صف رویداد ارائه می دهد.

    Xt دارای مکانیزمی از به اصطلاح شتاب دهنده ها (شتاب دهنده) است که به شما امکان می دهد وابستگی های رویدادها و اقدامات را وارد کنید. شتاب دهنده ها مشابه رویه های اقدام هستند، با این تفاوت که یک رویداد (یا گروهی از رویدادها) که در یک ویجت رخ می دهد، فراخوانی رویه عمل مربوطه را در یک شی دیگر آغاز می کند.

    Xt از چندین روش برای کار با ویندوز ویجت پشتیبانی می کند. بنابراین، برنامه با استفاده از روال های ارائه شده توسط Xt، می تواند پنجره را نشان دهد، این یا آن حالت عملکرد را برای آن تنظیم کند و در صورت غیر ضروری شدن پنجره را ببندد. این رویه ها عمدتاً برای ایجاد منوها و دیالوگ های پاپ آپ استفاده می شوند. به عنوان یک قاعده، همه مجموعه‌های ویجت (به عنوان مثال OSF/Motif) رویه‌های بسیار راحت‌تری برای ایجاد منوها و گفتگوها دارند.

    افزونه‌های Xt در حال حاضر، Xt توسط کنسرسیوم X کاملاً استاندارد شده است، اما استانداردهای سطح بالاتری وجود ندارد. محبوب هستند:

    * OSF/Motif Toolkit.

    * مجموعه ویجت آتنا.

    * OPEN LOOK Intrinsic Toolkit.

    * مصاحبه؛

    *Tk/tcl.

    رایج ترین و تقریباً عملاً استاندارد را احتمالاً باید OSF/Motif در نظر گرفت.

    آتنا

    مجموعه ابزارک Athena ("مجموعه ویجت") توسط کنسرسیوم X به عنوان بخشی از توزیع استاندارد X ارائه می شود. Athena از کار بر روی برنامه های کاربردی و ابزارهای اساسی در طول پروژه Athena در MIT ایجاد شد که منجر به سیستم پنجره X شد.

    آتنا در ابتدا دارای گرافیک "مسطح" بود - همه دکمه ها، منوها و سایر عناصر رابط هیچ سایه ای نداشتند، یعنی. مسطح بودند حدود یک سال پیش، AW3d منتشر شد، یک نوع ابزارک Athena که این نقص را برطرف کرد.

    موتیف

    Open Software Foundation Motif (OSF/Motif) بسته‌ای است که شامل یک مدیر پنجره، مجموعه‌ای از ابزارهای کمکی برای انجام عملیات‌های مختلف کمکی، و کتابخانه‌ای از اشیاء ساخته شده بر روی Toolkit Intrinsics است.

    Motif از تمام کلاس‌های Xt و بنابراین منابع آن کلاس‌ها پشتیبانی می‌کند، اما نام و کلاس منبع یک شی به ترتیب با پیشوندهای XmN و XmC نشان داده می‌شود. برای ثبت نوع منبع، از ثابت هایی با پیشوند XmR استفاده می شود (به جای XtR، که در Xt پذیرفته شده است).

    Motif مجموعه کلاس های شی ارائه شده توسط Xt را گسترش می دهد. به طور خاص، Motif از مجموعه نسبتاً بزرگی از کلاس‌ها پشتیبانی می‌کند که به شما امکان می‌دهد منوها، نوارهای اسکرول)، دکمه‌های قابل کلیک، عناصر ویرایش و غیره را ایجاد کنید.

    علاوه بر این، Motif یک کلاس ویژه از اشیاء به نام گجت را ارائه می دهد - آنها یک کلاس XmGadget جداگانه در Motif تشکیل می دهند که زیر کلاس کلاس RectObj است. آنها همچنین می توانند برای ایجاد عناصر رابط استفاده شوند، اما این ویژگی را دارند که ویندوز خود را ندارند. برای طراحی، ابزارها از پنجره والدین خود استفاده می کنند.

    هر کلاس ویجت دارای انتخاب نسبتاً گسترده ای از منابع ارثی و اضافی خاص خود است. آنها به شما اجازه می دهند تا ویژگی های مهم اشیاء مانند رنگ پس زمینه، مکان روی صفحه، فونت متن نمایش داده شده و غیره را کنترل کنید.

    برخی از کلاس‌های Motif برای ایجاد نمونه‌های ویجت استفاده نمی‌شوند (این گونه کلاس‌ها در اصطلاح برنامه‌نویسی شی‌گرا کلاس‌های انتزاعی نامیده می‌شوند). آنها حاوی رایج ترین ویژگی ها و روش های مورد نیاز برای عملکرد انواع ویجت هستند.

    Motif دو زیر کلاس شی اصلی دارد: XmPrimitive و XmManager (کلاس XmGadget قبلا ذکر شد). هر دوی این کلاس ها انتزاعی هستند. اولین مورد از کلاس Core به ارث برده شده است و به عنوان پایه ای برای کلاس های شی که دارای اشیاء دیگری نیستند استفاده می شود. به عنوان مثال دکمه های قابل کلیک، لیست ها و غیره هستند. کلاس XmManager از کلاس Constraint مشتق شده و برای ایجاد اشیایی استفاده می شود که می توانند اشیاء فرزند را داشته باشند و مدیریت کنند.

    طبقه بندی اشیاء

    کلاس XmGadget. هنگام نمونه سازی کلاس های شیء معمولی Motif (ویجت)، پنجره مربوطه نیز تولید می شود. اگر برنامه از ویجت های زیادی استفاده می کند، این منجر به کندی قابل توجهی در برنامه می شود. زمان هم برای ایجاد پنجره ها و هم برای کار بیشتر با آنها صرف می شود. اما به راحتی می توان فهمید که لازم نیست برای هر شی یک پنجره جداگانه داشته باشید. برچسب ها، دکمه ها و بسیاری از ویجت های دیگر می توانند با موفقیت از اشیاء والد خود برای ترسیم پنجره ها استفاده کنند. هیچ پنجره ای وجود ندارد - نیازی به تماس مجدد با سرور نیست، عملکرد افزایش می یابد و حافظه اضافی تلف نمی شود.

    با اجرای این ایده، توسعه دهندگان Motif برخی از کلاس های شی را کپی کرده اند و دو نسخه را ایجاد کرده اند - با پنجره و بدون پنجره. نسخه هایی از اشیاء که پنجره ندارند سلسله مراتب خود را از کلاس انتزاعی - XmGadget هدایت می کنند و نام عمومی یکسانی دارند. این کلاس شی خاص، ویژگی های خود را از کلاس RectObj به ارث می برد، که به نوبه خود، یک کلاس انتزاعی است که مکانیسم های اساسی برای مدیریت هندسه شی را در بر می گیرد.

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

    کلاس XmGadget شامل زیر کلاس‌هایی است:

    *XmArrowButtonGadget.

    * XmLabelGadget.\hfil

    *XmPushButtonGadget.

    *XmToggleButtonGadget.

    *XmCascadeButtonGadget.

    *XmSeparatorGadget.

    کلاس XmPrimitive. این کلاس انتزاعی شامل:

    دکمه XmArrow. یک نمونه از کلاس دکمه ای است که یک فلش جهت دار روی آن کشیده می شود. دکمه را می توان با ماوس یا صفحه کلید کلیک کرد. مرز عنصر کنترل می تواند یک سایه داشته باشد، از آن برای نشان دادن حالت های مختلفی استفاده می شود که شی می تواند در آن باشد: آزاد ("فشرده") و فشرده.

    برچسب Xm. نمایندگان این کلاس (برچسب ها) یکی از ساده ترین اشیاء Motif هستند. برچسب ها برای نمایش اطلاعات طراحی شده اند: متن یا عکس (نقشه های بیتی (پیکسلی)).

    XmPushButton. اعضای این کلاس دکمه های مستطیلی قابل کلیک هستند که می توان در آنها یک خط متن رسم کرد.

    اگر یک شی انتخاب شود، به عنوان مثال، با فشار دادن دکمه سمت چپ ماوس در حالی که مکان نما روی شی است، رنگ حاشیه ویجت تغییر می کند، که یک افکت کلیک ایجاد می کند. هنگامی که دکمه آزاد می شود، رنگ حاشیه بازیابی می شود. همچنین می توانید روی چنین ویجتی از صفحه کلید کلیک کنید - برای این کار باید فوکوس ورودی را به شی منتقل کنید و کلید "فضا" را فشار دهید (معمولا).

    XmDrawnButton. اشیاء این کلاس شبیه دکمه های قابل کلیک هستند، تنها با این تفاوت که نه متن، بلکه یک تصویر دلخواه (نقشه پیکسلی) ترسیم می کنند.

    XmToggleButton. اشیاء این کلاس نشان دهنده یک دکمه کوچک است که معمولاً یک متن توضیحی در کنار آن وجود دارد. دکمه می تواند در دو حالت روشن و خاموش باشد (یعنی سوئیچ است). آنها با تغییر در ظاهر کنترل مشخص می شوند.

    نماینده این کلاس برای ایجاد به اصطلاح "دکمه های چک" (دکمه بررسی) استفاده می شود که عاقلانه تر است که "چک مارک ها" و "دکمه های رادیویی" (دکمه رادیویی) - سوئیچ های چند موقعیتی را فراخوانی کنید. اولی برای تنظیم پارامترهای منطقی، یعنی. داشتن دو معنی دومی هدفی مشابه دارد، اما مجموعه ای از معانی در این موردمحدود است و شامل بیش از دو عنصر است. در این مورد، شکل نمایش گرافیکی یک شی از نوع XmToggleButton بستگی به این دارد که از آن به عنوان دکمه "تیک" یا "رادیو" استفاده شود.

    به طور معمول، ویجت‌های کلاس XmToggleButton در ساختارهایی به نام‌های یک جعبه چک و یک جعبه رادیویی ترکیب می‌شوند. این بلوک ها به نوبه خود تغییراتی را در اشیاء کلاس XmRowColumn نشان می دهند که در زیر توضیح داده شده است.

    دکمه XmCascade. اشیاء این کلاس نشان دهنده دکمه های قابل کلیک هستند و هنگام ایجاد منوها استفاده می شوند. هنگامی که روی یک شی کلیک می کنید، یک زیر منو از سطح بعدی ظاهر می شود.

    xmllist. نمایندگان این کلاس از جالب ترین اشیاء Motif هستند. آنها به گونه ای طراحی شده اند که لیستی از رشته ها را نمایش دهند و به کاربر توانایی انجام اقدامات مختلف با عناصر لیست را می دهند. کاربر می تواند یک یا چند ردیف از ردیف های موجود در این شی را انتخاب کند و آنها برجسته می شوند. علاوه بر این، اگر لیست دارای فوکوس ورودی باشد، یکی از عناصر آن با یک قاب نقطه‌دار برجسته می‌شود. این فریم مکان نما فهرست نامیده می شود.

    XmScrollBar. اشیاء این کلاس - نوارهای پیمایش (نوارهای پیمایش)، به عنوان یک قاعده، در ارتباط با اشیاء دیگر، مانند یک لیست (XmList)، متن (XmText) و دیگران استفاده می شود. اگر اطلاعات ارائه شده در آن (فهرست، متن، تصویر و غیره) به طور کامل در پنجره نمایش داده نشود، نوار اسکرول برای پیمایش منطقه در نظر گرفته شده است. اشیاء کلاس XmScrollBar نشان دهنده یک نوار (افقی یا عمودی) با دکمه های پیکان در لبه ها هستند. با کلیک بر روی هر یک از آنها در جهت مشخص شده توسط فلش ​​پیمایش می شود. در نوار نوار پیمایش یک لغزنده (لغزنده) وجود دارد - یک مستطیل که با رنگ برجسته شده است. اگر آن را با ماوس "قلاب" کنید و "کشیدن" را انجام دهید، این، به عنوان یک قاعده، منجر به پیمایش منطقه نیز می شود.

    XmSeparator. اشیاء این کلاس - جداکننده ها - معمولاً برای بهبود استفاده می شوند ظاهرویندوز برنامه چنین ویجتی یک نوار عمودی یا افقی (خط) است که گروه هایی از اشیاء را از هم جدا می کند. به عنوان مثال، جداکننده ها را می توان در منوها برای جدا کردن یک دستور از دستور دیگر، در گفتگوها برای جدا کردن گروهی از دکمه های قابل کلیک از عناصر دیگر و غیره استفاده کرد.

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

    Motif تعدادی رویه راحت را ارائه می دهد که به شما امکان می دهد انواع مختلفی از عملیات را با ویجت این کلاس انجام دهید: دریافت و اصلاح داده ها، کپی بخشی انتخاب شده از داده ها در کلیپ بورد سیستم (کلیپ بورد) و غیره.

    XmTextField. اشیاء این کلاس به شما امکان مشاهده و ویرایش یک خط متن را می دهند.

    کلاس XmManager. این کلاس انتزاعی است، یعنی. برای تخم ریزی اجسام استفاده نمی شود. پارامترهای اساسی مورد نیاز برای ساخت کلاس های ویجت که می توانند اشیاء دیگر را دستکاری کنند، تعریف می کند. این منابع برای ارائه صحیح ویجت‌های کودک و کنترل نحوه تمرکز ورودی آنها مورد نیاز است.

    کلاس XmManager شامل:

    XmBulletinBoard. آبجکت های این کلاس می توانند زیر اشیاء داشته باشند که به صورت دلخواه در پنجره قرار می گیرند. مختصات پنجره ویجت های فرزند در یک سیستم مختصاتی اندازه گیری می شود که منشاء آن در گوشه سمت چپ بالای پنجره یک شی کلاس XmBulletinBoard است.

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

    کلاس XmBulletinBoard شامل:

    Xform. یکی از ویژگی‌های بارز اشیاء این کلاس (فرم‌ها) توانایی کنترل مکان زیراشیاء آنها با تنظیم پیوندها بین خود فرم و ویجت فرزند و بین خود زیرشخص‌ها است.

    برای هر ویجت فرزند، می‌توانید مشخص کنید که لبه‌های چپ، راست، پایین یا بالای آن به چه چیزی متصل است. بنابراین، اگر لبه های چپ و راست موضوع فرعی به لبه سمت راست فرم گره خورده باشد، فاصله آنها تا این لبه همیشه ثابت می ماند. اگر اندازه فرم کاهش یابد، شی فرعی به سمت چپ و اگر اندازه افزایش یابد، به سمت راست حرکت می کند. شما می توانید یک موضوع فرعی را به دیگری پیوند دهید. سپس با تغییر موقعیت فرعی که ویجت به آن وصل شده است، شی متصل شده به گونه ای حرکت می کند که فاصله بین آنها حفظ شود.

    هنگام تغییر اندازه یک فرم، تمام روابط بین موضوعات فرعی آن حفظ می شود.

    XmSelectionBox. اشیاء این کلاس ("جعبه های انتخاب") نمونه ای از یک ویجت ترکیبی را نشان می دهند و شامل یک لیست قابل پیمایش است که کاربر می تواند آیتم مورد نظر را انتخاب کند، و همچنین یک فیلد متنی (یک شی XmTextField) که در آن مورد انتخاب شده در لیست است. نمایش داده. کاربر می تواند انتخاب انجام شده را ویرایش کند. کادر فهرست و فیلد متنی می‌توانند دارای برچسب‌های توضیحی با استفاده از ویجت‌های مربوط به کلاس XmLabel باشند. شی کلاس XmSelectionBox همچنین شامل سه دکمه فشاری (اشیاء XmPushButton) است. به طور پیش فرض، آنها دارای برچسب "Ok"، "Cancel" و "Help" هستند. و در نهایت، یک عنصر دیگر وجود دارد - دکمه قابل کلیک، که به طور پیش فرض دارای نام "اعمال" است. این موضوع فرعی در ابتدا ایجاد می شود اما در لیست ویجت های مدیریت شده قرار نمی گیرد.

    با استفاده از بلوک انتخاب، کاربر می تواند زیر رشته مورد نیاز خود را در لیست مشخص کند یا آن را در قسمت متن وارد کند. تنظیمات با فشار دادن دکمه "Ok" تایید می شوند.

    کلاس XmSelectionBox شامل:

    XmCommand. اشیاء این کلاس به کاربر اجازه می دهد تا با استفاده از لیستی از دستورات وارد شده از قبل یا با وارد کردن دستوری در یک فیلد متنی که به طور خاص برای این مورد در ویجت ارائه شده است، دستور مورد نظر را انتخاب کند.

    XmFileSelection. اشیاء این کلاس به شما این امکان را می دهند که محتویات فعلی دایرکتوری های مختلف را مشاهده کرده و یک فایل خاص را انتخاب کنید.

    اشیاء این کلاس حاوی عناصر زیر هستند:

    * 2 فیلد متنی: "Filter" و "Selection" (اشیاء کلاس XmNextField).

    * 2 لیست: "Directories" و "Files" (اشیاء کلاس XmList).

    * 4 دکمه فشاری: "Ok"، "Filter"، "Cancel" و "Help" (اشیاء کلاس XmPushButton).

    فیلد متنی "فیلتر" یک ماسک (الگو) را برای انتخاب یک زیرمجموعه خاص از کل مجموعه پرونده هایی که شرایط مشخص شده در این قسمت را برآورده می کند - مطابق با الگو - این زیر مجموعه است که در لیست "Files" نشان داده شده است. لیست "Directories" زیر شاخه های دایرکتوری فعلی را نمایش می دهد. فیلد متنی "انتخاب" فایل (نام آن) انتخاب شده در لیست "Files" را نمایش می دهد و در همان فیلد متنی کاربر می تواند نام کامل فایل مورد نیاز خود را به صورت دستی وارد کند. از چهار دکمه فشاری برای انجام اقدامات مختلف استفاده می شود:

    Ok - یک فایل داده شده را انتخاب کنید.

    فیلتر - به روز رسانی لیست فایل های نمایش داده شده در قسمت متنی "Files" با توجه به ماسک فعلی.

    لغو - پنجره ویجت را می بندد، هیچ فایلی انتخاب نمی شود.

    کمک - یک تماس برای کمک.

    XmMessageBox. اشیاء این کلاس برای ارسال پیام هایی به کاربر که در حین عملکرد برنامه رخ می دهد در نظر گرفته شده است. این ویجت ترکیبی است. دارای ناحیه ای است که در آن یک خط متن (پیام) نمایش داده می شود و یک نماد خاص که نوع پیام را مشخص می کند. علاوه بر این، جسم دارای سه دکمه قابل فشار است. به طور پیش فرض، آنها دارای برچسب: "Ok"، "Cancel" و "Help" هستند.

    XmDrawing Area. اشیاء این کلاس پنجره ای برای ترسیم و نمایش اطلاعات در اختیار برنامه قرار می دهند. خود کلاس پارامترهایی را ارائه نمی دهد که بتوان مستقیماً برای نمایش گرافیک از آنها استفاده کرد. اما فهرست‌های رویه‌های برگشت به تماس موجود در این کلاس به شما امکان می‌دهد اعلان‌هایی در مورد نیاز به ترسیم مجدد پنجره ویجت و دریافت فوکوس ورودی دریافت کنید.

    XmFrame. از اشیاء این کلاس برای تشخیص برخی از اشیاء از سایرین با چرخاندن آنها با یک قاب استفاده می شود. ویژگی ویجت این کلاس این است که آنها می توانند تنها یک Subject را داشته باشند و مدیریت کنند.

    XmPanedWindow. اشیاء این کلاس می توانند ویجت های غیر مشابه را ترکیب کنند. اشیاء فرعی از یکدیگر جدا می شوند و عنصر خاصی بین آنها قرار می گیرد که به آن ارسی می گویند. به نظر می رسد یک مربع کوچک است و برای تغییر اندازه ویجت های کودک استفاده می شود. بنابراین، اگر یک شی از کلاس XmPanedWindow دو شیء فرعی داشته باشد، می توانید کارهای زیر را انجام دهید: "قلاب" را با ماوس بریزید و آن را در جهت درست (پایین به بالا یا چپ-راست) بکشید - در حالی که اندازه طولی است. (اندازه در امتداد جهتی که ارسی "کشیده" شده است) یک شی کودک "به هزینه" دیگری افزایش می یابد (اندازه دیگری کاهش می یابد) ، ابعاد عرضی هر دو شیء فرعی حفظ می شود. . اندازه عرضی یک شی از کلاس XmPanedWindow با حداکثر اندازه مشابه زیراشیاء آن تعیین می شود.

    XmRowColumn. اشیاء این کلاس می توانند ویجت های غیر مشابه را ترکیب کنند. اشیاء فرعی به ترتیب خاصی مرتب شده اند - به شکل ماتریس. کلاس ویجت XmRowColumn اساس ایجاد اشیاء زیر است:

    چک باکس - "بلوک دکمه های قابل بررسی" (به عنوان مثال اشیاء کلاس XmToggleButton یا کلاس XmToggleButtonGadget)؛ از میان دکمه های موجود در "بلوک" می توان چندین دکمه ("روشن") را همزمان انتخاب کرد.

    جعبه رادیویی - "بلوک دکمه های رادیویی" (یعنی اشیاء XmToggleButton یا XmToggleButtonGadget)؛ از میان دکمه‌های موجود در "بلاک" تنها یک دکمه را می توان در یک زمان انتخاب کرد ("فعال").

    منوی کشویی - "منوی کشویی" - یک پنجره زیر منو که پس از انتخاب یک دکمه در منوی سطح بالا (نوار منو) ظاهر می شود. آیتم های منو به صورت عمودی مرتب شده اند.

    منوی گزینه - دکمه با منوی مرتبط؛ هنگامی که دکمه فشار داده می شود، یک پنجره منو ظاهر می شود که از آن یک مقدار پارامتر انتخاب می شود. آیتم های منو به صورت عمودی مرتب شده اند.

    منوی پاپ آپ - "منوی پاپ آپ" که به طور معمول با فشار دادن دکمه سوم ماوس فراخوانی می شود. پنجره منو در محلی که مکان نما آن قرار دارد ظاهر می شود. آیتم های منو به صورت عمودی مرتب شده اند.

    نوار منو - منوی سطح بالا حاوی یک ردیف دکمه (اشیاء کلاس XmCascadeButton یا XmCascadeButtonGadget) که برای فراخوانی زیر منوهای مختلف (منوی کشویی) استفاده می شود. آیتم های منو به صورت افقی مرتب شده اند.

    XmScale. یک شی از این کلاس، یک ناحیه مستطیلی است که حاوی یک لغزنده ثابت (اسلایدر) است که با استفاده از آن کاربر می تواند مقدار پارامتر مرتبط با شی را از محدوده مشخص شده انتخاب کند.

    پنجره XmScrolled. یک شی از این کلاس امکان نمایش و مشاهده برخی اطلاعات (متن، تصویر، لیست) را فراهم می کند. چنین ویجتی، به عنوان یک قاعده، حاوی یک موضوع فرعی است که داده های در نظر گرفته شده برای مشاهده در آن قرار دارد (این می تواند یک شی از کلاس XmText، XmDrawingArea و غیره باشد) برای اطلاعات بیشتر مشاهده راحتداده ها، نوارهای اسکرول افقی و عمودی را می توان استفاده کرد.

    این کلاس شامل یک زیر کلاس است

    XmMainWindow. اشیاء این کلاس یک مؤلفه واسط جداگانه را نشان می دهند که معمولاً از بخش های زیر تشکیل شده است:

    * منوی سطح بالا،

    * پنجره فرمان،

    * "فضای کار،

    * جعبه پیام،

    * و دو نوار پیمایش (افقی و عمودی).

    اشیاء فرعی را می توان با جداکننده ها از هم جدا کرد.

    کلاس های XmMenuShell و XmDialogShell. Motif کلاس شی XmMenuShell را برای ایجاد منوهای مختلف فراهم می کند. این کلاس از کلاس OverrideShell (از Xt) ارث می برد.

    همانطور که قبلاً در هنگام توصیف Xt ذکر شد، کلاس TransientShell برای ایجاد اشیاء برنامه استفاده می شود که از یک طرف مستقیماً با مدیر پنجره تماس می گیرند و از طرف دیگر دارای ویژگی هایی هستند که آنها را از پنجره های معمولی سطح بالا متمایز می کند. یکی از اصلی ترین این ویژگی ها این است که ویجت کلاس TransientShell را نمی توان به حداقل رساند. اما اگر والد به نماد تبدیل شود، از روی صفحه حذف می شوند. این نوع ویجت معمولا برای ایجاد پنجره های کمکی برنامه استفاده می شود.

    Motif ویژگی های مشخص شده کلاس TransientShell را می گیرد و آنها را به یک کلاس XmDialogShell مشتق شده گسترش می دهد. دومی به عنوان هدف پوسته گفتگو عمل می کند.

    ساختار کادر محاوره ای در Motif را می توان به صورت زیر نشان داد:

    شی کلاس XmDialogShell

    یک شیء زیر کلاس XmManager، مانند XmBulletinBoard یا XmForm

    عناصر کنترلی مختلف: دکمه ها، فیلدهای ورودی متن و غیره.

    کتابخانه مجموعه ای از رویه ها دارد که ایجاد ساختار توصیف شده را تسهیل می کند.

    دیالوگ ها

    همانطور که گفته شد، ساخت کادر محاوره ای در Motif به این صورت است: ابتدا یک شی از کلاس XmDialogShell وجود دارد که سپس ویجت یکی از زیر کلاس های کلاس XmManager را شامل می شود، این آبجکت برای میزبانی آبجکت های مختلف استفاده می شود.

    این کتابخانه رویه های خاصی را برای ایجاد دیالوگ ها ارائه می دهد. آنها با نوع ویجت متمایز می شوند که فرزند شی کلاس XmDialogShell است.

    خروجی متن

    این کتابخانه دارای تعداد نسبتاً زیادی ویجت است که برای نمایش اطلاعات متنی استفاده می شود. اینها XmLabel با زیر کلاس‌ها، XmText و غیره هستند. منبع XmNfontlist برای تعیین فونت‌های احتمالی استفاده می‌شود که می‌توان هنگام کشیدن خطوط استفاده کرد. از نوع XmFontlist است. مقدار آن مجموعه ای از جفت های "font"/"font tag" است.

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

    Motif نه تنها ابزارهایی برای کار با خطوط متن نمایش داده شده در یک فونت دارد، بلکه به شما امکان می دهد با اشیایی مانند "خطوط مرکب" کار کنید - یعنی. خطوط متنی که از فونت های زیادی استفاده می کنند. مجموعه ای از ابزارها برای ایجاد چنین رشته هایی، کار با آنها و تبدیل آنها به رشته های معمولی "تک فونت" وجود دارد.

    کار با تصاویر

    Motif خود با تصاویر کار می کند و آنها را در قالب داخلی نشان می دهد که ساده ترین بیت مپ (bitmap) است که با استفاده از ساختار XImage مشخص شده است.

    کنترل فوکوس ورودی

    Motif از دو مدل برای عبور فوکوس ورودی پشتیبانی می کند. اولین مورد ضمنی است (اشاره‌گر): تمرکز به ویجتی داده می‌شود که مکان‌نمای ماوس در آن حرکت می‌کند. مدل دوم صریح است: برای انتقال فوکوس، نشانگر ماوس را در پنجره ویجت قرار دهید و دکمه سمت چپ ماوس را فشار دهید. هنگامی که یک ابزارک یا ابزارک فوکوس ورودی را دریافت می کند، حاشیه آن برجسته می شود.

    علاوه بر این مدل های انتقال و دریافت فوکوس ورودی، مکانیسمی نیز برای انتقال فوکوس ورودی از یک ویجت به ویجت دیگر وجود دارد. اشیاء را می توان در گروه ها ترکیب کرد - این را می توان با تنظیم مقادیر لازم منابع مربوطه انجام داد یا می توان آن را به سیستم داد. در مورد دوم، Motif به طور خودکار ویجت را با استفاده از قوانین داخلی متصل می کند. بنابراین، برای مثال، یک شی از کلاس XmMessageBox شامل سه گروه است: یکی شیء گفتگوی "اصلی" (کلاس XmForm)، دومی "برچسب" است که در آن پیام به کاربر ارائه می شود، و سومی دکمه ها است. فشرده شود.

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

    انتقال فوکوس در یک گروه با استفاده از کلیدهای جهت دار و از گروهی به گروه دیگر - با استفاده از کلید تب انجام می شود (به همین دلیل است که خود گروه ها گروه Tab نامیده می شوند). هنگامی که فوکوس به یک گروه منتقل می شود، تمرکز ورودی در آن به اولین شی که می تواند فوکوس را دریافت کند منتقل می شود (با تنظیم مقدار مناسب منبع مربوطه می توان از دریافت فوکوس یک شی جلوگیری کرد). ترتیبی که فوکوس ورودی در یک گروه ارسال می شود با ترتیبی که ویجت های آن ایجاد می شود یکسان است. در این حالت معمولاً کلید ترکیبی فوکوس را در جهت مخالف حرکت می دهد.

    Motif همچنین تعدادی رویه را ارائه می دهد که می توان از آنها برای کنترل فوکوس ورودی استفاده کرد.

    Lesstif اخیراً یک آنالوگ رایگان از Motif منتشر شده است که کاملاً با آن سازگار است. به آن لستیف می گویند. می توان آن را آزادانه به صورت منبع دریافت کرد و برای پلتفرم های مختلف در اینترنت گردآوری کرد.

    Tk/tcl

    Tcl - read: - مخفف: "tool command language" (زبان دستور ابزاری). این شامل دو بخش است: زبان واقعی و کتابخانه.

    زبان tcl یک نحو ساده دارد و برنامه‌نویسی با آن آسان است. در شکل اصلی، tcl یک مفسر است. این به شما امکان می‌دهد ساختارهای جدیدی مانند توابع یا برنامه‌ها ایجاد کنید، که ابزار قدرتمندی را در اختیار یک برنامه‌نویس ماهر قرار می‌دهد تا نه تنها برنامه‌های کاربردی نهایی، بلکه همچنین توسعه زبان tcl خود را توسعه دهد و سبک خود را ایجاد و حفظ کند.

    کتابخانه tcl امکان استفاده از مفسر زبان tcl را در برنامه های کاربردی فراهم می کند و بنابراین اسکریپت های نوشته شده به زبان دستوری tcl را در برنامه ها گنجانده است. این کتابخانه حاوی یک تحلیلگر واژگانی زبان tcl است، توابعی که دستورات داخلی tcl را پیاده‌سازی می‌کند و به شما امکان می‌دهد تا زیر روال‌های سفارشی (تماس‌های تابع) را به دستورات tcl متصل کنید. این ترتیب برای هر دو C و C ++ امکان پذیر است.

    Tk یک جعبه ابزار سازگار با Motif برای توسعه رابط های گرافیکی کاربر در محیط X Window است. علاوه بر رابط استاندارد برای C و C++، شامل یک رابط برای tcl است که امکان استفاده از امکانات Tk را از داخل محیط مفسر دستور tcl فراهم می‌کند. این بدان معنی است که علاوه بر برنامه نویسی استاندارد در C و C++، بخش های رابط برنامه را می توان به عنوان اسکریپت در زبان tcl پیاده سازی کرد و این بخش های رابط (دیالوگ ها، طرح های صفحه و غیره) را می توان به صورت پویا در طول عملیات ویرایش کرد. برنامه نهایی با استفاده از دستورات tcl.

    محیط پنجره "wish" به شما این امکان را می دهد که برنامه هایی با رابط کاربری گرافیکی تنها با استفاده از امکانات زبان tcl ایجاد کنید.

    اسناد مشابه

      سیستم های برنامه نویسی و امکانات گرافیکی آنها توسعه یک دوره چند رسانه ای که جذب موثر مبحث "ویژگی های گرافیکی زبان برنامه نویسی" را توسط دانش آموزان مدرسه پایه (به عنوان مثال زبان های برنامه نویسی پایه و پاسکال) ترویج می کند.

      پایان نامه، اضافه شده 12/29/2010

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

      ارائه، اضافه شده در 2012/05/22

      برنامه نویسی و قابلیت های گرافیکی ساده. ساختارهای پایه برای view و دو سازنده با آرگومان. مختصات نقطه بیشتر و مقداردهی اولیه یک نقطه جدید. ذخیره و تغییر مختصات گوشه سمت چپ بالای مستطیل.

      کار آزمایشگاهی، اضافه شده در 12/01/2011

      وکتور گرافیک کامپیوتری. گرافیک های اولیه ویژگی های گرافیکی زبان برنامه نویسی پاسکال راهنمای مطالعه گرافیک در زبان برنامه نویسی پاسکال. ساخت نمودار توابع.

      مقاله ترم، اضافه شده 06/13/2007

      توسعه یک برنامه برای سیستم عامل ویندوز با استفاده از VisualC++ (6.0، .NET). بررسی مبانی شبیه سازی نرم افزاری عملکرد دستگاه (کتری برقی). قوانین ایجاد کلاس های دستگاه و رابط گرافیکی آن.

      مقاله ترم، اضافه شده 06/03/2014

      گرافیک کامپیوتری. نمایش اطلاعات گرافیکی در کامپیوتر فرمت های گرافیکی ویرایشگر گرافیکی گرافیک برداری. کورل دراو. ویژگی های برنامه، رابط. قابلیت های تکنولوژیکی و استفاده از CorelDraw.

      مقاله ترم، اضافه شده در 2007/05/19

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

      مقاله ترم، اضافه شده 10/15/2010

      ماهیت برنامه نویسی با استفاده از محیط دلفی 7 و قابلیت های گرافیکی اصلی آن. ساختار یک ماژول برنامه کامپایل شده مستقل و اصول آن. تکنیک های اساسی برای کار با رویه های گرافیکی، ساخت قوس، دایره و بیضی.

      مقاله ترم، اضافه شده 12/16/2011

      حوزه گرافیک کامپیوتری. انواع گرافیک کامپیوتری. وضوح رنگ و مدل های رنگ. نرم افزاری برای ایجاد، مشاهده و پردازش اطلاعات گرافیکی. امکانات گرافیکی واژه پردازها، ویرایشگرهای گرافیکی.

      تست، اضافه شده در 06/07/2010

      تکامل رابط های گرافیکی کاربر X Window System Device و Window Managers. شرح دسکتاپ و برنامه های کاربردی KDE و GNOME. مروری بر اصول اولیه سازماندهی رابط در سیستم ویندوز، توضیحات بسته کاربردی آن.

    قانون 2: بار روی کاربر را کاهش دهید

    قانون 3: رابط را سازگار کنید

    رهنمودها

    برنامه "منو شروع مرتب"

    نتیجه

    ادبیات

    معرفی

    قانون طلایی یک طراح این است که هرگز با دیگران کاری را انجام نده که با تو کردند.

    تریسی لئونارد

    چرا رعایت اصول ساخت رابط کاربری ضروری است؟

    نرم افزار باید با در نظر گرفتن نیازها و خواسته های کاربر توسعه یابد - سیستم باید با کاربر سازگار شود. به همین دلیل است که اصول طراحی بسیار مهم است.

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

    اصول طراحی رابط، مفاهیم و نمایش های سطح بالایی هستند که می توانند در طراحی نرم افزار استفاده شوند. شما باید تعیین کنید که کدام یک از اصول برای سیستم شما مهم تر و قابل قبول تر است.

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

    سه اصل طراحی رابط کاربری به صورت زیر فرموله شده است:

    1) کنترل رابط کاربری؛

    2) کاهش بار روی حافظه کاربر.

    3) سازگاری UI.

    کجا می توان اصول طراحی رابط کاربری را پیدا کرد

    هانسن اولین فهرست اصول طراحی را ارائه کرد. اصول عبارتند از:

    1) کاربر را بشناسید.

    2) کاهش حافظه

    3) بهینه سازی عملیات؛

    4) اشکالات را برطرف کنید.

    بسیاری از تولیدکنندگان بزرگ سیستم عامل، محصولات جدید خود را به بازار عرضه می کنند، کتابچه ها و دستورالعمل های مربوطه را منتشر می کنند. این انتشارات اصول رویکرد طراحی رابط را نشان می دهد. این راهنماها توسط Apple Computer, Inc منتشر شده است. (1992)، IBM Corporation (1992)، Microsoft Corporation (1995) و UNIX OSF/Motif (1993).

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

    اهمیت رعایت اصول

    ناسازگاری رابط می تواند میلیون ها دلار هزینه از دست دادن بهره وری و افزایش هزینه های پشتیبانی را برای یک شرکت بزرگ به همراه داشته باشد. - جسی بریست.

    این اصول برای همه نرم‌افزارها و سخت‌افزارها، در انواع و سبک‌های رابط‌ها اعمال می‌شود. آنها برای مدت طولانی توسعه یافته بودند: تحقیقات در زمینه رابط نرم افزار انجام شد، توسعه انجام شد و با کاربران بسیاری از سیستم عامل های کامپیوتری، از جمله Macintosh و PC مصاحبه شد.

    این اصول در آزمون زمان و ظهور فناوری های جدید رایانه ای مقاومت کرده اند. یاکوب نیلسن خاطرنشان کرد: "اصول اساسی باقی خواهند ماند حتی اگر برنامه دارای یک طراحی سه بعدی آینده نگرانه با "DataGlove" برای ورودی، تشخیص حرکت و تصاویر ویدئویی زنده باشد. آنها مرتبط خواهند بود زیرا ایده اصلی گفتگو را بیان می کنند. ماشین با استفاده از دستورات" .

    تفسیر این اصول به سخت افزار، سیستم عامل، اجزای رابط کاربری و وظایف آن بستگی دارد. اغلب، یک تصمیم تجاری، استفاده از اصول توسط طراحان را نادیده می گیرد. مدل‌های کاربر و طراح نیز متفاوت هستند و بر نحوه اعمال اصول تأثیر می‌گذارند. در برخی از مراحل مهم در توسعه یک پروژه، ممکن است این سوال مطرح شود: "بعد چه اتفاقی می افتد؟". پاسخ باید این باشد: "آنچه کاربر می خواهد!".

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

    قوانین طراحی رابط کاربری

    آن را ساده‌تر کنید، اما نه ابتدایی‌تر».

    آلبرت انیشتین

    قانون 1: کنترل را به کاربر بدهید

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

    اصولی که به کاربر کنترل سیستم را می دهد:

    1) از حالت ها با احتیاط استفاده کنید.

    2) به کاربر امکان انتخاب را بدهد: کار با ماوس یا صفحه کلید یا ترکیبی از آنها.

    3) به کاربر اجازه می دهد توجه را متمرکز کند.

    4) پیام هایی را نشان دهید که به او در کارش کمک می کند.

    5) ایجاد شرایط برای اقدامات فوری و برگشت پذیر و همچنین بازخورد.

    6) ایجاد مسیرها و خروجی های مناسب.

    7) سیستم را با کاربرانی با سطوح مختلف آموزش تطبیق دهید.

    8) رابط کاربری را قابل درک تر کنید.

    9) به کاربر این فرصت را می دهد که رابط را مطابق میل شما سفارشی کند.

    10) به کاربر اجازه می دهد که مستقیماً اشیاء رابط را دستکاری کند.

    از حالت ها عاقلانه استفاده کنید

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

    به شخص اجازه دهید از ماوس و صفحه کلید استفاده کند

    امکان کار با کیبورد با استفاده از کیبورد به جای ماوس. این بدان معنی است که کار برای کاربر راحت تر خواهد بود، او یا نمی تواند از آن استفاده کند یا آن را ندارد. نوار ابزار برای سرعت بخشیدن به کار شما هنگام استفاده از ماوس طراحی شده است. با این حال، هنگام کار با صفحه کلید، نمی توان به آنها دسترسی پیدا کرد - برای چنین مواردی، منوهای "کشویی" ارائه شده است.

    به کاربر اجازه دهید توجه خود را تغییر دهد

    کاربران را مجبور نکنید که جریان های کاری را که شروع کرده اند به پایان برسانند. به آنها یک انتخاب بدهید - داده ها را باطل کنید یا نگه دارید و به همان جایی که متوقف کردند برگردید. اجازه دهید کاربران این فرصت را داشته باشند که روند کار در برنامه را کنترل کنند.

    نمایش پیام ها و متن های توضیحی

    از اصطلاحات کاربر پسند در سراسر رابط استفاده کنید. آنها مجبور نیستند در مورد بیت ها و بایت ها بدانند!

    شما باید لحن مناسب را در پیام ها و دعوت نامه ها انتخاب کنید. به همان اندازه مهم است که در برابر مشکلات و اشتباهات بیمه شوید. اصطلاحات بد و لحن نادرست باعث می شود که کاربران خود را به خاطر خطاهای رخ داده سرزنش کنند.

    اقدام و بازخورد فوری و برگشت پذیر ارائه دهید

    هر محصول نرم افزاری باید شامل توابع UNDO و REDO باشد. باید به کاربر اطلاع داده شود که این اقدامقابل برگشت نیست و در صورت امکان اجازه دهید اقدام جایگزین. دائماً فرد را در جریان آنچه در آن لحظه در حال رخ دادن است، نگه دارید.

    مسیرها و خروجی های روشن را فراهم کنید

    کاربران باید از رابط کاربری هر محصول نرم افزاری لذت ببرند. حتی رابط های مورد استفاده در صنعت نیز نباید کاربر را بترسانند، او نباید از فشار دادن دکمه ها یا حرکت به صفحه دیگری بترسد. تهاجم اینترنت نشان داده است که ناوبری تکنیک اصلی تعاملی در اینترنت است. اگر کاربر بفهمد که چگونه به صفحه مورد نظر در WWW برسد، 80 درصد احتمال دارد که رابط را درک کند. مردم خیلی سریع نحوه کار با مرورگر را یاد می گیرند.

    با کاربرانی با سطوح مهارت متفاوت سازگار شوید

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

    رابط کاربری را "شفاف" کنید

    رابط کاربری بخش "افسانه ای" محصول نرم افزاری است. با یک پروژه خوب، کاربران حتی "حضور" آن را احساس نمی کنند. اگر طراحی ضعیفی داشته باشد، کاربران باید حتی تلاش زیادی برای استفاده مؤثر از محصول نرم افزاری انجام دهند. وظیفه رابط این است که به مردم کمک کند احساس کنند در "درون" کامپیوتر هستند، آزادانه دستکاری و کار با اشیاء را انجام دهند. به این میگن رابط "شفاف"!