roboforum.ru

Технический форум по робототехнике.

Ищу... Простой язык описания GUI

Re: Ищу... Простой язык описания GUI

Виталий » 05 авг 2011, 12:28

В порядке бреда...
Сверстать все в HTML, в нужный размер по пикселям. А дальше сделать кучу скриншотов (это можно автоматизировать).
Останется запрограммировать только вывод "живой графики" в определенные места картинок.

Re: Ищу... Простой язык описания GUI

=DeaD= » 05 авг 2011, 12:45

Вроде Qt Creator хранит формы в XML, но наверное на МК всякие XML - зло? :oops:

Заодно получите готовый редактор формы, останется только вывод сделать на девайсе :roll:

Re: Ищу... Простой язык описания GUI

Michael_K » 09 авг 2011, 12:30

Ну, в общем, пошарил ночью, посмотрел, как делают другие...
Ощущение, что каждый извращается как хочет.
Вот типичное:
Код: Выделить всёРазвернуть
########### Screen 2 dot com or dot net ############
GUI SCS S 2
GUI BG  A 2

GUI LBL O 40 20
GUI LBL A 0
GUI LBL F 0
GUI LBL T Have you ever visited our website?
GUI LBL E

GUI BT  O 40 125
GUI BT  N 0
GUI BT  M 2 2


или

Код: Выделить всёРазвернуть
<PRESS>
IO 8 1
DELAY 2
IO 14 0
DELAY 2
IO 15 1
DELAY 2
IO 15 0
DELAY 2
SER1 BLUEBEE
<END>


Ну и не буду тогда париться. Сделаю что-нибудь в таком же духе.

Добавлено спустя 2 минуты 57 секунд:
Но вообще, удивительно, как простые по сути вещи обрастают какими-то дикими требованиями.
Не комильфо.

Re: Ищу... Простой язык описания GUI

=DeaD= » 09 авг 2011, 12:53

<PRESS>
IO 8 1
DELAY 2
IO 14 0
DELAY 2
IO 15 1
DELAY 2
IO 15 0
DELAY 2
SER1 BLUEBEE
<END>

Вот это уже совсем не гуй, а скриптовый action-язык какой-то :)

Re: Ищу... Простой язык описания GUI

Michael_K » 09 авг 2011, 14:05

ну это я специально такой кусочек выбрал для разнообразия :)

Re: Ищу... Простой язык описания GUI

Angel71 » 09 авг 2011, 15:57

можно на подобии сделать
Код: Выделить всёРазвернуть
<Window x:Class="OliverCode.MVVM.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MVVM Demostration" Height="297" Width="480"
    xmlns:views="clr-namespace:OliverCode.MVVM.View">
   
    <Grid Margin="10">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="460*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="40"/>
            <RowDefinition Height="80*"/>
        </Grid.RowDefinitions>
        <Border CornerRadius="5" BorderBrush="SteelBlue" BorderThickness="2" Grid.Row="0">
            <Label Height="30" Width="400" Content="Below is a two way binding between the view view-model, and model"/>
        </Border>
        <Border CornerRadius="5" BorderBrush="SteelBlue" BorderThickness="2" Grid.Row="1" Margin="0,5,0,0">
            <views:PersonView/>
        </Border>
    </Grid>
</Window>

1.jpg

описание внешнего вида находится между
Код: Выделить всёРазвернуть
<Grid Margin="10"> ...   </Grid>


а это что из себя представляет <views:PersonView/>:
Код: Выделить всёРазвернуть
<UserControl x:Class="OliverCode.MVVM.View.PersonView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="Auto" Width="Auto"
    xmlns:local="clr-namespace:OliverCode.MVVM.ViewModel">
    <StackPanel Orientation="Vertical" Margin="4">
        <!--Here is where we the view gets a copy to the ViewModel Declaratively-->
        <StackPanel.DataContext>
            <local:PersonViewModel />
        </StackPanel.DataContext>       
        <StackPanel Orientation="Vertical" DataContext="{Binding Path=Person, Mode=TwoWay}" Margin="4">
            <StackPanel Orientation="Horizontal">
                <Label Content="First Name:" Margin="0,0,4,0"/>
                <TextBox Width="250" Text="{Binding Path=FirstName}"/>
            </StackPanel>
            <StackPanel Orientation="Horizontal" Margin="0,5,0,0">
                <Label Content="Last Name:" Margin="0,0,4,0"/>
                <TextBox Width="250" Text="{Binding Path=LastName}"/>
            </StackPanel>
            <StackPanel Orientation="Horizontal" Margin="0,5,0,0">
                <Label Content="Age:" Margin="35,0,4,0"/>
                <TextBox Width="50" MaxLength="3" Text="{Binding Path=Age}"/>
            </StackPanel>
        </StackPanel>       
        <StackPanel>
            <Button Content="Save" HorizontalAlignment="Right" Width="80" Command="{Binding Path=SavePersonCommand}"/>
        </StackPanel>
    </StackPanel>
</UserControl>

2.jpg
2.jpg (11.34 КиБ) Просмотров: 1908

можно и динамически подгружаемым/изменяемым сделать. вопрос в том, есть ли желание делать что-то подобное.

Re: Ищу... Простой язык описания GUI

Michael_K » 09 авг 2011, 16:16

Под такую канитель у меня парсер будет больше, чем весь пользовательский код вместе взятый, он потребует всяких хипов с маллоками, пол-пентиума, и отлаживать его подохнешь... :)
Ну... примерно так...

Re: Ищу... Простой язык описания GUI

Виталий » 09 авг 2011, 16:23

Глянь QML, под него парсер будет простым (это просто JSON), хипы с маллоками по желанию.

Re: Ищу... Простой язык описания GUI

Angel71 » 09 авг 2011, 17:06

можно и не настолько сложно. простенький гуи движок вполне реально за пару месяцев написать. основной головняк в другом - спроектировать архитектуру под свои нужы.

Re: Ищу... Простой язык описания GUI

Michael_K » 09 авг 2011, 17:31

Не, ну за пару-то месяцев можно и не такое написать, кто же спорит... :)
Мне же чисто в утилитарных целях, а не в целях "совершенствования всего и вся" :))

Re: Ищу... Простой язык описания GUI

Strijar » 09 авг 2011, 23:28

Виталий писал(а):Глянь QML, под него парсер будет простым


Тогда уж проще YAML - я уже выше предлагал его

Re: Ищу... Простой язык описания GUI

Michael_K » 09 авг 2011, 23:51

Ну я на него посматриваю, только парсер все-равно писать, и смысл придерживаться какому-то внешнему стандарту теряется.

Добавлено спустя 8 минут 14 секунд:
Глянь QML, под него парсер будет простым...

Тогда уж проще YAML - я уже выше предлагал его...

Ребят, если я не отвечаю, это не значит, что игнорирую - я честно смотрю, читаю, мотаю на ус...

Просто я думаю, что в "универсальном" парсере необходимости нет вовсе.
Нафиг мне такой уровень абстракции (и абстрагирования от задачи)?
Скорее всего это будут все-таки предопределенные ключевые слова.
А синтаксис, да, нравится.

Re: Ищу... Простой язык описания GUI

Виталий » 10 авг 2011, 12:23

Парсер (разобрать синтаксис) совсем простой. Основная работа будет нарисовать "примитивы". Ну и еще нужно эмулятор написать, чтобы отдать дизайнеру на проработку.

Re: Ищу... Простой язык описания GUI

Michael_K » 07 сен 2011, 22:55

Продолжу. (Какое-то время проект был в подвешенном состоянии)

Пока видится два диаметрально противоположных подхода:
1. Более-менее полноценный язык программирования. То есть с карточки подгружается скрипт, который выполняется, рисует все что надо, где надо и вызывает нэйтив-функции, которые отвечают, собственно, за функционал.
Плюсы-минусы:
+ Абсолютная гибкость. Можно кардинально перелопатить и интерфейс и логику его работы.
+ Простая реализация API (нэйтив-функций) со стороны встроенного ПО.
- Сложность реализации интерпретатора (компилятора в байт-код, JIT-компилятора).
- GUI не отделен от программирования, хотя и отделен от основного функционала.
Примеры - экшнскрипт, вижуалбэйсик...

2. Чистый язык описания интерфейса. Все функции делает встроенное ПО, которое загружает с карточки только параметры предопределенных объектов.
Плюсы минусы.
+ дизайн абсолютно отделен от программирования
+ простой парсер без наворотов
* встроенное ПО объемное, но в меру сложное
- Логика работы интерфейса жестко задана
Примеры - скины, файлы ресурсов

Можно предложить разные "промежуточные" варианты. Например:
3. Функционирование устройства определяется структурой данных, которую предоставляет пользовательский интерфейс.
Плюсы-минусы:
+ Гибкое решение. Можно кардинально перелопатить и интерфейс и логику его работы.
+ Дизайн отделен от программирования, но его описание довольно сложное.
* Умеренно сложный интерпретатор скрипта
- Сложная организация встроенного ПО, перегруженный API к интерфейсу
- Необходимость "специальных" элементов интерфейса или функций для реализации функционала.

Еще варианты? Мысли?

Re: Ищу... Простой язык описания GUI

Сергей » 07 сен 2011, 23:03

А что-нибудь готовое и красивое не подойдет? Например http://www.4dsystems.com.au/

Добавлено спустя 1 минуту 24 секунды:
Также продаются просто отдельные чипы для графики.


Rambler\'s Top100 Mail.ru counter