1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/weihuajiang-WPF-Blockly

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

WPF-Blockly

Это визуальный редактор программирования, подобный Google Blocky и Scratch, но реализованный с помощью WPF и dotnet. По сравнению с существующими инструментами, визуальный скрипт больше похож на реальный код и имеет больше возможностей для программирования. С помощью этого инструмента вы можете просто включить своё приложение с визуальным редактором кода и запустить свой визуальный код.

В демоверсии мы создаём визуальный редактор кода, похожий на редактор Scratch.

Вы также можете скачать его из Microsoft Store.

Функции

На данный момент реализованы следующие функции:

  • функция с параметром и возвращаемым значением;
  • рекурсивная функция;
  • переменная и область видимости переменной (локальная переменная);
  • оператор, включая +, -, *, /, %, &, |, ^, >>, <<, ++, --, &&, ||, !, +=, -=, *=, /=, &=, |=, ^=, >>=, <<=;
  • if else, for, while, do while и case statement;
  • управление потоком цикла, включая break, continue и return;
  • try catch finally, обработка исключений;
  • массив;
  • поддержка строковых операций;
  • поддержка стека, очереди, словаря, списка и бинарного дерева;
  • поддержка синтеза звука;
  • поддержка перевода;
  • поддержка рисования холста, похожего на Python Turtle.

Помимо функций программирования, этот инструмент имеет следующие возможности:

  • подсветка выполнения шага;
  • выделение позиции ошибки;
  • сериализация и десериализация скрипта.

Версия в Microsoft Store имеет следующие функции

  • Поддержка объектно-ориентированного программирования, написание и использование объектов.
  • Поддержка наследования классов и переопределения функций.
  • Поддержка модульного программирования, использование скрипта в качестве библиотеки или типа.
  • Поддержка потоков и синхронизации потоков.
  • Поддержка видимости переменных, функций и классов в библиотеке.
  • Поддержка константных переменных.
  • Поддержка инициализации выражений массивов и словарей.
  • Поддержка сворачивания кода.
  • Поддержка копирования и вставки кода.
  • Поддержка undo/redo при редактировании.
  • Поддержка создания исполняемого приложения из скрипта.
  • Больше библиотек, таких как файловая система, строка, дата и время, JSON, редактор Scratch.
  • Поддержка использования COM/Active-X/.Net (свойство, функция и событие) в скрипте.
  • Поддержка использования динамически подключаемых библиотек (DLL) в скрипте.
  • Поддержка EV3 control.
  • Поддержка интернационализации, английский и китайский языки.

Использование редактора скриптов в вашем приложении

  • Напишите собственный экземпляр класса.
  • Добавьте GraphicScriptEditor в ваше окно.
  • Установите новую панель инструментов для GraphicScriptEditor.
  • Зарегистрируйте цвет для каждого выражения и оператора.
  • Используйте методы Serialization.Load и Serialization.Save для загрузки скрипта из файла или потока и сохранения скрипта в файл или поток.

Настройка внешнего вида ваших собственных выражений и операторов

Чтобы написать собственные выражения и операторы, вам необходимо наследовать класс Expression или Statement, переписать Descriptor или BlockDescriptor для настройки внешнего вида вашего класса.

Дескриптор для выражения:

  • TextItemDescriptor — текст, который отображается (свойство IsKeyword используется для выделения ключевого слова);
  • ExpressionDescriptor — текстовое поле для ввода пользователем или перетаскивания выражения сюда;
  • ParameterDescriptor — параметр функции, пользователь может перетащить эту переменную в другое место;
  • VariableDeclarationDescription — объявление переменной, пользователь может перетащить эту переменную в другое место;
  • StringInputDesciptor — текстовое поле для ввода пользователем одной строки текста;
  • MultiLineStringInputDesciptor — текстовое поле для ввода пользователем нескольких строк текста;
  • SelectionItemDescriptor — комбинированный список для отображения нескольких переменных для выбора пользователя;
  • ImageItemDescriptor — отображение изображения в выражении.

Некоторые операторы имеют только одну строку, отображение оператора такое же, как и у выражения, поэтому вы используете Descriptor только для оператора. Определение Descriptor такое же, как у выражения, ничего не пишите в BlockDescriptor.

Для некоторых сложных операторов, таких как if-else, while операторы, эти операторы содержат несколько BlockStatement и несколько Expression, вам нужно настроить BlockDescriptor:

  • TextBlockStatementDescritor — текст, отображаемый в строке оператора;
  • ExpressionStatementDescription — отображение выражения в операторе;
  • BlockStatementDescriptor — позиция BlockStatement.

Например, оператор if-else содержит следующий BlockDescriptor:

  1. if — TextItemDescriptor для if и. Дескриптор выражения для теста

  2. Дескриптор блочного оператора для последующего блочного оператора.

  3. else — дескриптор текстового элемента для else.

  4. Дескриптор блочного оператора для альтернативного блочного оператора.

Выполнение выражения и оператора

Переопределите функцию ExecuteImpl, чтобы записать выполнение вашего выражения и оператора. Чтобы выполнить другое выражение и оператор, просто вызовите функцию Execute. ExecutionEnvironment хранит все значения переменных, вы можете зарегистрировать свою переменную в среде. Перед регистрацией необходимо убедиться в уровне вашей среды выполнения и использовать новую среду выполнения, если это необходимо.

Уровень среды выполнения

Уровни среды выполнения: — 1-й уровень — базовая среда выполнения для хранения всех глобальных переменных и функций; — 2-й уровень — среда класса, хранит статические переменные для каждого класса; — 3-й уровень — экземплярная среда, хранит все нестатические переменные каждого экземпляра класса; — 4-й уровень — функциональная среда, хранит переменные локальных переменных функции; — 5-й или более — хранит локальные переменные каждого блочного оператора.

Завершение выражения и оператора

Существует пять типов завершения: значение, исключение, прерывание, продолжение и возврат. Оператор цикла обрабатывает прерывание и продолжение, оператор функции обрабатывает завершение возврата, оператор try-catch обрабатывает исключение.

Если ваша функция выполнения, вы должны вернуть правильный тип завершения, вернуть завершение исключения при возникновении исключения, иначе выполнение скрипта пойдёт неправильно.

Скриншоты

Версия сообщества: Скриншот Скриншот

Хранилищная версия: Скриншот Скриншот Использование COM Использование Active-X Использование DLL

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

На основе графического программирования и среды разработки WPF поддерживаются все синтаксисы, включая модульное и объектно-ориентированное программирование. Также поддерживается пользовательский синтаксис. Это интегрированная среда разработки (IDE) для создания графических скриптов. Чтобы отправить код, сделайте это на сайте https://github.com/... Развернуть Свернуть
MIT
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/weihuajiang-WPF-Blockly.git
git@api.gitlife.ru:oschina-mirror/weihuajiang-WPF-Blockly.git
oschina-mirror
weihuajiang-WPF-Blockly
weihuajiang-WPF-Blockly
master