OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Понедельник, 22 Июль, 2024 07:55

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 390 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8 ... 20  След.
Автор Сообщение
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Пятница, 06 Январь, 2023 14:22 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 660
У меня, видимо, уже поправлено это поведение - меню и мышью, и клавишами попадает целиком в окно.
В целом я переработал существенно всплывающие виды.
Вложение:
Снимок экрана от 2023-01-06 14-22-25.png
Снимок экрана от 2023-01-06 14-22-25.png [ 20.71 КБ | Просмотров: 4402 ]

Опубликую - будет видно.
Прокрутку, да, на до приделать.
В ББ есть модуль StdScrollers, я на его основе сделал StdBoxes, который дает возможность делать: прокрутку справа/слева/сверху/снизу, фон, margin-border-padding как у CSS элементов. Думаю, что прокрутку к меню нужно приделывать с помощью композиции "элементарного меню" и StdBoxes. Следуя шаблону Wrapper (Корпус?)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Пятница, 06 Январь, 2023 16:32 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1248
вообще, в идеале бы как-то отличать, правоклацем контекстное меню вызвали, или с клавиатуры. во втором случае его бы в любом случае рядом с кареткой рисовать (или где-то рядом с текущим view, если это не текст). некритично, но было бы изящней. но тут я ваще пас: я даже не знаю, можно ли в среде это различить без добавления нового сообщения/нового поля, и всё остальное тоже не осилю пока. был бы благодарен за намёки куда копать, если такое вообще возможно.

например, как получить глобальные координаты каретки, а не курсора мыши? (это даже чисто для интересу было бы охота узнать.)

adimetrius писал(а):
Думаю, что прокрутку к меню нужно приделывать с помощью композиции "элементарного меню" и StdBoxes.
вот тут я не уверен. идеологически это красивое решение, но на практике, мне кажется, надо делать специализированную рисовалку как минимум, иначе будет выглядеть уродливо. хотя если у вас предусмотрена (думаю, что да, но мало ли ;-) подмена рисовалки, то это было бы отлично. я бы не прочь иметь такой универсальный враппер с инструкцией, как его применять. а то вон в SelectionBox пришлось скролл велосипедить вместо просто обернуть и забыть.

в смысле — выпадашкам нужен скролл, но не в виде скроллбара справа/слева же. это должны быть кнопочки сверху и снизу во всю ширину, подходящие по цветовой гамме, и появляющиеся только когда необходимо (и колёсико не забыть). по-моему, слишком специализированый запрос для общего компонента, не?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Пятница, 06 Январь, 2023 17:08 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3793
Да, лучше треугольнички сверху, снизу. Вызов от каретки действительно разумен при вызове меню с клавиатуры.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Пятница, 06 Январь, 2023 17:12 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3793
arisu писал(а):
я бы не прочь иметь такой универсальный враппер с инструкцией, как его применять. а то вон в SelectionBox пришлось скролл велосипедить вместо просто обернуть и забыть

Как применяется модуль StdScrollers можно посмотреть в кросс-платформенном обзорщике для файлов StdFilesBrowser.
Я погляжу, может быть ваш велосипедный скролл в SelectionBox потом заменю на него.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Пятница, 06 Январь, 2023 17:24 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1248
Иван Денисов писал(а):
Как применяется модуль StdScrollers можно посмотреть в кросс-платформенном обзорщике для файлов StdFilesBrowser.
что характерно: я туда тоже в процессе заглядывал, но каким-то странным образом слона и не приметил. спасибо!

туда (в FilesBrowser) я тоже немножко того-с. приделал больше клавиатурной навигации, выравнял поле с путём по правому краю (уродливо, но хотя бы видно самую важную часть пути — окончание), добавил "parent dir" в places, и ещё всякие мелочи. я потом ещё допилю и тоже выложу изменённое.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Пятница, 06 Январь, 2023 19:01 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3793
Это окошко должно быть гибким, чтобы, когда тянешь, то менялись размеры встроенных элементов. А так как в Блэкбоксе таких форм нет, то вот такое решение. Будет здорово, если поделитесь своими улучшениями до полной переработки! А то эти полные переработки могут затягиваться, а полезные улучшения, когда они небольшие, то их легко осмыслить и применить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Пятница, 06 Январь, 2023 20:11 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1248
Иван Денисов писал(а):
Будет здорово, если поделитесь своими улучшениями до полной переработки! А то эти полные переработки могут затягиваться, а полезные улучшения, когда они небольшие, то их легко осмыслить и применить.
да, конечно, план именно такой. когда там переработка будет — оно никому пока не известно. я пока ещё в процессе, как буду более-менее удовлетворён — так сразу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Пятница, 06 Январь, 2023 21:43 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1248
а, ещё такой вопрос по FilesBrowser: если нажать Ctrl+O, то кнопка "Open" сначала активна, и только через некоторое время становится неактивной. то есть, ни один файл не выбран, но кнопку можно успеть нажать, если стратегически расположить мышь в правильном месте. ;-) после чего диалог пропадёт, и больше никогда не вернётся.

есть ли какой-то способ сделать эту кнопку неактивной сразу? как-нибудь нежно пнуть среду, чтобы она вычислила охранника для кнопки перед тем, как всё нарисовать в первый раз?

p.s.: всё, неактуально, оно вызвает, просто страж ничего не делает по условию `browser # NIL`. перенёс присваивание `browser := nav;` выше — и нормально заработало.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Суббота, 07 Январь, 2023 13:48 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3793
arisu писал(а):
а, ещё такой вопрос по FilesBrowser: если нажать Ctrl+O, то кнопка "Open" сначала активна, и только через некоторое время становится неактивной. то есть, ни один файл не выбран, но кнопку можно успеть нажать, если стратегически расположить мышь в правильном месте. ;-) после чего диалог пропадёт, и больше никогда не вернётся.

есть ли какой-то способ сделать эту кнопку неактивной сразу? как-нибудь нежно пнуть среду, чтобы она вычислила охранника для кнопки перед тем, как всё нарисовать в первый раз?

p.s.: всё, неактуально, оно вызвает, просто страж ничего не делает по условию `browser # NIL`. перенёс присваивание `browser := nav;` выше — и нормально заработало.

О, спасибо! Меня это тоже раздражало. А так просто оказывается решается :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Суббота, 07 Январь, 2023 15:14 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1248
да вы уж потерпите немножко ;-), я постараюсь скоро выкатить обновку. я там немного почистил код, сделал расширеную клавиатурную навигацию, установку курсора на каталог, из которого вышли по "..", возможность жать букву и курсор будет прыгать по именам, с этой буквы начинающимся… ещё хочу добавить открытие попапа с типами файлов клавиатурой как минимум.

вообще, надо бы ещё кэшировать текущий список, а не перечитывать каталог на каждый чих, но это потом, наверное. просто очень уж неудобно было пользоваться существующим. (но огромное спасибо, что хоть такой есть! ;-)

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


да, кстати. а что, если в StdLog.Open убрать активацию окна лога, и восстанавливать прошлое окно? вряд ли кому-то действительно это (насильная активация лога) надо. и оно адово бесит, когда в лог печатают через какой-нибудь `ShowParamMsg()`, который вызывает `StdLog.Open`. это часто сообщение об ошибке (от коммандера, например), и ШМЯК! активное окно переключилось на лог. даже бывалых жрецов типа меня это пугает, а в школьной сборке вообще ад адский же.

я тупо добавил в начало `StdLog.Open`:
Код:
   VAR
      …
      actw: Windows.Window;
   …
      actw := Windows.dir.First();

и в конец:
Код:
      IF actw # NIL THEN Windows.dir.Select(actw, FALSE) END

вроде бы это ничего не сломало, и фокус возвращается обратно. из недостатков — противная вспышка (потому что переключение фокуса меняет фон окна). как сказать `StdDialog.Open()` или чему-то подобному, что не надо активировать уже существующее, если оно есть — я не понял. кажется, там просто нет такого флага.

p.s.: да, я в курсе, что там есть `logAlerts`, но во-первых, не очень понял, что это, во-вторых, его нельзя покрутить снаружи, а в-третьих, вопрос всё равно более общий: «зачем в принципе активировать лог-окно иначе чем по явному клику туда мышкой».


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Суббота, 07 Январь, 2023 20:10 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3793
Такое поведение было раньше оправдано, так как окно журнала должно было всплыть среди громады MDI окон, а теперь мы сталкиваемся с некоторым новым упорядочением в виде плиток. Так что логично, что это действительно стоит учитывать, и если окно уже "в верхнем слое", то его не надо активировать. Очень верное замечание.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Суббота, 07 Январь, 2023 20:38 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1248
тогда, мне кажется, нужен новый флаг для `StdDialog.Open` (или уже не мучиться, и сделать `StdDialog.OpenEx()`, с параметром `flags` вместо уродливой кучи булов). что-то типа: `bringToTopButDontActivateIfInTileMode`. с нормальным именем, понятно, а не с этим ужасом, но я плохо умею имена придумывать. ;-) и в `Windows` нужен соответствующий API.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Суббота, 07 Январь, 2023 20:58 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3793
arisu писал(а):
тогда, мне кажется, нужен новый флаг для `StdDialog.Open` (или уже не мучиться, и сделать `StdDialog.OpenEx()`, с параметром `flags` вместо уродливой кучи булов). что-то типа: `bringToTopButDontActivateIfInTileMode`. с нормальным именем, понятно, а не с этим ужасом, но я плохо умею имена придумывать. ;-) и в `Windows` нужен соответствующий API.

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


Так как это особенность именно тайлового интерфейса, а 2.0 поддерживает ещё и MDI сборку, то я предлагаю рассматривать правку именно модуля StdTiles в процедуре PROCEDURE (h: ViewHook) Open . К примеру, если окно имеет флаг "neverDirty", то его надо делать верхним в стопке, но не делать в фокусе. В целом такое будет логично, ИМХО. Что скажете?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Суббота, 07 Январь, 2023 22:36 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1248
тоже не всегда удобно. neverDirty может применяться и для каких-нибудь временных документов, которые хочется наверх. ну, к примеру, я делаю систему отчётов, и формирую документ для печати. мне его на диск не надо, мне надо его показать пользователю, и если пользователь доволен — он его напечатает. а если недоволен — он что-то где-то в другом документе поправит, нажмёт кнопочку — и я хочу, чтобы отчёт обновился «по месту» и выскочил наверх.

закладывать в среду попытки угадать, что именно имел в виду программист — не очень правильно, мне кажется. лучше именно флаг типа: «поднимать, но не активировать, если мы в тайловом режиме», и пусть программист дальше сам решает, какой именно эффект он хочет, а не пытается сражаться с Умной Средой, если она угадала неправильно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Воскресенье, 08 Январь, 2023 06:55 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1248
так. следующий контрол на очереди — Field. блин, там бы идеально подошла текстовая модель в качестве хранилища, но я ещё не уверен, что готов к такому подвигу. мне, в принципе, пока хватит просто скролла, чтобы каретка не уезжала за видимую часть; потому что главная задача — всё ещё интеграция с гитом и встроеный дифер, но вот эти мелочи БЕСЯТ. не, я без претензий, спасибо что хоть такое есть, я допилю. в принципе, это как раз то, чем я люблю заниматься: относительно низкоуровневые вещи.

кстати. как вы смотрите на то, чтобы я разделил StdStdCFrames на общую основу, и отдельные модули для каждого контрола? а то правильные реализации будут расти и расти, и оно всё в одном месте тупо создаёт кашу. оно, конечно, увеличит количество файлов в Std, но мне кажется, что будет правильно спрятать разные рисовалки в более-менее изолированые модули, как считаете?

а вообще, эти рисовалки стоило бы выделить вообще в отдельную подсистему, она ж, по сути, платформо-независима, и совершенно отдельная от Std; заодно будет яснее, что эти рисовалки на самом деле заменяемые части. может, действительно заведём новую подсистему для рисовалок? если да, то как назвать? предлагаю Uibasic — длинное, чтобы не законфликтовать с чем-то случайно, и начитать с «Ui», на случай, если потом появятся другие реализации, чтобы их тоже в универсальный префикс «Ui» складывать.

p.s.: «Uiba» тоже хорошо, конечно, но есть некоторые коннотации, так сказать… хотя выглядит оно более-менее соответствующе этому названию. ;-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Воскресенье, 08 Январь, 2023 09:38 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3793
arisu писал(а):
так. следующий контрол на очереди — Field.

С текстовой моделью это возможно и правильно для многострочной реализации. Также над этим полем я возможно сейчас тоже поработаю в январе. Так что вы можете над другими контролами поработать, а его мне оставить. Там комбо не очень корректно работает, его надо объединить с текущей реализацией Field. Там многострочности не надо как раз.

Много модулей не надо, пожалуйста.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Воскресенье, 08 Январь, 2023 09:55 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3793
arisu писал(а):
тоже не всегда удобно. neverDirty может применяться и для каких-нибудь временных документов, которые хочется наверх. ну, к примеру, я делаю систему отчётов, и формирую документ для печати. мне его на диск не надо, мне надо его показать пользователю, и если пользователь доволен — он его напечатает. а если недоволен — он что-то где-то в другом документе поправит, нажмёт кнопочку — и я хочу, чтобы отчёт обновился «по месту» и выскочил наверх.

закладывать в среду попытки угадать, что именно имел в виду программист — не очень правильно, мне кажется. лучше именно флаг типа: «поднимать, но не активировать, если мы в тайловом режиме», и пусть программист дальше сам решает, какой именно эффект он хочет, а не пытается сражаться с Умной Средой, если она угадала неправильно.

Сейчас важно максимально сохранить API от старого Блэкбокса 1.7.2, поэтому новые флаги в Open не приветствуются. Давайте решать проблему на уровне StdTiles.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Воскресенье, 08 Январь, 2023 18:20 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1248
Иван Денисов писал(а):
С текстовой моделью это возможно и правильно для многострочной реализации.
также, `maxLen` там далеко не байт, так что использование `Dialog.String` не очень корректно. винда, по-моему, то ли 16, то ли 32 кб позволяет даже в однострочном редакторе, например. не уверен, что это надо, но ведь апи-то позволяет, и в документации нигде не запрещено.

Иван Денисов писал(а):
Также над этим полем я возможно сейчас тоже поработаю в январе. Так что вы можете над другими контролами поработать, а его мне оставить.
я б с удовольствием, но без скролла невозможно пользоваться же: то же окно поиска — туда иногда тупо текст не влазит! ;-) поэтому и полез. собственно, скролл я уже сделал, а более сложные переделки пока не буду. скроллируемым вариантом могу поделиться.

Иван Денисов писал(а):
Там комбо не очень корректно работает
давайте будем честными: там почти всё не очень корректно работает. ;-)

Иван Денисов писал(а):
Много модулей не надо, пожалуйста.
ужасно неудобно с кашей работать просто. даже закладки и навигация по определениям не сильно помогают. жаль, что никто не сделал View, который позволяет работать с частью текстовой модели так, как будто она отдельный файл. но я вас услышал, дробить в дальнейшем не буду, это некритично.


Последний раз редактировалось arisu Воскресенье, 08 Январь, 2023 18:23, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Воскресенье, 08 Январь, 2023 18:22 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1248
Иван Денисов писал(а):
Сейчас важно максимально сохранить API от старого Блэкбокса 1.7.2, поэтому новые флаги в Open не приветствуются. Давайте решать проблему на уровне StdTiles.
я предлагаю просто ввести `OpenEx()`, с флагами. старое будет работать как работало, а новый код может использовать `OpenEx()`. поскольку конкретная реализация и поведение `StdLog` — это внутреннее дело среды, то там просто использовать `OpenEx()`.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Воскресенье, 08 Январь, 2023 18:25 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3793
Делитесь всем, чем можете. Улучшили какой-то модуль, кидайте сюда или в телегу, пока не забыли что там к чему, чтобы можно было обсудить, что внедрить в сборку и в каком виде. Многое работает неидально, но скажем к кнопкам у меня нет нареканий, а вот с комбо - конкретная недоработка функциональности.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 390 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8 ... 20  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB