colorselonly.pp 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. program onlycolorsel;
  2. uses
  3. Objects, Drivers, Views, Menus, Dialogs, App, ColorSel;
  4. const cmColors =12828;
  5. cmCreateSave = 31991;
  6. cmLoadColors =23467;
  7. type
  8. PColorApp = ^TColorApp;
  9. TColorApp = object(TApplication)
  10. constructor Init;
  11. function GetPalette: PPalette; virtual;
  12. procedure HandleEvent(var Event: TEvent); virtual;
  13. procedure InitMenuBar; virtual;
  14. end;
  15. procedure TutorStreamError(var S: TStream);
  16. var ErrorMessage: String;
  17. begin
  18. case S.Status of
  19. stError: ErrorMessage := 'Stream access error';
  20. stInitError: ErrorMessage := 'Cannot initialize stream';
  21. stReadError: ErrorMessage := 'Read beyond end of stream';
  22. stWriteError: ErrorMessage := 'Cannot expand stream';
  23. stGetError: ErrorMessage := 'Unregistered type read from stream';
  24. stPutError: ErrorMessage :='Unregistered type written to stream';
  25. end;
  26. ClearScreen;
  27. PrintStr('Error: ' + ErrorMessage);
  28. readln;
  29. Halt(Abs(S.Status));
  30. end;
  31. constructor TColorApp.Init;
  32. begin
  33. StreamError := @TutorStreamError;
  34. RegisterObjects;
  35. RegisterViews;
  36. RegisterDialogs;
  37. RegisterApp;
  38. RegisterColorsel;
  39. inherited Init;
  40. end;
  41. function TColorApp.GetPalette: PPalette;
  42. const
  43. CNewColor = CAppColor ;
  44. CNewBlackWhite = CAppBlackWhite ;
  45. CNewMonochrome = CAppMonochrome ;
  46. P: array[apColor..apMonochrome] of string[Length(CNewColor)] =
  47. (CNewColor, CNewBlackWhite, CNewMonochrome);
  48. begin
  49. GetPalette := @P[AppPalette];
  50. end;
  51. procedure TColorApp.InitMenuBar;
  52. var
  53. R: TRect;
  54. begin
  55. GetExtent(R);
  56. R.B.Y := R.A.Y + 1;
  57. MenuBar := New(PMenubar, Init(R, NewMenu(NewSubMenu('~M~enu', hcNoContext,
  58. NewMenu(
  59. NewItem('Color ~T~est', 'F2', kbF2, cmColors, hcNoContext,
  60. NewItem('Color ~S~ave', 'F4', kbF4, cmCreateSave, hcNoContext,
  61. NewItem('Color ~L~oad', 'F6', kbF6, cmLoadColors, hcNoContext,
  62. nil)))),
  63. nil))));
  64. end;
  65. procedure TColorApp.HandleEvent(var Event: TEvent);
  66. procedure Colors;
  67. var
  68. R: TRect;
  69. D: PDialog;
  70. begin
  71. D := New(PColorDialog, Init('',
  72. ColorGroup('Desktop', DesktopColorItems(nil),
  73. ColorGroup('Menus', MenuColorItems(nil),
  74. ColorGroup('Dialogs', DialogColorItems(dpGrayDialog, nil),
  75. ColorGroup('Editor', WindowColorItems(wpBlueWindow, nil),
  76. ColorGroup('Ascii table', WindowColorItems(wpGrayWindow, nil),
  77. ColorGroup('Calendar',
  78. WindowColorItems(wpCyanWindow,
  79. ColorItem('Current day', 22, nil)),
  80. nil))))))));
  81. if ExecuteDialog(D, Application^.GetPalette) <> cmCancel then
  82. begin
  83. ReDraw;
  84. end;
  85. end;
  86. procedure ColorsSave;
  87. var
  88. R: TRect;
  89. D: PDialog;
  90. var DesktopFile: TBufStream;
  91. begin
  92. D := New(PColorDialog, Init('',
  93. ColorGroup('Desktop', DesktopColorItems(nil),
  94. ColorGroup('Menus', MenuColorItems(nil),
  95. ColorGroup('Dialogs', DialogColorItems(dpGrayDialog, nil),
  96. ColorGroup('Editor', WindowColorItems(wpBlueWindow, nil),
  97. ColorGroup('Ascii table', WindowColorItems(wpGrayWindow, nil),
  98. ColorGroup('Calendar',
  99. WindowColorItems(wpCyanWindow,
  100. ColorItem('Current day', 22, nil)),
  101. nil))))))));
  102. DesktopFile.Init('DESKTOP.TUT', stCreate, 1024);
  103. DesktopFile.Put(D);
  104. DesktopFile.Done;
  105. Dispose(D,Done);
  106. end;
  107. procedure ColorsLoad;
  108. var
  109. R: TRect;
  110. D: PDialog;
  111. p1, p2, p3 ,p4 : pointer;
  112. var DesktopFile: TBufStream;
  113. begin
  114. getmem(p1,50); {make some memory offset so load is in different pointers}
  115. getMem(p2,100);
  116. getMem(p3,30);
  117. getMem(p4,150);
  118. DesktopFile.Init('DESKTOP.TUT', stOpenRead, 1024);
  119. D:=PDialog(DesktopFile.Get);
  120. DesktopFile.Done;
  121. freemem(p1,50);
  122. freeMem(p2,100);
  123. freeMem(p3,30);
  124. freeMem(p4,150);
  125. if assigned(D) then
  126. if ExecuteDialog(D, Application^.GetPalette) <> cmCancel then
  127. begin
  128. ReDraw;
  129. end;
  130. end;
  131. begin
  132. inherited HandleEvent(Event);
  133. case Event.What of
  134. evCommand:
  135. begin
  136. case Event.Command of
  137. cmColors: Colors;
  138. cmCreateSave:ColorsSave;
  139. cmLoadColors:ColorsLoad;
  140. else
  141. Exit;
  142. end;
  143. ClearEvent(Event);
  144. end;
  145. end;
  146. end;
  147. var
  148. ColorApp: TColorApp;
  149. begin
  150. ColorApp.Init;
  151. ColorApp.Run;
  152. ColorApp.Done;
  153. end.