Создать ответ 
 
Рейтинг темы:
  • Голосов: 0 - Средняя оценка: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Разработка блокнота для DreamShell
Автор Сообщение
zaero Не на форуме
Супермодератор
******

Сообщений: 1228
Зарегистрирован: 05.01.2005
Рейтинг: 0
Сказал спасибо: 4
Поблагодарили 2 раз(а) в 2 сообщ.
Сообщение: #1
Разработка блокнота для DreamShell
Сват, помоги!
Как сделать так чтоб после запуска команды notepad курсор переходил на следующую строку и ждал ввода с клавиатуры.
И как работать с кнопками?

[Изображение: Ubuntu-User.png]
Dreamshell fAn
08.10.2005 21:24
Вебсайт Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7129
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 133
Поблагодарили 1171 раз(а) в 729 сообщ.
Сообщение: #2
Разработка блокнота для DreamShell
Мдяяя, это самая сложная сторона из разработки блокнота который будет работать прямо в консоли DS, чесно говоря этот вариант не подойдет для больших объемов, так как буфер DS для ввода и вывода данных составляет 2кб:)
Хотя можно сделать и чтобы данные записывались в файл, когда превышается лимит буфера... и прокрутку таким образом тоже в принципе можно было бы замутить, но это уже потом...

Что для этого нужно, во первых, если ты будеш вводить что то в консоль, то в любом случае это будет использоваться как команда, но... сработает она когда реально произойдет выход из функции, то есть из запущенного скрипта, который в свою очередь управлялся функцией в DS...
Для этого можно удолить все написаное из буфера(записав все это в файл предварительно) функцией:
Код:
DS.conio_clear()
Таким образом очистятся буферы экрана и командной строки.
Но это уже после выхода из блокнота делать будет, для того чтобы все написаные строки не засчитались как команды:)
Думаем что делать с ожиданием ввода...
Вот например есть функция которая ждет нажатие любой кнопки клавиатуры:
Код:
DS.conio_getch()
Она возвращает число, которое в свою очередь означает нажатую клавишу...
Если нажата клавиша, то возвращается ascii кодировка нажатого символа...
С помощью функции:
Код:
DS.input_insertbuff(ascii сюда)
нажатая клавиша(буква, пробел, энтер) добавится в буфер...
Но зачем в принципе так заморачиваться, ведь все равно каждое нажатие добовляется в буфер и как ты спрашивал что бы типа поставить курсор на следущую строку и ждать ввода делается довольно просто... просто в цикл поставь фнкцию DS.conio_getch()
Вот только проблема есть с тем, что из буфера ты этого ничего не возьмеш потом:)Это я просто немного принципа объяснил:)
Тебе нужно это сохранять куда то постоянно, ведь такая фишка как ты делал в предыдущий раз с аргументами не проканает, думаю сам понимаеш почему:)
Тебе нужно сделать свой буфер и функцию которая запихнет нажатый символ в него, что то типа DS.input_insertbuff(ch)
но свое...
Ну это я тебе пока писать не буду, попробуй сам, если будут проблемы то пиши конечно помогу...

[Изображение: barbers.png]
(Последний раз сообщение было отредактировано 08.10.2005 в 21:59, отредактировал пользователь SWAT.)
08.10.2005 21:55
Вебсайт Найти все сообщения Цитировать это сообщение
zaero Не на форуме
Супермодератор
******

Сообщений: 1228
Зарегистрирован: 05.01.2005
Рейтинг: 0
Сказал спасибо: 4
Поблагодарили 2 раз(а) в 2 сообщ.
Сообщение: #3
Разработка блокнота для DreamShell
Хм... Спасибо...
Будем думать...

[Изображение: Ubuntu-User.png]
Dreamshell fAn
08.10.2005 22:01
Вебсайт Найти все сообщения Цитировать это сообщение
zaero Не на форуме
Супермодератор
******

Сообщений: 1228
Зарегистрирован: 05.01.2005
Рейтинг: 0
Сказал спасибо: 4
Поблагодарили 2 раз(а) в 2 сообщ.
Сообщение: #4
Разработка блокнота для DreamShell
Сват допиши сам блокнот! Я не могу... =(

[Изображение: Ubuntu-User.png]
Dreamshell fAn
09.10.2005 00:16
Вебсайт Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7129
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 133
Поблагодарили 1171 раз(а) в 729 сообщ.
Сообщение: #5
Разработка блокнота для DreamShell
Ну что именно у тебя не получается ты лучше скажи, а не сразу сдавайся:)

[Изображение: barbers.png]
09.10.2005 11:41
Вебсайт Найти все сообщения Цитировать это сообщение
zaero Не на форуме
Супермодератор
******

Сообщений: 1228
Зарегистрирован: 05.01.2005
Рейтинг: 0
Сказал спасибо: 4
Поблагодарили 2 раз(а) в 2 сообщ.
Сообщение: #6
Разработка блокнота для DreamShell
Я не понимаю в луа принцип создания и работы функций. Да к томуже
нужны примеры разные чтоб мог смотреть и понимать синтаксис луа.
Мануала нормального нет под рукой!

[Изображение: Ubuntu-User.png]
Dreamshell fAn
09.10.2005 13:05
Вебсайт Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7129
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 133
Поблагодарили 1171 раз(а) в 729 сообщ.
Сообщение: #7
Разработка блокнота для DreamShell
Ты незнаеш как в луа сделать функцию и использовать ее?
Да так же как в JS, только в JS граници функции обозначаются фигурными скобками, а в lua словом end
Вот например:

Код:
-- Объявляем функцию.

function test(param1, param2)

-- Я создал функцию в которую можно задавать 2 параметра,
-- то есть переменные.
-- Здесь с ними мы издеваемся.

local param3 = param1+param2

-- Возвращаем функции третий параметр.
return param3

-- Конец функции
end


-- Используем ее.

local p1 = 1
local p2 = 2

local tst = test(p1, p2)

print(tst)

-- На экране появится цифра 3

Параметров можно делать сколько хочеш, можно вообще не делать, если не требуется функции что то давать...

Вот я изучал синтаксис луа по тому учебнику который я выложил на страничке DS:)
Еще смотрел на скрипты в DC Playa, для утверждения:)они ведь тоже на lua написаны...

Что то еще тебе не понятно?

[Изображение: barbers.png]
09.10.2005 13:37
Вебсайт Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7129
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 133
Поблагодарили 1171 раз(а) в 729 сообщ.
Сообщение: #8
Разработка блокнота для DreamShell
Вот смотри пример, конечно это только основа...

Код:
local ibuff = {}
local bc = 0
local exit = 1
local bufsiz = 10

while exit do

ibuff[bc] = DS.getchar();

-- Если нажата кнопка f обрываем цикл
if ibuff[bc] == 102 then break end

-- Если превышаем размер буфера, обрываем цикл
-- Хотя тут то и нужно осуществлять запись в файл...
if bc == bufsiz then break end

-- Если все ок :) продолжаем :)
bc = bc + 1

end


for bcp = 0, bufsiz do
print(ibuff[bcp])
end

Я использовал функцию DS.getchar() так как она есть в DSS, чтобы проще проверять было мне:)в принципе я думаю в DS она тоже будет нормально работать...

Вот тебе еще придется делать какой то конвертор из символов указателей на клавишу в букву...
Так как в бувере сохранается этот указатель...
После каждого нажатия на какую либо клавишу, ее символ сохраняется в ячейку списка ibuff
Ну саму системы ты передаеш как надо, это просто пример...
И сделеш конвертор буфера, что то вроде:
Код:
if ibuff[bc] == 102 then
buf[bc]="f"
end
А лучше уже строками хранить нормальные данные... ну вообще думай как тебе удобней будет...

[Изображение: barbers.png]
(Последний раз сообщение было отредактировано 09.10.2005 в 17:00, отредактировал пользователь SWAT.)
09.10.2005 16:47
Вебсайт Найти все сообщения Цитировать это сообщение
zaero Не на форуме
Супермодератор
******

Сообщений: 1228
Зарегистрирован: 05.01.2005
Рейтинг: 0
Сказал спасибо: 4
Поблагодарили 2 раз(а) в 2 сообщ.
Сообщение: #9
Разработка блокнота для DreamShell
Пишет ошибка и ссылается на это
while exit do

[Изображение: Ubuntu-User.png]
Dreamshell fAn
11.10.2005 17:52
Вебсайт Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7129
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 133
Поблагодарили 1171 раз(а) в 729 сообщ.
Сообщение: #10
Разработка блокнота для DreamShell
Это где в DS или DSS?
Ты может одну из end не захватил:)

[Изображение: barbers.png]
11.10.2005 20:06
Вебсайт Найти все сообщения Цитировать это сообщение
zaero Не на форуме
Супермодератор
******

Сообщений: 1228
Зарегистрирован: 05.01.2005
Рейтинг: 0
Сказал спасибо: 4
Поблагодарили 2 раз(а) в 2 сообщ.
Сообщение: #11
Разработка блокнота для DreamShell
в DSS скрипт не менял просто скопировал

[Изображение: Ubuntu-User.png]
Dreamshell fAn
11.10.2005 21:48
Вебсайт Найти все сообщения Цитировать это сообщение
zaero Не на форуме
Супермодератор
******

Сообщений: 1228
Зарегистрирован: 05.01.2005
Рейтинг: 0
Сказал спасибо: 4
Поблагодарили 2 раз(а) в 2 сообщ.
Сообщение: #12
Разработка блокнота для DreamShell
Все работает!
Извини

[Изображение: Ubuntu-User.png]
Dreamshell fAn
11.10.2005 22:00
Вебсайт Найти все сообщения Цитировать это сообщение
zaero Не на форуме
Супермодератор
******

Сообщений: 1228
Зарегистрирован: 05.01.2005
Рейтинг: 0
Сказал спасибо: 4
Поблагодарили 2 раз(а) в 2 сообщ.
Сообщение: #13
Разработка блокнота для DreamShell
Сдам сессию и займусь блокнотом =)

[Изображение: Ubuntu-User.png]
Dreamshell fAn
01.11.2005 19:14
Вебсайт Найти все сообщения Цитировать это сообщение
zaero Не на форуме
Супермодератор
******

Сообщений: 1228
Зарегистрирован: 05.01.2005
Рейтинг: 0
Сказал спасибо: 4
Поблагодарили 2 раз(а) в 2 сообщ.
Сообщение: #14
Разработка блокнота для DreamShell
Как реализовать прокрутку текста в дримшелл?

[Изображение: Ubuntu-User.png]
Dreamshell fAn
23.11.2005 02:55
Вебсайт Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7129
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 133
Поблагодарили 1171 раз(а) в 729 сообщ.
Сообщение: #15
Разработка блокнота для DreamShell
Гмм... Это сложно но можно:)))
Как видиш я в консоли то не сделал такого:)
Тебе вообщем нужно на какие то кнопки, назначить эту прокрутку и когда на них нажимают, в твоем буфере будут смещаться данные и выводится на экран заново...
Для этого тебе придется сделать буфер основной и тот который будет выводится на экран(не большой, столько, сколько можно на экране показать).
Сделаей пару переменных или структуру которая будет хранить координаты скролла, и когда юзер жмет на то чтобы прокрутить вверх например, то в буфер экрана передаются те данные, которые находятся выше точки скролла, причем столько, сколько влезит на экран(больше нет сысла делать) и потом выводить все данные буфера экрана в саму консоль DS.
Но это только мысль о прокрутке и то не до конца:)
А ведь еще неплохо было бы сделать чтобы можно было перемещать курсор по буферу, чтобы можно было менять какие то строки если захочеш, для этого в принципе таже мысль, но только тебе нужно запоминать координаты курсора и сделать более продвинутую систему обновления данных в главном буфере...
Вообщем голову свою ты нагрееш хорошенько;)

[Изображение: barbers.png]
23.11.2005 19:36
Вебсайт Найти все сообщения Цитировать это сообщение
zaero Не на форуме
Супермодератор
******

Сообщений: 1228
Зарегистрирован: 05.01.2005
Рейтинг: 0
Сказал спасибо: 4
Поблагодарили 2 раз(а) в 2 сообщ.
Сообщение: #16
Разработка блокнота для DreamShell
Большое спасибо.
Я так себе и представлял =)
На днях сяду писать...

[Изображение: Ubuntu-User.png]
Dreamshell fAn
24.11.2005 19:14
Вебсайт Найти все сообщения Цитировать это сообщение
zaero Не на форуме
Супермодератор
******

Сообщений: 1228
Зарегистрирован: 05.01.2005
Рейтинг: 0
Сказал спасибо: 4
Поблагодарили 2 раз(а) в 2 сообщ.
Сообщение: #17
Разработка блокнота для DreamShell
Кстати может у кого прога есть такая:
Нажал на клавишу и перед тобой ее ASCII код?

[Изображение: Ubuntu-User.png]
Dreamshell fAn
24.11.2005 19:36
Вебсайт Найти все сообщения Цитировать это сообщение
zaero Не на форуме
Супермодератор
******

Сообщений: 1228
Зарегистрирован: 05.01.2005
Рейтинг: 0
Сказал спасибо: 4
Поблагодарили 2 раз(а) в 2 сообщ.
Сообщение: #18
Разработка блокнота для DreamShell
Сват, нужна помощь!!!!
Не получается сделать сделать прокрутку.

[Изображение: Ubuntu-User.png]
Dreamshell fAn
04.01.2006 03:33
Вебсайт Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7129
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 133
Поблагодарили 1171 раз(а) в 729 сообщ.
Сообщение: #19
Разработка блокнота для DreamShell
Это тяжко для меня после праздников:)
Я вроде давал тебе какие то намеки по этому поводу...
Ты скажи что именно... а то так... это надо мне всю идею придумать и расписать:)

[Изображение: barbers.png]
06.01.2006 16:35
Вебсайт Найти все сообщения Цитировать это сообщение
honey_rock Не на форуме
Администратор
*******

Сообщений: 8
Зарегистрирован: 10.12.2005
Рейтинг: 0
Сказал спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщ.
Сообщение: #20
Разработка блокнота для DreamShell
...
08.01.2006 05:51
Найти все сообщения Цитировать это сообщение
Создать ответ 


Похожие темы
Тема: Автор Ответов: Просмотров: Посл. сообщение
  DreamShell dev environment setup on macOS VeraBecker 17 5828 19.09.2023 06:25
Посл. сообщение: SWAT
  Приложение для DreamShell SuperClaw 170 394401 01.05.2016 08:12
Посл. сообщение: SWAT
  DreamShell 4.0 - XML Doc SWAT 6 34078 06.04.2015 13:41
Посл. сообщение: SWAT
  DreamShell 4.0 - Module dev SWAT 8 30216 23.12.2013 13:20
Посл. сообщение: SWAT
  Dreamshell BETA3/BETA4 Direct Swap atreyu187 3 19381 09.09.2011 14:27
Посл. сообщение: SWAT
  DreamShell 4.0 - App dev SWAT 3 21426 22.06.2011 23:09
Посл. сообщение: Jirohn
  DreamShell 4.0 - Bug Report SWAT 54 163610 28.03.2011 07:24
Посл. сообщение: SWAT
  DreamShell 4.0 - Beta Testing SWAT 76 228271 14.07.2010 20:58
Посл. сообщение: SWAT
  DreamShell 4.0 SWAT 43 135862 05.02.2010 07:10
Посл. сообщение: SWAT
  DreamShell 4.0 - API Doc SWAT 1 18631 18.03.2009 13:04
Посл. сообщение: SWAT

Переход:


Пользователи просматривают эту тему: 1 Гость(ей)