Tools__ObjectModuleInformation.st
author Claus Gittinger <cg@exept.de>
Tue, 14 May 2019 09:46:21 +0200
changeset 3663 9d49ecf8661a
parent 3486 b831d1299848
permissions -rw-r--r--
#UI_ENHANCEMENT by cg
class: TabListEditor class
changed:
#canvasSpec
#menu
#windowSpec
cg@3388
     1
"
cg@3388
     2
 COPYRIGHT (c) 2007 by eXept Software AG
cg@3388
     3
              All Rights Reserved
cg@3388
     4
cg@3388
     5
 This software is furnished under a license and may be used
cg@3388
     6
 only in accordance with the terms of that license and with the
cg@3388
     7
 inclusion of the above copyright notice.   This software may not
cg@3388
     8
 be provided or otherwise made available to, or used by, any
cg@3388
     9
 other person.  No title to or ownership of the software is
cg@3388
    10
 hereby transferred.
cg@3388
    11
"
cg@2181
    12
"{ Package: 'stx:libtool2' }"
cg@2181
    13
cg@2181
    14
"{ NameSpace: Tools }"
cg@2181
    15
cg@2184
    16
ToolApplicationModel subclass:#ObjectModuleInformation
cg@2184
    17
	instanceVariableNames:'readOnly listOfModuleNames selectedModuleIndexHolder allModules
cg@2183
    18
		objectHandles showOthers showCObjects showBuiltIn showMethods
cg@2253
    19
		showClassLibs table1VisibleHolder table2VisibleHolder
cg@2253
    20
		selectedInfoIndexHolder canBrowseSelectedModule
cg@2253
    21
		canUnloadSelectedModule classNamesShown classInfoShown
cg@2618
    22
		vmInfoShown canUnloadSelectedModulesPackage
cg@2619
    23
		canBrowseSelectedModulesExtensions canUnloadSelectedDLL'
cg@2181
    24
	classVariableNames:''
cg@2181
    25
	poolDictionaries:''
cg@2181
    26
	category:'Monitors-ST/X'
cg@2181
    27
!
cg@2181
    28
cg@2181
    29
Object subclass:#InfoRow
cg@2183
    30
	instanceVariableNames:'name version date value'
cg@2181
    31
	classVariableNames:''
cg@2181
    32
	poolDictionaries:''
cg@2181
    33
	privateIn:ObjectModuleInformation
cg@2181
    34
!
cg@2181
    35
cg@2181
    36
!ObjectModuleInformation class methodsFor:'documentation'!
cg@2181
    37
cg@3388
    38
copyright
cg@3388
    39
"
cg@3388
    40
 COPYRIGHT (c) 2007 by eXept Software AG
cg@3388
    41
              All Rights Reserved
cg@3388
    42
cg@3388
    43
 This software is furnished under a license and may be used
cg@3388
    44
 only in accordance with the terms of that license and with the
cg@3388
    45
 inclusion of the above copyright notice.   This software may not
cg@3388
    46
 be provided or otherwise made available to, or used by, any
cg@3388
    47
 other person.  No title to or ownership of the software is
cg@3388
    48
 hereby transferred.
cg@3388
    49
"
cg@3388
    50
!
cg@3388
    51
cg@2181
    52
documentation
cg@2181
    53
"
cg@2181
    54
    Shows the modules (dll's) of ST/X.
cg@2181
    55
    Both builtIn modules, and dynamically loaded modules are listed.
cg@2181
    56
cg@2181
    57
    [author:]
cg@2253
    58
        Claus Gittinger
cg@2181
    59
"
cg@2181
    60
!
cg@2181
    61
cg@2181
    62
examples
cg@2181
    63
"
cg@2181
    64
  Starting the application:
cg@2181
    65
                                                                [exBegin]
cg@2181
    66
    ObjectModuleInformation open
cg@2181
    67
cg@2181
    68
                                                                [exEnd]
cg@2181
    69
"
cg@2181
    70
! !
cg@2181
    71
cg@2181
    72
!ObjectModuleInformation class methodsFor:'info'!
cg@2181
    73
cg@2181
    74
defaultLabel
cg@2183
    75
    ^ 'Object Module Info'
cg@2181
    76
cg@2181
    77
    "Created: / 05-10-2007 / 11:56:59 / cg"
cg@2181
    78
! !
cg@2181
    79
cg@2181
    80
!ObjectModuleInformation class methodsFor:'interface specs'!
cg@2181
    81
cg@2181
    82
windowSpec
cg@2181
    83
    "This resource specification was automatically generated
cg@2181
    84
     by the UIPainter of ST/X."
cg@2181
    85
cg@2181
    86
    "Do not manually edit this!! If it is corrupted,
cg@2181
    87
     the UIPainter may not be able to read the specification."
cg@2181
    88
cg@2181
    89
    "
cg@2183
    90
     UIPainter new openOnClass:Tools::ObjectModuleInformation andSelector:#windowSpec
cg@2183
    91
     Tools::ObjectModuleInformation new openInterface:#windowSpec
cg@2183
    92
     Tools::ObjectModuleInformation open
cg@2181
    93
    "
cg@2181
    94
cg@2181
    95
    <resource: #canvas>
cg@2181
    96
cg@2181
    97
    ^ 
cg@3069
    98
    #(FullSpec
cg@3069
    99
       name: windowSpec
cg@3069
   100
       window: 
cg@3069
   101
      (WindowSpec
cg@3069
   102
         label: 'ST/X Module & Version Information'
cg@3069
   103
         name: 'ST/X Module & Version Information'
cg@3069
   104
         min: (Point 0 0)
cg@3069
   105
         bounds: (Rectangle 0 0 505 567)
cg@3069
   106
         menu: mainMenu
cg@3069
   107
       )
cg@3069
   108
       component: 
cg@3069
   109
      (SpecCollection
cg@3069
   110
         collection: (
cg@3069
   111
          (MenuPanelSpec
cg@3069
   112
             name: 'ToolBar1'
cg@3069
   113
             layout: (LayoutFrame 0 0 0 0 0 1 40 0)
cg@3069
   114
             menu: toolbarMenu
cg@3069
   115
             textDefault: true
cg@3069
   116
           )
cg@3069
   117
          (VariableVerticalPanelSpec
cg@3069
   118
             name: 'VariableVerticalPanel1'
cg@3069
   119
             layout: (LayoutFrame 0 0 40 0 0 1 0 1)
cg@3069
   120
             component: 
cg@3069
   121
            (SpecCollection
cg@3069
   122
               collection: (
cg@3069
   123
                (SequenceViewSpec
cg@3069
   124
                   name: 'List1'
cg@3069
   125
                   model: selectedModuleIndexHolder
cg@3069
   126
                   menu: moduleMenu
cg@3069
   127
                   hasHorizontalScrollBar: true
cg@3069
   128
                   hasVerticalScrollBar: true
cg@3069
   129
                   useIndex: true
cg@3069
   130
                   sequenceList: listOfModuleNames
cg@3069
   131
                 )
cg@3069
   132
                (ViewSpec
cg@3069
   133
                   name: 'Box1'
cg@3069
   134
                   component: 
cg@3069
   135
                  (SpecCollection
cg@3069
   136
                     collection: (
cg@3069
   137
                      (LabelSpec
cg@3069
   138
                         name: 'Label2'
cg@3069
   139
                         layout: (LayoutFrame 0 0 0 0 0 1 30 0)
cg@3069
   140
                         translateLabel: true
cg@3069
   141
                         labelChannel: descriptionLabelHolder
cg@3069
   142
                         adjust: left
cg@2181
   143
                       )
cg@3069
   144
                      (LabelSpec
cg@3069
   145
                         name: 'Label1'
cg@3069
   146
                         layout: (LayoutFrame 0 0 30 0 0 1 60 0)
cg@3069
   147
                         translateLabel: true
cg@3069
   148
                         labelChannel: middleLabelHolder
cg@3069
   149
                         adjust: left
cg@3069
   150
                       )
cg@3069
   151
                      (DataSetSpec
cg@3069
   152
                         name: 'Table1'
cg@3069
   153
                         layout: (LayoutFrame 0 0 60 0 0 1 0 1)
cg@3069
   154
                         visibilityChannel: table1VisibleHolder
cg@3069
   155
                         model: selectedInfoIndexHolder
cg@3069
   156
                         menu: moduleItemMenu
cg@3069
   157
                         hasHorizontalScrollBar: true
cg@3069
   158
                         hasVerticalScrollBar: true
cg@3069
   159
                         dataList: infoTable1ListHolder
cg@3069
   160
                         columnHolder: tableColumns
cg@3069
   161
                         separatorOneDColor: (Color 66.9993133440147 66.9993133440147 66.9993133440147)
cg@3069
   162
                         keepSpaceForOSXResizeHandleV: true
cg@3069
   163
                       )
cg@3069
   164
                      (DataSetSpec
cg@3069
   165
                         name: 'Table2'
cg@3069
   166
                         layout: (LayoutFrame 0 0 60 0 0 1 0 1)
cg@3069
   167
                         initiallyInvisible: true
cg@3069
   168
                         visibilityChannel: table2VisibleHolder
cg@3069
   169
                         model: selectedInfoIndexHolder
cg@3069
   170
                         hasHorizontalScrollBar: true
cg@3069
   171
                         hasVerticalScrollBar: true
cg@3069
   172
                         dataList: infoTable2ListHolder
cg@3069
   173
                         columnHolder: tableColumnsForSingleInfo
cg@3069
   174
                         separatorOneDColor: (Color 66.9993133440147 66.9993133440147 66.9993133440147)
cg@3069
   175
                         keepSpaceForOSXResizeHandleV: true
cg@3069
   176
                       )
cg@3069
   177
                      )
cg@3069
   178
                    
cg@3069
   179
                   )
cg@2181
   180
                 )
cg@3069
   181
                )
cg@3069
   182
              
cg@3069
   183
             )
cg@3069
   184
             handles: (Any 0.35195530726257 1.0)
cg@2181
   185
           )
cg@3069
   186
          )
cg@3069
   187
        
cg@3069
   188
       )
cg@3069
   189
     )
cg@2181
   190
! !
cg@2181
   191
cg@2181
   192
!ObjectModuleInformation class methodsFor:'menu specs'!
cg@2181
   193
cg@2181
   194
mainMenu
cg@2181
   195
    "This resource specification was automatically generated
cg@2181
   196
     by the MenuEditor of ST/X."
cg@2181
   197
cg@2181
   198
    "Do not manually edit this!! If it is corrupted,
cg@2181
   199
     the MenuEditor may not be able to read the specification."
cg@2181
   200
cg@2181
   201
    "
cg@2183
   202
     MenuEditor new openOnClass:Tools::ObjectModuleInformation andSelector:#mainMenu
cg@2183
   203
     (Menu new fromLiteralArrayEncoding:(Tools::ObjectModuleInformation mainMenu)) startUp
cg@2181
   204
    "
cg@2181
   205
cg@2181
   206
    <resource: #menu>
cg@2181
   207
cg@2181
   208
    ^ 
cg@2181
   209
     #(Menu
cg@2181
   210
        (
cg@2181
   211
         (MenuItem
cg@2181
   212
            label: 'File'
cg@2181
   213
            translateLabel: true
cg@2181
   214
            submenu: 
cg@2181
   215
           (Menu
cg@2181
   216
              (
cg@2181
   217
               (MenuItem
cg@2181
   218
                  label: 'Exit'
cg@2181
   219
                  itemValue: closeRequest
cg@2181
   220
                  translateLabel: true
cg@2181
   221
                )
cg@2181
   222
               )
cg@2181
   223
              nil
cg@2181
   224
              nil
cg@2181
   225
            )
cg@2181
   226
          )
cg@2181
   227
         (MenuItem
cg@2181
   228
            label: 'View'
cg@2181
   229
            translateLabel: true
cg@2181
   230
            submenu: 
cg@2181
   231
           (Menu
cg@2181
   232
              (
cg@2181
   233
               (MenuItem
cg@2619
   234
                  label: 'Dynamically Loaded ClassLibraries Only'
sv@2842
   235
                  itemValue: showOnlyDynamicallyLoadedClassLibraries
cg@2619
   236
                  translateLabel: true
cg@2619
   237
                  hideMenuOnActivated: false
cg@2619
   238
                )
cg@2619
   239
               (MenuItem
cg@2619
   240
                  label: '-'
cg@2619
   241
                )
cg@2619
   242
               (MenuItem
cg@2181
   243
                  label: 'Builtin'
cg@2181
   244
                  translateLabel: true
cg@2183
   245
                  hideMenuOnActivated: false
cg@2181
   246
                  indication: showBuiltIn
cg@2181
   247
                )
cg@2181
   248
               (MenuItem
cg@2181
   249
                  label: 'Class Libraries'
cg@2181
   250
                  translateLabel: true
cg@2183
   251
                  hideMenuOnActivated: false
cg@2181
   252
                  indication: showClassLibs
cg@2181
   253
                )
cg@2181
   254
               (MenuItem
cg@2181
   255
                  label: 'Methods'
cg@2181
   256
                  translateLabel: true
cg@2183
   257
                  hideMenuOnActivated: false
cg@2181
   258
                  indication: showMethods
cg@2181
   259
                )
cg@2181
   260
               (MenuItem
cg@2181
   261
                  label: 'C-Objects'
cg@2181
   262
                  translateLabel: true
cg@2183
   263
                  hideMenuOnActivated: false
cg@2181
   264
                  indication: showCObjects
cg@2181
   265
                )
cg@2181
   266
               (MenuItem
cg@2181
   267
                  label: 'Others'
cg@2181
   268
                  translateLabel: true
cg@2183
   269
                  hideMenuOnActivated: false
cg@2181
   270
                  indication: showOthers
cg@2181
   271
                )
cg@2403
   272
               (MenuItem
cg@2403
   273
                  label: '-'
cg@2403
   274
                )
cg@2403
   275
               (MenuItem
cg@2403
   276
                  label: 'Update'
cg@2403
   277
                  itemValue: menuUpdateModuleList
cg@2403
   278
                  translateLabel: true
cg@2403
   279
                )
cg@2181
   280
               )
cg@2181
   281
              nil
cg@2181
   282
              nil
cg@2181
   283
            )
cg@2181
   284
          )
cg@2181
   285
         (MenuItem
cg@2181
   286
            label: 'Module'
cg@2181
   287
            translateLabel: true
cg@2181
   288
            submenu: 
cg@2181
   289
           (Menu
cg@2181
   290
              (
cg@2403
   291
               (MenuItem
cg@2403
   292
                  enabled: canBrowseSelectedModule
cg@2403
   293
                  label: 'Browse'
cg@2403
   294
                  itemValue: browseModule
cg@2403
   295
                  translateLabel: true
cg@2403
   296
                )
cg@2403
   297
               (MenuItem
cg@2619
   298
                  enabled: canBrowseSelectedModulesExtensions
cg@2619
   299
                  label: 'Browse Extensions'
cg@2619
   300
                  itemValue: browseModuleExtensions
cg@2619
   301
                  translateLabel: true
cg@2619
   302
                )
sv@2842
   303
               (MenuItem
sv@2842
   304
                  enabled: canBrowseSelectedModulesProjectDefinition
sv@2842
   305
                  label: 'Browse ProjectDefinition'
sv@2842
   306
                  itemValue: browseModulesProjectDefinition
sv@2842
   307
                  translateLabel: true
sv@2842
   308
                )
sv@2842
   309
               (MenuItem
sv@2842
   310
                  label: 'Find a Class...'
sv@2842
   311
                  itemValue: findClass
sv@2842
   312
                  translateLabel: true
sv@2842
   313
                )
cg@2619
   314
               (MenuItem
cg@2619
   315
                  label: '-'
cg@2619
   316
                )
cg@2619
   317
               (MenuItem
cg@2253
   318
                  enabled: canCopyClassNameList
cg@2253
   319
                  label: 'Copy Version Info to Clipboard'
cg@2253
   320
                  itemValue: copyClassOrVMNameList
cg@2253
   321
                  translateLabel: true
cg@2253
   322
                )
cg@2181
   323
               (MenuItem
cg@2253
   324
                  label: '-'
cg@2253
   325
                )
cg@2253
   326
               (MenuItem
cg@2619
   327
                  label: 'Load Package...'
cg@2619
   328
                  itemValue: loadPackage
cg@2619
   329
                  translateLabel: true
cg@2619
   330
                )
cg@2619
   331
               (MenuItem
cg@2619
   332
                  label: '-'
cg@2619
   333
                )
cg@2619
   334
               (MenuItem
cg@2616
   335
                  enabled: canUnloadSelectedModulesPackage
cg@2619
   336
                  label: 'Unload Package...'
cg@2616
   337
                  itemValue: unloadSelectedModulesPackage
cg@2181
   338
                  translateLabel: true
cg@2181
   339
                )
cg@2403
   340
               (MenuItem
cg@2977
   341
                  enabled: canUnloadSelectedModule
cg@2619
   342
                  label: 'Remove Classes && Unload DLL...'
cg@2403
   343
                  itemValue: unloadSelectedModuleAndRemoveClasses
cg@2403
   344
                  translateLabel: true
cg@2403
   345
                )
cg@2616
   346
               (MenuItem
cg@2977
   347
                  enabled: canUnloadSelectedDLL
cg@2619
   348
                  label: 'Unload DLL...'
cg@2616
   349
                  itemValue: unloadSelectedModule
cg@2616
   350
                  translateLabel: true
cg@2616
   351
                )
sv@2842
   352
               (MenuItem
sv@2842
   353
                  label: 'Inspect'
sv@2842
   354
                  itemValue: inspectSelectedObject
sv@2842
   355
                  translateLabel: true
sv@2842
   356
                )
sv@2842
   357
               (MenuItem
sv@2842
   358
                  label: '-'
sv@2842
   359
                )
sv@2842
   360
               (MenuItem
sv@2842
   361
                  label: 'Update'
sv@2842
   362
                  itemValue: menuUpdateModuleList
sv@2842
   363
                  translateLabel: true
sv@2842
   364
                )
cg@2181
   365
               )
cg@2181
   366
              nil
cg@2181
   367
              nil
cg@2181
   368
            )
cg@2181
   369
          )
cg@2181
   370
         (MenuItem
cg@3192
   371
            label: 'MENU_Help'
cg@3192
   372
            startGroup: conditionalRight
cg@2181
   373
            translateLabel: true
cg@2181
   374
            submenu: 
cg@2181
   375
           (Menu
cg@2181
   376
              (
cg@2181
   377
               (MenuItem
cg@2181
   378
                  label: 'Documentation'
cg@2181
   379
                  itemValue: openDocumentation
cg@2181
   380
                  translateLabel: true
cg@2181
   381
                )
cg@2181
   382
               (MenuItem
cg@2181
   383
                  label: '-'
cg@2181
   384
                )
cg@2181
   385
               (MenuItem
cg@2181
   386
                  label: 'About this Application...'
cg@2181
   387
                  itemValue: openAboutThisApplication
cg@2181
   388
                  translateLabel: true
cg@2181
   389
                )
cg@2181
   390
               )
cg@2181
   391
              nil
cg@2181
   392
              nil
cg@2181
   393
            )
cg@2181
   394
          )
cg@2181
   395
         )
cg@2181
   396
        nil
cg@2181
   397
        nil
cg@2181
   398
      )
cg@2253
   399
!
cg@2253
   400
cg@2253
   401
moduleItemMenu
cg@2253
   402
    "This resource specification was automatically generated
cg@2253
   403
     by the MenuEditor of ST/X."
cg@2253
   404
cg@2253
   405
    "Do not manually edit this!! If it is corrupted,
cg@2253
   406
     the MenuEditor may not be able to read the specification."
cg@2253
   407
cg@2253
   408
    "
cg@2253
   409
     MenuEditor new openOnClass:Tools::ObjectModuleInformation andSelector:#moduleItemMenu
cg@2253
   410
     (Menu new fromLiteralArrayEncoding:(Tools::ObjectModuleInformation moduleItemMenu)) startUp
cg@2253
   411
    "
cg@2253
   412
cg@2253
   413
    <resource: #menu>
cg@2253
   414
cg@2253
   415
    ^ 
cg@2253
   416
     #(Menu
cg@2253
   417
        (
sv@2842
   418
         (MenuItem
cg@2253
   419
            enabled: canBrowseSelectedClass
cg@2253
   420
            label: 'Browse'
cg@2253
   421
            itemValue: browseClass
cg@2253
   422
            translateLabel: true
cg@2253
   423
          )
sv@2842
   424
         (MenuItem
cg@2253
   425
            label: '-'
cg@2253
   426
          )
sv@2842
   427
         (MenuItem
cg@2253
   428
            enabled: canCopyClassNameList
cg@2253
   429
            label: 'Copy Version Info to Clipboard'
cg@2253
   430
            itemValue: copyClassOrVMNameList
cg@2253
   431
            translateLabel: true
cg@2253
   432
          )
cg@2253
   433
         )
cg@2253
   434
        nil
cg@2253
   435
        nil
cg@2253
   436
      )
cg@2253
   437
!
cg@2253
   438
cg@2253
   439
moduleMenu
cg@2253
   440
    "This resource specification was automatically generated
cg@2253
   441
     by the MenuEditor of ST/X."
cg@2253
   442
cg@2253
   443
    "Do not manually edit this!! If it is corrupted,
cg@2253
   444
     the MenuEditor may not be able to read the specification."
cg@2253
   445
cg@2253
   446
    "
cg@2253
   447
     MenuEditor new openOnClass:Tools::ObjectModuleInformation andSelector:#moduleMenu
cg@2253
   448
     (Menu new fromLiteralArrayEncoding:(Tools::ObjectModuleInformation moduleMenu)) startUp
cg@2253
   449
    "
cg@2253
   450
cg@2253
   451
    <resource: #menu>
cg@2253
   452
cg@2253
   453
    ^ 
cg@2253
   454
     #(Menu
cg@2253
   455
        (
cg@2253
   456
         (MenuItem
cg@2253
   457
            enabled: canBrowseSelectedModule
cg@2253
   458
            label: 'Browse'
cg@2253
   459
            itemValue: browseModule
cg@2253
   460
            translateLabel: true
cg@2253
   461
          )
cg@2618
   462
         (MenuItem
cg@2618
   463
            enabled: canBrowseSelectedModulesExtensions
cg@2618
   464
            label: 'Browse Extensions'
cg@2618
   465
            itemValue: browseModuleExtensions
cg@2618
   466
            translateLabel: true
cg@2618
   467
          )
cg@2619
   468
         (MenuItem
cg@2763
   469
            enabled: canBrowseSelectedModulesProjectDefinition
cg@2763
   470
            label: 'Browse ProjectDefinition'
cg@2763
   471
            itemValue: browseModulesProjectDefinition
cg@2763
   472
            translateLabel: true
cg@2763
   473
          )
cg@2763
   474
         (MenuItem
cg@2623
   475
            label: 'Find a Class...'
cg@2623
   476
            itemValue: findClass
cg@2623
   477
            translateLabel: true
cg@2623
   478
          )
cg@2623
   479
         (MenuItem
cg@2619
   480
            label: '-'
cg@2619
   481
          )
cg@2619
   482
         (MenuItem
cg@2253
   483
            enabled: canCopyClassNameList
cg@2253
   484
            label: 'Copy Version Info to Clipboard'
cg@2253
   485
            itemValue: copyClassOrVMNameList
cg@2253
   486
            translateLabel: true
cg@2253
   487
          )
cg@2253
   488
         (MenuItem
cg@2253
   489
            label: '-'
cg@2253
   490
          )
cg@2253
   491
         (MenuItem
cg@2616
   492
            enabled: canUnloadSelectedModulesPackage
cg@2619
   493
            label: 'Unload Package...'
cg@2616
   494
            itemValue: unloadSelectedModulesPackage
cg@2616
   495
            translateLabel: true
cg@2616
   496
          )
cg@2616
   497
         (MenuItem
cg@2253
   498
            enabled: canUnloadSelectedModule
cg@2619
   499
            label: 'Remove Classes && Unload DLL...'
cg@2253
   500
            itemValue: unloadSelectedModuleAndRemoveClasses
cg@2253
   501
            translateLabel: true
cg@2253
   502
          )
cg@2253
   503
         (MenuItem
cg@2619
   504
            enabled: canUnloadSelectedDLL
cg@2619
   505
            label: 'Unload DLL...'
cg@2253
   506
            itemValue: unloadSelectedModule
cg@2253
   507
            translateLabel: true
cg@2253
   508
          )
cg@2619
   509
         (MenuItem
sv@2842
   510
            label: 'Inspect'
sv@2842
   511
            itemValue: inspectSelectedObject
sv@2842
   512
            translateLabel: true
sv@2842
   513
          )
sv@2842
   514
         (MenuItem
cg@2619
   515
            label: '-'
cg@2619
   516
          )
cg@2619
   517
         (MenuItem
cg@2619
   518
            label: 'Update'
cg@2619
   519
            itemValue: menuUpdateModuleList
cg@2619
   520
            translateLabel: true
cg@2619
   521
          )
cg@2253
   522
         )
cg@2253
   523
        nil
cg@2253
   524
        nil
cg@2253
   525
      )
cg@2616
   526
!
cg@2616
   527
cg@2616
   528
toolbarMenu
cg@2616
   529
    "This resource specification was automatically generated
cg@2616
   530
     by the MenuEditor of ST/X."
cg@2616
   531
cg@2616
   532
    "Do not manually edit this!! If it is corrupted,
cg@2616
   533
     the MenuEditor may not be able to read the specification."
cg@2616
   534
cg@2616
   535
    "
cg@2616
   536
     MenuEditor new openOnClass:Tools::ObjectModuleInformation andSelector:#toolbarMenu
cg@2616
   537
     (Menu new fromLiteralArrayEncoding:(Tools::ObjectModuleInformation toolbarMenu)) startUp
cg@2616
   538
    "
cg@2616
   539
cg@2616
   540
    <resource: #menu>
cg@2616
   541
cg@2616
   542
    ^ 
cg@2616
   543
     #(Menu
cg@2616
   544
        (
cg@2616
   545
         (MenuItem
cg@2620
   546
            label: 'Update'
cg@2620
   547
            itemValue: menuUpdateModuleList
cg@2620
   548
            translateLabel: true
cg@2620
   549
            isButton: true
cg@2620
   550
            labelImage: (ResourceRetriever ToolbarIconLibrary reloadIcon)
cg@2620
   551
          )
cg@2620
   552
         (MenuItem
cg@2620
   553
            label: '-'
cg@2620
   554
          )
cg@2620
   555
         (MenuItem
cg@2616
   556
            enabled: canBrowseSelectedModule
cg@2617
   557
            label: 'Browse the Selected Module''s Classes'
cg@2616
   558
            itemValue: browseModule
cg@2616
   559
            translateLabel: true
cg@2616
   560
            isButton: true
cg@2618
   561
            labelImage: (ResourceRetriever ToolbarIconLibrary startSystemBrowserIcon)
cg@2618
   562
          )
cg@2618
   563
         (MenuItem
cg@2618
   564
            enabled: canBrowseSelectedModulesExtensions
cg@2618
   565
            label: 'Browse the Selected Module''s Extensions'
cg@2618
   566
            itemValue: browseModuleExtensions
cg@2618
   567
            translateLabel: true
cg@2618
   568
            isButton: true
cg@2618
   569
            labelImage: (ResourceRetriever ToolbarIconLibrary browseClassExtensionsIcon)
cg@2616
   570
          )
cg@2616
   571
         )
cg@2616
   572
        nil
cg@2616
   573
        nil
cg@2616
   574
      )
cg@2181
   575
! !
cg@2181
   576
cg@2181
   577
!ObjectModuleInformation class methodsFor:'tableColumns specs'!
cg@2181
   578
cg@2181
   579
tableColumns
cg@2181
   580
    "This resource specification was automatically generated
cg@2181
   581
     by the DataSetBuilder of ST/X."
cg@2181
   582
cg@2181
   583
    "Do not manually edit this!! If it is corrupted,
cg@2181
   584
     the DataSetBuilder may not be able to read the specification."
cg@2181
   585
cg@2181
   586
    "
cg@3345
   587
     DataSetBuilder new openOnClass:Tools::ObjectModuleInformation andSelector:#tableColumns
cg@2181
   588
    "
cg@2181
   589
cg@2181
   590
    <resource: #tableColumns>
cg@2181
   591
cg@2181
   592
    ^#(
cg@2181
   593
      (DataSetColumnSpec
cg@2181
   594
         label: 'Name'
cg@2181
   595
         activeHelpKey: ''
cg@3345
   596
         activeHelpKeyForLabel: ''
cg@2181
   597
         labelButtonType: Button
cg@3345
   598
         isSortable: true
cg@3345
   599
         sortSelector: name
cg@2181
   600
         width: 0.5
cg@3345
   601
         height: heightOfFirstRow
cg@2181
   602
         model: name
cg@3345
   603
         menuFromApplication: false
cg@2181
   604
         canSelect: false
cg@2181
   605
       )
cg@2181
   606
      (DataSetColumnSpec
cg@2181
   607
         label: 'Version'
cg@2181
   608
         activeHelpKey: ''
cg@2181
   609
         labelButtonType: Button
cg@3345
   610
         height: heightOfFirstRow
cg@2181
   611
         model: version
cg@2181
   612
         canSelect: false
cg@2181
   613
       )
cg@2181
   614
      (DataSetColumnSpec
cg@2181
   615
         label: 'Date'
cg@2181
   616
         activeHelpKey: ''
cg@3345
   617
         activeHelpKeyForLabel: ''
cg@2181
   618
         labelButtonType: Button
cg@3345
   619
         isSortable: true
cg@3345
   620
         sortSelector: dateOrEmpty
cg@3345
   621
         height: heightOfFirstRow
cg@2181
   622
         model: date
cg@3345
   623
         menuFromApplication: false
cg@2181
   624
         canSelect: false
cg@2181
   625
       )
cg@2181
   626
      )
cg@2181
   627
    
cg@2183
   628
!
cg@2183
   629
cg@2183
   630
tableColumnsForSingleInfo
cg@2183
   631
    "This resource specification was automatically generated
cg@2183
   632
     by the DataSetBuilder of ST/X."
cg@2183
   633
cg@2183
   634
    "Do not manually edit this!! If it is corrupted,
cg@2183
   635
     the DataSetBuilder may not be able to read the specification."
cg@2183
   636
cg@2183
   637
    "
cg@2183
   638
     DataSetBuilder new openOnClass:Tools::ObjectModuleInformation andSelector:#tableColumnsForSingleInfo
cg@2183
   639
    "
cg@2183
   640
cg@2183
   641
    <resource: #tableColumns>
cg@2183
   642
cg@2183
   643
    ^#(
cg@2183
   644
      (DataSetColumnSpec
cg@2183
   645
         label: ''
cg@2183
   646
         activeHelpKey: ''
cg@2183
   647
         labelButtonType: None
cg@2183
   648
         width: 0.3
cg@2183
   649
         model: name
cg@2183
   650
         canSelect: false
cg@2183
   651
       )
cg@2183
   652
      (DataSetColumnSpec
cg@2183
   653
         label: ''
cg@2183
   654
         activeHelpKey: ''
cg@2183
   655
         labelButtonType: None
cg@2183
   656
         model: value
cg@2183
   657
         canSelect: false
cg@2183
   658
       )
cg@2183
   659
      )
cg@2183
   660
    
cg@2181
   661
! !
cg@2181
   662
cg@2181
   663
!ObjectModuleInformation methodsFor:'aspects'!
cg@2181
   664
cg@2253
   665
canBrowseSelectedClass
cg@2253
   666
    ^ [classNamesShown notEmptyOrNil
cg@2253
   667
       and:[ self selectedInfoIndex notNil
cg@2253
   668
       and:[ self selectedInfoIndex ~~ 0 ]]]
cg@2253
   669
cg@2253
   670
    "Modified: / 05-10-2007 / 10:51:39 / cg"
cg@2253
   671
!
cg@2253
   672
cg@2253
   673
canBrowseSelectedModule
cg@2253
   674
    canBrowseSelectedModule isNil ifTrue:[
cg@2253
   675
        canBrowseSelectedModule := false asValue
cg@2253
   676
    ].
cg@2253
   677
    ^ canBrowseSelectedModule.
cg@2253
   678
cg@2253
   679
    "Modified: / 05-10-2007 / 10:51:39 / cg"
cg@2253
   680
!
cg@2253
   681
cg@2618
   682
canBrowseSelectedModulesExtensions
cg@2618
   683
    canBrowseSelectedModulesExtensions isNil ifTrue:[
cg@2618
   684
        canBrowseSelectedModulesExtensions := false asValue
cg@2618
   685
    ].
cg@2618
   686
    ^ canBrowseSelectedModulesExtensions.
cg@2618
   687
cg@2618
   688
    "Modified: / 05-10-2007 / 10:51:39 / cg"
cg@2618
   689
!
cg@2618
   690
cg@2763
   691
canBrowseSelectedModulesProjectDefinition
cg@2763
   692
    ^ [ self projectDefinitionClassOfSelectedModule notNil ]
cg@2763
   693
!
cg@2763
   694
cg@2253
   695
canCopyClassNameList
cg@2253
   696
    ^ [table1VisibleHolder value 
cg@2253
   697
    and:[classInfoShown notEmptyOrNil or:[vmInfoShown notEmptyOrNil] ]]
cg@2253
   698
cg@2253
   699
    "Modified: / 05-10-2007 / 10:51:39 / cg"
cg@2253
   700
!
cg@2253
   701
cg@2619
   702
canUnloadSelectedDLL
cg@2619
   703
    canUnloadSelectedDLL isNil ifTrue:[
cg@2619
   704
        canUnloadSelectedDLL := false asValue
cg@2619
   705
    ].
cg@2619
   706
    ^ canUnloadSelectedDLL.
cg@2619
   707
cg@2619
   708
    "Modified: / 05-10-2007 / 10:51:39 / cg"
cg@2619
   709
!
cg@2619
   710
cg@2253
   711
canUnloadSelectedModule
cg@2253
   712
    canUnloadSelectedModule isNil ifTrue:[
cg@2253
   713
        canUnloadSelectedModule := false asValue
cg@2253
   714
    ].
cg@2253
   715
    ^ canUnloadSelectedModule.
cg@2253
   716
cg@2253
   717
    "Modified: / 05-10-2007 / 10:51:39 / cg"
cg@2253
   718
!
cg@2253
   719
cg@2616
   720
canUnloadSelectedModulesPackage
cg@2616
   721
    canUnloadSelectedModulesPackage isNil ifTrue:[
cg@2616
   722
        canUnloadSelectedModulesPackage := false asValue
cg@2616
   723
    ].
cg@2616
   724
    ^ canUnloadSelectedModulesPackage.
cg@2616
   725
!
cg@2616
   726
cg@3069
   727
descriptionLabelHolder
cg@3069
   728
    ^ builder valueAspectFor:#'descriptionLabelHolder' initialValue:''
cg@3069
   729
!
cg@3069
   730
cg@2183
   731
infoTable1ListHolder
cg@2183
   732
    ^ builder valueAspectFor:#'infoTable1ListHolder' initialValue:#()
cg@2181
   733
cg@2183
   734
    "Created: / 05-10-2007 / 12:48:06 / cg"
cg@2183
   735
!
cg@2183
   736
cg@2183
   737
infoTable2ListHolder
cg@2183
   738
    ^ builder valueAspectFor:#'infoTable2ListHolder' initialValue:#()
cg@2183
   739
cg@2183
   740
    "Created: / 05-10-2007 / 12:48:10 / cg"
cg@2181
   741
!
cg@2181
   742
cg@2181
   743
listOfModuleNames
cg@2181
   744
    listOfModuleNames isNil ifTrue:[
cg@2181
   745
        listOfModuleNames := List new.
cg@2181
   746
    ].
cg@2181
   747
    ^ listOfModuleNames.
cg@2181
   748
cg@2181
   749
    "Modified: / 05-10-2007 / 10:49:19 / cg"
cg@2181
   750
!
cg@2181
   751
cg@2181
   752
middleLabelHolder
cg@2181
   753
    ^ builder valueAspectFor:#'middleLabelHolder' initialValue:''
cg@2181
   754
cg@2181
   755
    "Created: / 05-10-2007 / 11:05:08 / cg"
cg@2181
   756
!
cg@2181
   757
cg@2184
   758
notReadOnly
cg@2184
   759
    ^ self readOnly not
cg@2184
   760
cg@2184
   761
    "Created: / 05-10-2007 / 13:06:00 / cg"
cg@2184
   762
!
cg@2184
   763
cg@2184
   764
readOnly
cg@2184
   765
    ^ readOnly ? false
cg@2184
   766
cg@2184
   767
    "Created: / 05-10-2007 / 13:05:51 / cg"
cg@2184
   768
!
cg@2184
   769
cg@2253
   770
readOnly:aBoolean
cg@2253
   771
    readOnly := aBoolean
cg@2253
   772
cg@2253
   773
    "Created: / 05-10-2007 / 13:05:51 / cg"
cg@2253
   774
!
cg@2253
   775
cg@2253
   776
selectedInfoIndex
cg@2253
   777
    |sel|
cg@2253
   778
cg@2253
   779
    sel := self selectedInfoIndexHolder value.
cg@2253
   780
    ^ sel
cg@2253
   781
!
cg@2253
   782
cg@2253
   783
selectedInfoIndexHolder
cg@2253
   784
    selectedInfoIndexHolder isNil ifTrue:[
cg@2253
   785
        selectedInfoIndexHolder := ValueHolder new.
cg@2253
   786
        selectedInfoIndexHolder onChangeSend:#selectedInfoIndexChanged to:self.
cg@2253
   787
    ].
cg@2253
   788
    ^ selectedInfoIndexHolder.
cg@2253
   789
cg@2253
   790
    "Modified: / 05-10-2007 / 10:51:39 / cg"
cg@2253
   791
!
cg@2253
   792
cg@2253
   793
selectedModuleIndex
cg@2253
   794
    |sel|
cg@2253
   795
cg@2253
   796
    sel := self selectedModuleIndexHolder value.
cg@2253
   797
    ^ sel
cg@2253
   798
!
cg@2253
   799
cg@2181
   800
selectedModuleIndexHolder
cg@2181
   801
    selectedModuleIndexHolder isNil ifTrue:[
cg@2181
   802
        selectedModuleIndexHolder := ValueHolder new.
cg@2181
   803
        selectedModuleIndexHolder onChangeSend:#selectedModuleIndexChanged to:self.
cg@2181
   804
    ].
cg@2181
   805
    ^ selectedModuleIndexHolder.
cg@2181
   806
cg@2181
   807
    "Modified: / 05-10-2007 / 10:51:39 / cg"
cg@2181
   808
!
cg@2181
   809
cg@2181
   810
showBuiltIn
cg@2183
   811
    showBuiltIn isNil ifTrue:[
cg@2183
   812
        showBuiltIn := true asValue.
cg@2183
   813
        showBuiltIn onChangeSend:#filterChanged to:self.
cg@2183
   814
    ].
cg@2183
   815
    ^ showBuiltIn
cg@2181
   816
cg@2183
   817
    "Modified: / 05-10-2007 / 12:43:23 / cg"
cg@2181
   818
!
cg@2181
   819
cg@2181
   820
showCObjects
cg@2183
   821
    showCObjects isNil ifTrue:[
cg@2183
   822
        showCObjects := true asValue.
cg@2183
   823
        showCObjects onChangeSend:#filterChanged to:self.
cg@2183
   824
    ].
cg@2183
   825
    ^ showCObjects
cg@2181
   826
cg@2183
   827
    "Modified: / 05-10-2007 / 12:43:16 / cg"
cg@2181
   828
!
cg@2181
   829
cg@2181
   830
showClassLibs
cg@2183
   831
    showClassLibs isNil ifTrue:[
cg@2183
   832
        showClassLibs := true asValue.
cg@2183
   833
        showClassLibs onChangeSend:#filterChanged to:self.
cg@2183
   834
    ].
cg@2183
   835
    ^ showClassLibs
cg@2181
   836
cg@2183
   837
    "Modified: / 05-10-2007 / 12:43:10 / cg"
cg@2181
   838
!
cg@2181
   839
cg@2181
   840
showMethods
cg@2183
   841
    showMethods isNil ifTrue:[
cg@2183
   842
        showMethods := true asValue.
cg@2183
   843
        showMethods onChangeSend:#filterChanged to:self.
cg@2183
   844
    ].
cg@2183
   845
    ^ showMethods
cg@2181
   846
cg@2183
   847
    "Modified: / 05-10-2007 / 12:43:02 / cg"
cg@2181
   848
!
cg@2181
   849
cg@2619
   850
showOnlyDynamicallyLoadedClassLibraries
cg@2619
   851
    self showBuiltIn value:false withoutNotifying:self.
cg@2619
   852
    self showCObjects value:false withoutNotifying:self.
cg@2619
   853
    self showMethods value:false withoutNotifying:self.
cg@2619
   854
    self showOthers value:false withoutNotifying:self.
cg@2619
   855
    self showClassLibs value:true withoutNotifying:self.
cg@2619
   856
    self filterChanged.
cg@2619
   857
!
cg@2619
   858
cg@2181
   859
showOthers
cg@2183
   860
    showOthers isNil ifTrue:[
cg@2183
   861
        showOthers := true asValue.
cg@2183
   862
        showOthers onChangeSend:#filterChanged to:self.
cg@2183
   863
    ].
cg@2183
   864
    ^ showOthers
cg@2181
   865
cg@2183
   866
    "Modified: / 05-10-2007 / 12:42:54 / cg"
cg@2183
   867
!
cg@2183
   868
cg@2183
   869
table1VisibleHolder
cg@2183
   870
    table1VisibleHolder isNil ifTrue:[
cg@2183
   871
        table1VisibleHolder := true asValue.
cg@2183
   872
    ].
cg@2183
   873
    ^ table1VisibleHolder.
cg@2183
   874
cg@2183
   875
    "Modified: / 05-10-2007 / 12:53:05 / cg"
cg@2183
   876
!
cg@2183
   877
cg@2183
   878
table2VisibleHolder
cg@2183
   879
    table2VisibleHolder isNil ifTrue:[
cg@2183
   880
        table2VisibleHolder := false asValue.
cg@2183
   881
    ].
cg@2183
   882
    ^ table2VisibleHolder.
cg@2183
   883
cg@2183
   884
    "Modified: / 05-10-2007 / 12:53:14 / cg"
cg@2181
   885
! !
cg@2181
   886
cg@2181
   887
!ObjectModuleInformation methodsFor:'change & update'!
cg@2181
   888
cg@2618
   889
isExtensionName:nm
cg@2618
   890
    ^ (nm endsWith:'_extensions')
cg@2618
   891
!
cg@2618
   892
cg@2253
   893
selectedInfoIndexChanged
cg@2253
   894
!
cg@2253
   895
cg@2253
   896
selectedModule
cg@2253
   897
    |sel|
cg@2253
   898
cg@2253
   899
    sel := self selectedModuleIndex.
cg@2253
   900
    sel isNil ifTrue:[^ nil].
cg@2253
   901
    ^ objectHandles at:sel.
cg@2253
   902
!
cg@2253
   903
cg@2181
   904
selectedModuleIndexChanged
cg@2620
   905
    | info |
cg@2181
   906
cg@2253
   907
    info := self selectedModuleInfo.
cg@2253
   908
cg@2619
   909
    self canBrowseSelectedModule value:false.
cg@2619
   910
    self canBrowseSelectedModulesExtensions value:false.
cg@2619
   911
    self canUnloadSelectedDLL value:false.
cg@2619
   912
    self canUnloadSelectedModule value:false.
cg@2619
   913
    self canUnloadSelectedModulesPackage value:false.
cg@2253
   914
cg@2253
   915
    classNamesShown := nil.
cg@2253
   916
    classInfoShown := nil.
cg@2253
   917
    vmInfoShown := nil.
cg@2181
   918
cg@2181
   919
    info isNil ifTrue:[
cg@2620
   920
        "/ selected a cObject or unknown
cg@2253
   921
        self showInfoForNonClassLib:(self selectedModuleIndex).
cg@2181
   922
        ^ self.
cg@2181
   923
    ].
cg@2181
   924
    info == #VM ifTrue:[
cg@2181
   925
        "/ selected the pseudo entry for the VM itself
cg@2181
   926
        self showInfoForVM.
cg@2181
   927
        ^ self.
cg@2181
   928
    ].
cg@2618
   929
cg@2181
   930
    "/ selected a class-library package
cg@2181
   931
    self showInfoForClassLib:info.
cg@2181
   932
cg@2183
   933
    "Modified: / 05-10-2007 / 12:56:13 / cg"
cg@2181
   934
!
cg@2181
   935
cg@2253
   936
selectedModuleInfo
cg@2620
   937
    |sel|
cg@2253
   938
cg@2253
   939
    sel := self selectedModuleIndex.
cg@2253
   940
    sel notNil ifTrue:[
cg@2253
   941
        (self showClassLibs value or:[self showBuiltIn value]) ifTrue:[
cg@2620
   942
            ^ allModules at:sel ifAbsent:nil.
cg@2253
   943
        ].
cg@2253
   944
    ].
cg@2620
   945
    ^ nil
cg@2620
   946
!
cg@2620
   947
cg@2620
   948
selectedObjectHandle
cg@2620
   949
    |sel|
cg@2620
   950
cg@2620
   951
    sel := self selectedModuleIndex.
cg@2620
   952
    sel isNil ifTrue:[^ nil].
cg@2620
   953
    ^ objectHandles at:sel.
cg@2253
   954
!
cg@2253
   955
cg@2181
   956
showInfoForClassLib:info
sv@2788
   957
    "selected a lib-package; fill bottom list with class-info"
cg@2181
   958
sv@2788
   959
    |rows projectDefinitionClass mgr canUnload canUnloadPackage|
sv@2788
   960
sv@2788
   961
    self middleLabelHolder value:'Components:'.
sv@2788
   962
sv@2788
   963
    projectDefinitionClass := self selectedModulesProjectDefinitionClass.
cg@3069
   964
    projectDefinitionClass isNil ifTrue:[
cg@3069
   965
        self descriptionLabelHolder value:''.
cg@3069
   966
    ] ifFalse:[
cg@3069
   967
        self descriptionLabelHolder value:("'Description: ',"projectDefinitionClass description).
cg@3069
   968
    ].
cg@2619
   969
cg@2619
   970
    self canBrowseSelectedModule value:true.
cg@2619
   971
cg@2619
   972
    self canBrowseSelectedModulesExtensions 
cg@2619
   973
        value:(info classNames contains:[:nm | self isExtensionName:nm]).
cg@2619
   974
cg@2619
   975
    canUnload := info dynamic and:[self readOnly not].
cg@2619
   976
    self canUnloadSelectedModule value:canUnload.
sv@2788
   977
    canUnloadPackage := canUnload 
sv@2788
   978
                and:[projectDefinitionClass notNil
sv@2788
   979
                and:[projectDefinitionClass projectIsLoaded]].
cg@2619
   980
    self canUnloadSelectedModulesPackage value:canUnloadPackage.
cg@2181
   981
cg@2181
   982
cg@2402
   983
    classNamesShown := self shownClassNamesFor:info.
sv@2788
   984
    rows := classNamesShown collect:[:eachClassName |
cg@2860
   985
                    |cls entry rev binRev listEntry revisionInfo versionString dateString|
cg@2181
   986
cg@2181
   987
                    listEntry := InfoRow new.
sv@2788
   988
                    listEntry name:eachClassName.
cg@2181
   989
sv@2788
   990
                    cls := Smalltalk classNamed:eachClassName.
cg@2181
   991
                    cls isNil ifTrue:[
sv@2788
   992
                        (self isExtensionName:eachClassName) ifTrue:[
sv@2788
   993
                            projectDefinitionClass notNil ifTrue:[
cg@3166
   994
                                mgr := projectDefinitionClass sourceCodeManager.
cg@3166
   995
                                mgr notNil ifTrue:[
cg@3166
   996
                                    versionString := projectDefinitionClass perform:(mgr nameOfVersionMethodForExtensions) ifNotUnderstood:nil.
cg@3166
   997
                                    versionString notNil ifTrue:[
cg@3166
   998
                                        versionString := '(bin: ',(mgr revisionInfoFromString:versionString) revision,')'.
cg@3166
   999
                                    ]
cg@3166
  1000
                                ] ifFalse:[
cg@3166
  1001
                                    versionString := '(SCM disabled)'.
cg@3166
  1002
                                ].
cg@2616
  1003
                            ].
sv@2788
  1004
                        ] ifFalse:[
sv@2788
  1005
                            versionString := '(class removed)'.
cg@2616
  1006
                        ].
cg@2181
  1007
                    ] ifFalse:[
cg@2860
  1008
                        binRev := cls binaryRevision.
cg@2860
  1009
                        binRev notNil ifTrue:[
sv@2788
  1010
                            cls isLoaded ifTrue:[
cg@2860
  1011
                                entry :='(bin: ' , binRev.
sv@2788
  1012
                            ] ifFalse:[
cg@2860
  1013
                                entry := '(stub for: ' , binRev.
cg@2181
  1014
                            ].    
cg@2860
  1015
                            (rev := cls revision) ~= binRev ifTrue:[
cg@2860
  1016
                                entry := entry , ' / src: ' , (rev printString)
cg@2181
  1017
                            ].
cg@2181
  1018
                            entry := entry , ')'.
cg@2616
  1019
                            versionString := entry
cg@2181
  1020
                        ] ifFalse:[
cg@2616
  1021
                            cls revision notNil ifTrue:[
cg@2616
  1022
                                versionString := '(overloaded by: ' , cls revision , ')' 
cg@2616
  1023
                            ]
cg@2181
  1024
                        ].
cg@2181
  1025
                        revisionInfo := cls revisionInfo.
cg@2181
  1026
                        revisionInfo notNil ifTrue:[
sv@2788
  1027
                            dateString := revisionInfo at:#date.
cg@2181
  1028
                        ].
cg@2181
  1029
                    ].
cg@2616
  1030
                    listEntry version:versionString.
sv@2788
  1031
                    listEntry date:dateString.
cg@2181
  1032
                  ].
cg@2181
  1033
cg@2253
  1034
    classInfoShown := rows.
cg@2253
  1035
cg@2183
  1036
    self infoTable1ListHolder value:rows.
cg@2183
  1037
    self table1VisibleHolder value:true.
cg@2183
  1038
    self table2VisibleHolder value:false.
cg@2181
  1039
cg@2860
  1040
    "Modified: / 29-09-2011 / 15:40:42 / cg"
cg@2181
  1041
!
cg@2181
  1042
cg@2181
  1043
showInfoForNonClassLib:sel
sv@2773
  1044
    "selected a method, cObject or unknown"
cg@2181
  1045
sv@2787
  1046
    |module fileName list newEntry|
cg@2181
  1047
cg@3069
  1048
    self descriptionLabelHolder value:''.
cg@3069
  1049
cg@2253
  1050
    sel isNil ifTrue:[
cg@2253
  1051
        self table1VisibleHolder value:false.
cg@2253
  1052
        self table2VisibleHolder value:false.
cg@2253
  1053
        ^ self.
cg@2253
  1054
    ].
cg@2253
  1055
cg@2181
  1056
    module := objectHandles at:sel.
cg@2181
  1057
    fileName := module pathName.
cg@2181
  1058
cg@2739
  1059
    self canUnloadSelectedDLL value:true.
cg@2739
  1060
cg@2181
  1061
    module isMethodHandle ifTrue:[
sv@2787
  1062
        |method nm entries|
sv@2773
  1063
sv@2773
  1064
        self canUnloadSelectedModule value:self readOnly not.
cg@2181
  1065
cg@2183
  1066
        self middleLabelHolder value:'Compiled Method:'.
cg@2181
  1067
cg@2181
  1068
        (method := module method) isNil ifTrue:[
cg@2181
  1069
            nm := '** removed **'.
cg@2181
  1070
        ] ifFalse:[
cg@2619
  1071
            self canBrowseSelectedModule value:true.
cg@2181
  1072
"/            menu := PopUpMenu
cg@2181
  1073
"/                        labels:#('Inspect' 'Browse')
cg@2181
  1074
"/                        selectors:#(inspect browse).
cg@2181
  1075
"/            menu actionAt:#inspect put:[ method inspect ].
cg@2181
  1076
"/            menu actionAt:#browse put:[ |who|
cg@2181
  1077
"/                                        who := method who.
cg@2181
  1078
"/                                        UserPreferences systemBrowserClass
cg@2181
  1079
"/                                            openInClass:(who methodClass) 
cg@2181
  1080
"/                                            selector:(who methodSelector) 
cg@2181
  1081
"/                                      ].
cg@2181
  1082
"/            listView1 middleButtonMenu:menu.
cg@2181
  1083
cg@3294
  1084
            nm := (method whoString) withColor:Color blue.
cg@2181
  1085
        ].
sv@2773
  1086
        entries := OrderedCollection new.
sv@2787
  1087
        newEntry := InfoRow new.
sv@2787
  1088
        newEntry name:'Compiled method'; value:nm.
sv@2787
  1089
        entries add:newEntry.
cg@2181
  1090
sv@2787
  1091
        newEntry := InfoRow new.
sv@2787
  1092
        newEntry name:'Path'; value:fileName.
sv@2787
  1093
        entries add:newEntry.
cg@2181
  1094
sv@2773
  1095
        (method notNil and:[method code notNil]) ifTrue:[
sv@2787
  1096
            newEntry := InfoRow new.
sv@2787
  1097
            newEntry name:'Address'; value:('(16r) ' , (method code address hexPrintString leftPaddedTo:8 with:$0)).
sv@2787
  1098
            entries add:newEntry.
sv@2773
  1099
        ].
cg@2181
  1100
sv@2773
  1101
        self infoTable2ListHolder value:entries.
cg@2183
  1102
        self table1VisibleHolder value:false.
cg@2183
  1103
        self table2VisibleHolder value:true.
cg@2181
  1104
        ^ self.
cg@2181
  1105
    ].
cg@2181
  1106
cg@2181
  1107
    (module isFunctionObjectHandle 
cg@2181
  1108
    and:[module functions notEmpty]) ifTrue:[
cg@2183
  1109
        self middleLabelHolder value:'Functions:'.
cg@2181
  1110
cg@2181
  1111
"/        menu := PopUpMenu
cg@2181
  1112
"/                    labels:#('Inspect')
cg@2181
  1113
"/                    selectors:#(inspect).
cg@2181
  1114
"/        menu actionAt:#inspect put:[ module functions inspect  ].
cg@2181
  1115
"/        listView1 middleButtonMenu:menu.
cg@2181
  1116
"/
cg@3254
  1117
        list := module functions 
cg@3254
  1118
                        select:[:f | f notNil]
cg@3254
  1119
                        thenCollect:[:f | |entry code|
cg@2181
  1120
                                        entry := InfoRow new.
cg@3294
  1121
                                        entry name:(f name withColor:Color blue).
cg@3254
  1122
                                        code := f code.
cg@3254
  1123
                                        code isNil ifTrue:[
cg@3254
  1124
                                            entry value:('address: NULL').
cg@3254
  1125
                                        ] ifFalse:[
cg@3254
  1126
                                            entry value:('address: (16r) ' , (code address hexPrintString leftPaddedTo:8 with:$0)).
cg@3254
  1127
                                        ].
cg@2181
  1128
                                        entry
cg@2181
  1129
                                ].
cg@2183
  1130
        self infoTable2ListHolder value:list.
cg@2183
  1131
        self table1VisibleHolder value:false.
cg@2183
  1132
        self table2VisibleHolder value:true.
cg@2181
  1133
        ^ self.
cg@2181
  1134
    ].
cg@2181
  1135
sv@2787
  1136
    newEntry := InfoRow new.
sv@2787
  1137
    newEntry name:'Unknown'.
sv@2787
  1138
    self infoTable2ListHolder value:(Array with:newEntry).
cg@2183
  1139
    self table1VisibleHolder value:false.
cg@2183
  1140
    self table2VisibleHolder value:true.
cg@2181
  1141
cg@2183
  1142
    "Modified: / 05-10-2007 / 13:01:33 / cg"
cg@2181
  1143
!
cg@2181
  1144
cg@2181
  1145
showInfoForVM
sv@2788
  1146
    "show file versions of vm info in lower view."
cg@2181
  1147
cg@2181
  1148
    |l|
cg@2181
  1149
cg@2619
  1150
    self canBrowseSelectedModule value:false.
sv@2788
  1151
    self middleLabelHolder value:'VM Components:'.
cg@3069
  1152
    self descriptionLabelHolder value:("'Description: '," 'Runtime System (VM)').
cg@2619
  1153
sv@2788
  1154
    l := ObjectMemory getVMIdentificationStrings
sv@2788
  1155
            select:[:entry | (entry includesString:'$Header') 
sv@2788
  1156
                                    and:[entry includesString:',v']]
sv@2788
  1157
            thenCollect:[:entry |
sv@2788
  1158
                |i1 i2 file revision date listEntry|
cg@2181
  1159
sv@2788
  1160
                listEntry := InfoRow new.
cg@2181
  1161
sv@2788
  1162
                i1 := entry indexOfSubCollection:'librun'.
sv@2788
  1163
                i1 ~~ 0 ifTrue:[
sv@2788
  1164
                    i2 := entry indexOfSubCollection:',v' startingAt:i1.
sv@2788
  1165
                    i2 ~~ 0 ifTrue:[
sv@2788
  1166
                        file := entry copyFrom:i1+7 to:(i2-1).
sv@2788
  1167
                        listEntry name:file.
cg@2181
  1168
sv@2788
  1169
                        i1 := i2+3.
sv@2788
  1170
                        i2 := entry indexOfSeparatorStartingAt:i1.
sv@2788
  1171
                        revision := entry copyFrom:i1 to:(i2-1).
sv@2788
  1172
                        listEntry version:revision.
cg@2181
  1173
sv@2788
  1174
                        i1 := i2+1.
sv@2788
  1175
                        i2 := entry indexOfSeparatorStartingAt:i1.
sv@2788
  1176
                        date := entry copyFrom:i1 to:(i2-1).
sv@2788
  1177
                        listEntry date:date.
sv@2788
  1178
                    ].
sv@2788
  1179
                ].
sv@2788
  1180
                listEntry.
cg@2181
  1181
            ].
cg@2253
  1182
cg@2253
  1183
    vmInfoShown := l.
cg@2183
  1184
    self infoTable1ListHolder value:l.
cg@2183
  1185
    self table1VisibleHolder value:true.
cg@2183
  1186
    self table2VisibleHolder value:false.
cg@2181
  1187
cg@2181
  1188
"/    readOnly ifFalse:[
cg@2181
  1189
"/        unloadButton disable.
cg@2181
  1190
"/        unloadAndRemoveButton disable.
cg@2181
  1191
"/    ]
cg@2181
  1192
cg@2183
  1193
    "Modified: / 05-10-2007 / 12:53:44 / cg"
cg@2402
  1194
!
cg@2402
  1195
cg@2402
  1196
shownClassNamesFor:info
cg@2402
  1197
    "/ selected a package; fill bottom list with class-info
cg@2402
  1198
cg@2402
  1199
    |classNames|
cg@2402
  1200
cg@2402
  1201
    classNames := info classNames asSortedCollection.
cg@2402
  1202
    ^ classNames 
cg@2402
  1203
        select:[:cName |
cg@2402
  1204
            |cls|
cg@2402
  1205
cg@2402
  1206
            cls := Smalltalk classNamed:cName.
cg@2402
  1207
            cls isNil ifTrue:[
cg@2402
  1208
                true "a removed class"
cg@2402
  1209
            ] ifFalse:[
cg@2402
  1210
                cls isPrivate not
cg@2402
  1211
            ].
cg@2402
  1212
        ].
cg@2181
  1213
! !
cg@2181
  1214
cg@2181
  1215
!ObjectModuleInformation methodsFor:'initialization'!
cg@2181
  1216
cg@2181
  1217
postBuildWith:aBuilder
cg@2181
  1218
    |canDoIt|
cg@2181
  1219
cg@2181
  1220
    super postBuildWith:aBuilder.
cg@2181
  1221
cg@2181
  1222
    canDoIt := ObjectFileLoader notNil and:[ObjectFileLoader canLoadObjectFiles].
cg@2181
  1223
    self showBuiltIn value:canDoIt.
cg@2181
  1224
    self showCObjects value:canDoIt.
cg@2181
  1225
    self showClassLibs value:canDoIt.
cg@2181
  1226
    self showMethods value:canDoIt.
cg@2181
  1227
    self showOthers value:canDoIt.
cg@2181
  1228
cg@2181
  1229
    self updateModuleList
cg@2181
  1230
cg@2181
  1231
    "Created: / 05-10-2007 / 10:50:27 / cg"
cg@2181
  1232
! !
cg@2181
  1233
cg@2181
  1234
!ObjectModuleInformation methodsFor:'menu actions'!
cg@2181
  1235
cg@2253
  1236
browseClass
cg@2620
  1237
    |info classNames selectedClassName selectedClass|
cg@2253
  1238
cg@2253
  1239
    info := self selectedModuleInfo.
cg@2402
  1240
    classNames := (self shownClassNamesFor:info) asSortedCollection.
cg@2253
  1241
    selectedClassName := classNames at:(self selectedInfoIndex).
cg@2253
  1242
    selectedClass := Smalltalk classNamed:selectedClassName.
cg@2253
  1243
cg@2402
  1244
    selectedClass notNil ifTrue:[
cg@2402
  1245
        Smalltalk browseInClass:selectedClass.
cg@2402
  1246
        ^ self.
cg@2402
  1247
    ].
cg@2402
  1248
cg@2402
  1249
    "/ clicked on an extensions-module ?
cg@2618
  1250
    (self isExtensionName:selectedClassName) ifTrue:[
cg@2618
  1251
        self browseModuleExtensions.
cg@2616
  1252
        ^ self.
cg@2402
  1253
    ].
cg@2618
  1254
cg@2618
  1255
    self breakPoint:#cg.
cg@2253
  1256
!
cg@2253
  1257
cg@2253
  1258
browseModule
cg@2620
  1259
    |moduleInfoOrHandle classes method|
cg@2253
  1260
cg@2620
  1261
    moduleInfoOrHandle := self selectedObjectHandle.
cg@2620
  1262
    "/ what a hack
cg@2620
  1263
    (moduleInfoOrHandle isKindOf: ObjectMemory::BinaryModuleDescriptor) ifTrue:[
cg@2620
  1264
        classes := moduleInfoOrHandle classNames collect:[:nm | Smalltalk classNamed:nm].
cg@3258
  1265
cg@3486
  1266
        SystemBrowser default
cg@3258
  1267
            perform:#openOnPackage: with:(moduleInfoOrHandle package)
cg@3258
  1268
            ifNotUnderstood:[
cg@3258
  1269
                "/ Q: what about extensions ?
cg@3486
  1270
                SystemBrowser default
cg@3258
  1271
                    browseClasses:classes
cg@3258
  1272
                    label:(resources string:'Classes in %1' with:moduleInfoOrHandle libraryName).
cg@3258
  1273
            ]
cg@2620
  1274
    ] ifFalse:[
cg@2620
  1275
        moduleInfoOrHandle isMethodHandle ifTrue:[
cg@2620
  1276
            method := moduleInfoOrHandle method.
cg@2620
  1277
            (method notNil and:[method mclass notNil]) ifFalse:[
cg@2620
  1278
                Dialog information:'The method has been redefined/removed'.
cg@2620
  1279
                ^ self.
cg@2620
  1280
            ].
cg@3486
  1281
            SystemBrowser default openInMethod:method
cg@2620
  1282
        ]
cg@2620
  1283
    ].
cg@3486
  1284
cg@3486
  1285
    "Modified: / 01-09-2017 / 14:23:04 / cg"
cg@2253
  1286
!
cg@2253
  1287
cg@2618
  1288
browseModuleExtensions
cg@2620
  1289
    |info name packageID methods|
cg@2618
  1290
cg@2620
  1291
    info := self selectedModuleInfo.
cg@2618
  1292
cg@2620
  1293
    name := info classNames detect:[:nm | self isExtensionName:nm].
sv@2998
  1294
    packageID := (name copyButLast:('_extensions' size)) asSymbol.
cg@2618
  1295
    methods := Smalltalk allExtensionsForPackage:packageID.
cg@2618
  1296
    (UserPreferences browserClass) browseMethods:methods title:('Extensions for ',packageID).
cg@2618
  1297
!
cg@2618
  1298
cg@2763
  1299
browseModulesProjectDefinition
cg@2763
  1300
    |projectDefinitionClass|
cg@2763
  1301
cg@2763
  1302
    projectDefinitionClass := self projectDefinitionClassOfSelectedModule.
cg@2763
  1303
    projectDefinitionClass notNil ifTrue:[
cg@2763
  1304
        (UserPreferences browserClass) openInClass:projectDefinitionClass class
cg@2763
  1305
    ].
cg@2763
  1306
!
cg@2763
  1307
cg@2253
  1308
copyClassOrVMNameList
cg@2253
  1309
    |text|
cg@2253
  1310
cg@2253
  1311
    text := ((classInfoShown ? vmInfoShown)collect:[:eachRow | eachRow infoString]) asStringCollection asString.
cg@2253
  1312
    self window setClipboardText:text.
cg@2253
  1313
!
cg@2253
  1314
cg@2623
  1315
findClass
cg@2623
  1316
    |class moduleIndex classNamesShown classIndex|
cg@2623
  1317
cg@2623
  1318
    class := Dialog requestClass:'Classname (Tab for completion):'.
cg@2623
  1319
    class isEmptyOrNil ifTrue:[^ self].
cg@2623
  1320
cg@2623
  1321
    moduleIndex := allModules findFirst:[:module | module isSymbol not and:[module classNames includes:class name]].
cg@2623
  1322
    moduleIndex == 0 ifTrue:[
cg@2623
  1323
        Dialog information:'Class is not contained in a loaded or builtIn package.'.
cg@2623
  1324
        ^ self
cg@2623
  1325
    ].
cg@2623
  1326
    self selectedModuleIndexHolder value:moduleIndex.
cg@2623
  1327
cg@2623
  1328
    classNamesShown := self shownClassNamesFor:(self selectedModuleInfo).
cg@2623
  1329
    classIndex := classNamesShown indexOf:class name.
cg@2623
  1330
    self selectedInfoIndexHolder value:classIndex.
cg@2623
  1331
cg@2623
  1332
"/    module := allModules at:moduleIndex.
cg@2623
  1333
"/    info := self selectedModuleInfo.
cg@2623
  1334
"/    classNames := (self shownClassNamesFor:info) asSortedCollection.
cg@2623
  1335
"/    selectedClassName := classNames at:(self selectedInfoIndex).
cg@2623
  1336
"/    selectedClass := Smalltalk classNamed:selectedClassName.
cg@2623
  1337
"/
cg@2623
  1338
"/    selectedClass notNil ifTrue:[
cg@2623
  1339
"/        Smalltalk browseInClass:selectedClass.
cg@2623
  1340
"/        ^ self.
cg@2623
  1341
"/    ].
cg@2623
  1342
"/
cg@2623
  1343
"/    "/ clicked on an extensions-module ?
cg@2623
  1344
"/    (self isExtensionName:selectedClassName) ifTrue:[
cg@2623
  1345
"/        self browseModuleExtensions.
cg@2623
  1346
"/        ^ self.
cg@2623
  1347
"/    ].
cg@2623
  1348
"/
cg@2623
  1349
"/    self breakPoint:#cg.
cg@2623
  1350
!
cg@2623
  1351
sv@2842
  1352
inspectSelectedObject
sv@2842
  1353
    self selectedObjectHandle inspect.
sv@2842
  1354
!
sv@2842
  1355
cg@2619
  1356
loadPackage
cg@3258
  1357
    AbstractLauncherApplication::PackageLoadDialog openModal.
cg@3258
  1358
"/    |package|
cg@3258
  1359
"/
cg@3258
  1360
"/    package := Dialog request:'Name of Package (module:directory)'.
cg@3258
  1361
"/    package isEmptyOrNil ifTrue:[^ self].
cg@3258
  1362
"/    [
cg@3258
  1363
"/        self withWaitCursorDo:[
cg@3258
  1364
"/            Smalltalk loadPackage:package.
cg@3258
  1365
"/        ].
cg@3258
  1366
"/    ] on:PackageLoadError do:[:ex|
cg@3258
  1367
"/        Dialog information:'Package not loaded: ', ex description.
cg@3258
  1368
"/    ].
cg@2619
  1369
    self updateModuleList
cg@2619
  1370
!
cg@2619
  1371
cg@2403
  1372
menuUpdateModuleList
cg@2403
  1373
    self updateModuleList
cg@2403
  1374
cg@2403
  1375
    "Modified: / 05-10-2007 / 13:11:45 / cg"
cg@2403
  1376
!
cg@2403
  1377
cg@2181
  1378
openDocumentation
cg@2184
  1379
    self openHTMLDocument: 'tools/misc/TOP.html#MODULEINFO'
cg@2181
  1380
cg@2184
  1381
    "Modified: / 05-10-2007 / 13:11:45 / cg"
cg@2253
  1382
!
cg@2253
  1383
cg@2619
  1384
selectedModulesProjectDefinitionClass
sv@2788
  1385
    "try to figure out, what the definitionClass is inside that module.
sv@2788
  1386
     in the future, we should always find one there, however, old libs or
sv@2788
  1387
     special libraries (hand built) might be without a projectDefinition."
sv@2788
  1388
sv@2788
  1389
    |info classNames definitionClasses libraryName|
cg@2619
  1390
cg@2619
  1391
    info := self selectedModuleInfo.
cg@2619
  1392
    classNames := (self shownClassNamesFor:info) asSortedCollection.
sv@2788
  1393
    definitionClasses := classNames ? #()
sv@2788
  1394
                                collect:[:nm | Smalltalk classNamed:nm]
sv@2788
  1395
                                thenSelect:[:cls | cls isProjectDefinition].
sv@2788
  1396
cg@2619
  1397
    definitionClasses size == 1 ifTrue:[
cg@2619
  1398
        ^ definitionClasses first
sv@2788
  1399
    ] ifFalse:[
sv@2788
  1400
        "/ 0 or more definition classes - fall back - some heuristics...
sv@2788
  1401
        libraryName := info libraryName.  "maybe something like 'libstx_libbasic'"
sv@2788
  1402
        (libraryName notNil and:[ libraryName startsWith:'lib' ]) ifTrue:[
sv@2788
  1403
            ^ Smalltalk classNamed:(libraryName copyFrom:4).
sv@2788
  1404
        ].
cg@2619
  1405
    ].
sv@2788
  1406
cg@2619
  1407
    ^ nil
cg@2619
  1408
!
cg@2619
  1409
cg@2254
  1410
unloadSelectedModule
sv@2773
  1411
    self unloadSelectedModuleRemoveConnectedObjects:false
cg@2253
  1412
!
cg@2253
  1413
cg@2254
  1414
unloadSelectedModuleAndRemoveClasses
sv@2773
  1415
    self unloadSelectedModuleRemoveConnectedObjects:true
cg@2253
  1416
!
cg@2253
  1417
sv@2773
  1418
unloadSelectedModuleRemoveConnectedObjects:doRemoveClasses 
sv@2773
  1419
    |module handle|
cg@2739
  1420
cg@2739
  1421
    module := allModules at:self selectedModuleIndex ifAbsent:nil.
cg@2739
  1422
    module notNil ifTrue:[
cg@2739
  1423
        (Dialog 
cg@2739
  1424
            confirm:'This is a possibly dangerous operation, as the DLL is unloaded without caring for 
cg@2619
  1425
proper package-deinstallation procedures. Please use this only in repair situations and when the 
cg@2616
  1426
regular unloadPackage operation fails.
cg@2616
  1427
sv@2773
  1428
Continue ?') 
sv@2773
  1429
                ifFalse:[ ^ self ].
cg@2977
  1430
        handle := module handle.
cg@2977
  1431
    ] ifFalse:[
cg@2977
  1432
        handle := objectHandles at:self selectedModuleIndex ifAbsent:nil.
cg@2616
  1433
    ].
sv@2773
  1434
    handle notNil ifTrue:[
sv@2773
  1435
        self 
sv@2773
  1436
            withWaitCursorDo:[
sv@2773
  1437
                self selectedModuleIndexHolder value:nil.
sv@2773
  1438
                doRemoveClasses ifTrue:[
sv@2773
  1439
                    handle removeConnectedObjects.
sv@2773
  1440
                ].
sv@2773
  1441
                handle unload.
sv@2773
  1442
                self updateModuleList.
sv@2773
  1443
            ].
cg@2253
  1444
    ]
cg@2619
  1445
!
cg@2619
  1446
cg@2619
  1447
unloadSelectedModulesPackage
cg@2619
  1448
    |definitionClass|
cg@2619
  1449
cg@2619
  1450
    definitionClass := self selectedModulesProjectDefinitionClass.
cg@2619
  1451
    definitionClass isNil ifTrue:[^ self].
cg@2619
  1452
cg@2619
  1453
    (Dialog 
cg@2619
  1454
        confirm:(resources stringWithCRs:'About to unload the package\\    %1\\Continue' with:definitionClass package allBold))
cg@2619
  1455
    ifFalse:[
cg@2619
  1456
        ^ self
cg@2619
  1457
    ].
cg@2619
  1458
    Smalltalk unloadPackage:definitionClass package.
cg@2181
  1459
! !
cg@2181
  1460
cg@2181
  1461
!ObjectModuleInformation methodsFor:'private'!
cg@2181
  1462
cg@2183
  1463
filterChanged
cg@2183
  1464
    self updateModuleList
cg@2183
  1465
cg@2183
  1466
    "Created: / 05-10-2007 / 12:43:36 / cg"
cg@2183
  1467
!
cg@2183
  1468
cg@2763
  1469
projectDefinitionClassOfSelectedModule
cg@2763
  1470
    |info packageID projectDefinitionClass|
cg@2763
  1471
cg@2763
  1472
    info := self selectedModuleInfo.
cg@2763
  1473
    info isNil ifTrue:[^ nil].
cg@2763
  1474
cg@2763
  1475
    info classNames 
cg@2763
  1476
        detect:[:nm | 
cg@2763
  1477
            |cls|
cg@2763
  1478
cg@2763
  1479
            cls := Smalltalk at:nm. 
cg@2763
  1480
            cls notNil ifTrue:[
cg@2763
  1481
                packageID := cls package.
cg@2763
  1482
                true
cg@2763
  1483
            ] ifFalse:[
cg@2763
  1484
                false
cg@2763
  1485
            ]
cg@2763
  1486
        ]
cg@2763
  1487
        ifNone:[^ nil].
cg@2763
  1488
cg@2763
  1489
    projectDefinitionClass := packageID asPackageId projectDefinitionClass.
cg@2763
  1490
    ^ projectDefinitionClass
cg@2763
  1491
!
cg@2763
  1492
cg@2181
  1493
updateModuleList
cg@2181
  1494
    |showClassLibs showBuiltIn showMethods showCObjects showOthers
cg@2620
  1495
     listOfModuleNames allObjects handles methodObjects |
cg@2181
  1496
cg@2181
  1497
    showClassLibs := self showClassLibs value.
cg@2181
  1498
    showBuiltIn := self showBuiltIn value.
cg@2181
  1499
    showMethods := self showMethods value.
cg@2181
  1500
    showCObjects := self showCObjects value.
cg@2181
  1501
    showOthers := self showOthers value.
cg@2181
  1502
cg@2181
  1503
    listOfModuleNames := OrderedCollection new.
cg@2181
  1504
    handles := OrderedCollection new.
cg@2181
  1505
cg@2181
  1506
    allObjects := ObjectFileLoader loadedObjectHandles.
cg@2620
  1507
    methodObjects := (allObjects select:[:h | h isMethodHandle]) asArray.
cg@2181
  1508
cg@2181
  1509
    (showClassLibs or:[showBuiltIn]) ifTrue:[
cg@2181
  1510
        |moduleNames|
cg@2181
  1511
cg@2181
  1512
        allModules := ObjectMemory binaryModuleInfo asOrderedCollection.
cg@2620
  1513
        allModules := allModules select:
cg@2620
  1514
                                    [:i |
cg@2620
  1515
                                        |wantToSee|
cg@2181
  1516
cg@2620
  1517
                                        wantToSee := false.
cg@2620
  1518
                                        i dynamic ifTrue:[
cg@2620
  1519
                                            showClassLibs ifTrue:[
cg@2620
  1520
                                                i isSingleMethod ifFalse:[
cg@2620
  1521
                                                    wantToSee := true
cg@2620
  1522
                                                ].
cg@2620
  1523
                                            ].
cg@2620
  1524
                                        ] ifFalse:[
cg@2181
  1525
                                            showBuiltIn ifTrue:[
cg@2620
  1526
                                                wantToSee := true
cg@2181
  1527
                                            ].
cg@2620
  1528
                                        ].
cg@2620
  1529
                                        wantToSee
cg@2620
  1530
                                    ].
cg@2181
  1531
cg@2181
  1532
        "/ sorting by reverse id brings newest ones to the top (a side effect)
cg@2623
  1533
        allModules sort:[:a :b | (a name) < (b name)].
cg@2181
  1534
        moduleNames := allModules collect:[:entry | entry name].
cg@2181
  1535
        listOfModuleNames addAll:moduleNames.
cg@2181
  1536
        handles addAll:allModules.
cg@2181
  1537
    ].
cg@2181
  1538
cg@2181
  1539
    showMethods ifTrue:[
cg@2620
  1540
        |methodNames|
cg@2181
  1541
cg@2181
  1542
        methodNames := methodObjects collect:[:mH | mH method isNil ifTrue:[
cg@2181
  1543
                                                        'compiled method - removed' " , ' (in ' , mH pathName , ')' "
cg@2181
  1544
                                                    ] ifFalse:[
cg@2181
  1545
                                                        'compiled method ' , mH method whoString  " , ' (in ' , mH pathName , ')' "
cg@2181
  1546
                                                    ].
cg@2181
  1547
                                             ].
cg@2181
  1548
        listOfModuleNames addAll:methodNames.
cg@2181
  1549
        handles addAll:methodObjects.
cg@2181
  1550
    ].
cg@2181
  1551
cg@2181
  1552
    showCObjects ifTrue:[
cg@2181
  1553
        |cObjects cObjectNames|
cg@2181
  1554
cg@2181
  1555
        cObjects := (allObjects select:[:h | h isFunctionObjectHandle]) asArray.
cg@2181
  1556
        cObjectNames := cObjects collect:[:entry | entry pathName].
cg@2181
  1557
        listOfModuleNames addAll:cObjectNames.
cg@2181
  1558
        handles addAll:cObjects.
cg@2181
  1559
    ].
cg@2181
  1560
cg@2181
  1561
    showOthers ifTrue:[
cg@2181
  1562
        |otherObjects otherObjectNames|
cg@2181
  1563
cg@3012
  1564
        otherObjects := (allObjects reject:[:h | (h isFunctionObjectHandle
cg@2181
  1565
                                                 or:[h isMethodHandle
cg@3012
  1566
                                                 or:[h isClassLibHandle]])]) asArray.
cg@2181
  1567
        otherObjectNames := otherObjects collect:[:entry | entry pathName].
cg@2181
  1568
        listOfModuleNames addAll:otherObjectNames.
cg@2181
  1569
        handles addAll:otherObjects.
cg@2181
  1570
    ].
cg@2181
  1571
cg@2181
  1572
    showBuiltIn ifTrue:[
cg@2181
  1573
        listOfModuleNames addFirst:'VM'.
cg@2181
  1574
        handles addFirst:#VM.
cg@2181
  1575
        allModules addFirst:#VM.
cg@2181
  1576
    ].
cg@2181
  1577
cg@2181
  1578
    self listOfModuleNames contents:listOfModuleNames.
cg@2183
  1579
    objectHandles := handles.
cg@2619
  1580
    self selectedModuleIndexChanged.
cg@2181
  1581
cg@2183
  1582
    "Modified: / 05-10-2007 / 12:45:37 / cg"
cg@2181
  1583
! !
cg@2181
  1584
cg@2181
  1585
!ObjectModuleInformation::InfoRow methodsFor:'accessing'!
cg@2181
  1586
cg@2181
  1587
date
cg@2181
  1588
    ^ date
cg@2181
  1589
!
cg@2181
  1590
cg@2181
  1591
date:something
cg@2181
  1592
    date := something.
cg@2181
  1593
!
cg@2181
  1594
cg@3345
  1595
dateOrEmpty
cg@3345
  1596
    ^ date ? ''
cg@3345
  1597
!
cg@3345
  1598
cg@2181
  1599
name
cg@2181
  1600
    ^ name
cg@2181
  1601
!
cg@2181
  1602
cg@2181
  1603
name:something
cg@2181
  1604
    name := something.
cg@2181
  1605
!
cg@2181
  1606
cg@2181
  1607
name:nameArg version:versionArg date:dateArg 
cg@2181
  1608
    name := nameArg.
cg@2181
  1609
    version := versionArg.
cg@2181
  1610
    date := dateArg.
cg@2181
  1611
!
cg@2181
  1612
cg@2183
  1613
value
cg@2183
  1614
    ^ value
cg@2183
  1615
!
cg@2183
  1616
cg@2183
  1617
value:something
cg@2183
  1618
    value := something.
cg@2183
  1619
!
cg@2183
  1620
cg@2181
  1621
version
cg@2181
  1622
    ^ version
cg@2181
  1623
!
cg@2181
  1624
cg@2181
  1625
version:something
cg@2181
  1626
    version := something.
cg@2181
  1627
! !
cg@2181
  1628
cg@2253
  1629
!ObjectModuleInformation::InfoRow methodsFor:'info'!
cg@2253
  1630
cg@2253
  1631
infoString
cg@2253
  1632
    ^ name , ' ', (version ? '-') , ' ', (date ? '-') printString
cg@2253
  1633
! !
cg@2253
  1634
cg@2181
  1635
!ObjectModuleInformation class methodsFor:'documentation'!
cg@2181
  1636
cg@2181
  1637
version
cg@2181
  1638
    ^ '$Header$'
cg@2616
  1639
!
cg@2616
  1640
cg@2616
  1641
version_CVS
cg@2616
  1642
    ^ '$Header$'
cg@2181
  1643
! !
cg@2957
  1644