Changeset 439


Ignore:
Timestamp:
Nov 19, 2012, 2:40:44 PM (12 years ago)
Author:
chronos
Message:
  • Modified: Optiomization using Update blocking during mass operations.
  • Added: Measuring modules start time.
Location:
ModularSystem
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • ModularSystem/Language/UFormModuleList.po

    r431 r439  
    33
    44#: uformmodulelist.sadditionalmodulesinstall
    5 msgid "In addition to \"%0:s\" module also dependent modules will be installed: %1:s"
     5msgid "In addition to \"%0:s\" module also dependent modules will be installed: \"%1:s\""
    66msgstr ""
    77
    88#: uformmodulelist.sadditionalmodulesstart
    9 msgid "In addition to \"%0:s\" module also dependent modules will be started: %1:s"
     9msgid "In addition to \"%0:s\" module also dependent modules will be started: \"%1:s\""
    1010msgstr ""
    1111
    1212#: uformmodulelist.sadditionalmodulesstop
    13 msgid "In addition to \"%0:s\" module also dependent modules will be stopped: %1:s"
     13msgid "In addition to \"%0:s\" module also dependent modules will be stopped: \"%1:s\""
    1414msgstr ""
    1515
    1616#: uformmodulelist.sadditionalmodulesuninstall
    17 msgid "In addition to \"%0:s\" module alse dependent modules will be uninstalled: %1:s"
     17msgid "In addition to \"%0:s\" module alse dependent modules will be uninstalled: \"%1:s\""
    1818msgstr ""
    1919
  • ModularSystem/UFormModuleList.lfm

    r431 r439  
    9999        Caption = 'File name'
    100100        Width = 100
     101      end   
     102      item
     103        Caption = 'Start up time'
     104        Width = 70
    101105      end>
    102106    MultiSelect = True
  • ModularSystem/UFormModuleList.lrs

    r431 r439  
    6767  +'n'#6#7'Licence'#5'Width'#2'd'#0#1#7'Caption'#6#7'Version'#5'Width'#2'F'#0#1
    6868  ,#7'Caption'#6#12'Dependencies'#5'Width'#3','#1#0#1#7'Caption'#6#9'File name'
    69   +#5'Width'#2'd'#0#0#11'MultiSelect'#9#9'OwnerData'#9#9'PopupMenu'#7#10'PopupM'
    70   +'enu1'#8'ReadOnly'#9#9'RowSelect'#9#8'TabOrder'#2#0#9'ViewStyle'#7#8'vsRepor'
    71   +'t'#6'OnData'#7#19'ListViewModulesData'#12'OnSelectItem'#7#25'ListViewModule'
    72   +'sSelectItem'#0#0#8'TToolBar'#8'ToolBar1'#4'Left'#2#0#6'Height'#2#26#3'Top'#3
    73   +'`'#1#5'Width'#3'3'#3#5'Align'#7#8'alBottom'#6'Images'#7#10'ImageList1'#14'P'
    74   +'arentShowHint'#8#8'ShowHint'#9#8'TabOrder'#2#1#0#11'TToolButton'#11'ToolBut'
    75   +'ton1'#4'Left'#3#139#0#3'Top'#2#2#6'Action'#7#11'AUnregister'#0#0#11'TToolBu'
    76   +'tton'#11'ToolButton2'#4'Left'#2'/'#3'Top'#2#2#6'Action'#7#8'AInstall'#0#0#11
    77   +'TToolButton'#11'ToolButton3'#4'Left'#2'F'#3'Top'#2#2#6'Action'#7#10'AUninst'
    78   +'all'#0#0#11'TToolButton'#11'ToolButton4'#4'Left'#2']'#3'Top'#2#2#6'Action'#7
    79   +#6'AStart'#0#0#11'TToolButton'#11'ToolButton5'#4'Left'#2't'#3'Top'#2#2#6'Act'
    80   +'ion'#7#5'AStop'#0#0#11'TToolButton'#11'ToolButton6'#4'Left'#2#1#3'Top'#2#2#6
    81   +'Action'#7#7'AEnable'#0#0#11'TToolButton'#11'ToolButton7'#4'Left'#2#24#3'Top'
    82   +#2#2#6'Action'#7#8'ADisable'#0#0#11'TToolButton'#11'ToolButton8'#4'Left'#3
    83   +#162#0#3'Top'#2#2#6'Action'#7#9'ARegister'#0#0#0#5'TMemo'#5'Memo1'#4'Left'#3
    84   +'g'#2#6'Height'#3'X'#1#3'Top'#2#4#5'Width'#3#200#0#5'Align'#7#7'alRight'#20
    85   +'BorderSpacing.Around'#2#4#8'ReadOnly'#9#10'ScrollBars'#7#10'ssAutoBoth'#8'T'
    86   +'abOrder'#2#2#0#0#9'TSplitter'#9'Splitter1'#4'Left'#3'^'#2#6'Height'#3'`'#1#3
    87   +'Top'#2#0#5'Width'#2#5#5'Align'#7#7'alRight'#12'ResizeAnchor'#7#7'akRight'#0
    88   +#0#6'TTimer'#11'TimerRedraw'#7'Enabled'#8#7'OnTimer'#7#16'TimerRedrawTimer'#4
    89   +'left'#2'@'#3'top'#2'@'#0#0#10'TPopupMenu'#10'PopupMenu1'#6'Images'#7#10'Ima'
    90   +'geList1'#4'left'#3#224#0#3'top'#2'@'#0#9'TMenuItem'#9'MenuItem7'#6'Action'#7
    91   +#7'AEnable'#0#0#9'TMenuItem'#9'MenuItem6'#6'Action'#7#8'ADisable'#0#0#9'TMen'
    92   +'uItem'#9'MenuItem3'#6'Action'#7#8'AInstall'#0#0#9'TMenuItem'#9'MenuItem2'#6
    93   +'Action'#7#10'AUninstall'#0#0#9'TMenuItem'#9'MenuItem4'#6'Action'#7#6'AStart'
    94   +#0#0#9'TMenuItem'#9'MenuItem5'#6'Action'#7#5'AStop'#0#0#9'TMenuItem'#9'MenuI'
    95   +'tem8'#6'Action'#7#8'ARestart'#0#0#9'TMenuItem'#9'MenuItem1'#6'Action'#7#11
    96   +'AUnregister'#0#0#9'TMenuItem'#9'MenuItem9'#6'Action'#7#9'ARegister'#0#0#0#11
    97   +'TActionList'#11'ActionList1'#6'Images'#7#10'ImageList1'#4'left'#3#224#0#3't'
    98   +'op'#3#128#0#0#7'TAction'#9'ARegister'#7'Caption'#6#8'Register'#4'Hint'#6#8
    99   +'Register'#10'ImageIndex'#2#7#0#0#7'TAction'#11'AUnregister'#7'Caption'#6#10
    100   +'Unregister'#4'Hint'#6#10'Unregister'#10'ImageIndex'#2#8#9'OnExecute'#7#18'A'
    101   +'UnregisterExecute'#0#0#7'TAction'#8'AInstall'#7'Caption'#6#7'Install'#4'Hin'
    102   +'t'#6#7'Install'#10'ImageIndex'#2#0#9'OnExecute'#7#15'AInstallExecute'#0#0#7
    103   +'TAction'#10'AUninstall'#7'Caption'#6#9'Uninstall'#4'Hint'#6#9'Uninstall'#10
    104   +'ImageIndex'#2#1#9'OnExecute'#7#17'AUninstallExecute'#0#0#7'TAction'#6'AStar'
    105   +'t'#7'Caption'#6#5'Start'#4'Hint'#6#5'Start'#10'ImageIndex'#2#5#9'OnExecute'
    106   +#7#13'AStartExecute'#0#0#7'TAction'#5'AStop'#7'Caption'#6#4'Stop'#4'Hint'#6#4
    107   +'Stop'#10'ImageIndex'#2#4#9'OnExecute'#7#12'AStopExecute'#0#0#7'TAction'#7'A'
    108   +'Enable'#7'Caption'#6#6'Enable'#4'Hint'#6#6'Enable'#10'ImageIndex'#2#3#9'OnE'
    109   +'xecute'#7#14'AEnableExecute'#0#0#7'TAction'#8'ADisable'#7'Caption'#6#7'Disa'
    110   +'ble'#4'Hint'#6#7'Disable'#10'ImageIndex'#2#2#9'OnExecute'#7#15'ADisableExec'
    111   +'ute'#0#0#7'TAction'#8'ARestart'#7'Caption'#6#7'Restart'#4'Hint'#6#7'Restart'
    112   +#10'ImageIndex'#2#6#0#0#0#10'TImageList'#10'ImageList1'#4'left'#2'@'#3'top'#3
    113   +#128#0#6'Bitmap'#10#14'$'#0#0'Li'#9#0#0#0#16#0#0#0#16#0#0#0#255#255#255#0#255
    114   +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#154#175#154#255'm'#178
    115   +'m'#255'o'#178'o'#255'o'#178'o'#255'k'#178'k'#255'b'#157'b'#255#198#197#198
    116   +#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
    117   +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#145#183#145#255#255
    118   +#255#255#255#253#255#253#255#252#255#252#255#255#255#255#255#179#215#179#255
    119   +#156#172#158#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
    120   +#255#255#0#255#255#255#0#214#214#214#255#194#184#184#255#194#177#181#255#132
    121   +#172#130#255#219#255#220#255#208#250#208#255#202#247#202#255#213#250#213#255
    122   +#150#211#150#255#130#143'|'#255#207#186#197#255#192#190#191#255#236#237#237
    123   +#255#255#255#255#0#255#255#255#0#255#255#255#0#173#169#168#255#197#186#174
    124   +#255#174#171#151#255#143#201#134#255#166#249#169#255#143#240#144#255#134#237
    125   +#134#255#141#230#142#255'b'#194'b'#255#141#180#132#255#198#195#179#255#187
    126   +#174#166#255#196#195#195#255#255#255#255#0#255#255#255#0#255#255#255#0#182
    127   +#170#166#255#175#200#161#255#187#234#190#255#157#234#157#255#131#240#130#255
    128   +'Y'#231'Y'#255'U'#224'U'#255'Z'#210'Y'#255'Q'#193'Q'#255'/'#163'0'#255#19#130
    129   +#18#255#146#158#127#255#207#198#203#255#255#255#255#0#255#255#255#0#255#255
    130   +#255#0#186#172#169#255#195#200#175#255#172#237#175#255#144#250#146#255'K'#228
    131   +'K'#255#25#217#25#255#22#202#22#255#20#186#20#255#13#163#13#255#0#134#0#255
    132   ,'@'#157';'#255#189#175#164#255#198#191#193#255#255#255#255#0#255#255#255#0
    133   +#231#233#233#255#181#169#168#255#220#199#192#255#159#169#139#255'Y'#203'V'
    134   +#255''''#229')'#255#0#207#0#255#0#190#0#255#0#178#0#255#0#150#0#255'5'#140'/'
    135   +#255#225#210#206#255#212#191#185#255#167#162#161#255#251#252#253#255#255#255
    136   +#255#0#225#227#228#255#186#174#169#255#212#193#182#255#192#161#164#255#163
    137   +#165#142#255'('#192'%'#255#0#208#0#255#0#193#0#255#0#175#0#255'K'#167'E'#255
    138   +#199#180#177#255#226#205#202#255#210#194#183#255#167#159#158#255#246#248#249
    139   +#255#255#255#255#0#219#221#221#255#187#175#170#255#224#205#191#255#227#214
    140   +#200#255#233#202#207#255#159#168#139#255#16#187#16#255#0#186#0#255'B'#168'<'
    141   +#255#218#197#198#255#240#223#219#255#242#231#219#255#219#202#192#255#166#157
    142   +#155#255#242#244#245#255#255#255#255#0#210#212#213#255#192#178#171#255#234
    143   +#216#205#255#239#229#218#255#234#222#209#255#249#227#226#255#195#213#179#255
    144   +#135#202'}'#255#232#219#215#255#247#230#225#255#247#238#231#255#247#238#231
    145   +#255#228#210#198#255#166#158#155#255#235#238#239#255#255#255#255#0#204#204
    146   +#205#255#196#183#173#255#225#204#192#255#236#221#212#255#244#235#227#255#244
    147   +#235#227#255#255#238#237#255#255#239#245#255#253#238#235#255#248#241#235#255
    148   +#247#238#231#255#238#227#217#255#235#221#209#255#169#160#154#255#229#231#232
    149   +#255#255#255#255#0#199#200#201#255#196#185#177#255#213#198#187#255#229#212
    150   +#199#255#238#223#211#255#244#232#223#255#247#239#231#255#247#239#231#255#247
    151   +#239#231#255#245#234#223#255#242#230#219#255#226#213#205#255#232#216#207#255
    152   +#172#164#157#255#224#225#226#255#255#255#255#0#202#198#198#255#199#187#179
    153   +#255#226#216#206#255#216#205#196#255#216#205#196#255#213#201#192#255#213#201
    154   +#192#255#213#201#192#255#213#201#192#255#219#208#198#255#224#214#204#255#230
    155   +#215#210#255#238#223#217#255#166#159#154#255#224#223#224#255#255#255#255#0
    156   +#208#201#201#255#156#138#133#255'gYU'#255'vhd'#255#134'us'#255#144#127'|'#255
    157   +'{kh'#255'{kh'#255'vhe'#255'{nl'#255#183#163#160#255#168#168#142#255#183#177
     69  +#5'Width'#2'd'#0#1#7'Caption'#6#13'Start up time'#5'Width'#2'F'#0#0#11'Multi'
     70  +'Select'#9#9'OwnerData'#9#9'PopupMenu'#7#10'PopupMenu1'#8'ReadOnly'#9#9'RowS'
     71  +'elect'#9#8'TabOrder'#2#0#9'ViewStyle'#7#8'vsReport'#6'OnData'#7#19'ListView'
     72  +'ModulesData'#12'OnSelectItem'#7#25'ListViewModulesSelectItem'#0#0#8'TToolBa'
     73  +'r'#8'ToolBar1'#4'Left'#2#0#6'Height'#2#26#3'Top'#3'`'#1#5'Width'#3'3'#3#5'A'
     74  +'lign'#7#8'alBottom'#6'Images'#7#10'ImageList1'#14'ParentShowHint'#8#8'ShowH'
     75  +'int'#9#8'TabOrder'#2#1#0#11'TToolButton'#11'ToolButton1'#4'Left'#3#139#0#3
     76  +'Top'#2#2#6'Action'#7#11'AUnregister'#0#0#11'TToolButton'#11'ToolButton2'#4
     77  +'Left'#2'/'#3'Top'#2#2#6'Action'#7#8'AInstall'#0#0#11'TToolButton'#11'ToolBu'
     78  +'tton3'#4'Left'#2'F'#3'Top'#2#2#6'Action'#7#10'AUninstall'#0#0#11'TToolButto'
     79  +'n'#11'ToolButton4'#4'Left'#2']'#3'Top'#2#2#6'Action'#7#6'AStart'#0#0#11'TTo'
     80  +'olButton'#11'ToolButton5'#4'Left'#2't'#3'Top'#2#2#6'Action'#7#5'AStop'#0#0
     81  +#11'TToolButton'#11'ToolButton6'#4'Left'#2#1#3'Top'#2#2#6'Action'#7#7'AEnabl'
     82  +'e'#0#0#11'TToolButton'#11'ToolButton7'#4'Left'#2#24#3'Top'#2#2#6'Action'#7#8
     83  +'ADisable'#0#0#11'TToolButton'#11'ToolButton8'#4'Left'#3#162#0#3'Top'#2#2#6
     84  +'Action'#7#9'ARegister'#0#0#0#5'TMemo'#5'Memo1'#4'Left'#3'g'#2#6'Height'#3'X'
     85  +#1#3'Top'#2#4#5'Width'#3#200#0#5'Align'#7#7'alRight'#20'BorderSpacing.Around'
     86  +#2#4#8'ReadOnly'#9#10'ScrollBars'#7#10'ssAutoBoth'#8'TabOrder'#2#2#0#0#9'TSp'
     87  +'litter'#9'Splitter1'#4'Left'#3'^'#2#6'Height'#3'`'#1#3'Top'#2#0#5'Width'#2#5
     88  +#5'Align'#7#7'alRight'#12'ResizeAnchor'#7#7'akRight'#0#0#6'TTimer'#11'TimerR'
     89  +'edraw'#7'Enabled'#8#7'OnTimer'#7#16'TimerRedrawTimer'#4'left'#2'@'#3'top'#2
     90  +'@'#0#0#10'TPopupMenu'#10'PopupMenu1'#6'Images'#7#10'ImageList1'#4'left'#3
     91  +#224#0#3'top'#2'@'#0#9'TMenuItem'#9'MenuItem7'#6'Action'#7#7'AEnable'#0#0#9
     92  +'TMenuItem'#9'MenuItem6'#6'Action'#7#8'ADisable'#0#0#9'TMenuItem'#9'MenuItem'
     93  +'3'#6'Action'#7#8'AInstall'#0#0#9'TMenuItem'#9'MenuItem2'#6'Action'#7#10'AUn'
     94  +'install'#0#0#9'TMenuItem'#9'MenuItem4'#6'Action'#7#6'AStart'#0#0#9'TMenuIte'
     95  +'m'#9'MenuItem5'#6'Action'#7#5'AStop'#0#0#9'TMenuItem'#9'MenuItem8'#6'Action'
     96  +#7#8'ARestart'#0#0#9'TMenuItem'#9'MenuItem1'#6'Action'#7#11'AUnregister'#0#0
     97  +#9'TMenuItem'#9'MenuItem9'#6'Action'#7#9'ARegister'#0#0#0#11'TActionList'#11
     98  +'ActionList1'#6'Images'#7#10'ImageList1'#4'left'#3#224#0#3'top'#3#128#0#0#7
     99  +'TAction'#9'ARegister'#7'Caption'#6#8'Register'#4'Hint'#6#8'Register'#10'Ima'
     100  +'geIndex'#2#7#0#0#7'TAction'#11'AUnregister'#7'Caption'#6#10'Unregister'#4'H'
     101  +'int'#6#10'Unregister'#10'ImageIndex'#2#8#9'OnExecute'#7#18'AUnregisterExecu'
     102  +'te'#0#0#7'TAction'#8'AInstall'#7'Caption'#6#7'Install'#4'Hint'#6#7'Install'
     103  +#10'ImageIndex'#2#0#9'OnExecute'#7#15'AInstallExecute'#0#0#7'TAction'#10'AUn'
     104  +'install'#7'Caption'#6#9'Uninstall'#4'Hint'#6#9'Uninstall'#10'ImageIndex'#2#1
     105  +#9'OnExecute'#7#17'AUninstallExecute'#0#0#7'TAction'#6'AStart'#7'Caption'#6#5
     106  +'Start'#4'Hint'#6#5'Start'#10'ImageIndex'#2#5#9'OnExecute'#7#13'AStartExecut'
     107  +'e'#0#0#7'TAction'#5'AStop'#7'Caption'#6#4'Stop'#4'Hint'#6#4'Stop'#10'ImageI'
     108  +'ndex'#2#4#9'OnExecute'#7#12'AStopExecute'#0#0#7'TAction'#7'AEnable'#7'Capti'
     109  +'on'#6#6'Enable'#4'Hint'#6#6'Enable'#10'ImageIndex'#2#3#9'OnExecute'#7#14'AE'
     110  +'nableExecute'#0#0#7'TAction'#8'ADisable'#7'Caption'#6#7'Disable'#4'Hint'#6#7
     111  +'Disable'#10'ImageIndex'#2#2#9'OnExecute'#7#15'ADisableExecute'#0#0#7'TActio'
     112  +'n'#8'ARestart'#7'Caption'#6#7'Restart'#4'Hint'#6#7'Restart'#10'ImageIndex'#2
     113  +#6#0#0#0#10'TImageList'#10'ImageList1'#4'left'#2'@'#3'top'#3#128#0#6'Bitmap'
     114  +#10#14'$'#0#0'Li'#9#0#0#0#16#0#0#0#16#0#0#0#255#255#255#0#255#255#255#0#255
     115  +#255#255#0#255#255#255#0#255#255#255#0#154#175#154#255'm'#178'm'#255'o'#178
     116  +'o'#255'o'#178'o'#255'k'#178'k'#255'b'#157'b'#255#198#197#198#255#255#255#255
     117  +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
     118  +#255#255#0#255#255#255#0#255#255#255#0#145#183#145#255#255#255#255#255#253
     119  +#255#253#255#252#255#252#255#255#255#255#255#179#215#179#255#156#172#158#255
     120  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
     121  +#255#255#0#214#214#214#255#194#184#184#255#194#177#181#255#132#172#130#255
     122  +#219#255#220#255#208#250#208#255#202#247#202#255#213#250#213#255#150#211#150
     123  +#255#130#143'|'#255#207#186#197#255#192#190#191#255#236#237#237#255#255#255
     124  +#255#0#255#255#255#0#255#255#255#0#173#169#168#255#197#186#174#255#174#171
     125  +#151#255#143#201#134#255#166#249#169#255#143#240#144#255#134#237#134#255#141
     126  +#230#142#255'b'#194'b'#255#141#180#132#255#198#195#179#255#187#174#166#255
     127  +#196#195#195#255#255#255#255#0#255#255#255#0#255#255#255#0#182#170#166#255
     128  +#175#200#161#255#187#234#190#255#157#234#157#255#131#240#130#255'Y'#231'Y'
     129  +#255'U'#224'U'#255'Z'#210'Y'#255'Q'#193'Q'#255'/'#163'0'#255#19#130#18#255
     130  +#146#158#127#255#207#198#203#255#255#255#255#0#255#255#255#0#255#255#255#0
     131  +#186#172#169#255#195#200#175#255#172#237#175#255#144#250#146#255'K'#228'K'
     132  ,#255#25#217#25#255#22#202#22#255#20#186#20#255#13#163#13#255#0#134#0#255'@'
     133  +#157';'#255#189#175#164#255#198#191#193#255#255#255#255#0#255#255#255#0#231
     134  +#233#233#255#181#169#168#255#220#199#192#255#159#169#139#255'Y'#203'V'#255
     135  +''''#229')'#255#0#207#0#255#0#190#0#255#0#178#0#255#0#150#0#255'5'#140'/'#255
     136  +#225#210#206#255#212#191#185#255#167#162#161#255#251#252#253#255#255#255#255
     137  +#0#225#227#228#255#186#174#169#255#212#193#182#255#192#161#164#255#163#165
     138  +#142#255'('#192'%'#255#0#208#0#255#0#193#0#255#0#175#0#255'K'#167'E'#255#199
     139  +#180#177#255#226#205#202#255#210#194#183#255#167#159#158#255#246#248#249#255
     140  +#255#255#255#0#219#221#221#255#187#175#170#255#224#205#191#255#227#214#200
     141  +#255#233#202#207#255#159#168#139#255#16#187#16#255#0#186#0#255'B'#168'<'#255
     142  +#218#197#198#255#240#223#219#255#242#231#219#255#219#202#192#255#166#157#155
     143  +#255#242#244#245#255#255#255#255#0#210#212#213#255#192#178#171#255#234#216
     144  +#205#255#239#229#218#255#234#222#209#255#249#227#226#255#195#213#179#255#135
     145  +#202'}'#255#232#219#215#255#247#230#225#255#247#238#231#255#247#238#231#255
     146  +#228#210#198#255#166#158#155#255#235#238#239#255#255#255#255#0#204#204#205
     147  +#255#196#183#173#255#225#204#192#255#236#221#212#255#244#235#227#255#244#235
     148  +#227#255#255#238#237#255#255#239#245#255#253#238#235#255#248#241#235#255#247
     149  +#238#231#255#238#227#217#255#235#221#209#255#169#160#154#255#229#231#232#255
     150  +#255#255#255#0#199#200#201#255#196#185#177#255#213#198#187#255#229#212#199
     151  +#255#238#223#211#255#244#232#223#255#247#239#231#255#247#239#231#255#247#239
     152  +#231#255#245#234#223#255#242#230#219#255#226#213#205#255#232#216#207#255#172
     153  +#164#157#255#224#225#226#255#255#255#255#0#202#198#198#255#199#187#179#255
     154  +#226#216#206#255#216#205#196#255#216#205#196#255#213#201#192#255#213#201#192
     155  +#255#213#201#192#255#213#201#192#255#219#208#198#255#224#214#204#255#230#215
     156  +#210#255#238#223#217#255#166#159#154#255#224#223#224#255#255#255#255#0#208
     157  +#201#201#255#156#138#133#255'gYU'#255'vhd'#255#134'us'#255#144#127'|'#255'{k'
     158  +'h'#255'{kh'#255'vhe'#255'{nl'#255#183#163#160#255#168#168#142#255#183#177
    158159  +#158#255#156#146#145#255#225#225#225#255#255#255#255#0#206#204#203#255#183
    159160  +#169#167#255#169#151#150#255#194#178#175#255#213#198#194#255#222#207#203#255
     
    193194  +#255#255#255#255#0#203#204#204#255#194#181#169#255#166#154#194#255'yy'#239
    194195  +#255#136#136#229#255#186#177#189#255#246#233#220#255#248#236#229#255#236#225
    195   +#212#255#161#156#208#255'TV'#248#255'fc'#215#255#206#192#191#255#169#161#153
    196   ,#255#231#233#234#255#255#255#255#0#199#199#199#255#195#181#172#255#232#211
     196  ,#212#255#161#156#208#255'TV'#248#255'fc'#215#255#206#192#191#255#169#161#153
     197  +#255#231#233#234#255#255#255#255#0#199#199#199#255#195#181#172#255#232#211
    197198  +#184#255#173#161#175#255#175#168#189#255#249#241#227#255#244#237#228#255#244
    198199  +#237#228#255#250#243#232#255#238#230#224#255#156#149#187#255#208#196#193#255
     
    257258  +#192#0#192#192#192#0#192#192#192#0#192#192#192#0#192#192#192#0#192#192#192#0
    258259  +#192#192#192#0#192#192#192#0#192#192#192#0#192#192#192#0#192#192#192#0#192
    259   +#192#192#0#192#192#192#0#192#192#192#0#192#192#192#0#192#192#192#0#192#192
    260   ,#192#0#192#192#192#0#192#192#192#0#192#192#192#0#192#192#192#0#192#192#192#0
     260  ,#192#192#0#192#192#192#0#192#192#192#0#192#192#192#0#192#192#192#0#192#192
     261  +#192#0#192#192#192#0#192#192#192#0#192#192#192#0#192#192#192#0#192#192#192#0
    261262  +#192#192#192#0#192#192#192#0#192#192#192#0#192#192#192#0#192#192#192#0#192
    262263  +#192#192#0#192#192#192#0#192#192#192#0#192#192#192#0#192#192#192#0#192#192
     
    321322  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255
    322323  +#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0
    323   +#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
    324   ,#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255
     324  ,#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
     325  +#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255
    325326  +#255#0#0#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
    326327  +#0#0#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255
     
    385386  +#153'3'#255#0#153'3'#255#0#153'3'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
    386387  +#0#0#0#0#0#153'3'#255'f'#204#153#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'3'#153
    387   +'f'#255#0#153'3'#255#0#153'3'#255#0#153'3'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
    388   ,#0#0#0#0#0#0#0#0#0'f'#204#153#255#0#153'3'#255'f'#204#153#255#0#0#0#0#0#0#0#0
     388  ,'f'#255#0#153'3'#255#0#153'3'#255#0#153'3'#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
     389  +#0#0#0#0#0#0#0#0#0'f'#204#153#255#0#153'3'#255'f'#204#153#255#0#0#0#0#0#0#0#0
    389390  +'f'#204#153#255#0#153'3'#255#0#153'3'#255#0#153'3'#255#0#153'3'#255#0#0#0#0#0
    390391  +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'3'#153'f'#255'3'#153'f'#255#0
     
    449450  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
    450451  +#255#255#255#0'x'#207#130#212'u'#205#128#255's'#202'}'#254'p'#199'z'#180#255
    451   +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
    452   ,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
     452  ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
     453  +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
    453454  +'w'#207#130#18'x'#205#130#255#156#217#167#255#152#216#162#255'm'#196'v'#236
    454455  +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
  • ModularSystem/UFormModuleList.lrt

    r431 r439  
    1010TFORMMODULELIST.LISTVIEWMODULES.COLUMNS[8].CAPTION=Dependencies
    1111TFORMMODULELIST.LISTVIEWMODULES.COLUMNS[9].CAPTION=File name
     12TFORMMODULELIST.LISTVIEWMODULES.COLUMNS[10].CAPTION=Start up time
    1213TFORMMODULELIST.AREGISTER.CAPTION=Register
    1314TFORMMODULELIST.AREGISTER.HINT=Register
  • ModularSystem/UFormModuleList.pas

    r431 r439  
    77uses
    88  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
    9   ComCtrls, ExtCtrls, Menus, ActnList, StdCtrls, SpecializedList,
     9  ComCtrls, ExtCtrls, Menus, ActnList, StdCtrls, SpecializedList, DateUtils,
    1010  UListViewSort, UModularSystem;
    1111
     
    1414    mloShowIdentification, mloShowLicense, mloShowEnable, mloShowRunning,
    1515    mloShowDependencies, mloShowInstalled, mloShowInfoBar, mloShowDescription,
    16     mloAllowInstall, mloAllowEnable, mloAllowRegister, mloAllowStart);
     16    mloShowStartUpTime, mloAllowInstall, mloAllowEnable, mloAllowRegister, mloAllowStart);
    1717  TModuleListOptions = set of TModuleListOption;
    1818
     
    9292  SYes = 'Yes';
    9393  SNo = 'No';
    94   SAdditionalModulesInstall = 'In addition to "%0:s" module also dependent modules will be installed: %1:s';
    95   SAdditionalModulesUninstall = 'In addition to "%0:s" module alse dependent modules will be uninstalled: %1:s';
    96   SAdditionalModulesStart = 'In addition to "%0:s" module also dependent modules will be started: %1:s';
    97   SAdditionalModulesStop = 'In addition to "%0:s" module also dependent modules will be stopped: %1:s';
     94  SAdditionalModulesInstall = 'In addition to "%0:s" module also dependent modules will be installed: "%1:s"';
     95  SAdditionalModulesUninstall = 'In addition to "%0:s" module alse dependent modules will be uninstalled: "%1:s"';
     96  SAdditionalModulesStart = 'In addition to "%0:s" module also dependent modules will be started: "%1:s"';
     97  SAdditionalModulesStop = 'In addition to "%0:s" module also dependent modules will be stopped: "%1:s"';
    9898  SIdentification = 'Identification';
    9999  SName = 'Name';
     
    133133    if FileName <> '' then Item.SubItems.Add(FileName)
    134134      else Item.SubItems.Add(' ');
     135    Item.SubItems.Add(FloatToStr(Trunc(StartUpTime / OneMillisecond)));
    135136  end;
    136137end;
     
    199200  try
    200201    Modules := TListModule.Create;
     202    Modules.OwnsObjects := False;
    201203    EnumDependenciesCascade(Modules, [mcNotRunning]);
    202204    if Modules.Count > 0 then begin
     
    223225  try
    224226    Modules := TListModule.Create;
    225     TModule(ListViewModules.Selected.Data).EnumSuperiorDependenciesCascade(Modules, [mcRunning]);
     227    Modules.OwnsObjects := False;
     228    EnumSuperiorDependenciesCascade(Modules, [mcRunning]);
    226229    if Modules.Count > 0 then begin
    227230      if MessageDlg(Format(SAdditionalModulesStop, [
    228       TModule(ListViewModules.Selected.Data).Identification,
     231      Identification,
    229232      Modules.Implode(',', ModuleToStr)]),
    230233      mtConfirmation, [mbYes, mbNo], 0) = mrYes then
    231         TModule(ListViewModules.Selected.Data).Stop;
    232     end else TModule(ListViewModules.Selected.Data).Stop;
     234        Stop;
     235    end else Stop;
    233236  finally
    234237    FreeAndNil(Modules);
     
    248251  try
    249252    Modules := TListModule.Create;
    250     TModule(ListViewModules.Selected.Data).EnumSuperiorDependenciesCascade(Modules, [mcInstalled]);
     253    Modules.OwnsObjects := False;
     254    EnumSuperiorDependenciesCascade(Modules, [mcInstalled]);
    251255    if Modules.Count > 0 then begin
    252256      if MessageDlg(Format(SAdditionalModulesUninstall, [
    253       TModule(ListViewModules.Selected.Data).Identification,
     257      Identification,
    254258      Modules.Implode(',', ModuleToStr)]),
    255259      mtConfirmation, [mbYes, mbNo], 0) = mrYes then
    256         TModule(ListViewModules.Selected.Data).Uninstall;
    257     end else TModule(ListViewModules.Selected.Data).Uninstall;
     260        Uninstall;
     261    end else Uninstall;
    258262  finally
    259263    Modules.Free;
     
    280284  try
    281285    Modules := TListModule.Create;
    282     TModule(ListViewModules.Selected.Data).EnumDependenciesCascade(Modules, [mcNotInstalled]);
     286    Modules.OwnsObjects := False;
     287    EnumDependenciesCascade(Modules, [mcNotInstalled]);
    283288    if Modules.Count > 0 then begin
    284289      if MessageDlg(Format(SAdditionalModulesInstall, [
    285       TModule(ListViewModules.Selected.Data).Identification,
     290      Identification,
    286291      Modules.Implode(',', ModuleToStr)]),
    287292      mtConfirmation, [mbYes, mbNo], 0) = mrYes then
    288         TModule(ListViewModules.Selected.Data).Install;
    289     end else TModule(ListViewModules.Selected.Data).Install;
     293        Install;
     294    end else Install;
    290295  finally
    291296    Modules.Free;
     
    305310  try
    306311    Modules := TListModule.Create;
     312    Modules.OwnsObjects := False;
    307313    EnumDependenciesCascade(Modules, [mcNotRunning]);
    308314    if Modules.Count > 0 then begin
     
    310316      Identification, Modules.Implode(',', ModuleToStr)]),
    311317      mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
    312         Enabled := True;
     318        Enable;
    313319        Start;
    314320      end;
    315321    end else begin
    316       Enabled := True;
     322      Enable;
    317323      Start;
    318324    end;
     
    334340  try
    335341    Modules := TListModule.Create;
    336     TModule(ListViewModules.Selected.Data).EnumSuperiorDependenciesCascade(Modules, [mcInstalled]);
     342    Modules.OwnsObjects := False;
     343    EnumSuperiorDependenciesCascade(Modules, [mcInstalled]);
    337344    if Modules.Count > 0 then begin
    338345      if MessageDlg(Format(SAdditionalModulesUninstall, [
    339       TModule(ListViewModules.Selected.Data).Identification,
     346      Identification,
    340347      Modules.Implode(',', ModuleToStr)]),
    341348      mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
    342         TModule(ListViewModules.Selected.Data).Stop;
    343         TModule(ListViewModules.Selected.Data).Enabled := False;
     349        Stop;
     350        Disable;
    344351      end;
    345352    end else begin
    346353      TModule(ListViewModules.Selected.Data).Stop;
    347       TModule(ListViewModules.Selected.Data).Enabled := False;
     354      TModule(ListViewModules.Selected.Data).Disable;
    348355    end;
    349356  finally
     
    393400      7: Result := CompareString(TModule(Item1).Version, TModule(
    394401        Item2).Version);
    395       8: Result := CompareString(TModule(Item1).Dependencies.Implode(',', StrToStr), TModule(
    396         Item2).Dependencies.Implode(',', StrToStr));
     402      8: Result := CompareString(TModule(Item1).Dependencies.Implode(',', StrToStr),
     403        TModule(Item2).Dependencies.Implode(',', StrToStr));
     404      9: Result := CompareString(TModule(Item1).FileName,
     405        TModule(Item2).FileName);
     406      10: Result := CompareTime(TModule(Item1).StartUpTime,
     407        TModule(Item2).StartUpTime);
    397408    end;
    398409    if ListViewSort.Order = soDown then Result := -Result;
     
    483494  ListViewModules.Column[8].Visible := (mloShowDependencies in FOptions);
    484495  ListViewModules.Column[9].Visible := (mloShowFileName in FOptions);
     496  ListViewModules.Column[10].Visible := (mloShowStartUpTime in FOptions);
    485497  Memo1.Visible := (mloShowInfoBar in FOptions);
    486498  Splitter1.Visible := (mloShowInfoBar in FOptions);
  • ModularSystem/UModularSystem.pas

    r431 r439  
    4343    FFileName: string;
    4444    FWebSite: string;
     45    FStartUpTime: TDateTime;
    4546    procedure SetEnabled(AValue: Boolean);
    4647    procedure SetInstalled(AValue: Boolean);
     
    7475    property Installed: Boolean read FInstalled write SetInstalled;
    7576    property Enabled: Boolean read FEnabled write SetEnabled;
     77    property StartUpTime: TDateTime read FStartUpTime;
    7678  published
    7779    property Identification: string read FIdentification write FIdentification; // Unique system name
     
    110112    FOptions: TModuleManagerOptions;
    111113    procedure SetAPI(AValue: TAPI);
    112     procedure DoUpdate;
     114    procedure DoUpdate(Sender: TObject);
    113115  public
    114116    Modules: TListModule; // TObjectList<TModule>
     
    122124    procedure LoadFromRegistry(Context: TRegistryContext);
    123125    procedure SaveToRegistry(Context: TRegistryContext);
    124     procedure BeginUpdate;
    125     procedure EndUpdate;
    126     procedure Update;
    127126    constructor Create(AOwner: TComponent); override;
    128127    destructor Destroy; override;
     
    154153  A: Integer;
    155154begin
     155  try
     156    BeginUpdate;
    156157  for I := 0 to Count - 1 do
    157158  with TModule(Items[I]) do
     
    169170      if Actions[A] = maUninstall then Uninstall;
    170171      if Actions[A] = maUpgrade then Upgrade;
    171       if Actions[A] = maEnable then Enabled := True;
    172       if Actions[A] = maDisable then Enabled := False;
     172      if Actions[A] = maEnable then Enable;
     173      if Actions[A] = maDisable then Disable;
    173174    end;
     175  finally
     176    EndUpdate;
     177  end;
    174178end;
    175179
     
    196200end;
    197201
    198 procedure TModuleManager.DoUpdate;
     202procedure TModuleManager.DoUpdate(Sender: TObject);
    199203begin
    200204  if Assigned(FOnUpdate) then FOnUpdate(Self);
     
    263267  Module.FManager := Self;
    264268  Module.API := API;
    265   Update;
     269  Modules.Update;
    266270end;
    267271
     
    269273begin
    270274  Modules.Remove(Module);
    271   Update;
     275  Modules.Update;
    272276end;
    273277
     
    277281  Modules := TListModule.Create;
    278282  Modules.OwnsObjects := False;
     283  Modules.OnUpdate := DoUpdate;
    279284end;
    280285
     
    296301    with TModule(Modules[I]) do begin
    297302      OpenKey(Context.Key + '\' + Identification, True);
    298       Enabled := ReadBoolWithDefault('Enable', Enabled);
     303      Installed := ReadBoolWithDefault('Installed', Installed);
     304      Enabled := ReadBoolWithDefault('Enabled', Enabled);
    299305    end;
    300306  finally
     
    313319    with TModule(Modules[I]) do begin
    314320      OpenKey(Context.Key + '\' + Identification, True);
    315       WriteBool('Enable', Enabled);
     321      WriteBool('Enabled', Enabled);
     322      WriteBool('Installed', Installed);
    316323    end;
    317324  finally
    318325    Free;
    319326  end;
    320 end;
    321 
    322 procedure TModuleManager.BeginUpdate;
    323 begin
    324   Inc(FUpdateCount);
    325 end;
    326 
    327 procedure TModuleManager.EndUpdate;
    328 begin
    329   if FUpdateCount > 0 then Dec(FUpdateCount);
    330   if FUpdateCount = 0 then DoUpdate;
    331 end;
    332 
    333 procedure TModuleManager.Update;
    334 begin
    335   if FUpdateCount = 0 then DoUpdate;
    336327end;
    337328
     
    378369    List := TListModule.Create;
    379370    List.OwnsObjects := False;
    380     EnumSuperiorDependenciesCascade(List);
     371    EnumDependenciesCascade(List, [mcNotEnabled]);
    381372    List.Perform([maEnable], [mcNotEnabled]);
    382373  finally
     
    397388    List := TListModule.Create;
    398389    List.OwnsObjects := False;
    399     EnumSuperiorDependenciesCascade(List);
     390    EnumSuperiorDependenciesCascade(List, [mcEnabled]);
    400391    List.Perform([maDisable], [mcEnabled]);
    401392  finally
    402393    List.Free;
    403394  end;
    404   Manager.Update;
     395  Manager.Modules.Update;
    405396end;
    406397
     
    422413begin
    423414  if FEnabled = AValue then Exit;
    424   if FEnabled then Enable else Disable;
     415  if AValue then Enable else Disable;
    425416end;
    426417
     
    428419var
    429420  List: TListModule;
     421  StartTime: TDateTime;
    430422begin
    431423  if not Enabled or Running then Exit;
     
    434426    List := TListModule.Create;
    435427    List.OwnsObjects := False;
    436     EnumDependenciesCascade(List);
     428    EnumDependenciesCascade(List, [mcNotRunning]);
    437429    List.Perform([maStart], [mcNotRunning]);
    438430  finally
    439431    List.Free;
    440432  end;
     433  StartTime := Now;
    441434  DoStart;
     435  FStartUpTime := Now - StartTime;
    442436  FRunning := True;
    443   Manager.Update;
     437  Manager.Modules.Update;
    444438end;
    445439
     
    453447    List := TListModule.Create;
    454448    List.OwnsObjects := False;
    455     EnumSuperiorDependenciesCascade(List);
     449    EnumSuperiorDependenciesCascade(List, [mcRunning]);
    456450    List.Perform([maStop], [mcRunning]);
    457451  finally
     
    459453  end;
    460454  DoStop;
    461   Manager.Update;
     455  Manager.Modules.Update;
    462456end;
    463457
     
    476470    List := TListModule.Create;
    477471    List.OwnsObjects := False;
    478     EnumDependenciesCascade(List);
     472    EnumDependenciesCascade(List, [mcNotInstalled]);
    479473    List.Perform([maInstall], [mcNotInstalled]);
    480474  finally
     
    483477  FInstalled := True;
    484478  DoInstall;
    485   Enable; // Auto enable installed module
    486   Manager.Update;
     479  //Enable; // Auto enable installed module
     480  Manager.Modules.Update;
    487481end;
    488482
     
    496490    List := TListModule.Create;
    497491    List.OwnsObjects := False;
    498     EnumSuperiorDependenciesCascade(List);
     492    EnumSuperiorDependenciesCascade(List, [mcInstalled]);
    499493    List.Perform([maUninstall], [mcInstalled]);
    500494  finally
     
    503497  FInstalled := False;
    504498  DoUninstall;
    505   Manager.Update;
     499  Manager.Modules.Update;
    506500end;
    507501
     
    521515    Start;
    522516  end else DoUpgrade;
    523   Manager.Update;
     517  Manager.Modules.Update;
    524518end;
    525519
     
    541535begin
    542536  FInstalled := Value;
    543   Manager.Update;
     537  Manager.Modules.Update;
    544538end;
    545539
Note: See TracChangeset for help on using the changeset viewer.