ব্লক, ওয়ার্কস্পেস মন্তব্য এবং বুদবুদের মতো এর বিল্ট-ইন উপাদানগুলির জন্য ব্লকলি কপি, কাট এবং পেস্ট অপারেশন সমর্থন করে।
ডিফল্ট ক্লিপবোর্ড আচরণ
ব্লকলি কোর কীবোর্ড শর্টকাটগুলির সাথে আসে যা ব্লক, ওয়ার্কস্পেস মন্তব্য এবং ICopyable
, IDraggable
, এবং IDeletable
ইন্টারফেসগুলিকে বাস্তবায়ন করে এমন অন্য কোনও উপাদান কাটা, অনুলিপি বা পেস্ট করতে পারে৷ এটি একটি ব্লক নকল করার জন্য একটি প্রসঙ্গ মেনু বিকল্পের সাথে আসে। আপনি প্রয়োজন অনুসারে সেই ডিফল্ট শর্টকাট এবং মেনু আইটেমগুলি সংশোধন বা সরাতে পারেন।
ডিফল্ট ক্লিপবোর্ড বাস্তবায়নে, অনুলিপিযোগ্য অবজেক্টগুলি শুধুমাত্র সেই ওয়ার্কস্পেসে পেস্ট করা যাবে যেখান থেকে তারা কপি করা হয়েছে, অথবা যদি ফ্লাইআউট থেকে কপি করা হয় তাহলে টার্গেট ওয়ার্কস্পেসে। এর মানে হল আপনি একটি ফ্লাইআউট থেকে সেই ফ্লাইআউটের টার্গেট ওয়ার্কস্পেসে একটি ব্লক কপি করতে পারেন, কিন্তু আপনি একটি প্রধান ওয়ার্কস্পেস থেকে অন্য একটি ব্লক কপি করতে পারবেন না।
ওয়ার্কস্পেস এবং ট্যাব জুড়ে কপি এবং পেস্ট করুন
আপনি যদি ব্যবহারকারীদের একটি ওয়ার্কস্পেস থেকে ব্লক কপি করতে এবং অন্য ওয়ার্কস্পেসে পেস্ট করার অনুমতি দিতে চান, অথবা অন্য ট্যাবে চলমান আপনার অ্যাপ্লিকেশনের একটি কপির একটি ওয়ার্কস্পেসেও পেস্ট করতে চান, তাহলে আপনি @blockly/plugin-cross-tab-copy-paste
প্লাগইনটি ইনস্টল করতে পারেন।
কাস্টম ক্লিপবোর্ড আচরণ
আপনি যদি ভিন্ন আচরণ চান, তাহলে আপনি Blockly-এর সাথে আসা কীবোর্ড শর্টকাটগুলি আনইনস্টল করে এবং ভিন্নভাবে কাজ করে এমন অন্যদের ইনস্টল করে একটি কাস্টম ক্লিপবোর্ড বাস্তবায়ন করতে পারেন। এটিকে সহজতর করার জন্য, আপনি Blockly.clipboard
নামস্থানে পদ্ধতিগুলি ব্যবহার করতে পারেন কপি, পেস্ট বা আরও সূক্ষ্ম নিয়ন্ত্রণের জন্য যেমন একটি বস্তু যেখান থেকে অনুলিপি করা হয়েছিল সেটি ওয়ার্কস্পেস সেট করা।
কাস্টম অনুলিপিযোগ্য বস্তু
স্বেচ্ছাচারী আইটেমগুলিকে পাঁচটি ইন্টারফেস ব্যবহার করে কপি/পেস্ট সিস্টেমের সাথে সামঞ্জস্যপূর্ণ করা যেতে পারে: ICopyable
, IDraggable
, এবং IDeletable
যা কপি করা যায় এমন বস্তুর প্রতিনিধিত্ব করার জন্য, ICopyData
কপি করা বস্তুর প্রতিনিধিত্ব করার জন্য এবং IPaster
এমন বস্তুর প্রতিনিধিত্ব করার জন্য যা কপি ডেটাকে আবার কপিযোগ্য বস্তুতে পরিণত করতে পারে। প্রতিটি ধরনের ICopyable
জন্য একটি সংশ্লিষ্ট IPaster
প্রয়োজন যা সেই ডেটা পেস্ট করতে পারে।
যেকোন অবজেক্ট যা ICopyable
, IDraggable
, এবং IDeletable
প্রয়োগ করে এবং যেগুলির একটি সংশ্লিষ্ট IPaster
এবং ICopyData
আছে স্বয়ংক্রিয়ভাবে ডিফল্ট ক্লিপবোর্ড সিস্টেমের সাথে কাজ করবে৷
খুব কম পরিস্থিতি রয়েছে যেখানে আপনি একটি কাস্টম অনুলিপিযোগ্য বা একটি কাস্টম পেস্টার (যেমন মাল্টিসেলেক্ট প্লাগইন ) প্রয়োগ করতে চান, কারণ অনুলিপিযোগ্য বস্তুগুলি রেন্ডার করা হয়, এবং আপনি ব্লকলিতে নতুন রেন্ডার করা বস্তু যোগ করতে পারবেন না। একটি ওয়ার্কস্পেসের মধ্যে থাকা একমাত্র রেন্ডার করা বস্তু হল ব্লক, বুদবুদ এবং ওয়ার্কস্পেস কমেন্ট।
একটি অনুলিপিযোগ্য বাস্তবায়ন
একটি অনুলিপিযোগ্য বস্তু তৈরি করতে, আপনাকে ICopyable
, IDraggable
, এবং IDeletable
ইন্টারফেসগুলি বাস্তবায়ন করতে হবে। পরের দুটি ইন্টারফেস প্রয়োজন যাতে একটি আটকানো বস্তুকে ম্যানিপুলেট করে মুছে ফেলা যায়।
নির্বাচনযোগ্য
ICopyable
ইন্টারফেস ISelectable
ইন্টারফেসকে প্রসারিত করে, যার মানে আপনাকে সেই পদ্ধতি এবং বৈশিষ্ট্যগুলিও বাস্তবায়ন করতে হবে।
নির্বাচনযোগ্য হওয়া প্রয়োজন কারণ কীবোর্ড শর্টকাটগুলি নির্বাচিত বস্তুর দিকে তাকায় যা অনুলিপি করতে হবে।
class MyCopyable implements ISelectable {
constructor(workspace) {
this.id = Blockly.utils.idGenerator.genUid();
this.workspace = workspace;
}
select() {
// Visually indicate this draggable is selected.
}
unselect() {
// Visually indicate this draggable is not selected.
}
}
অনুলিপিযোগ্য
ICopyable
ইন্টারফেসের নিজেই শুধুমাত্র একটি প্রয়োজনীয় পদ্ধতি রয়েছে, toCopyData
, যা অনুলিপিযোগ্য বস্তুর অবস্থার JSON-ক্রমিক উপস্থাপনা প্রদান করে, যা অনুলিপিযোগ্য বস্তুটি পুনরায় তৈরি করতে ব্যবহার করা যেতে পারে।
অনুলিপি ডেটাতে অবশ্যই একটি paster
সম্পত্তি অন্তর্ভুক্ত করতে হবে, যা পেস্টারের সাথে সম্পর্কিত নিবন্ধিত স্ট্রিং-নাম ধারণ করে যা এই অনুলিপি ডেটা পেস্ট করবে। পেস্টার সম্পর্কে আরও তথ্যের জন্য, একটি পেস্টার প্রয়োগ করুন দেখুন।
class MyCopyable implements ICopyable {
constructor(workspace, state) {
this.workspace = workspace;
this.myState = state;
}
toCopyData() {
return {
// This string matches the string used to register the paster.
paster: 'MY_PASTER',
state: this.myState,
};
}
}
ICopyable
এছাড়াও একটি ঐচ্ছিক পদ্ধতি আছে, isCopyable
, যা একটি বস্তু বর্তমানে অনুলিপিযোগ্য কিনা তা প্রদান করে।
টেনে আনা যায় এবং মুছে ফেলা যায়
IDraggable
এবং IDeletable
বাস্তবায়ন সম্পর্কে তথ্যের জন্য, কাস্টম ড্র্যাগেবল দেখুন।
একটি paster বাস্তবায়ন
একটি পেস্টার তৈরি করতে, আপনাকে IPaster
ইন্টারফেস বাস্তবায়ন করতে হবে। এটিতে শুধুমাত্র একটি পদ্ধতির paste
রয়েছে যা এটি যে জিনিসটি পেস্ট করে তার কপি ডেটা নেয়, জিনিসটি পেস্ট করার জন্য ওয়ার্কস্পেস এবং একটি ঐচ্ছিক স্থানাঙ্ক, যা জিনিসটি পেস্ট করার অবস্থান।
class MyPaster implements IPaster {
paste(copyData, workspace, coordinate) {
return new MyCopyable(workspace, copyData.state);
// Optionally position the copyable at the passed coordinate.
// Optionally select the copyable after it is pasted.
}
}
নিবন্ধন
আপনি একটি পেস্টার প্রয়োগ করার পরে, আপনাকে এটি নিবন্ধন করতে হবে যাতে আপনি তার paster
সম্পত্তি থেকে একটি প্রদত্ত অনুলিপি ডেটার সাথে যুক্ত পেস্টার খুঁজে পেতে পারেন৷
// This string matches the string assigned to the 'paster' property.
Blockly.clipboard.registry.register('MY_PASTER', new MyPaster());