mercurial/extensions.st
branchcvs_MAIN
changeset 489 333ee1b27613
parent 488 6b2d041eb09a
child 505 d4280b9a5e98
equal deleted inserted replaced
488:6b2d041eb09a 489:333ee1b27613
    13     "Modified: / 15-01-2013 / 10:04:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    13     "Modified: / 15-01-2013 / 10:04:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    14 ! !
    14 ! !
    15 
    15 
    16 !AbstractFileBrowser methodsFor:'menu-queries-hg'!
    16 !AbstractFileBrowser methodsFor:'menu-queries-hg'!
    17 
    17 
       
    18 hasHGWorkingCopyNotSelected
       
    19     ^ self hasHGWorkingCopySelected not
       
    20 
       
    21     "Created: / 13-02-2014 / 12:01:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
    22 ! !
       
    23 
       
    24 !AbstractFileBrowser methodsFor:'menu-queries-hg'!
       
    25 
    18 hasHGWorkingCopySelected
    26 hasHGWorkingCopySelected
    19 
    27 
    20     ^ self hgMenusAreShown 
    28     ^ self hgMenusAreShown 
    21         and:[((Smalltalk at:#HGRepository) discover:self currentDirectoryDisplayed) notNil]
    29         and:[((Smalltalk at:#HGRepository) discover:self currentDirectoryDisplayed) notNil]
    22 
    30 
    27 
    35 
    28 hgBranches  
    36 hgBranches  
    29     self hgExecuteCommand: 'branches' objects: #()
    37     self hgExecuteCommand: 'branches' objects: #()
    30 
    38 
    31     "Created: / 25-01-2013 / 20:14:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    39     "Created: / 25-01-2013 / 20:14:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
    40 ! !
       
    41 
       
    42 !AbstractFileBrowser methodsFor:'menu actions-scm-hg'!
       
    43 
       
    44 hgClone
       
    45     | selectedDirectories dialog repoUrlHolder repoDirHolder repodirName repoDir  |
       
    46 
       
    47     selectedDirectories := self currentSelectedDirectories.
       
    48     repoUrlHolder := nil asValue.
       
    49     repoDirHolder := (selectedDirectories size = 1 and:[ selectedDirectories anElement directoryContents isEmpty])
       
    50                 ifTrue:[ selectedDirectories anElement baseName asValue ]
       
    51                 ifFalse:[ nil asValue ].
       
    52     dialog := DialogBox new.
       
    53     dialog title: (resources string: 'Clone repository...').
       
    54     dialog addLabelledInputField:(resources string: 'Repository URL:') 
       
    55                     adjust:#left 
       
    56                     on:repoUrlHolder 
       
    57                     tabable:true 
       
    58                     separateAtX:0.3.    
       
    59     dialog addLabelledInputField:(resources string: 'Directory:') 
       
    60                     adjust:#left 
       
    61                     on:repoDirHolder 
       
    62                     tabable:true 
       
    63                     separateAtX:0.3.  
       
    64     dialog addAbortButton; addOkButton.
       
    65     dialog open.
       
    66     dialog accepted ifFalse:[ ^ self ].
       
    67 
       
    68     repoUrlHolder value isEmptyOrNil ifTrue:[ 
       
    69         Dialog warn: (resources string: 'Empty repository URL')
       
    70     ].
       
    71 
       
    72     repoDir := self currentDirectoryDisplayed / repoDirHolder value.
       
    73     repoDir exists ifTrue:[ 
       
    74         repoDir isDirectory ifTrue:[ 
       
    75             repoDir directoryContents notEmpty ifTrue:[ 
       
    76                 Dialog error: (resources string:'Cannot clone repository. Directory %1 is not empty.' with: repodirName).
       
    77                 ^ self.
       
    78             ].
       
    79         ] ifFalse:[ 
       
    80             Dialog error: (resources string:'Cannot clone repository. %1 is not an empty directory' with: repodirName).
       
    81             ^ self.
       
    82         ].
       
    83     ].
       
    84     ProgressIndicator
       
    85         displayBusyIndicator: (resources string: 'Cloning %1 to %2...' with: repoUrlHolder value with: repoDirHolder value)
       
    86         at:(Screen default center)
       
    87         during:[  
       
    88             HGRepository clone: repoUrlHolder value to: repoDir.
       
    89             self updateCurrentDirectory
       
    90         ].
       
    91 
       
    92     "Created: / 13-02-2014 / 11:57:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
    93     "Modified: / 13-02-2014 / 16:11:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
    94 ! !
       
    95 
       
    96 !AbstractFileBrowser methodsFor:'menu-queries-hg'!
       
    97 
       
    98 hgCloneEnabled
       
    99     ^ self hasHGWorkingCopyNotSelected
       
   100 
       
   101     "Created: / 13-02-2014 / 11:57:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    32 ! !
   102 ! !
    33 
   103 
    34 !AbstractFileBrowser methodsFor:'menu actions-scm-hg'!
   104 !AbstractFileBrowser methodsFor:'menu actions-scm-hg'!
    35 
   105 
    36 hgCommit
   106 hgCommit
   141 
   211 
   142 hgHeads  
   212 hgHeads  
   143     self hgExecuteCommand: 'heads' objects: #()
   213     self hgExecuteCommand: 'heads' objects: #()
   144 
   214 
   145     "Created: / 25-01-2013 / 20:14:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   215     "Created: / 25-01-2013 / 20:14:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
   216 ! !
       
   217 
       
   218 !AbstractFileBrowser methodsFor:'menu actions-scm-hg'!
       
   219 
       
   220 hgInit
       
   221     | selectedDirectories initial repodirName repodir  |
       
   222 
       
   223     selectedDirectories := self currentSelectedDirectories.
       
   224     initial := (selectedDirectories size = 1 and:[ selectedDirectories anElement directoryContents isEmpty])
       
   225                 ifTrue:[ selectedDirectories anElement baseName ]
       
   226                 ifFalse:[ 'repository' ].
       
   227     repodirName := Dialog request: (resources string: 'Enter name of the repository to create') initialAnswer: initial.
       
   228     repodir := self currentDirectoryDisplayed / repodirName.
       
   229     repodir exists ifTrue:[ 
       
   230         repodir isDirectory ifTrue:[ 
       
   231             repodir directoryContents notEmpty ifTrue:[ 
       
   232                 Dialog error: (resources string:'Cannot initialize repository. Directory %1 is not empty.' with: repodirName).
       
   233                 ^ self.
       
   234             ].
       
   235         ] ifFalse:[ 
       
   236             Dialog error: (resources string:'Cannot initialize repository. %1 is not an empty directory' with: repodirName).
       
   237             ^ self.
       
   238         ].
       
   239     ].
       
   240     HGRepository init: repodir.
       
   241     self updateCurrentDirectory
       
   242 
       
   243     "Created: / 13-02-2014 / 11:59:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
   244     "Modified: / 13-02-2014 / 16:19:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
   245 ! !
       
   246 
       
   247 !AbstractFileBrowser methodsFor:'menu-queries-hg'!
       
   248 
       
   249 hgInitEnabled
       
   250     ^ self hasHGWorkingCopyNotSelected
       
   251 
       
   252     "Created: / 13-02-2014 / 11:59:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   146 ! !
   253 ! !
   147 
   254 
   148 !AbstractFileBrowser methodsFor:'menu-dynamic-hg'!
   255 !AbstractFileBrowser methodsFor:'menu-dynamic-hg'!
   149 
   256 
   150 hgMenuMerge
   257 hgMenuMerge
   597           )
   704           )
   598          (MenuItem
   705          (MenuItem
   599             label: '-'
   706             label: '-'
   600           )
   707           )
   601          (MenuItem
   708          (MenuItem
       
   709             enabled: hgCloneEnabled
       
   710             label: 'Clone...'
       
   711             itemValue: hgClone
       
   712           )
       
   713          (MenuItem
       
   714             enabled: hgInitEnabled
       
   715             label: 'Create...'
       
   716             itemValue: hgInit
       
   717           )
       
   718          (MenuItem
       
   719             label: '-'
       
   720           )
       
   721          (MenuItem
   602             enabled: hasHGWorkingCopySelected
   722             enabled: hasHGWorkingCopySelected
   603             label: 'Edit Repository Config (.hg/hgrc)'
   723             label: 'Edit Repository Config (.hg/hgrc)'
   604             itemValue: hgEditConfigRepository
   724             itemValue: hgEditConfigRepository
   605           )
   725           )
   606          (MenuItem
   726          (MenuItem
   607             enabled: hasHGWorkingCopySelected
       
   608             label: 'Edit User Config  (~/.hgrc)'
   727             label: 'Edit User Config  (~/.hgrc)'
   609             itemValue: hgEditConfigUser
   728             itemValue: hgEditConfigUser
   610           )
   729           )
   611          )
   730          )
   612         nil
   731         nil
   613         nil
   732         nil
   614       )
   733       )
   615 
       
   616     "Modified: / 04-04-2013 / 19:43:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
   617 ! !
   734 ! !
   618 
   735 
   619 !Annotation class methodsFor:'instance creation'!
   736 !Annotation class methodsFor:'instance creation'!
   620 
   737 
   621 HGRevision: aString
   738 HGRevision: aString
   835     | dir repo versionMethod |
   952     | dir repo versionMethod |
   836     "Eventually update an version_HG"
   953     "Eventually update an version_HG"
   837 
   954 
   838     self binaryRevisionString isNil ifTrue:[
   955     self binaryRevisionString isNil ifTrue:[
   839         dir := Smalltalk getPackageDirectoryForPackage: self package.
   956         dir := Smalltalk getPackageDirectoryForPackage: self package.
   840         dir := HGRepository discover: dir.
   957         dir notNil ifTrue:[  
   841         dir notNil ifTrue:[
   958             dir := HGRepository discover: dir.
   842             repo := HGRepository on: dir.
   959             dir notNil ifTrue:[
   843             versionMethod := HGSourceCodeManager ensureVersionMethodInClass: self package: self package.
   960                 repo := HGRepository on: dir.
   844             versionMethod annotateWith: 
   961                 versionMethod := HGSourceCodeManager ensureVersionMethodInClass: self package: self package.
   845                 (HGRevisionAnnotation revision: repo workingCopy changesetId)
   962                 versionMethod annotateWith: 
   846         ].
   963                     (HGRevisionAnnotation revision: repo workingCopy changesetId)
       
   964             ].
       
   965         ]
   847     ].
   966     ].
   848 
   967 
   849     "Created: / 26-11-2012 / 13:06:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   968     "Created: / 26-11-2012 / 13:06:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   850     "Modified: / 27-11-2012 / 22:14:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   969     "Modified: / 07-02-2014 / 10:59:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   851 ! !
   970 ! !
   852 
   971 
   853 !ProjectDefinition class methodsFor:'accessing - hg - settings'!
   972 !ProjectDefinition class methodsFor:'accessing - hg - settings'!
   854 
   973 
   855 hgRemoveContainesForDeletedClasses
   974 hgRemoveContainesForDeletedClasses
   931 "/        menu addItem: (MenuItem new
  1050 "/        menu addItem: (MenuItem new
   932 "/                            label:((resources string: 'Push to ') , 'default' asText allBold);
  1051 "/                            label:((resources string: 'Push to ') , 'default' asText allBold);
   933 "/                            value:[package repository push: default];
  1052 "/                            value:[package repository push: default];
   934 "/                            yourself).
  1053 "/                            yourself).
   935 "/    ].
  1054 "/    ].
   936     self withWaitCursorDo:[
  1055     (remotes size ~~ 1 or:[remotes anElement ~~ default]) ifTrue:[
   937         (remotes size > 1 or:[remotes anElement ~~ default]) ifTrue:[
  1056         submenu := Menu new.
   938             submenu := Menu new.
  1057         push submenu: submenu.
   939             push submenu: submenu.
  1058         remotes do:[:remote|
   940             remotes do:[:remote|
  1059             submenu addItem: (MenuItem new
   941                 submenu addItem: (MenuItem new
  1060                             label: remote displayString;
   942                                 label: remote displayString;
  1061                             value:[package repository push: remote];
   943                                 value:[package repository push: remote];
  1062                             yourself).
   944                                 yourself).
       
   945             ].
       
   946         ].
  1063         ].
   947     ].
  1064     ].
   948     ^menu.
  1065     ^menu.
   949 
  1066 
   950     "Created: / 10-12-2012 / 03:56:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  1067     "Created: / 10-12-2012 / 03:56:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  1110 
  1227 
  1111 extensionsVersion_HG
  1228 extensionsVersion_HG
  1112 
  1229 
  1113     ^ '$Changeset: <not expanded> $'
  1230     ^ '$Changeset: <not expanded> $'
  1114 ! !
  1231 ! !
  1115 
       
  1116 !stx_libscm_mercurial class methodsFor:'documentation'!
       
  1117 
       
  1118 extensionsVersion_CVS
       
  1119     ^ '$Header$'
       
  1120 ! !