কপি পেস্ট

কপি পেস্ট সিস্টেমটি তিনটি জিনিস দিয়ে তৈরি করা হয়েছে, ICopyable বস্তু, ICopyData কপি করা বস্তুর প্রতিনিধিত্ব করে এবং IPaster অবজেক্ট যা কপি ডেটাকে আবার কপিযোগ্য বস্তুতে পরিণত করতে পারে। প্রতিটি ধরনের ICopyable এর জন্য একটি সংশ্লিষ্ট IPaster প্রয়োজন যা সেই ডেটা পেস্ট করতে পারে।

এই সিস্টেমগুলি কনটেক্সট মেনু বিকল্প এবং কীবোর্ড শর্টকাটের মাধ্যমে ব্যবহারকারীর কাছে উপস্থিত হয়।

খুব কম পরিস্থিতি রয়েছে যেখানে আপনি একটি কাস্টম অনুলিপিযোগ্য বা একটি কাস্টম পেস্টার (যেমন মাল্টিসিলেক্ট প্লাগইন , বা ক্রস-ট্যাব কপি পেস্ট প্লাগইন ) বাস্তবায়ন করতে চান, কারণ সাধারণত অনুলিপিযোগ্য বস্তুগুলি রেন্ডার করা হয় এবং আপনি নতুন রেন্ডার করা বস্তু যোগ করতে পারবেন না ব্লকলি থেকে একটি ওয়ার্কস্পেসের মধ্যে থাকা একমাত্র রেন্ডার করা বস্তু হল ব্লক, বুদবুদ এবং ওয়ার্কস্পেস কমেন্ট।

একটি অনুলিপিযোগ্য বাস্তবায়ন

একটি অনুলিপিযোগ্য বস্তু তৈরি করতে, আপনাকে ICopyable ইন্টারফেসটি বাস্তবায়ন করতে হবে।

নির্বাচনযোগ্য

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,
    };
  }
}

একটি 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());