Latest post of the previous page:
Так получилось, поскольку в просмотре нажатия правой и левой клавиш обрабатываются одинаково. Скроллинг тоже работает по любой кнопке.Выделить и скопировать из режима просмотра (F3)
- HaRT
- Moderator
- Posts: 10823
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Выделение/ копирование текста в Просмотрщике
Хм, и как это мешает реализации привычного выделения протяжкой ЛКМ? (Ну а до-выделение через
[b]ShiftLMB[/b]
пусть остаётся.)Туплю, там же при зажатии ЛКМ начинается прокрутка.
Впрочем, на мой взгляд протяжка с зажатым
[b]Shift[/b]
всё же интуитивнее, чем нынешнее поведение. Сложно ли добавить?(А заодно бы и блочное выделение, если вместо
[b]Shift[/b]
зажат [b]Alt[/b]
…)Фар есть инструмент, а не нянька. © 2009 DrKnS
Выделение/ копирование текста в Просмотрщике
Это реализация возможности выделения произвольных кусков файла в просмотре с минимальными затратами.
Протяжка логично работает в паре с курсором. Делать курсор надо, но на это времени нет.
Кроме того протяжка хороша для небольших файлов, если тянуть долго это неудобно (больше экрана уже удобство сомнительное). Да и сам механизм 'протяжки' надо делать.
Протяжка логично работает в паре с курсором. Делать курсор надо, но на это времени нет.
Кроме того протяжка хороша для небольших файлов, если тянуть долго это неудобно (больше экрана уже удобство сомнительное). Да и сам механизм 'протяжки' надо делать.
- HaRT
- Moderator
- Posts: 10823
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Выделение/ копирование текста в Просмотрщике
Я вижу такие сценарии:
* если нужный фрагмент небольшой, то он в один заход выделяется протяжкой — для этого незачем вспоминать, что тут используется какое-то особенное действие;
* если требуется фрагмент, вылезающий за пределы текущего окна, то его начало/конец выделяем протяжкой, затем проматываем к другому краю и до-выделяем посредством Shift-клика — точно так же, как в привычных редакторах.
И каретка (курсор) не обязательна.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Выделение/ копирование текста в Просмотрщике
Это делается относительно просто.
Правда протяжка просто мышкой несовместима с текущим мышиным скроллином в просмотре,
но если делать её с тем же Shift-ом противоречия не будет.
Осталось найти того, кто готов этим заняться. У меня нет достаточной мотивации.
Правда протяжка просто мышкой несовместима с текущим мышиным скроллином в просмотре,
но если делать её с тем же Shift-ом противоречия не будет.
Осталось найти того, кто готов этим заняться. У меня нет достаточной мотивации.
Выделить и скопировать из режима просмотра (F3)
John Doe, Мышь - не думаю что решение
прочитал что тут предлагают, обойтись без курсора например - думаю что курсор нужен для и продуктивности и желания работать во вьювере, иначе это какие-то ненужные полумеры.
Вот думаю намакросить что-ли..
технически выполнимо, но сомнения терзают стоит ли того соотношение усилие\польза
Если делать, то пока такие идеи:
+ FFI ReadConsole(..) - переваривать то что имеем на экране
+ far.Text(..) - рисовать курсор на экране
+ far.Viewer.GetFilePos, SetFilePos, LeftPos - знать хотя бы приблизительно где мы находимся в файле
Задача - соотнести произвольную точку на экране с позицией в файле.
GetFilePos соотносим с тем что начитали из ReadConsole, и получаем точную позицию (координату) в файле.
Точная позиция с файлом нужна для привязки куда рисовать (=эмиулировать) визуальный курсор,
иначе он будет скакать непредсказуемо.
Т.е. связка такая должна быть такая:
{координата курсора на экране} <= (уметь переводить в обоих направлениях) => {позиция в реальном файле}
Все согласны?
Есть какие-то еще идеи какими средствами реализовывать?
Ввиду явной пользы обществу, не проще ли это реализовать в самом ФАРе?
чтобы зря луа-писателям не трудится
прочитал что тут предлагают, обойтись без курсора например - думаю что курсор нужен для и продуктивности и желания работать во вьювере, иначе это какие-то ненужные полумеры.
Вот думаю намакросить что-ли..
технически выполнимо, но сомнения терзают стоит ли того соотношение усилие\польза
Если делать, то пока такие идеи:
+ FFI ReadConsole(..) - переваривать то что имеем на экране
+ far.Text(..) - рисовать курсор на экране
+ far.Viewer.GetFilePos, SetFilePos, LeftPos - знать хотя бы приблизительно где мы находимся в файле
Задача - соотнести произвольную точку на экране с позицией в файле.
GetFilePos соотносим с тем что начитали из ReadConsole, и получаем точную позицию (координату) в файле.
Точная позиция с файлом нужна для привязки куда рисовать (=эмиулировать) визуальный курсор,
иначе он будет скакать непредсказуемо.
Т.е. связка такая должна быть такая:
{координата курсора на экране} <= (уметь переводить в обоих направлениях) => {позиция в реальном файле}
Все согласны?
Есть какие-то еще идеи какими средствами реализовывать?
Ввиду явной пользы обществу, не проще ли это реализовать в самом ФАРе?
чтобы зря луа-писателям не трудится
Last edited by citRiks on Mon 24 Feb, 2020 17:35, edited 2 times in total.
Выделить и скопировать из режима просмотра (F3)
PS
для простой навигации курсором в просмотрщике сотношение с реальной позицией в файле может и не нужно,
но нужно для нормального многострочного и многостраничного selection, в котором и весь смысл
для простой навигации курсором в просмотрщике сотношение с реальной позицией в файле может и не нужно,
но нужно для нормального многострочного и многостраничного selection, в котором и весь смысл
Last edited by citRiks on Mon 24 Feb, 2020 17:58, edited 1 time in total.
- zg
- zero-gravity
- Posts: 6016
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Выделить и скопировать из режима просмотра (F3)
zg,
Приблизительно - потому что с точки зрения вьювера он стоит всегда на начале первой (или второй) строчки которая на экране
сдвинули экран - позиция переехала на другую строчку, и эта строчка опять вторая сверху
далее, это всегда начало строчки, даже если строка длинная и смотря ее мы далеко уехали вправо,
для просмотрщика положение вфахле не изменилось
Наша цель:
курсор может и должен гулять по всему видимому экрану, поэтому берем эту позицию (=GetPos) и от нее как-то добираемся до желаемой позиции на экране
Т.е.
1.) GetPos - абсолютная позиция, всегда вторая строчка экрана - есть
2.) CurPos - позиция (курсора) относительно GetPos, в любом месте экрана - надо вычислить
GetPos приблизительный для нас, потому что для нашей цели "любая позиция на экране" он не подходит,
это будет, для упрощения где-то так:
АбсолютнаяПозиция=GetPos + CurPos
Приблизительно - потому что с точки зрения вьювера он стоит всегда на начале первой (или второй) строчки которая на экране
сдвинули экран - позиция переехала на другую строчку, и эта строчка опять вторая сверху
далее, это всегда начало строчки, даже если строка длинная и смотря ее мы далеко уехали вправо,
для просмотрщика положение вфахле не изменилось
Наша цель:
курсор может и должен гулять по всему видимому экрану, поэтому берем эту позицию (=GetPos) и от нее как-то добираемся до желаемой позиции на экране
Т.е.
1.) GetPos - абсолютная позиция, всегда вторая строчка экрана - есть
2.) CurPos - позиция (курсора) относительно GetPos, в любом месте экрана - надо вычислить
GetPos приблизительный для нас, потому что для нашей цели "любая позиция на экране" он не подходит,
это будет, для упрощения где-то так:
АбсолютнаяПозиция=GetPos + CurPos
Last edited by citRiks on Mon 24 Feb, 2020 19:26, edited 2 times in total.
Выделить и скопировать из режима просмотра (F3)
В вашем замедчательном HexEde вообще не углядываю аналогии,
вы там создает кастомный кавдратный layout и творите дальше в нем все что хотите,
а у нас прозивольной длины строчки, еще и wrapping может быть,
еще разделители строк могут быть или двухбайтовые или однобайтовые,
еще и табы, еще и UTF8\unicode\ASCII.
Поэтому у нас во вьювере все плавает, а в HexEditе все стабильно как на кладбище
вы там создает кастомный кавдратный layout и творите дальше в нем все что хотите,
а у нас прозивольной длины строчки, еще и wrapping может быть,
еще разделители строк могут быть или двухбайтовые или однобайтовые,
еще и табы, еще и UTF8\unicode\ASCII.
Поэтому у нас во вьювере все плавает, а в HexEditе все стабильно как на кладбище
Выделить и скопировать из режима просмотра (F3)
Впрочем, сейчас вот что понял
Эмулиремый курсор можно сделать цело-строчный, на всю current line.
это где-то на 80% облегчает задачу при этом удовлетворяя где-то 90% потребности и удобства пользвования
на следующем эволюционном этапе можно начать вычислять уже внутристрочную позицию
Эмулиремый курсор можно сделать цело-строчный, на всю current line.
это где-то на 80% облегчает задачу при этом удовлетворяя где-то 90% потребности и удобства пользвования
на следующем эволюционном этапе можно начать вычислять уже внутристрочную позицию
- zg
- zero-gravity
- Posts: 6016
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Выделить и скопировать из режима просмотра (F3)
он открывается в текущей позиции, она определяется однозначно, не очень понимаю, зачем читать с экрана?
Выделить и скопировать из режима просмотра (F3)
извиняюсь за свою непонятность
я не хочу открывать никакую новую сущность, ни диалог, ни редактор, ни панель, ни еще чего кастомного.
Напротив, я излагаю на тему как оставаться с нашим любимым шустрым вьювером,
и прозрачно-натурально добавить ему такую нехватающую функциональность:
1.) Cursor
2.) rmulti string multi page selection
это два пункта, но на самом деле второй пункт для своей корректной работы должен включать в себя первый.
И я не вижу как это сочетается с открытием нового окна-диалога с custom element? как вы делаете HеxEd.
Мне удалось изложить понятнее?
PS
viewer.GetPos - это всего лишь якорь вверху страницы, а user cursor должен и может гулять по всей странице.
user (человек) двигает этот курсор туда-сюда естественно.
Двигает, оставаясь в пределах user screen, пока не сдвинул в итоге всю страницу (сам это screen уехал).
Если сдвинулся\уехал сам этот screen (=видимый кусок текста), это значит якорь сдвинулся, ок, перерасчет.
Т.е., наша адача - знать точно какой длины цепь (точнее расстояние от якоря) на которой сидит cursor в данный произвольный момент
Last edited by citRiks on Mon 24 Feb, 2020 20:51, edited 3 times in total.
- zg
- zero-gravity
- Posts: 6016
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Выделить и скопировать из режима просмотра (F3)
очень много текста, а ответ на вопрос отсутствует.
HеxEd был приведён, как пример точного определения позиции в файле, которая сейчас отображается на экране.
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times