OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Суббота, 23 Сентябрь, 2017 06:48

Часовой пояс: UTC + 3 часа


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
СообщениеДобавлено: Пятница, 20 Июль, 2007 11:01 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 900
В HostWindows.GenPathTitle:
Код:
  IF  s2 # "" THEN
    IF (CAP(s1[0]) = "M") & (CAP(s1[1]) = "O") & (CAP(s1[2]) = "D") & (s1[3] = 0X)  THEN
       title := "("+s2+")";
    ELSIF (CAP(s1[0]) = "D") & (CAP(s1[1]) = "O") & (CAP(s1[2]) = "C") & (CAP(s1[3]) = "U") & (s1[4] = 0X)  THEN
        title := "["+s2+"]";
    ELSIF (CAP(s1[0]) = "R") & (CAP(s1[1]) = "S") & (CAP(s1[2]) = "R") & (CAP(s1[3]) = "C") & (s1[4] = 0X)   THEN
        title := "{"+s2+"}";
    END
  END


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рацпредложение
СообщениеДобавлено: Пятница, 20 Июль, 2007 11:55 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4017
Откуда: Россия, Орёл
Наведём красоту?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рацпредложение
СообщениеДобавлено: Пятница, 20 Июль, 2007 12:17 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 900
Просто для удобства: чтобы исходники/документация/ресурсы отличались заголовками.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 01 Январь, 2014 16:34 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4392
Откуда: Россия, Орёл
пример применения рацпредложения: viewtopic.php?p=33418#p33418


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 01 Январь, 2014 17:06 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 1873
Откуда: Красноярск
Добавил рацпреложение в Красноярскую сборку, буду держать в голове для версии центра.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 16 Ноябрь, 2016 04:04 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4392
Откуда: Россия, Орёл
Есть более свободное решение. Даже без хука --- вообще без изменения стандартных модулей.

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

Ниже пример, который
1) отмечает документы из подсистем (viewtopic.php?p=33418#p33418)
2) добавляет путь документов, открытых по абсолютному пути. Эту штуку придумал Иван Горячев в 1.6 сборке сообщества (http://oberoncore.ru/projects/bb16ce).

ipuiK46 и ipuiK401 см. в архиве http://oberoncore.ru/bbcc/subs/ipui/

Код:
MODULE ipuiK401;

   IMPORT
      Log,
      Services, Windows, Strings, Files, Converters, Views,
      HostFiles, ipuiK46;

   TYPE
      Action = POINTER TO RECORD (Services.Action) END;

   VAR
      a: Action;
      baseLoc: HostFiles.Locator;

   PROCEDURE Append (VAR s: ARRAY OF CHAR; t: ARRAY OF CHAR);
      VAR len: INTEGER; i, j: INTEGER; ch: CHAR;
   BEGIN
      len := LEN(s);
      i := 0; WHILE s[i] # 0X DO INC(i) END;
      j := 0; REPEAT ch := t[j]; s[i] := ch; INC(j); INC(i) UNTIL (ch = 0X) OR (i = len);
      s[len - 1] := 0X;
      IF (ch # 0X) & (i = len) THEN s[len - 2] := "…" END
   END Append;

   PROCEDURE CheckMod (w: Windows.Window; OUT title: Views.Title; OUT done: BOOLEAN);
      VAR
         loc: Files.Locator; ch: CHAR; s1, s2: HostFiles.FullName; i, j: INTEGER;
         name: Files.Name; pos: INTEGER;
   BEGIN
      done := FALSE;
      IF (w.loc # NIL) & (w.conv = Converters.list) THEN
         loc := w.loc; ipuiK46.GetName(w.name, Files.docType, name);
         WITH loc: HostFiles.Locator DO
            i := 0; ch := loc.path[0]; j := 0; s2 := "";
            WHILE ch # 0X DO
               IF (ch = "\") OR (ch = "/") THEN
                  s1[j] := 0X; s2 := s1$; j := 0
               ELSE
                  s1[j] := ch; INC(j)
               END;
               INC(i); ch := loc.path[i]
            END;
            s1[j] := 0X;
            title := ""; done := TRUE;
            IF s2 # "" THEN
               IF (CAP(s1[0]) = "M") & (CAP(s1[1]) = "O") & (CAP(s1[2]) = "D") & (s1[3] = 0X) THEN
                  title := "("+s2+"/Mod)"
               ELSIF (CAP(s1[0]) = "D") & (CAP(s1[1]) = "O") & (CAP(s1[2]) = "C") & (CAP(s1[3]) = "U") & (s1[4] = 0X) THEN
                  title := "("+s2+"/Docu)";
               ELSIF (CAP(s1[0]) = "R") & (CAP(s1[1]) = "S") & (CAP(s1[2]) = "R") & (CAP(s1[3]) = "C") & (s1[4] = 0X) THEN
                  title := "("+s2+"/Rsrc)"
               END
            END;
            Append(title, name);
            IF baseLoc # NIL THEN
               Strings.Find(loc.path, baseLoc.path, 0, pos);
               IF pos # 0 THEN
                  Append(title, " | " + loc.path)
               END
            END
         ELSE
         END
      END
   END CheckMod;

   PROCEDURE UpdateWindowTitles*;
      VAR
         w: Windows.Window; title: Views.Title; done: BOOLEAN;
   BEGIN
      IF Windows.dir # NIL THEN w := Windows.dir.First() ELSE w := NIL END;
      WHILE w # NIL DO
         (* Log.String(w.name); Log.Ln; *)
         CheckMod(w, title, done);
         IF done THEN
            (* Log.Tab; Log.String(title); Log.Ln; *)
            w.SetTitle(title)
         END;
         w := Windows.dir.Next(w)
      END
   END UpdateWindowTitles;

   PROCEDURE (a: Action) Do;
   BEGIN
      UpdateWindowTitles;
      Services.DoLater(a, Services.Ticks() + 3 * Services.resolution)
   END Do;

   PROCEDURE GetBaseLoc;
      VAR
         loc: Files.Locator;
   BEGIN
      loc := Files.stdDir.This("");
      IF loc IS HostFiles.Locator THEN
         baseLoc := loc(HostFiles.Locator)
      ELSE
         baseLoc := NIL
      END
   END GetBaseLoc;

BEGIN
   GetBaseLoc;
   NEW(a);
   Services.DoLater(a, Services.now);
   Log.String("ipuiK401.UpdateWindowTitles включён"); Log.Ln
CLOSE
   Services.RemoveAction(a);
   Log.String("ipuiK401.UpdateWindowTitles выключен"); Log.Ln
END ipuiK401.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 16 Ноябрь, 2016 08:26 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 1873
Откуда: Красноярск
В сборку Центра это предложение было добавлено в немного измененном виде.

Вложение:
center_var_windows.png
center_var_windows.png [ 8.83 КБ | Просмотров: 1485 ]


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 16 Ноябрь, 2016 10:48 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4392
Откуда: Россия, Орёл
Иван Денисов писал(а):
В сборку Центра это предложение было добавлено в немного измененном виде.
Т.е. в исходном, по предложению Трурля (viewtopic.php?p=6912#p6912). Или там ещё что-то прибавилось?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 16 Ноябрь, 2016 12:47 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 1873
Откуда: Красноярск
Евгений Темиргалеев писал(а):
Иван Денисов писал(а):
В сборку Центра это предложение было добавлено в немного измененном виде.
Т.е. в исходном, по предложению Трурля (viewtopic.php?p=6912#p6912). Или там ещё что-то прибавилось?

Смысл был немного изменен, а реализация как я понимаю не изменилась.

J.Templ писал(а):
As proposed by Trurl in CPC 1.7 rc5 but with a different association of the bracket form:
Mod () //as in BB1.6; the most used document class should not be changed
Rsrc [] //symbolizes the rectangular shape of forms
Docu {}


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 11 Апрель, 2017 16:22 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 981
Откуда: СССР v2.0 rc 1
А я бы всё-таки добавил в заголовке более психологически комфортный квалификатор: "(Obx)Lines -- Исходник"
Квалификатор должен стоять именно сзади, чтобы в свёрнутом виде не затирал имя модуля. Ко все прочему, ещё можно и национальный вариант сделать небольшим движением руки))


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2017, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB