Ru-Board.club
← Вернуться в раздел «Программы»

» Mark - небольшой удобный редактор

Автор: vito333
Дата сообщения: 21.06.2005 15:18
[!] добавлены иконки в меню и на тулбар.
Автор: vito333
Дата сообщения: 21.06.2005 16:56
хм, прочитал тут в GridinSoft Notepad топике про скрипты в редакторе - кто чего знает, как и где это уже реализовано, как работает? может кто просветить? интересно стало.
Автор: gera_serg
Дата сообщения: 21.06.2005 18:55
> кто чего знает, как и где это уже реализовано

Давно реализовано в моем любимом Code-Genie

Вот заглавная страничка от его Help

Это все для работы внутри редактора

Macro interfaceProperties:
SS
SE
SSE
SelText
Clipboard

Basic Methods
Note: arguments in square brackets [] are optional.

FilePath
FileDir [file_path]
FileExt [file_path]
FileName [file_path]
FileTitle [file_path]
GetSize
LineCount
PosToLine nPos
LineToPos nLine
GetChar nPos
AuxMove nPosFrom, cgMode
Find szFindWhat [, cgMode]
Replace szReplWhat, szReplTo [, cgMode [,szWhere]]
MReplace szReplWhat, szReplTo [,szWhere [,szSeparator]]]

Special methods
Note: arguments in square brackets [] are optional.

Prompt szPrompt
MsgBox szMsg
Confirm szMsg
Save szFileName
ChangeCase cgMode
TrimLeft [szWhat]
TrimRight [szWhat]
Indent
Unindent
Tabify
Untabify
CopyColumn Separator
DelColumn Separator
Constants

cgDocStart
cgDocEnd
cgLineStart
cgLineEnd
cgWordLeft
cgWordRight
cgFindUp
cgFindCase
cgFindWholeWord
cgFindRegExp
cgLowerCase
cgUpperCase
cgCapitalize

И добавленa вся "мощь" от WSH

Пример макроса:
Sub Move_Line_Up
Dim lineNr
Dim txt1, txt2

'if current line is not the first line
If Doc.PosToLine(Doc.SSE) > 0 Then
'remember line-position
lineNr = Doc.PosToLine(Doc.SE)

Select_Line
'save first line text
txt1 = Doc.SelText

'move one line up
Doc.SSE = Doc.LineToPos(lineNr - 1)

Select_Line
'save second line text
txt2 = Doc.SelText
'replace it with first line text
Doc.SelText txt1

'move one line down
Doc.SSE = Doc.LineToPos(lineNr)

Select_Line
'write first line text instead
Doc.SelText = txt2

'set the cursor to the end of the moved line
Doc.SSE = Doc.LineToPos(lineNr - 1)
Doc.SSE = Doc.AuxMove(Doc.SE, cgLineEnd)

End If

End Sub




Автор: Dudus
Дата сообщения: 21.06.2005 20:17
Вот ошибку обнаружил. Если открывать достаточно длинный файл (не влезающий полностью в окно программы) в развернутом на весь экран окне (то есть не потом, после открытия, развернуть, а чтобы уже запомненная позиция была "на весь экран", и открывать файл по F4 (в тотал коммандер), как для редактирования, либо по Ентер, то вместо кнопкок "вверх" и "вниз" в полосе прокрутки ничего нет. А клацнуть мышью то место, где они должны быть - и появляются. Правда, думаю, что это уже не новость.
Автор: vito333
Дата сообщения: 22.06.2005 11:32
ShIvADeSt
поздравляю с модераторством!

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

Добавлено:
gera_serg
в общих чертах понятно конечно, а теории не хватает. как реализовать тот же WSH - я его не знаю абсолютно.

Добавлено:
то есть интересны возможные принципы. Пока видится так - под каждую скрипт-команду затачивается функция, при разборе скрипта функция выполняется с заданными параметрами. Возможно ли ещё как-то? И как WSH прикрутить? интересно, буду думать.

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

Добавлено:
Dudus
есть такая проблема. Пофиксить не могу, так как у меня она не проявляется.
Автор: ShIvADeSt
Дата сообщения: 23.06.2005 08:00
vito333
Обнаружена утечка ресурсов. При работе с менюшками наблюдается создание ГДИ объектов, а потом они не все уничтожаются. Особенно это заметно, если зайти в пункт Настройки- Общие и просто пробежаться по всем пунктам, изначально в Марке у меня около 100 объектов (смотрю Диспетчером задач), после нескольких пробеганий по этим пунктам и по другим, количество объектов возрастает до 200 и продолжает расти. Достаточно неприятная мелочь. При этом по идее при открытии одних и тех же пунктов количество объектов увеличиваться не долджно, однако увеличивается - идет утечка памяти и количество потребляемой памяти марком растет причем неприятно быстро примерно по 4 килобайта при пробегании половины всех пунктов меню. При интенсивном использованнии марка возможно разбухание его в памяти, то есть vito333 посмотри, где ты их забываешь уничтожать. У меня программы после чрезерного увеличения гди объектов, просто сходили с ума.
Затестил Захват буфера обмена, рулеззз полный, особенно, когда с инета куски режешь.
Закончил интерфейсную часть конвертора, предыдущие версии отличались утечкой гди объектов эта вроде их лишена, количество объектов стабильно.
ЗЫ Никак не могу найти Визуал Студию в сети, так что пока на АПИ на Дельфи пишу, потом буду перегонять на С.
Автор: vito333
Дата сообщения: 23.06.2005 10:26
ShIvADeSt
проверю, утечка вполне где нибудь возможна, так как всё меню создаётся ручками, а BoundsChecker у меня упорно глючит на машине, так что не могу сейчас полноценно тестировать.

Добавлено:
и вообще начинаю читать книгу по WTL , она, правда, на английском, вреени уйдёт много, но на будущее планирую его использовать как основную библиотеку для интерфейса.
Автор: SiLeNCer_ru
Дата сообщения: 23.06.2005 14:17
vito333
Уважаемый, что-то переопределение хоткея не работает
Пытаюсь Ctrl+Y переделать на Ctrl+E, и фиг вам... и перезапускал, и документ закрывал... и не перезапускал тоже.

По поводу сообщения Dudus - такой баг есть!
Автор: vito333
Дата сообщения: 23.06.2005 15:14
SiLeNCer_ru
да вроде работает, проверил. Как процесс выглядит, опиши.
Автор: SiLeNCer_ru
Дата сообщения: 23.06.2005 15:30
Пробовал по-разному:
и зажимая сонтрол открывал меню, отрывал меню, а потом с зажатым контролом тыкал в пункт меню.
Потом контрол либо отпускал и нажимал заново, либо не отпуская дожимал клавишу Е
кликал ОК.
А в итоге фиг.
Автор: vito333
Дата сообщения: 23.06.2005 15:32
окошко переназначения появлялось? и вообще в подобных случаях первое лекарство - снести настройки в реестре.
Автор: SiLeNCer_ru
Дата сообщения: 23.06.2005 15:46
Было окошко.
Попробую... только чуть позже

Вот еще что:
запрос фичи: Можно было бы сделать автодетект типа файла: windows или Unix
и соответственно если открыли юникс, то сохранять \n, а если виндовс, то \n\r

Добавлено:
О, блин, после пары перезапусков сменился хоткей на нужный
Автор: Oleg_II
Дата сообщения: 23.06.2005 17:36
Голосую за самодостаточный экзешник - зачем программе инсталлятор? Чтобы иконки в меню прописывать? А если она мне в Программы пропишет, а я, например, в Связь хочу иконку? Это ж мне придется в одном месте иконку удалять, а в другом заново создавать Проще даже тогда без иконок в меню - где захочу, там и сделаю шорткат (кстати, я его вообще не делаю, Марк у меня появляется по нажатию иконки Ноутпэда). Чем меньше программа совершает лишних, не связанных с ее функциональностью действий, тем программа лучше.
Да и иконок в самой проге каких-то навороченных не надо - я тоже не понимаю цветастость Винды Экс-Пи, я ж компьютер включаю не для того чтобы просто сидеть перед экраном и пялиться на цветные кнопки, панельки и иконки, умиляясь при этом безумному сочетанию цветов и "оригинальных находок" дизайна. Я включаю комп для того чтобы работать или играть, а не любоваться оформление программ. Главное чтобы программы работали быстро, жрали минимум ресурсов и были удобны в использовании. Главное вкусная конфета, а не ее фантик

Излишней функциональности тоже не надо: никаких часиков и секундомеров в панелях, кнопок управления аудиоплеерами прямо из программы, встроенных в программу сложных математических калькуляторов и прочих извращений. Только то, что относиться к редактированию текстовой информации. Сюда же можно включить буфер обмена и другие трюки, которые помогают в редактировании текстов.

Никаких переходов на личности, каждый высказывает свое мнение, а в диалоге приходит устраивающее все стороны решение

Из предложений (я очень далек от программирования, так что если что-то совсем не в тему и сделать сложно, то извиняйте):

1. У Метапэда есть несколько полезных функций, которые хороши для написания веб-страничек вручную: настройка полупрозрачности и возможность открытия редактируемого файла сразу в двух веб-броузерах. Делается так: устанавливаем всегда наверху, полупрозрачность, сохраняем файл под каким-то именем и открываем в броузере по выбору. Теперь печатаем и время от времени жмем на кнопку Обновить у браузера - вуаля! хтмл-редактор для ручного написания страничек с почти одновременным просмотром результатов! Если к этому добавить нумерацию страниц и подсветку синтаксиса, то просто чудо какое-то получается!
Да и просто сделать какую-то заметочку из окна другой программы не пытаясь запоминать длинные фразы и уменьшая окна, пытаясь уместить на экран еще и окно редактора.

2. Тоже самое, но по-сложнее. Есть такой текстовый веб-редактор WebCraft. При своем минимальном размере исполняемого файла в 211 КВ и внешней простоты он имеет кучу функций. Меня в нем прежде всего привлекают две простейшие вещи: первое, два окна, в одном из которых печатаешь хтмл, а в другом тут же по мере печати видишь результат как будет выглядеть страница; второе, связь между файлами по ссылками: если в одном файле идет ссылка на другой файл, то при нажатии на эту ссылку открывается тот файл в этом же окне (все как в реальном веб-броузере), т.е. обновляются-открываются оба окна - одно с хтмл, а второе с тем, как это выглядит в броузере. Не знаю реально ли это сделать, так как WebCraft для этого использует движок ИЕ, но идея заманчивая, уж очень это хорошо получилось в той программе. Там еще куча интересных функций, которые сразу в глаза не бросаются, но после освоения (не сложного) становятся мощнейшими инструментами.

3. Может быть функция "очистки" тэгов хтмл и превращения хтмл в текст. Сохранил страничку с Интернета, открыл в программе, нажал кнопочку и получил нужный текст без всяких "примесей". Если, конечно, это не будет увеличивать сильно саму программу.

4. Об этом уже писал - способность запоминать в удобоваримом виде установки в ini-файле или реестре. Это для того чтобы один раз настроить и переносить с одного компьютера на другой уже настроенным или с рег-файликом.

А вообще трудно придумать еще что-то для этой программы - программа уже идеальна по фунциям для ее класса, теперь только шлифовать то, что уже есть.

Да, еще хотя бы даты при обновлениях версии самого файла ставить в шапку...

Регардсы,
Олег 2
Автор: ShIvADeSt
Дата сообщения: 24.06.2005 01:16

Цитата:
проверю, утечка вполне где нибудь возможна, так как всё меню создаётся ручками, а BoundsChecker у меня упорно глючит на машине, так что не могу сейчас полноценно тестировать.

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

Добавлено:
Oleg_II

Цитата:
Излишней функциональности тоже не надо: никаких часиков и секундомеров в панелях, кнопок управления аудиоплеерами прямо из программы, встроенных в программу сложных математических калькуляторов и прочих извращений.

Извини, но первые 3 пункта которые ты упомянул это как раз и есть извращение, не надо путать текстовый редактор с хтмл редактором, подсветка синтаксиса - да, но все что касается обработки хтмл, для этих целей есть специальные редакторы. Кстати посмотри принцип Марка и ты поймешь, почему там этого наверное не будет. Максимум функциональности при минимуме размера. А 200 килобайт для заменителя блокнота с кучей функций которые либо уже реализованы в хтмл редакторах и не нужны многим пользователям это слишком. Мои пожелания это сделать запоминание позиции редактирования файлов и поддержку плагинов Остальное можно будет в крайнем случае в виде плагов сделать.

Цитата:
Об этом уже писал - способность запоминать в удобоваримом виде установки в ini-файле или реестре. Это для того чтобы один раз настроить и переносить с одного компьютера на другой уже настроенным или с рег-файликом.

Она в реестре нормально настройки хранит в одном ключе. Или тебе надо чтобы этот кусок реестра в папке программы лежал? Если да, то в настоящее время идет разработка программы импорта экспорта настроек в ини и обратно в реестр.
Автор: Oleg_II
Дата сообщения: 24.06.2005 05:36
ShIvADeSt
Возможно ты прав по отношению ко второму пункту, хотя редактирование текстов по духу ближе всего к ручному редактированию в каком-то языке будь то хтмл или язык программирования (а для чего ты Ноутпад или Марк используешь? ведь не только для открытия nfo в зип-архивах , зачем тогда вообще нужны те фунции, которые уже у программы есть?). Да и возможность открыть в другой программе редактируемый текст не так уж и плоха - можно ведь не только в веб-броузере открывать, можно назначить другие программы, которые используют редактируемые файлы (сорри, если ошибаюсь, но речь идет о программах программирования).

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

Ну, а третий пункт ничего общего с веб-строительством не имеет. Это функция все-таки ближе именно к тестовому редактору - конвертнуть из хтмл в тхт. Излишество - согласен, но если уже ВСЕ будет отлажено, разработчику будет жалко останавливаться и захочется ну хоть что-то еще добавить...

Я ж не настаиваю, так, идеи для возможного вдохновления. По мне прога уже абсолютно рабочая и я юзаю ее уже такой. И увеличения размеров мне не надо

По поводу настроек - сейчас все-таки не очень удобно одним ключом, тем более бинарным (из ключа не видно какие собственно настройки). Как выход, можно, конечно, сохранить в виде рег-файла, но хотелось бы более наглядно, чтобы кому-то только шрифт подправить, кому-то язык другой выбрать перед переносом на чужую машину (знаете, какие чудьненькие загогулинки получаются из меню, когда из русской Винды переносишь некоторые программки в китайскую? а потом отгадывай по загогулинкам куда ткнуть, чтобы язык поменять (это я не про Марк - он, слава Богу, сразу в аглицком варианте открывается).
Кстати, я вообще предпочитаю, чтобы программы по-меньше в реестр лазили, а хранили свои настройки в отдельном файлике. Но это так, к слову.

Регардсы,
Олег 2
Автор: vito333
Дата сообщения: 24.06.2005 07:16
[x] фантастически мощная утечка ресурсов.

Пока не выкладывается, видимо чуть позже.

Технические детали : ошибка была в функции обработки WM_PAINT, и, соответственно, проявлялась мощной утечкой при перерисовке окна ричедита (при наборе текста (наиболее сильно), при вызове меню, при переключении переноса слов ).

Добавлено:
Oleg_II
прозрачность зачастую очень нужна, согласен

Добавлено:
а чисто хтмл-овские фишки, как чистка тэгов - это лучше плагинами, я думаю

ini файл настроек - будет, но позже.

Добавлено:
[x] утечка ресурсов при отображении в меню помеченных галочкой пунктов.
Автор: SiLeNCer_ru
Дата сообщения: 24.06.2005 09:03
Уважаемый vito333
Что насчет концов строк? Не так сложно, а вещь нужная.
Тогда точно работать ему в связке с ТС.
Автор: vito333
Дата сообщения: 24.06.2005 09:17
SiLeNCer_ru
уговорил, сегодня посмотрю, как это распознаётся и обрабатывается
Автор: SiLeNCer_ru
Дата сообщения: 24.06.2005 09:42
vito333
Спасибо
Автор: Batya
Дата сообщения: 24.06.2005 09:43
Прошу прощения, очень длинная тема, и нет возможности прочитать ее всю. Поэтому, вероятно, не уникальный вопрос - а будет возможность показывать номера строк?
Автор: vito333
Дата сообщения: 24.06.2005 10:11
Batya
в плане вроде есть

Добавлено:
выложил последнюю бету
Автор: vito333
Дата сообщения: 24.06.2005 16:42
Oleg_II

Цитата:
при обновлениях версии самого файла ставить в шапку

программа обновляется минимум раз в неделю

а насчёт остальных фич - напоминай иногда о них.
Автор: Oleg_II
Дата сообщения: 24.06.2005 21:00
Спасибо за внимание
Постараюсь напоминать.
1. Прозрачность.
2. Настройки отдельно в ини-файле или отдельными пунктами в реестре (первое лучше, чтобы прога не оставляла "мусора" в забитом итак реестре).
3. О фиче вызова кнопкой заданной программы как у Метапада подумай - это не только в написании хтмл можно использовать, а сильно утяжелить программу не должно (какой-то скрипт, запускающий выбранный в установках произвольный экзешный файл). Если эта фишка будет реализована, то можно будет одной кнопкой запускать на выбор любую программу: броузер, программу программирования, стороннюю программу проверки орфографии, почтовый клиент, читалку текстов или аудио-видео плеер (последнее уже извращение, конечно
4. Опять же у Метапэда есть идеи по работе с несколькими заданными кусками текста из клипборда.
5. Согласен с нумерацией строк - удобно бывает.
6. В каком-то чисто текстовом редакторе видел возможность проверки орфографии с использованием модулей от МС Офиса, но сам не уверен, что это особенно-то и нужно. Если только уже все остальное будет подогнано.
Регардсы,
Олег 2
Автор: vito333
Дата сообщения: 25.06.2005 08:05
со всем согласен, только пункт 4 обдумай и предложи конкретно.

Добавлено:
[+] прозрачность главного окна.
При использовании пункта меню вызывается диалог настройки степени прозрачности окна программы, при использовании хоткея - прозрачность на лету включается/выключается.
При запуске прозрачность не устанавливается.

Добавлено:
а проверку орфографии я обдумываю-посматриваю, конечно в виде использования имеющихся модулей от офиса, дабы весу было минимум.
Автор: vito333
Дата сообщения: 25.06.2005 17:21
[+] на вкладке окна - захватчика буфера обмена отображается иконка буфера обмена.

обновил и Mark_Upxed.zip

неупакованный Марк весит ровно 100 кб
Автор: Danil Lab
Дата сообщения: 25.06.2005 17:33
vito333
Проверка орфографии штука удобная и нужная е
А можешь сделать чтоб проверка синтаксиса была например в php, INI ,nsi и др.
Автор: vito333
Дата сообщения: 26.06.2005 05:25
Danil Lab
когда будет подсветка, тогда можно будет и о синтаксисе подумать, на основе списков ключевых слов.
Автор: ShIvADeSt
Дата сообщения: 26.06.2005 12:18
vito333
Как насчет сделать горячку для переключения между марком и активным приложением? То есть я например что то делаю в приложении, мне понадобился марк, что то написать, я нажимаю к примеру Ф4 у меня марк появился, я набрал то что надо, нажимаю еще раз Ф4 и у меня опять то приложение, конечно можно и АЛЬТ+ТАБ юзать но если окон много, то неудобно, так же как и мышкой кликать выбираю окно.
Кстати проверь процедуру вызова About, так как после открытия и закрытия окна О программе число ГДИ объектов увеличивается на 1. (Если тебе надоели мои сообщения о утечке памяти, скажи я ее больше не буду отслеживать)
Автор: SiLeNCer_ru
Дата сообщения: 27.06.2005 10:05
ShIvADeSt
А стоит ли? Если по аль-табу бегать, то постоянно переключать между 2 приложениями можно через 1 нажатие альт-таба. Винда же их сортирует.
А про GDI - это очень правильный баг-репорт. За это - респект!
Автор: vito333
Дата сообщения: 27.06.2005 11:14
Mark Ini Exporter от ShIvADeSt
импорт/экспорт настроек Mark-а из/в реестр(а).
http://vito.rbcmail.ru/MarkIniExporter.zip

Добавлено:
ShIvADeSt

Цитата:
Кстати проверь процедуру вызова About, так как после открытия и закрытия окна О программе число ГДИ объектов увеличивается на 1.

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

Цитата:
Если тебе надоели мои сообщения о утечке памяти, скажи я ее больше не буду отслеживать

нормально, продолжай. Ты когда первое сообщение послал об проблемах с меню - я посмотрел и за голову схватился, ошибка была просто дикая - ты писал, что мол при входе в меню настроек много ресурсов утекает - на самом деле при простом наборе текста утекало больше С КАЖДОЙ НАБРАННОЙ БУКВОЙ (столько же, сколько и при входе в меню настроек). Пофиксил проблему в обработчике WM_PAINT, в недоделанной обработке подсветки. Полезно это - ресурсы проверить. Функция отображения галки стабильно давала протечку 1 объекта на каждую галку - не удалялась иконка. В About - это шрифт крупный создаётся, почему не удаляется пока не могу понять, должен гибнуть

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Какой нужен формат?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.