X oynani tanlash - X Window selection - Wikipedia

Tanlovlar, tamponlar kesilganva sudrab olib tashlash da ishlatiladigan mexanizmlardir X oyna tizimi ruxsat berish foydalanuvchi biridan ma'lumotlarni uzatish oyna boshqasiga. Tanlovlar va kesilgan bufer odatda foydalanuvchi oynadagi matnni yoki boshqa ma'lumotlarni tanlab, boshqasiga qo'yganda ishlatiladi. Drag-and-drop foydalanuvchi oynada biror narsani tanlaganida, so'ngra tanlovni bosganda va boshqa oynaga sudrab borishda ishlatiladi.

Ikkala oynani ikkita turli xil dasturlar boshqarishi mumkinligi sababli, ushbu mexanizmlar ma'lumot almashish uchun bir xil X serverga ulangan ikki xil mijozni talab qiladi. The X Window System asosiy protokoli tanlov almashinuviga xos bo'lgan ba'zi so'rovlar va hodisalarni o'z ichiga oladi, lekin uzatish asosan tanlovni o'tkazishga xos bo'lmagan voqealarni yuborish va oyna xususiyatlari yordamida amalga oshiriladi.

Ma'lumotlarning har xil turlari uzatilishi mumkin: bu odatda matn, shuningdek tasvir, raqam, ob'ektlar ro'yxati va boshqalar bo'lishi mumkin. Quyida faqat matnning holati ko'rib chiqiladi.

Faol va passiv tanlovlar

Ma'lumotlarni uzatish usullari tanlangan ma'lumotlar bilan ishlaydigan mijoz, uni talab qilgan mijozga o'tkazishda faol ishtirok etishiga qarab, faol va passiv deb tasniflanishi mumkin:

Passiv
ba'zi ma'lumotlar tanlanganida, ushbu tanlov amalga oshirilgan oynani boshqaradigan mijoz uni biron bir joyga o'tkazadi va endi unga ahamiyat berishning hojati yo'q;
Faol
ma'lumotni mijozga uzatish, mijozni tanlovni "ushlab turishi" ni birjada faol ishtirok etishni talab qiladi.

Tanlash va sudrab olib tashlash faol mexanizmlardir: oynada biron bir matn tanlanganidan so'ng, deraza bilan ishlovchi mijoz ma'lumotlarni so'ragan dasturga o'tkazish protokolini faol ravishda qo'llab-quvvatlashi kerak. Aksincha, kesilgan buferlar passiv mexanizmdir: ba'zi bir matn tanlanganidan so'ng, u kesilgan buferga o'tkaziladi va hatto deraza bilan ishlaydigan dastur tugatilsa va oyna yo'q qilinsa ham o'sha erda qoladi. X buferi passiv mexanizm bo'lib, tanlovni o'tkazayotgan mijoz tomonidan qabul qilinadi, ammo buni talab qiladi xclipboard har qanday keyingi ma'lumotlarni uzatishni faol qo'llab-quvvatlash uchun mijoz.

Faol mexanizmlarning afzalligi shundaki, ma'lumotlarni uzatishdan oldin boshqa formatga o'tkazish mumkin. Xususan, ma'lumotlarni qabul qiluvchi mijoz tanlov ma'lumotlarini mos shaklga o'tkazilishini talab qilishi mumkin. Agar jo'natuvchi mijoz buni rad etsa, qabul qiluvchi boshqa formatni talab qilishi mumkin. Masalan, matnni ko'rsatish qismi HTML kod matn sifatida faqat matn bilan ishlay oladigan so'rov beruvchiga o'tkazilishi mumkin, lekin so'rovchi uni boshqarishi mumkin bo'lsa, HTML-kod sifatida ham o'tkazilishi mumkin. Bunday formatdagi muzokaralarni passiv mexanizmlar bilan amalga oshirish mumkin emas, bunda tanlovni o'tkazayotgan mijoz (va unga semantikani berib) tanlovni o'tkazadi va keyinchalik uni talab qilgan mijozga o'tkazishda ishtirok etmaydi.

Faol mexanizmlarning yana bir afzalligi shundaki, ma'lumotlarning katta qismlari bitta emas, balki ketma-ketlikda uzatilishi mumkin. Passiv mexanizmlar buning o'rniga barcha ma'lumotlarni tanlov egasidan biron bir joyga uzatishni talab qiladi, so'ngra uni talab qilgan mijozga yana uzatadi.

Passiv mexanizmlarning afzalligi shundaki, uzatish ma'lumotlarga ega bo'lgan mijoz tugaganidan keyin ham amalga oshirilishi mumkin. Ma'lumotlarga ega bo'lgan mijozni o'tkazishda faol ishtirok etishni talab qiladigan faol mexanizmlarda bu mumkin emas.

Tanlovlar

X oyna tizimi o'zboshimchalik bilan tanlovlarni qo'llab-quvvatlaydi; har bir tanlov mag'lubiyat bilan aniqlanadi (aniqrog'i, an atom). Eng ko'p ishlatiladigan tanlov Boshlang'ich tanlov.

Quyidagi so'rovlar tanlovni o'tkazishga xosdir, ammo boshqa so'rovlar ham o'z ichiga oladi:

  1. tanlov qaysi oynaga tegishli ekanligini bilish uchun so'rov
  2. tanlovga tegishli oynani o'rnatish uchun so'rov
  3. tanlovni aylantirish uchun so'rov

Tanlov egasi, odatda, agar mavjud bo'lsa, tanlangan matn joylashgan oyna. Agar foydalanuvchi oynada biron bir matnni tanlasa, deraza bilan ishlovchi mijoz serverga oyna tanlovning egasi ekanligini aytishi kerak.

Agar foydalanuvchi tanlovni boshqa oynaga joylashtirmoqchi bo'lsa, u oynaning ishlov beruvchisi tanlangan matnni boshqa mijozdan olish uchun protokolni boshlaydi. Ushbu protokol yuqoridagi ro'yxatning ikkinchi va uchinchi so'rovlarini o'z ichiga oladi va X protokoli bilan emas, balki Mijozlararo aloqa bo'yicha konventsiya qo'llanmasi (ICCCM).

Xususan, maqsadli mijoz serverdan qaysi oynada tanlov mavjudligini so'rash bilan boshlanadi. Keyin ikkita mijoz tanlovni server orqali o'tkazadi. Ushbu almashinuv oynaning xususiyatini va oynaga biriktirilgan o'zboshimchalik bilan ma'lumotlarni o'z ichiga oladi. Agar tanlov mazmuni birdaniga o'tkazilishi uchun etarlicha kichik deb hisoblansa, amalga oshiriladigan qadamlar quyidagilardir:

  1. tanlovni qabul qiluvchisi oynaning xususiyatini ko'rsatib, tanlovni o'zgartirishni talab qiladi (bu matn yopishtirilishi kerak bo'lgan oyna bo'lishi mumkin)
  2. bunga javoban server tanlovning amaldagi egasiga a yuboradi SelectionRequest voqea;
  3. egasi tanlangan matnni so'rovchi tomonidan yuborilgan oynaning xususiyatiga joylashtiradi ChangeProperty; serverga so'rov yuboring
  4. egasi so'rovchini yuborish uchun serverga so'rov yuboradi a TanlashNotify tanlov o'tkazilganligi to'g'risida xabar berish
  5. endi so'rovchi bir yoki bir nechtasini yuborish orqali oynaning xususiyatidagi tanlovni o'qishi mumkin GetProperty serverga so'rovlar;
  6. talabnoma beruvchi mulkni buzadi; agar egasi bu haqda xabardor qilishni so'ragan bo'lsa, u yuboriladi PropertyNotify tadbir.

Agar tarkib katta bo'lsa, uni qismlarga o'tkazish kerak. Bunday holda, ikkala mijoz ham qiziqish bildirmoqda PropertyNotify voqealar: shu tariqa tanlov egasi tanlov qachon o'qilganligini, so'rovchi esa molga boshqa qism qachon joylashtirilganligini biladi.

Bufer

Eng ko'p ishlatiladigan tanlov Boshlang'ich tanlash va foydalanuvchi ba'zi ma'lumotlarni tanlaganda ishlatiladi. The CLIPPOARD tanlov foydalanuvchi ba'zi ma'lumotlarni tanlaganida va ularni buferga "ko'chirishni" aniq talab qilganida, masalan, dasturning "Tahrirlash" menyusi ostida "Nusxalash" ni chaqirganda ishlatiladi. Bilan bog'liq bo'lgan "Yopish" so'rovi ma'lumotlarning natijalariga olib keladi CLIPPOARD tanlovdan foydalanilmoqda.

Asosiy protokol darajasida Boshlang'ich va CLIPPOARD tanlovlar farq qilmaydi. Ammo xclipboard mijoz ularni boshqacha tutishga majbur qiladi. Xususan, boshqa mijozning egalik huquqini tasdiqlashi CLIPPOARD tanlash, ushbu dastur so'raydi va uni oynada aks ettiradi. Ushbu tanlov uchun boshqa har qanday so'rov ko'rib chiqiladi xclipboard. Shunday qilib, tanlovning mazmuni mijoz uni nusxalash orqali omon qoladi.

Tamponlarni kesib oling

Kesilgan buferlar ma'lumotlar uzatishning yana bir mexanizmi, xususan tanlangan matn. Ular oyna xususiyatlari ning ildiz oynasi, nomi berilgan CUT_BUFFER1Va hokazo. Tanlovlardan farqli o'laroq, kesilgan buferlar mijozlar o'rtasida to'g'ridan-to'g'ri o'zaro aloqani o'z ichiga olmaydi. Aksincha, oynada matn tanlanganida, oyna egasi ushbu matnni chaqirilgan ildiz oynasining xususiyatiga ko'chiradi CUT_BUFFER1. Foydalanuvchi matnni boshqa oynaga joylashtirganda, oyna egasi ildiz oynasining ushbu xususiyatini o'qiydi.

The xcutsel dastur tanlov va kesilgan tamponlar o'rtasida ma'lumotlarni uzatadi va xcb dastur kesilgan buferlarga har xil kirish imkoniyatini beradi.

Kesilgan tamponlar eskirgan hisoblanadi.[1]

XDND

Drag-and-drop X oyna tizimida Xdnd konventsiyasi tomonidan tartibga solinadi.[2] Agar foydalanuvchi tanlangan matnni oynaga sudrab olib sichqoncha tugmachasini qo'yib yuborsa, ma'lumotlar almashinuvi asosiy tanlovda bo'lgani kabi amalga oshiriladi. Drag-and-drop surish paytida sodir bo'ladigan narsa bilan murakkablashadi. Ya'ni, foydalanuvchi tanlovni ish stolining yoki oynaning turli qismlariga sudrab borganda, foydalanuvchi matnni tashlab yuborish mumkinmi yoki yo'qligini aytib berishni kutadi. Xususan, maqsad tushishni qabul qilishi yoki qilmasligi to'g'risida vizual mulohazalarni ko'rsatishi kerak va amalga oshiriladigan harakatni ko'rsatish uchun kursor o'zgarishi kerak; masalan, nusxa ko'chirish yoki ko'chirish.

Xdnd protokolida matn tanlanib, tortishish boshlanadigan oyna deyiladi manba; kursor suzib o'tadigan oyna deyiladi nishon. Manba va maqsad o'rtasidagi aloqani manba boshqaradi, chunki manba kursorni "ushlaydi". Maqsad hatto tortib olib tashlash sodir bo'lishini bilishi uchun manba va maqsad o'rtasida almashinuv zarur. Manba kursorning shaklini o'zi belgilaganligi sababli, kursorni yangilash uchun manba maqsaddan javob olishi kerak. Bunga qo'shimcha ravishda, maqsad tomchining qaerda bo'lishini ko'rsatish uchun bombardimon chizig'ini chizish kerak bo'lishi mumkin va tomchining qabul qilinishi kursorning aniq joylashgan joyiga bog'liq bo'lishi mumkinligi sababli, kursor harakatlanayotganda ushbu almashinuv bir necha bor sodir bo'lishi kerak. Darhaqiqat, kursor harakatlanmasa ham, kursor ko'rish maydonining chekkasiga yaqinlashganda maqsadni siljitish uchun xabarlarni almashish kerak. Aks holda, foydalanuvchi faqat maqsadning ko'rinadigan qismiga tushishi mumkin.

Dastur, nomlangan xususiyatni yaratib, oyna ochilish maqsadi bo'lishi mumkinligini aytishi mumkin XdndAware unda dastur qo'llab-quvvatlaydigan protokolning eng yuqori versiyasi mavjud. Shunday qilib, yangi versiyalarni qo'llab-quvvatlaydigan dasturlar to'g'ri ishlashi uchun eski versiyalarga qaytishi mumkin. Bundan tashqari, Xdnd-ni qo'llab-quvvatlamasdan yozilgan barcha dasturlar e'tiborga olinmaydi.

Kursor maqsad oynasiga kirganda, manba mavjudligini tekshiradi XdndAware ushbu oynadagi xususiyat. Agar ushbu xususiyat mavjud bo'lsa, almashinuv boshlanadi:

  • manba nishonga voqea yuborish orqali ba'zi ma'lumotlarni sudrab borishda kursor maqsadga kirganligini aytadi XdndEnter
  • maqsad ushbu hodisani ko'rib chiqish orqali va ehtimol manba bilan o'zaro ta'sirlashish orqali qaysi turdagi ma'lumotlarni sudrab borishini (matn, rasm va hk) topishi mumkin.

Kursor maqsad oynasida bo'lsa:

  • manba yuboradi XdndPosition maqsadni kursor hozirda qayerda ekanligini aytib beradigan voqealar
  • maqsad javob beradi XdndStatus ma'lumotlar hozirgi holatga tushib qolishi mumkinmi yoki yo'qligini manbaga etkazish uchun voqealar
  • manba xabar yuboradi XdndLeave yoki XdndDrop kursor mos ravishda oynadan chiqib ketganda yoki tugma qo'yilganda

Agar foydalanuvchi tushib qolsa, maqsad odatdagidek tanlovni manbadan talab qiladi. Tanlovni o'tkazish tugagandan so'ng, maqsad an yuboradi XdndFinish transfer muvaffaqiyatli amalga oshirilganligini manbaga etkazish uchun tadbir.

Xulosa qilib aytganda, protokol manba tomonidan boshqariladi, bu esa nishonni kursor bilan nima sodir bo'lishidan xabardor qiladi. Javob sifatida nishon manbaga tomchining qabul qilinishini yoki qabul qilinmasligini aytadi. Shuningdek, foydalanuvchi sichqoncha tugmachasini qo'yib yuborganida ham maqsad haqida ma'lumot olish kerak, chunki bu hodisa maqsadga yo'naltirilgan protokol bo'lgan tanlov uchun muntazam so'rovni boshlaydi.

Yuqorida Xdnd konventsiyasining sudrab tortish uchun tavsifi berilgan. Motif, OffiX va Amulet-da tortib tushirish uchun turli xil konventsiyalar qo'llaniladi.

XDS

The To'g'ridan-to'g'ri saqlash protokoli, qisqartirilgan XDS (uchun X Oyna D.to'g'ri emas Save Protocol), a dasturiy ta'minot protokoli tejashni qo'llab-quvvatlaydi fayllar tomonidan sudrab yurish ularni fayl menejeri derazalar. XDS ustiga o'rnatilgan XDND protokol.[3][4]

Dasturlar

Quyidagi dasturlar ma'lumotlar uzatish mexanizmlari bo'yicha ishlaydi:

  • xcutsel selektsiyalardan ma'lumotlarni buferlarni kesish uchun yoki aksincha uzatadi
  • xclipboard, glipper (Gnome ), sun'iy yo'ldosh (LXDE ) va klipper (KDE ) bor bufer menejerlari, ehtimol wmcliphist ham
  • xcb kesilgan buferlarning tarkibini ko'rsatadi va foydalanuvchiga ularni boshqarishga imkon beradi
  • tanlash, xclip, xsel va xcopy ma'lumotni X tanloviga yoki undan nusxa ko'chiradigan buyruq qatori dasturlari. xcopy-da X tanlovi muammolarini disk raskadrovka qilishga yordam beradigan so'z varianti mavjud. parcellite shuningdek buyruq satridan ma'lum X tanlovlarini o'qish va ularga yozish qobiliyatiga ega.
  • sinergiya - bu bir nechta operatsion tizimlarda ishlaydigan bir nechta kompyuterlar o'rtasida buferni almashish imkonini beruvchi o'zaro faoliyat platforma vositasi
  • xfce4-clipman-plagin - bu "Xfce4 paneli uchun bufer tarixining plagini" va shuningdek bufer menejeri
  • xtranslate Xselection-dagi so'zlarni ko'p tilli lug'atda qidiradi
  • avtokutsel kesilgan bufer va tanlov buferini sinxronlaydi

Shuningdek qarang

Adabiyotlar

  1. ^ Zawinski, J. W. (2002). X tanlovi, tamponlarni kesib, halqalarni o'ldirish. 2010 yil 13-iyulda olingan http://www.jwz.org/doc/x-cut-and-paste.html
  2. ^ X oyna tizimi uchun tortib olib tashlash protokoli, dan http://johnlindal.wix.com/xdnd
  3. ^ Lindal, Jon. "Drag-and-Drop orqali fayllarni saqlash: X oyna tizimi uchun to'g'ridan-to'g'ri saqlash protokoli". Arxivlandi asl nusxasi 2016 yil 5 martda.
  4. ^ "Drag-and-Drop orqali fayllarni saqlash: X oyna tizimi uchun to'g'ridan-to'g'ri saqlash protokoli". freedesktop.org. Arxivlandi asl nusxasi 2015 yil 22 martda.

Tashqi havolalar