Прикручивание русского языка к FP в линуксе

Планы, идеология, архитектура и т.п.

Модератор: Модераторы

Re: Прикручивание русского языка к FP в линуксе

Сообщение Сквозняк » 31.01.2013 14:16:23

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

Теперь что касается бага c fp.dsk, есть два наиболее приемлемых подхода к его исправлению: заменять координаты окна при сохранении и при чтении. Первый подход реализуется проще. Правим файл fpcbuild-2.6.0/fpcsrc/ide/fpdesk.pas
Код: Выделить всё
function WriteOpenWindows(F: PResourceFile): boolean;
var S: PMemoryStream;
procedure CollectInfo(P: PView);
var W: PWindow;
    SW: PSourceWindow absolute W;
    WI: TWindowInfo;
    Title: string;
    XDataOfs: word;
    XData: array[0..1024] of byte;
    St: string;
    Ch: char;
    TP: TPoint;
    L: longint;
    XY, XY2: Sw_Integer;//[[[[[[[[[[[[[[[[[[[[[[ патчи
procedure AddData(const B; Size: word);
begin
  Move(B,XData[XDataOfs],Size);
  Inc(XDataOfs,Size);
end;
begin
  XDataOfs:=0;
  W:=nil;
  XY:=0; //[[[[[[[[[[[[[[
  XY2:=2; //[[[[[[[[[[[[[[
  if (P^.HelpCtx=hcSourceWindow) or
     (P^.HelpCtx=hcHelpWindow) or
     (P^.HelpCtx=hcClipboardWindow) or
     (P^.HelpCtx=hcCalcWindow) or
     (P^.HelpCtx=hcInfoWindow) or
     (P^.HelpCtx=hcBrowserWindow) or
     (P^.HelpCtx=hcMessagesWindow) or
     (P^.HelpCtx=hcCompilerMessagesWindow) or
     (P^.HelpCtx=hcGDBWindow) or
     (P^.HelpCtx=hcDisassemblyWindow) or
     (P^.HelpCtx=hcStackWindow) or
     (P^.HelpCtx=hcRegistersWindow) or
     (P^.HelpCtx=hcFPURegisters) or
     (P^.HelpCtx=hcVectorRegisters) or
     (P^.HelpCtx=hcWatchesWindow) or
     (P^.HelpCtx=hcBreakpointListWindow) or
     (P^.HelpCtx=hcASCIITableWindow)
   then begin //[[[[[[[[[[[[[
        if (P^.HelpCtx=hcSourceWindow) then P^.MoveTo(XY,XY)
           else P^.MoveTo(XY2,XY2);
        W:=PWindow(P);
        end; //[[[[[[[[[[[[[[

  if Assigned(W) and (P^.HelpCtx=hcSourceWindow) then
    if SW^.Editor^.FileName='' then
      W:=nil;

  if W=nil then Exit;
  FillChar(WI,sizeof(WI),0);
  Title:=W^.GetTitle(255);
  WI.HelpCtx:=W^.HelpCtx;
  W^.GetBounds(WI.Bounds);
  WI.Visible:=W^.GetState(sfVisible);
  WI.WinNb:=W^.Number;
  case WI.HelpCtx of
    hcSourceWindow :
      begin
        St:=SW^.Editor^.FileName; AddData(St,length(St)+1);
        L:=SW^.Editor^.GetFlags; AddData(L,sizeof(L));
        TP:=SW^.Editor^.SelStart; AddData(TP,sizeof(TP));
        TP:=SW^.Editor^.SelEnd; AddData(TP,sizeof(TP));
        TP:=SW^.Editor^.CurPos; AddData(TP,sizeof(TP));
        TP:=SW^.Editor^.Delta; AddData(TP,sizeof(TP));
      end;
    hcAsciiTableWindow :
      begin
        ch:=chr(PFPAsciiChart(P)^.Report^.AsciiChar);
        AddData(ch,sizeof(char));
      end;
  end;

  WI.TitleLen:=length(Title);
  WI.ExtraDataSize:=XDataOfs;
  S^.Write(WI,sizeof(WI));
  S^.Write(Title[1],WI.TitleLen);
  if WI.ExtraDataSize>0 then
    S^.Write(XData,WI.ExtraDataSize);
P^.MoveTo(XY,XY);//[[[[[[[[[[[[[[[[
end;
var W: word;
    OK: boolean;
    PV: PView;
begin
  PushStatus(msg_storingdesktopcontents);

  New(S, Init(30*1024,4096));
  OK:=Assigned(S);
  if OK then
  begin
    W:=DesktopVersion;
    S^.Write(W,SizeOf(W));
{    S^.Put(Desktop);
    with Desktop^ do
    begin
      PutSubViewPtr(S^,CompilerMessageWindow);
      PutSubViewPtr(S^,CompilerStatusDialog);
      PutSubViewPtr(S^,ClipboardWindow);
      PutSubViewPtr(S^,CalcWindow);
      PutSubViewPtr(S^,GDBWindow);
      PutSubViewPtr(S^,BreakpointsWindow);
      PutSubViewPtr(S^,WatchesWindow);
      PutSubViewPtr(S^,UserScreenWindow);
      PutSubViewPtr(S^,ASCIIChart);
      PutSubViewPtr(S^,MessagesWindow);
    end;}
{    PV:=Application^.Last;
    while PV<>nil do
    begin
      CollectInfo(PV);
      PV:=PV^.PrevView;
    end;}
    PV:=Desktop^.Last;
    while PV<>nil do
    begin
      CollectInfo(PV);
      PV:=PV^.PrevView;
    end;
    OK:=(S^.Status=stOK);
    if OK then
    begin
      S^.Seek(0);
      OK:=F^.CreateResource(resDesktop,rcBinary,0);
      OK:=OK and F^.AddResourceEntryFromStream(resDesktop,langDefault,0,S^,S^.GetSize);
    end;
    Dispose(S, Done);
  end;
  if OK=false then
    ErrorBox(msg_errorstoringdesktop,nil);
  PopStatus;
  WriteOpenWindows:=OK;
end;
Сквозняк
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.06.2006 22:08:32

Re: Прикручивание русского языка к FP в линуксе

Сообщение alex_alex_alex1 » 02.02.2013 00:48:58

Сквозняк, я тебя уважаю. Ты один из немногих кто понимает, что fp теплится на сообществе, и ты реально за него болеешь. Патч посмотрю, спасибо.
Сквозняк, посмотри ещё, пожалуйста, чего там глючит с клавиатурой и мышью - баг в оригинальном fp: Options -> Environment -> Learn Keys не работают OK и Cancel, окно нельзя перемещать (http://bugs.freepascal.org/view.php?id=23682). Ошибка воспроизводится на fp сборки 2005 года, древнее сборку не нашел, да и вряд ли стоит искать. Если допустить, что fp от 2005 года работал корректно с определением клавиш, то исходить надо от изменений в драйверах клавиатуры и мыши, к которым IDE не было адаптировано.
Русская версия fp-ide вошла в дистрибутив EduMageia http://forum.mageialinux.ru/viewtopic.p ... 7293#p7293 - это LIVE дистрибутив, поэтому можете посмотреть итог как просто всё работает с CP866 (баг с определением клавиш я там временно закрыл патчем, убирающим это из Меню).
alex_alex_alex1
постоялец
 
Сообщения: 179
Зарегистрирован: 15.10.2010 14:08:50

Re: Прикручивание русского языка к FP в линуксе

Сообщение Сквозняк » 02.02.2013 13:04:11

alex_alex_alex1 писал(а):Ошибка воспроизводится на fp сборки 2005 года, древнее сборку не нашел, да и вряд ли стоит искать. Если допустить, что fp от 2005 года работал корректно с определением клавиш, то исходить надо от изменений в драйверах клавиатуры и мыши, к которым IDE не было адаптировано.

ИМХО это не баг а фича: в файле fpcbuild-2.6.0/fpcsrc/ide/fpkeys.pas есть включение кнопок но нет обработчиков их мышкособытий. Их можно добавить
Код: Выделить всё
function TKeyDialog.Execute : Word;

var
  APL : PInputLine;
  i,j : longint;
  St : String;
  E : TEvent;
  OldKey : word;
  keyfound : boolean;
begin
{$ifndef NotUseTree}
  repeat
    EndState := 0;
    repeat
    if TypeOf(Current^)=Typeof(TInputLine) then
      APL:=PInputLine(Current)
    else if TypeOf(Current^)=Typeof(TLabel) then
      APL:=PInputLine(Plabel(Current)^.Link)
    else
      APL:=nil;
    FillChar(E,SizeOf(E),#0);
    if Keyboard.KeyPressed then
      St:=RawReadString
    else
      begin
        St:='';
        Application^.GetEvent(E);
      end;
    if E.What= evNothing then
      begin
        if St<>'' then
          begin
            if GetKey(St)<>0 then
              begin
                E.What:=evKeyDown;
                E.KeyCode:=GetKey(St);
              end
            else if St=#9 then
              begin
                E.What:=evKeyDown;
                E.KeyCode:=kbTab;
              end
            else if St=#27 then
              begin
                E.What:=evKeyDown;
                E.KeyCode:=kbEsc;
              end
            else if St=#13 then
              begin
                E.What:=evKeyDown;
                E.KeyCode:=kbEnter;
              end;
          end;
      end;
    keyFound:=false;
    if (E.What=evKeyDown) and not assigned(APL) then
      begin
        for i:=1 to NumWantedKeys do
          if E.Keycode=WantedKeys[i] then
            begin
              DisposeStr(PSTL[i]^.Text);
              PSTL[i]^.Text:=NewStr(WantedKeysLabels[i]+' OK ');
              keyFound:=true;
              keyOK[i]:=true;
              KeyEscape[i]:=St;
              St:=NiceEscape(St);
              PL[i]^.SetData(St);
              ClearEvent(E);
              ReDraw;
            end;
      end;
    if (St<>'') and not keyfound and
       ((E.What<>evKeyDown) or
       ((E.KeyCode<>kbTab) and (E.Keycode<>kbEnter) and (E.Keycode<>kbEsc))) then
      begin
        PST^.SetText('"'+NiceEscape(St)+'"');
        if Assigned(APL) then
          begin
            j:=-1;
            for i:=1 to NumWantedKeys do
              if APL=PL[i] then
                j:=i;
            if (j>0) and (j<=NumWantedKeys) then
              begin
                OldKey:=GetKey(St);
                if OldKey<>0 then
                  begin
                    for i:=1 to NumWantedKeys do
                      if (OldKey=WantedKeys[i]) and (i<>j) then
                        begin
                          If ConfirmBox('"'+St+'" is used for'+#13+
                            'key $'+hexstr(oldKey,4)+' '+WantedKeysLabels[i]+#13+
                            'Change it to '+WantedKeysLabels[j],nil,true)=cmYes then
                            begin
                              KeyEscape[i]:='';
                              PL[i]^.SetData(KeyEscape[i]);
                            end
                          else
                            begin
                              St:='';
                            end;
                        end;
                  end;
                if St<>'' then
                  Begin
                    SetKey(St,WantedKeys[j]);
                    KeyEscape[j]:=St;
                    St:=NiceEscape(St);
                    APL^.SetData(St);
                  end;
              end;
            ClearEvent(E);
          end;
      end;
  if (E.What<>evNothing) then
     HandleEvent(E);
  if E.What <> evNothing then EventError(E);
    Case inherited Execute of //[[[[[[[[[[[[[[[[[v
    cmOK: EndState:=13;
    cmCANCEL: EndState:=27;
    end;                  //[[[[[[[[[[[[[[[[[[[^
  until EndState <> 0;
  until Valid(EndState);
  Execute := EndState;
{$else NotUseTree}
  Execute:=cmCancel;
{$endif NotUseTree}
end;

но тогда поток событий проедет мимо меток и окно станет бесполезным. Как не переписывая весь модуль обойти это ограничение я не знаю. Но клавиши "Esc" и "Enter" работают и можно в заголовок окна добавить умную надпись "жмите на Esc или Enter для выхода".
Сквозняк
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.06.2006 22:08:32

Re: Прикручивание русского языка к FP в линуксе

Сообщение alex_alex_alex1 » 02.02.2013 13:14:50

Можно скрыть кнопки, а вместо них на их месте написать эту надпись. Осилишь?
alex_alex_alex1
постоялец
 
Сообщения: 179
Зарегистрирован: 15.10.2010 14:08:50

Re: Прикручивание русского языка к FP в линуксе

Сообщение Сквозняк » 02.02.2013 13:26:15

Пытался, но если не включить кнопки, то всё глючит - окно заоптимизировано как вирус написанный на ассемблере. Можно попытаться вывести большую неработающую кнопку с надписью, но там ещё нужно спрятать "OK" и "Cancel". Попробую но не гарантирую.
Сквозняк
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.06.2006 22:08:32

Re: Прикручивание русского языка к FP в линуксе

Сообщение alex_alex_alex1 » 02.02.2013 19:35:59

Можно наверное прямо поверх надпись наложить, замаскировав кнопки, написав черным по цвету фона.
Патч посмотрел - да, он исправляет ошибку с fp.dsk, но при этом не будет сохраняться расположение открытых окон - они все будут открыты либо (0,0) для окна с кодом, либо (2,2) для других окон. Надо всё же при чтении анализ делать, но сохранять расположение окон.
Думаю, что надо в fp.dsk сохранять размер окна терминала, затем при чтении смотреть: если он меньше, чем сохраненный, то вычислить разность по X и по Y и на эту разность сдвинуть все окна. Аналогично, если он больше, чем сохраненный, то прибавить разность. Или всегда восстанавливать окна в их дефолтных местах (то есть вообще не восстанавливать расположение окон из fp.dsk, восстанавливать только открытые окна).
dsa3.png

На рисунке Сообщения компилятора находятся в координатах (2,2) - это не есть гуд, окно должно быть внизу.
alex_alex_alex1
постоялец
 
Сообщения: 179
Зарегистрирован: 15.10.2010 14:08:50

Re: Прикручивание русского языка к FP в линуксе

Сообщение Brainenjii » 03.02.2013 00:30:14

Товарищи, я конечно понимаю, что вам уже осточертели вопросы - а почему такая страсть к FP IDE, но никак не могу понять.
Lazarus прекрасно подходит для консольных проектов. Есть отличный режим - Simple Program. Результатом будет пустой проект c Program project1; и begin/end'ом.
Изображение
Нельзя настроить шрифт одинаковой ширины? Ерунда какая-то, выбирайте любой моноширинный шрифт - и вперёд! Я лично полюбил xos terminus
Изображение
Не люб многооконный режим? В десяток кликов настраивается однооконный, в разы более удобный, нежели FP IDE
Изображение
Не устраивает встроенный просмотрщик консольного вывода? В несколько кликов настраивается любая внешняя программа для запуска
Изображение
В общем, что Вас так привлекает в FP IDE и чем отталкивает Lazarus? Последний "подпилить" под свои нужды, я убеждён, будет в разы проще! По-крайней мере все необходимые мне улучшения добавить было достаточно легко.
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1345
Зарегистрирован: 10.05.2007 00:04:46

Re: Прикручивание русского языка к FP в линуксе

Сообщение alex_alex_alex1 » 03.02.2013 00:38:36

Лазарус тут абсолютно не при чём. Я поддерживаю паскаль и всё, что на нём основано и написано (да и не только паскаль). Опять же в дистрибутиве EduMageia есть много чего для паскаля, для программирования на нём. Есть и Лазарус с дополнениями к нему, которых пока еще нет ни в одном репозитории, кроме Mageia Russian Community - я сделал, есть и mseide-msegui русской версии - тоже я сделал и т. д. Пользователям выбирать, а не нам. Нам делать.
fp - это всего лишь программа, написанная на паскале, и многие с этого форума могли бы реально помочь с этой программой, а не нахваливать другие. Пока лишь Сквозняк предложил реальные патчи.
alex_alex_alex1
постоялец
 
Сообщения: 179
Зарегистрирован: 15.10.2010 14:08:50

Re: Прикручивание русского языка к FP в линуксе

Сообщение Сквозняк » 03.02.2013 02:34:18

Brainenjii писал(а):Нельзя настроить шрифт одинаковой ширины? Ерунда какая-то, выбирайте любой моноширинный шрифт - и вперёд! Я лично полюбил xos terminus

Ну да, как будто можно использовать немоноширинный. В каком месте на твоём скриншоте буквы одинаковой _толщины_? У "begin end" и "writeln" толщина линии разная и это в настройках известным мне способом не регулируется. А без нормальной регулировки шрифтов и подсветки кода нельзя делать чёрный цвет фона. В FP он делается легко, просто заменяешь в настройках темы консоли тёмносиний на чёрный и готово. Если сравнивать отображение когда у FP и лазаруса то это как графика у игральных карт и порнографических. У вторых она однозначно более "прогрессивная" но вместо мыслей об игре нужно тратить дополнительные мыслительные и зрительные усилия на разбор изображённой на них информации. А у игральных карт _полезная_ информация занимает _всю_ рабочую поверхность и оттого играя ими легче думать именно об игре а не о том как отличить вальта от дамы.

В общем, что Вас так привлекает в FP IDE и чем отталкивает Lazarus?

FP IDE спроектирован так что на нём удобно погрузиться в процедурщину а Lazarus адаптирован для клепания гуёв и ковыряния в классах, у него даже с масками в путях модулей проблемы. Учитывая что сделанный в лазарусе гуй можно пристегнуть к сторонней программе на паскале, FP IDE рулит и педалит - не обязательно программу делать в одном редакторе. У лазаруса ещё проблемы с исходниками в 8 битных кодировках, не умеет от при отображении кода в utf8 отображать непонятные символы в виде мусора который никому не мешает и не портит содержимое файла - компилировать релизную версию то всё равно будет fpc из коммандной строки.

Последний "подпилить" под свои нужды, я убеждён, будет в разы проще! По-крайней мере все необходимые мне улучшения добавить было достаточно легко.
В свою личную версию а потом мучительно патчить при каждом обновлении :mrgreen: Лёгкость внесения изменений облегчает оные дизайнерам со странным эталоном прекрасного.

Добавлено спустя 27 минут 41 секунду:
alex_alex_alex1 писал(а):Надо всё же при чтении анализ делать, но сохранять расположение окон.

Без проблем если найти нужные свойства объектов, искать придётся много и долго. Это дело можно доверить следующим поколениям паскалистов, если мы не доделаем :D
если он меньше, чем сохраненный, то вычислить разность по X и по Y и на эту разность сдвинуть все окна. Аналогично, если он больше, чем сохраненный, то прибавить разность.

Уже баг - если координаты окна 0,0 то "в минуса" вычитанием их загонять не надо и прибавлять ничего тоже не надо. Придётся в процедуре чтения файлов вычислять безопасный диапазон координат окна и править то что туда не влезает или изменять всё пропорцианально. Потребуется много возни с ковырянием в объектах в то время как у 64 битной сборки не исправлены более серьёзные чем окно сообщений вверху экрана недостатки. У KDE4.9.4 тоже имеются, ещё более серьёзные, недостатки с изменением координат окон при изменении разрешений, не такое простое это дело плясать с бубном вокруг ограничений ООП чтобы за 5 минут всё исправить.
Сквозняк
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.06.2006 22:08:32

Re: Прикручивание русского языка к FP в линуксе

Сообщение alex_alex_alex1 » 03.02.2013 05:29:59

Сквозняк, надо исходить вот из чего:
Когда не существует fp.dsk, то всё работает корректно. Следовательно, не нужно восстанавливать расположение окон из fp.dsk вообще - они по умолчанию располагаются правильно. Следовательно, правка кода сводится всего лишь к комментированию лишних фрагментов кода. Надо только найти чего и где закомментировать.
А так как проблема пока только с Сообщениями компилятора, то запретить восстанавливать расположение только этого окна. А там посмотрим.
Еще с отладчиком надо думать viewtopic.php?f=1&t=8769
alex_alex_alex1
постоялец
 
Сообщения: 179
Зарегистрирован: 15.10.2010 14:08:50

Re: Прикручивание русского языка к FP в линуксе

Сообщение Сквозняк » 03.02.2013 06:18:06

alex_alex_alex1 писал(а):Когда не существует fp.dsk, то всё работает корректно.
Ничего не корректно, в fp.dsk записывается предыдущий сеанс работы с пачкой окон - очень удобная вещь. Без этого файла придётся вручную переоткрывать файлы.

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


Потом, если время будет, можно будет ещё поизвращаться с координатами окон. С файлом fpcbuild-2.6.0/fpcsrc/ide/fpkeys.pas удалось сотворить такое:
Изображение
Код: Выделить всё
constructor TKeyDialog.Init(Const ATitle : String);
  var
      St : String;
      D : PCenterDialog;
      R : TRect;
      E : TEvent;
      i,hight,key : longint;
begin
  Hight:=(NumWantedKeys + 2) div 3;
  R.Assign(0,0,63 + 4,Hight + 4);
  Inherited Init(R,ATitle);
  for i:=1 to NumWantedKeys do
    begin
      GetExtent(R);
      R.Grow(-1,-1);
      R.A.Y:=R.A.Y + ((i-1) mod Hight);
      R.A.X:=R.A.X + 21 * ((i-1) div Hight);
      R.B.Y:=R.A.Y+1;
      R.B.X:=R.A.X + 10;
      St:=WantedKeysLabels[i]+' key';
      KeyOK[i]:=false;
      New(PSTL[i],Init(R,St,nil));
      Insert(PSTL[i]);
      R.A.X:=R.B.X+1;
      R.B.X:=R.B.X+11;
      New(PL[i],Init(R,20));
      St:=NiceEscape(KeyEscape[i]);
      PL[i]^.SetData(St);
      Insert(PL[i]);
      PSTL[i]^.Link:=PL[i];
    end;
  GetExtent(R);
  R.Grow(-1,-1);
  Dec(R.B.Y);
  R.A.Y:=R.B.Y-1;
  New(PST,init(R,'Press all listed keys'));
  Insert(PST);
  GetExtent(R);
  R.Grow(-1,-1);
  R.A.Y:=R.B.Y-1;
  New(PST2,init(R,'Alt prefix "'+NiceEscape(chr(AltPrefix))+'" Shift prefix = "'+
    NiceEscape(chr(ShiftPrefix))+'" Ctrl prefix = "'+NiceEscape(chr(CtrlPrefix))+'"'));
  Insert(PST2);
// InsertButtons(D); //[[[[[[[[[[[
  InsertButtons(@Self);  //можно закомментить эту строку и видимых кнопок не будет вообще
  R.Move(0,2);  //[[[[[[[[[[[ сдвиг координат R по X и Y
  Insert(New(PButton, Init(R, 'Press Enter or Esc to Exit', cmOK, bfDefault)));   //[[[[[[[[[[[[[[[

  //необязательный код закрашивающий тени кнопок кнопкой не отбрасывающей тень
  R.Move(0,1);  //[[[[[[[[[[[
  Insert(New(PButton, Init(R, '                          ', cmOK, bfNormal)));
end;

Небольшой косяк с окном при нажатии эфки имеется, но нефатальный. Если надо разместить закрашивающую кнопку абсолютно симметрично, то используй вместо одной длинной несколько коротких кнопок предварительно смещая координату Х методом R.Move
Еще с отладчиком надо думать viewtopic.php?f=1&t=8769

Ага надо, корявый он, без него пока собираю.
Сквозняк
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.06.2006 22:08:32

Re: Прикручивание русского языка к FP в линуксе

Сообщение alex_alex_alex1 » 03.02.2013 06:44:27

> Когда не существует fp.dsk, то всё работает корректно.
Имеется в виду, что баг не проявляется в этом случае.
Внимательно еще раз прочитай чего я предлагаю - я не предлагаю не восстанавливать окна, напротив, они должны быть восстановлены. Но не восстанавливать расположение окна Сообщения компилятора.
alex_alex_alex1
постоялец
 
Сообщения: 179
Зарегистрирован: 15.10.2010 14:08:50

Re: Прикручивание русского языка к FP в линуксе

Сообщение rayanAyar » 03.02.2013 07:10:48

To Сквозняк.
Про какие-то проблемы со шрифтами в редакторе вобще первый раз тут услышал. Сколько лет уже работаю с Lazarus-ом никогда не задумывался о том, что у него какие-то "плохие" шрифты в редакторе, они меня полностью устраивают. Что это - надуманная проблема или опять консерватизм? "Хочу так как было 10 лет назад и никак по другому" (c) школьный учитель с 20-летним стажем.

To alex_alex_alex1.
Если вам хочется развивать FP-IDE - пожалста развивайте. В конце концов это OpenSource, и каждый в праве сделать форк, если его не устраивает политика основных разработчиков. Только вот не надо обижаться тут на всех, что вам никто не помогает, что все вас игнорируют. Просто ваше мнение не совпадает не только с разработчиками, но и с большинством пользователей. Так что избавьте пожалста нас от комментариев типа
alex_alex_alex1 писал(а):многие с этого форума могли бы реально помочь с этой программой


To Сквозняк, alex_alex_alex1.
Объясните мне (да и себе тоже) ещё раз - для кого вы развиваете FP-IDE? В обобщенном случае языком программирования пользуются для двух целей - обучение программированию и разработка ПО.
Я думаю, второй вариант (разработка) по понятным причинам можно отбросить. Кто в наше время будет разработывать ПО в архаичной текстовой IDE на паскале?

А что касается обучения программированию - не забывайте, что для обучения не нужен высокий уровень среды разработки. Большинство новичков даже не знают, что такое отладчик. И уж им точно глубоко параллельно на какие-то там тонкости со шрифтами. Новички не предъявляют к среде больших требований.
Lazarus предоставляет все необходимые инструменты для разработки консольных приложений на FreePascal. Всё удобно, всё функционально. И это не голословные утверждения. Конкретно в нашей школе на FreePascal из под Lazarus обучались уже сотни детей. И сейчас учатся. И учатся успешно. Они не говорят что "мы не хотим эту новую оконную среду разработки, а хотим текстовую, которая была 10 лет назад". Не говорят, потому что в них нет консерватизма. Они открыты новому. А подобные фразы ("а где синенький паскаль?") слышны только от преподавателей со стажем, которые не умеют учиться.
Дак для кого вы делаете FP-IDE? Для консервативных учителей, которые не в состоянии освоить за пару дней новый инструмент?
Аватара пользователя
rayanAyar
новенький
 
Сообщения: 42
Зарегистрирован: 06.01.2011 08:22:52
Откуда: Новоуральск

Re: Прикручивание русского языка к FP в линуксе

Сообщение Сквозняк » 03.02.2013 07:16:01

>Но не восстанавливать расположение окна Сообщения компилятора.

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

Добавлено спустя 13 минут 2 секунды:
rayanAyar писал(а):To Сквозняк.Про какие-то проблемы со шрифтами в редакторе вобще первый раз тут услышал. Сколько лет уже работаю с Lazarus-ом никогда не задумывался о том, что у него какие-то "плохие" шрифты в редакторе, они меня полностью устраивают. Что это - надуманная проблема или опять консерватизм? "Хочу так как было 10 лет назад и никак по другому" (c) школьный учитель с 20-летним стажем.


Если заткнуть уши то можно и дальше не слышать. Это у FP ненавистников надуманная проблема - исправлять недостатки лазаруса не надо, надо взять топор и порешить всех конкурентов чтобы не с чем было сравнивать.

To Сквозняк, alex_alex_alex1.
Объясните мне (да и себе тоже) ещё раз - для кого вы развиваете FP-IDE?


Для всех кому он будет нужен и для себя в частности.

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

Прежде чем так "думать", надо подумать.

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

То есть для обучения лазарус не нужен :) Что и требовалось доказать. Всё равно при обучении паскалю изучается не столько паскаль сколько решение математических задач при помощи паскаля. Это как если физику преподавать на албанском, формально будет урок физики а фактически урок албанского на уроке физики. А потом бывшие ученики говорят "паскаль язык не для реальных задач а для обучения".

Lazarus предоставляет все необходимые инструменты для разработки консольных приложений на FreePascal. Всё удобно, всё функционально. И это не голословные утверждения.

Тебе бы рекламу по зомбоящику читать, разбогател бы :wink:

Дак для кого вы делаете FP-IDE? Для консервативных учителей, которые не в состоянии освоить за пару дней новый инструмент?

Тебе руским по русскому ещё раз говорят: для процедурного программирования.
Сквозняк
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.06.2006 22:08:32

Re: Прикручивание русского языка к FP в линуксе

Сообщение alex_alex_alex1 » 03.02.2013 08:06:22

Что это за клавиша Back? Все перебрал так и не догадался - ничего не реагирует.
Патч:
Код: Выделить всё
--- ./ide/fpkeys.pas.orig   2009-06-27 17:45:33.000000000 +0400
+++ ./ide/fpkeys.pas   2013-02-03 07:24:58.451724360 +0400
@@ -40,6 +40,7 @@
       PL : Array [1..NumWantedKeys] of PInputLine;
       KeyOK : Array [1..NumWantedKeys] of boolean;
       PST,PST2 : PAdvancedStaticText;
+      PST3,PST4 : PAdvancedStaticText;
       Constructor Init(Const ATitle : String);
      {Procedure HandleEvent(var E : TEvent);virtual;}
      function Execute : Word;Virtual;
@@ -194,6 +195,12 @@
     NiceEscape(chr(ShiftPrefix))+'" Ctrl prefix = "'+NiceEscape(chr(CtrlPrefix))+'"'));
   Insert(PST2);
   InsertButtons(@Self);
+  R.Move(0,2);
+  New(PST3,init(R,'Press Esc or Enter for Exit...'));
+  Insert(PST3);
+  R.Move(0,1);
+  New(PST4,init(R,'                          '));
+  Insert(PST4);
end;

function TKeyDialog.Execute : Word;

Итог на рисунке:
dsa5.png


Добавлено спустя 6 минут 45 секунд:
Сквозняк, покрути еще с восстановлением расположения окон по уму - не хочется чтобы они восстанавливались всей кучей в одном месте экрана - должно быть более красивое решение, пусть и правок кода потребуется больше - в апстрим уйдёт.
На бездельников внимания обращать не будем - их дело потроллить вместо того чтобы покодить fp на чистом паскале.
alex_alex_alex1
постоялец
 
Сообщения: 179
Зарегистрирован: 15.10.2010 14:08:50

Пред.След.

Вернуться в Разработки на нашем сайте

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

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

Рейтинг@Mail.ru