Страница 4 из 33

Re: GXDE (GraphX Desktop Environment)

СообщениеДобавлено: 01 фев 2017, 18:13
SteveZeleniy
Да,я тоже заметил,что мы оба теперь опытные даунгрейдеры. :D
Будет неплохо сделать читалку HTML.Можно будет начать.
Опять же:главная проблема GXDE-тормоза.Они остались.Они затаились внутри исходника и выходят наружу после каждого запуска... :)

Re: GXDE (GraphX Desktop Environment)

СообщениеДобавлено: 01 фев 2017, 18:15
Computershik
Очень интересно, лагает ли она на реальном железе...

Хотелось бы, чтобы данная задача (поддержка Сети) стала приоритетной)

Re: GXDE (GraphX Desktop Environment)

СообщениеДобавлено: 01 фев 2017, 18:17
SteveZeleniy
Очень интересно, лагает ли она на реальном железе...

Я думаю,нет.Это в DosBox самоделки сильно тормозят.Попробую с загрузочной флешки MS-DOS 8.0.Но очень быстро работать все равно не будет,это точно.

Re: GXDE (GraphX Desktop Environment)

СообщениеДобавлено: 01 фев 2017, 18:21
SteveZeleniy
Хотелось бы, чтобы данная задача (поддержка Сети) стала приоритетной)

А зачем?Сейчас все пользуются сетью Wi-Fi и 4G(второе уже для Android и IOS больше актуально).Нет такого безумца,который бы рискнул сделать поддержку сети Wi-Fi для DOS.Поддержка старой аппаратуры для выхода в Сеть-это еще куда ни шло.Но сгодится только для виртуалок....

Re: GXDE (GraphX Desktop Environment)

СообщениеДобавлено: 01 фев 2017, 22:51
SteveZeleniy
На опытах с компилятором Turbo C++ я понял способ создания многозадачности(о которой раньше только мечтал.Все-таки ОСей я никогда не делал :) ).Расскажу его позднее.Я не совсем понял по комментариям на странице GXDE,так перемещаются объекты теперь или нет?(Не хочется копаться в исходнике в поисках ответа)Если нет,то я готов рассказать и способ создания перемещаемых объектов.

Re: GXDE (GraphX Desktop Environment)

СообщениеДобавлено: 02 фев 2017, 14:14
Computershik
Насчёт поддержки сети:
с чего вы взяли, что я предлагаю писать драйвера? :mrgreen: У нас же ОБОЛОЧКА под MS-DOS, а под тот же NE1000, эмулируемый SVN-версиями Dosbox и подсоединяемый к Сети через WinPCap-драйвер, есть com-драйвера. Правда, настраивать их - сущее мучение)
SteveZeleniy писал(а):Если нет,то я готов рассказать и способ создания перемещаемых объектов.

Эм, там, скажем так, окна двигаются путем сохранения буфера jpg под ними, но качество портится при движении если фон не однотонный. Конечно, можно было бы bmp-буфер сделать, но Отец что-то намудрил, и при сохранении картинок и их последующем открытии искажаются некоторые цвета...
Есть еще bitblip (на ассемблере), но не представляю, что с ним делать, т.к. не удается скрыть белый сдвиг слева (если двигать картинку вправо)...

Re: GXDE (GraphX Desktop Environment):Многозадачность!!!!

СообщениеДобавлено: 02 фев 2017, 21:02
SteveZeleniy
:idea: :idea: :idea: !
Условная многозадачность будет заключаться в следующем:
Во-первых,для каждой функции должна быть своя переменная типа boolean и символизирующая состояние(запущен или нет).Это вроде уже есть.(частично),нужно для всего.
Во-вторых,убрать из функции progs_menu строки repeat и until progs_opened=false
убрать строку getmouseevent; после первого end;
и переместить эти строки
Код: Выделить всё
if (pointerthere(pmnx, pmny, pmnx+150, pmny-250)) and (event.buttons=1) then begin
openvlc:=true;
{msgbox(180, 180, 490, 150, 'normal', 'message', 'For GXDE updates, visit www.old-dos.ru',
     'Information'); }
     hidemouse;
     loadjpeg(pmnx, pmny-250, 'pmnbuf.jpg', 1);
     {loadjpeg(mnx, mny-250, 'mnbuf.jpg', 1);}
     showmouse;
     progs_opened:=false;
     menu_opened:=false;
end;

if {(not ((mx>=mnx) and (mx<=mnx+60) and (my>=mny-90) and (my<=mny))) and (button_pressed(0))}
(not (pointerthere(pmnx, pmny-90, pmnx+60, pmny))) and (event.buttons=1)
then begin
{setfillstyle(1, 3);}
hidemouse;
{bar(mnx, mny, mnx+150, mny-250);}
loadjpeg(pmnx, pmny-250, 'pmnbuf.jpg', 1);
showmouse;
progs_opened:=false;
i:=1;
end;

в главный цикл(главным мы будем называть цикл,который не дает программе завершится до условий выхода)
И притом к if ам добавить следующее условие:and progs_opened=true
Это первые шаги.Продолжение через 2-3 поста. :D

Re: GXDE (GraphX Desktop Environment)

СообщениеДобавлено: 02 фев 2017, 21:32
Computershik
И вот еще проблемка:
вот код msgbox, где все кнопки анимированные.
Код: Выделить всё
procedure msgbox(xm, ym, ww, wh: word; ws, wty: string; wtext: string; wti: string);
var msb_closed: boolean;
    sc, i: integer;
    ch: char;
     var Button1, ButtonX: Tbutton;
     s: integer;
     label g;
     var reget: boolean;
begin
     s:=0;
     {loadpng(0,0,'icons\winter.png');}
     with
     Button1 do begin
          Bx:=xm+ (ww div 2) -17;
          By:=ym+wh-40;
          Bw:=34;
          Bh:=14;
          Bcolor.red:=150;
          Bcolor.green:=150;
          Bcolor.blue:=150;
          Btextcolor.red:=0;
          Btextcolor.green:=0;
          Btextcolor.blue:=0;
          Btext:='OK';
          Baction:=1;
          Bredraw:=true;
     end;
     with
     ButtonX do begin     {xm+ww-13, ym+3, xm+ww-3, ym+13}
          Bx:=xm+ww-13;
          By:=ym+3;
          Bw:=10;
          Bh:=10;
          Bcolor.red:=150;
          Bcolor.green:=150;
          Bcolor.blue:=150;
          Btextcolor.red:=0;
          Btextcolor.green:=0;
          Btextcolor.blue:=0;
          Btext:='x';
          Baction:=1;
          Bredraw:=true;
     end;
     {UIButtonPressed(Button1):=false;}
     i:=1;
     msb_closed:=false;
     showmouse;
     {hidemouse;}
     savejpeg(xm, ym, xm+ww, ym+wh+5, 'buf.jpg', 100);
     {getmouseevent;}
     reget:=true;
     repeat

     if (not (msb_closed) and (i=1)) then begin
    { if reget=true then begin
     {savebmp(xm, ym, xm+4, ym+wh, 'buf.bmp');}
     {savepict(xm,ym, xm+4, ym+4, 'buf.txt');}
{     GetMem(pp, Imagesize(xm,ym,xm+4,ym+wh));}
     {getimage(xm, ym, xm+4, ym+wh, PP);}
    { reget:=false;
     goto g;
     end;}
     setfillstyle(1, rgb(255, 255, 255));
     bar(xm, ym, xm+ww, ym+wh);
     rectangle(xm, ym, xm+ww, ym+wh);
     setfillstyle(1, rgb(0, 0, 255));
     bar(xm+1, ym+1, xm+ww-1, ym+15);
     setcolor(rgb(0,0,0));
     outtextxy(xm+5, ym+5, wti);
     setcolor(0);
     outtextxy(xm+95, ym+wh div 2, wtext);
     loadpng(xm+15, ym+wh div 2-20, 'icons\info1.png');

     {setfillstyle(1, rgb(150, 150, 150));
     bar(xm+ (ww div 2) -17, ym+wh-40, xm+(ww div 2)+17, ym+wh-26);
     outtextxy(xm+(ww div 2)-10, ym+wh-38, 'OK');}
  {   setfillstyle(1,7);
     bar(xm+ww-13, ym+3, xm+ww-3, ym+13);
     line(xm+ww-10, ym+6, xm+ww-6, ym+10);
     line(xm+ww-10, ym+10, xm+ww-6, ym+6); [X]}
     {savejpeg(xm, ym, xm+ww, ym+wh, 'buf2.jpg', 100);}

     {showmouse;}
     i:=i+1;
{    g: }
     end;
     if Button1.Bredraw=true then begin
     hidemouse;
     setcolor(0);
     UIDrawButton(Button1);
     showmouse;
     Button1.Bredraw:=false;
     end;
     if ButtonX.Bredraw=true then begin
     hidemouse;
     setcolor(0);
     UIDrawButton(ButtonX);
     showmouse;
     ButtonX.Bredraw:=false;
     end;
     {Button1.Bredraw:=false;}
     getmouseevent;
     if UIButtonPressed(Button1)=true then
     begin
         {setcolor(mitte);}
         with button1 do
         begin
         hidemouse;
         setlinestyle(DottedLn, 0, NormWidth);
         rectangle(Bx+1,By+1,Bx+Bw-1, By+Bh-1);
         showmouse;
         end;
         Button1.Bredraw:=true;
         msb_closed:=true;
       {  delay(3000);}
     end;
     if UIButtonPressed(ButtonX)=true then
     begin
         {setcolor(mitte);}
         with ButtonX do
         begin
         hidemouse;
         setlinestyle(DottedLn, 0, NormWidth);
         rectangle(Bx+1,By+1,Bx+Bw-1, By+Bh-1);
         showmouse;
         end;
         ButtonX.Bredraw:=true;
         msb_closed:=true;
       {  delay(3000);}
     end;
    { if keypressed then begin
     ch:=readkey;
     {msb_closed:=true;}

   {  bitblit(xm, ym, xm+ww, ym+wh, xm+4, ym);
     {showpict(xm, ym, 'buf.txt');}
     {bitblit(xm-4, ym, xm, ym+wh, xm, ym);}
     {putimage(xm, ym, pp);}
     {loadbmp(xm, ym, 'buf.bmp');}
  {   reget:=true;
     if ch=#13 then msb_closed:=true;
     xm:=xm+4;
     s:=s+1;
     end;
     {assign(f, 'act.txt');
     reset(f);
     read(f, tact);
     close(f);
     val(tact, action, err);}
     if (Button1.Bpressed=true) or (ButtonX.bPressed=true) then msb_closed:=true;

     until msb_closed=true;
     if msb_closed=true then
     loadjpeg(xm, ym, 'buf.jpg',1);
end;

на loadjpeg вылетает на division by zero
crt не виноват, delay тоже :oops:
что за?

Re: GXDE (GraphX Desktop Environment)

СообщениеДобавлено: 02 фев 2017, 21:45
SteveZeleniy
Тээкс... Попробовал загрузить другую картинку('icons\comp.png')-пошло на ура.Очевидно,вся проблема в png-шке winter.png.Видимо,при попытке прочтения сей png-шки происходит ошибка.Или,может,при выводе на экран.Отладка могла бы сказать многое...... :)
Хотя,конечно,
Меньше знаешь-крепче спишь
Русская пословица

Re: GXDE (GraphX Desktop Environment)

СообщениеДобавлено: 02 фев 2017, 22:20
SteveZeleniy
Мне кажется,что основной приоритет должны иметь задачи оптимизации GXDE и многозадачности,а потом уже и Сети.

Re: GXDE (GraphX Desktop Environment)

СообщениеДобавлено: 02 фев 2017, 22:29
SteveZeleniy
Третий шаг к многозадачности(а их еще много :) )
Из всех процедур и функций(кроме главной) убрать repeat и until(если они не нужны для выполнения функции(например,для файлового менеджера(repeat until не найдет все файлы)) и все if ы переместить в Главный цикл с добавлением условия and (дальше переменная процесса) =true и в очистку экрана переместить в конец условия завершения процесса
Ну,вот теперь(если Вы сделали все правильно) GXDE многооконная и многозадачная оболочка.Потом надо будет добавить обновление экрана с последующей проверкой запущенных задач(перерисовывать открытые окна),возможность скрывать и показывать окна и еще много чего.Но об этом позже. :D

Re: GXDE (GraphX Desktop Environment)

СообщениеДобавлено: 03 фев 2017, 07:48
Computershik
к msgbox-у:
вылетает именно на одной из последних строчек (там, где loadjpeg). Закомментировал - работает.
loadpng вообще-то и так закомментирован был, так что он тут 100% ни при чем. :mrgreen:

Насчёт многозадачности:
не могли бы вы скинуть переделанный исходник, а то я могу чего-нибудь натворить :)

Re: GXDE (GraphX Desktop Environment)

СообщениеДобавлено: 03 фев 2017, 12:06
SteveZeleniy
Так.. значит,я ошибся?Попробую еще разобраться.Насчет исходников многозадачности.Увы,пока скидывать нечего :) .Но скоро сделаю. (ведь этот способ я опробовал не в GXDE а в Vint 98 http://old-dos.ru/dl.php?id=15413) :) и напрасно боитесь,что что-нибудь не так сделаете :D .Просто надо бэкап сделать перед экспериментом :D
Я сделал msgbox работающим в фоновом режиме,но я там уже намудрил такого, что Пришлось переделывать. :mrgreen:
После переделывания:http://old-dos.ru/index.php?page=screen&do=show&id=7639
Но все равно с натяжкой робит и пока только msgbox,да и то пришлось пожертвовать перемещаемостью. :mrgreen:

Re: GXDE (GraphX Desktop Environment)

СообщениеДобавлено: 03 фев 2017, 13:28
SteveZeleniy
Еще надо бы добавить возможность создания скринов по нажатию PrintScreen .При модулях,которые использовались для savejpeg и loadjpeg,это будет легко,а то надоело уже в ИксУбунте выделять область экрана для нормального скрина.

Re: GXDE (GraphX Desktop Environment)

СообщениеДобавлено: 03 фев 2017, 22:02
Computershik
Вот здесь очень много полезных исходников на паскале (и не только)
http://ishodniki.ru/list/pascal/