Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26163
Рейтинг: 2127
#31: 2007-08-17 10:08:14 ЛС | профиль | цитата
Dilma, не знаю, писали, или нет, но очень необходимо одно свойство среды, такое как неуничтожение связи при изменении имени точки в мультиках. А то переименуешь точку и все линки этой точки сразу же потерялись, и снаружи, и внутри.
карма: 22

0
Ответов: 689
Рейтинг: 20
#32: 2007-08-17 10:52:40 ЛС | профиль | цитата
про 10 точек мешающих переносу: в этой схеме code_1829.txt нужно перенести текстовое поле из контейнера 1, в контейнер 2. Для этого в контейнере 2 нужно создать соответствующее число точек, в контейнере 2 удалить.
Если бы была единая среда разработки и контейнер выполнял роль некоего элемента призваного в среде сгруппировать внутри себя элементы, такой перенос был бы только осуществлен переносом самого элемента. Да и не в переносе дело. Например, когда я подношу курсор к точке на самом элементе, я вижу ее задачу, например onMouseDown. Когда я подношу курсор к точке на контейнере - я вижу onEvent6 и этот onEvent6 связан не с элементом (onMouseDown), а с onEnent5 на группе, и только тот в свою очередь с элементом. Такие связи излишни. Матрешка неудобна.
Теперь о том как я вижу единую среду разработки. В скриншотах пример.
про толщину линий и различие с цветом: с помощью толщины линий можно определить главный канал, к примеру. По аналогии с жизнью: в реку впадают ручьи, ручьи узкие, река широкая. Река не бывает синяя, а ручьи зеленые. Река всегда широкая - ручьи узкие.
про расширенный хаб: в скриншоте ранее я привел правильно, а вот описание дал неверное. Некорректно работает не GetDataExt, а именно HubExt. Если поднести к нему курсор, то нельзя именно на нем выбрать какую либо из точек. Хотя хаб можно поворачивать и удалять. что же касается этих двух элементов, то просьба сделать их побольше, хотя бы в 2 раза. Очень неудобно с ними работать по точкам. Маленькие они какие то, чтоли.

чуть не забыл про окно отладки:
есть предложения будут учтены, можно ли добавить кроме копирования еще и очистку значения и счетчика в окне
карма: 0

0
файлы: 2code_1829.txt [4.1KB] [488], Others.rar [55.3KB] [345]
Администрация
Ответов: 15295
Рейтинг: 1519
#33: 2007-08-17 10:56:30 ЛС | профиль | цитата
nesco писал(а):
но очень необходимо одно свойство среды, такое как неуничтожение связи при изменении имени точки в мультиках

к сожалению сделать это на даный момент не представляется возможным: в среде нет такой операции как переименование точек.

oldTV писал(а):
нужно перенести текстовое поле из контейнера 1

не все так просто, как кажется:
1) Интерфейсный контейнер является не только группой, но(!) и родителем для всех визуальных элементов, вставленных в него
2) Контейнеры всех типов физически являются разными классами в коде программы и кодогенератор не может скажем метод элемента Edit в одной панели напрямую соединить с событием любого иного элемента в другой панели. Т.е. без промежуточных точек обойтись нельзя.
3) Динамические контейнеры вообще являются самостоятельным полноценным элементом, в задачу которого входит управление копиями внутренней схемы. Т.е. его нельзя представлять как кусок единой схемы - это не логически, не физически неверно.
4) Аналогично динамическим контейнерам, в пакете WEB скажем есть класс элементов-коллекторов(javaCollector, HTMlCollector), которые позволяют в текущую схему, генерирующую код для одного языка вставлять схему, генерирующую код для совершенно иного языка. Очевидно, что в этом случае прямое подключение элементов без посредничества мультика не возможно даже в теории.

Как разрешаются такие проблемы сейчас? Достаточно просто: все 10 точек следовало изначально упаковать в один поток с применением IndexToChannel и обратного ему.
Названия точек можно менять, если пользоваться мультиками Ex.

oldTV писал(а):
Если поднести к нему курсор, то нельзя именно на нем выбрать какую либо из точек.

это не некорректная работа. В анонсе к 164 билду писалось, что разнотипное управление сделано с целью выяснения, какое управление лучше. Увеличение размера может быть не очень удачной идеей. Сейчас размер хаба составляет примерно один шаг сетки. Эих габаритов как раз хватает на размещение стрелок в потоках между элементами, поставленными по сетке с двойным шагом:
Add(Edit,6501967,700,188)
{
Left=700
Top=185
}
Add(Edit,1971111,700,237)
{
Left=690
Top=235
}
Add(Button,9633622,651,188)
{
Left=665
Top=195
link(onClick,13007430:doWork2,[])
}
Add(Button,6448774,651,237)
{
Left=650
Top=235
link(onClick,13007430:doWork3,[(690,243)])
}
Add(HubEx,13007430,686,181)
{
link(onEvent,6501967:doText,[])
}
увеличение размеров вдвое сделает невозможным редактировать такие схемы.
карма: 27
0
Ответов: 689
Рейтинг: 20
#34: 2007-08-17 12:02:53 ЛС | профиль | цитата
Dilma, ты уже писал однажды о том, что это не просто. Тогда речь шла о "регионах". Идея была в том, что-бы уйти опять же от матрешковости. Ты сказал: контейнеры заложены в программу. Я подумал, что если они заложены, почему бы не оставить этот принцип. Пускай он будет, раз уж если переделать его, придется переделать принципиально программу. В теперешнем моем предложении идея лежит в том, чтобы контейнера остались, но перенос элементов из одного в другой, вызывал удаление или установку точек автоматически. Перенес я текстовое поле из контейнера 1, точки do, on, data, var имеющие связи с другими элементами вне контейнера удалились. Затащил я текстовое поле в контейнер - точки do, on, data, var связывающие текстовое поле с другими элементами -автоматически продублировались на контейнере и условие, о котором ты говорил, соблюдается - появились промежуточные точки. Только их создала среда, а не пользователь каждый раз. Более того, добавилась возможность управлять контейнером не входя в него. Раскрыт контейнер - я могу установить например, для панели, цвет и т.д. В текущей среде, я должен войти в него. Я не могу выделить несколько контейнеров (панелей) и задать им всем свойство Visible например. Я должен это делать для каждого.
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#35: 2007-08-17 12:27:07 ЛС | профиль | цитата
oldTV, такая ф-ность как я понимаю предполагает некий интеллект со стороны среды, заключающийся в том, что она должна каким-то образом определять список и положение автоматически добавляемых точек.

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

все остальное можно быдет делать через менеджер проекта
карма: 27
0
Ответов: 689
Рейтинг: 20
#36: 2007-08-17 14:31:47 ЛС | профиль | цитата
Dilma, список и положение... хм... А нельзя сделать так:
предположим есть елемент Edit, к которому приходят 4 линка на 4 точки (doText - на точку слева, Text - на точку снизу, Str - на точку сверху и onChange на точку справа). При помещении элемента Edit в пустой контейнер, не имеющего ни одной точки, автоматически будут созданы 4 точки и к ним, от элемента придут линки. От doText придет линк к doWork1, от Text - к Var1, от Str к Data1 и т.д. Соотвественно от точки doWork1 линк пойдет на точку, которая до помещения Edit в контейнер, была связана с doText, от точки Var1 до точки которая была связана с Text и т.д. и т.п.

Если например говорить об аналоге в жизни, то примерно так: Между двумя телефонами есть провод. Телефоны стоят в одной комнате. Провод связывает трубку одного телефона с другим. Захотелось перенести 1й телефон в другую комнату. Провод дошел до стены, автоматически образовал розетки с одной стороны и с другой. Теперь телефон соединен с розеткой на стене в первой комнате, розетка на стене в первой комнате с розеткой на стене во второй, розетка во второй комнате со вторым телефоном.

Промежуточные точки, без которых нельзя, это розетки.
Если в контейнере уже были Var1, Data1, то при помещении в него Edit, с 4 линками в нем будут: doWork1, onEvent1, Var1 (который был), Var2 (пришла с Edit), Data1(была), Data2(пришла с Edit).

может так как-то?
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#37: 2007-08-17 17:03:59 ЛС | профиль | цитата
oldTV, шаманство в переносе элементов таким образом состоит не в том, чтобы автоматически что-то там куда-то добавить, а в том, чтобы после этого не пришлось переделывать все автоматические перепостроения ручками. Например сейчас мне видится такая ситуация:
- есть две развернутые пали
- в одной из них есть Edit с 10 сълинкованными точками
- перетаскивает Edit из одной в другую
- уже в процессе перетаскивания ломаются напроч абсолютно все связи(особенно если панели полностью не совпадают по координатам)
- когда Edit из одной панели перетащен в другую от связей уже ничего удобоваримого скорей всего не останется - сплошные пересекающиеся уходящие под элемент ломанные
- как только отпустили Edit начался процесс перепостроения
- связи от Edit пересекают наверно все возможные стороны контейнера, что делает попытку поставить точки по координатам пересечения связей с ребрами невозможной
- а это значит точки на контейнер будут добавлятся в порядке перебора их в цикле по элементу Edit
- а это в свою очередь значит, что количество ломанных увеличится вдвое, кроме того все они притерпят перепостроение промежуточных точек(тоже самое, как это сейчас делается при сбрасывание линка на линк)
- => получаем полную кашу из связей, не умеющих по внешнему виду ничего общего с тем, что было до перетаскивания.

как вывод: непонятно, чем не устраивает предложение воспользоваться многомерными потоками или хотя бы стандартным IndexToChannel.
карма: 27
0
Ответов: 689
Рейтинг: 20
#38: 2007-08-17 17:59:28 ЛС | профиль | цитата
  • IndexToCnannel - подойдет, но видимо только для doAction или onEvents. Как он может подойти для Var или Data?
  • можно пример работы с многомерными потоками для do, data, var и on?
    я не совсем понимаю как ломаются связи? Линии, чтоли становятся ломаными или как-то неправильными?
  • карма: 0

    0
    Администрация
    Ответов: 15295
    Рейтинг: 1519
    #39: 2007-08-17 18:11:45 ЛС | профиль | цитата
    oldTV писал(а):
    я не совсем понимаю как ломаются связи? Линии, чтоли становятся ломаными или как-то неправильными?

    перемести элемент Edit в область элемента InfoTip
    code_1830.txt

    oldTV писал(а):
    Как он может подойти для Var или Data?

    завернуть данные методов в МТ

    oldTV писал(а):
    можно пример работы с многомерными потоками для do, data, var и on?

    tutorialMultiThread.sha
    карма: 27
    0
    файлы: 1code_1830.txt [946B] [536]
    Ответов: 689
    Рейтинг: 20
    #40: 2007-08-17 18:39:00 ЛС | профиль | цитата
    по поводу перемещения элемента Edit в область элемента InfoTip в предыдущем примере: совершенно согласен, картина будет выглядеть вот так: code_1831.txt
    Но если считать что InfoTip контейнер, то автоматически на его правой грани должно образоваться соответствующее колво точек:
    Add(MainForm,11553458,441,238)
    {
    Left=20
    Top=105
    link(onActivate,7133616:doText,[(485,244)(485,195)(289,195)(289,146)])
    link(onDeactivate,7133616:doText2,[(485,251)(485,202)(289,202)(289,153)])
    link(onKeyDown,7133616:doSetFocus,[(485,258)(485,209)(289,209)(289,160)])
    link(onKeyUp,7133616:doPosition,[(485,265)(485,216)(289,216)(289,167)])
    link(onResize,7133616:doSelectLength,[(485,272)(485,223)(289,223)(289,174)])
    link(onCreate,7133616:doSelectText,[(485,279)(485,230)(289,230)(289,181)])
    }
    Add(Edit,7133616,322,140)
    {
    Left=475
    Top=265
    Point(doSetFocus)
    Point(doPosition)
    Point(doSelectLength)
    Point(doSelectText)
    Point(doSelectAll)
    Point(doSendToBack)
    Point(doBringToFront)
    }
    Add(ComboBox,2761223,441,308)
    {
    Left=255
    Top=230
    Point(onSetFocus)
    Point(onKillFocus)
    link(onChange,7133616:doSelectAll,[(485,314)(485,251)(289,251)(289,188)])
    link(onClick,7133616:doSendToBack,[(485,321)(485,258)(289,258)(289,195)])
    link(onKeyDown,7133616:doBringToFront,[(485,328)(485,265)(289,265)(289,202)])
    }
    Add(InfoTip,13971332,301,119)
    {
    Width=92
    Height=109
    }
    Add(Shape,3839412,298,143)
    {
    Width=6
    Height=6
    Type=1
    Color=65280
    }
    Add(Shape,4642799,298,150)
    {
    Width=6
    Height=6
    Type=1
    Color=65280
    }
    Add(Shape,5579042,298,186)
    {
    Width=6
    Height=6
    Type=1
    Color=65280
    }
    Add(Shape,5279315,298,200)
    {
    Width=6
    Height=6
    Type=1
    Color=65280
    }
    Add(Shape,9716068,298,165)
    {
    Width=6
    Height=6
    Type=1
    Color=65280
    }
    Add(Shape,15585358,298,172)
    {
    Width=6
    Height=6
    Type=1
    Color=65280
    }
    Add(Shape,7944390,298,179)
    {
    Width=6
    Height=6
    Type=1
    Color=65280
    }
    Add(Shape,11921553,298,193)
    {
    Width=6
    Height=6
    Type=1
    Color=65280
    }
    Add(Shape,6775498,298,158)
    {
    Width=6
    Height=6
    Type=1
    Color=65280
    }
    карма: 0

    0
    файлы: 1code_1831.txt [950B] [459]
    Администрация
    Ответов: 15295
    Рейтинг: 1519
    #41: 2007-08-17 18:55:40 ЛС | профиль | цитата
    oldTV, ну и как - возможноли без ручной правки понять, что куда идет в результате?
    карма: 27
    0
    Ответов: 689
    Рейтинг: 20
    #42: 2007-08-17 20:12:37 ЛС | профиль | цитата
    Add(MainForm,11553458,441,238)
    {
    Left=20
    Top=105
    link(onActivate,7133616:doText,[(485,244)(485,195)(289,195)(289,146)])
    link(onDeactivate,7133616:doText2,[(485,251)(485,202)(289,202)(289,153)])
    link(onKeyDown,7133616:doSetFocus,[(485,258)(485,209)(289,209)(289,160)])
    link(onKeyUp,7133616:doPosition,[(485,265)(485,216)(289,216)(289,167)])
    link(onResize,7133616:doSelectLength,[(485,272)(485,223)(289,223)(289,174)])
    link(onCreate,7133616:doSelectText,[(485,279)(485,230)(289,230)(289,181)])
    }

    А разве link(Точка на 1м объекте, Объект:Точка на 2м объекте,......) не дает представление откуда идет исходит связь?

    После перемещения остается сделать на 1м объекте (т.е.на нашей MainForm) вот так:
    Add(MainForm,11553458,441,238)
    {
    Left=20
    Top=105
    link(onActivate,13971332:doWork1,[(485,244)(485,195)(289,195)(289,146)])
    link(onDeactivate,13971332:doWork2,[(485,251)(485,202)(289,202)(289,153)])
    link(onKeyDown,13971332:doWork3,[(485,258)(485,209)(289,209)(289,160)])
    link(onKeyUp,13971332:doWork4,[(485,265)(485,216)(289,216)(289,167)])
    link(onResize,13971332:doWork5,[(485,272)(485,223)(289,223)(289,174)])
    link(onCreate,13971332:doWork6,[(485,279)(485,230)(289,230)(289,181)])
    }

    А на 2м объекте (т.е. на контейнере, в роли которого любезно выступил InfoTip) вот так:
    BEGIN_SDK
    Add(EditMulti,13971332,6,6)
    {
    WorkCount=6
    link(doWork1,7133616:doText,[(70,12)(70,41)])
    link(doWork2,7133616:doText2,[(70,19)(70,48)])
    link(doWork3,7133616:doSetFocus,[(70,26)(70,55)])
    link(doWork4,7133616:doPosition,[(70,33)(70,62)])
    link(doWork5,7133616:doSelectLength,[(70,40)(70,69)])
    link(doWork6,7133616:doSelectText,[(70,47)(70,76)])
    }
    Add(Panel,10097953,35,105)
    {
    Left=10
    Top=10
    Width=180
    Height=255
    Point(doColor)
    }
    Add(Edit,7133616,133,35)
    {
    Left=475
    Top=265
    Point(doSetFocus)
    Point(doPosition)
    Point(doSelectLength)
    Point(doSelectText)
    Point(doSelectAll)
    Point(doSendToBack)
    Point(doBringToFront)
    }
    карма: 0

    0
    Ответов: 9906
    Рейтинг: 351
    #43: 2007-08-17 21:17:37 ЛС | профиль | цитата
    Вот "усеченние" одной из моих рабочих поделушек
    code_1832.txt

    Тем кто попытается вытащить Edit из любой из панелей на вкладке FLASH - надо просто бить по рукам
    А не пытаться ему помочь

    Потому-что на 99% - он не понимает что творит.
    О чем, вообще, после такого может идти речь - не пойму
    карма: 9

    0
    файлы: 1code_1832.txt [10.5KB] [576]
    Ответов: 689
    Рейтинг: 20
    #44: 2007-08-18 01:29:05 ЛС | профиль | цитата
    Апаллогетов контейнеров я так понимаю тут все... , среда не принимается и не примется никогда. Постом Galkov'а призвано воду в ступе не толочь. Умолкаю...

    А остальные пункты как?
    Дебаггер? Pan&View? как 1,3?

    Понято что 4-6 не примутся никогда тоже...
    карма: 0

    0
    Ответов: 9906
    Рейтинг: 351
    #45: 2007-08-18 11:26:18 ЛС | профиль | цитата
    Постом Galkov'а было призвано понять происходящее, а не "выпрыгивать из трусов"

    Что контейнер выполняет ф-ю элемента, а не коврового одеяла.
    Что ликвидировать это, значит просто завести развитие HiAsm в тупик.
    Что перетаскивание элемента из одного контейнера в другой, это то же самое, что: "а давайте перетащим эту строчку из кода элемента - в другой элемент, мне в схеме так удобнее"

    Если это непонятно, то код примера просто не смотрелся. Тогда действительно - чего его обсуждать.
    карма: 9

    0
    Сообщение
    ...
    Прикрепленные файлы
    (файлы не залиты)