hggtk/clone.py
author Steve Borho <steve@borho.org>
Sun, 16 Dec 2007 09:54:43 -0600
changeset 397 517f7511f496
parent 395 46c87c1ecc2b
child 401 9ab309fbc25c
permissions -rw-r--r--
hggtk: fix comment at top of clone.py
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
291
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
     1
#
397
517f7511f496 hggtk: fix comment at top of clone.py
Steve Borho <steve@borho.org>
parents: 395
diff changeset
     2
# TortoiseHg dialog to clone a repo
291
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
     3
#
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
     4
# Copyright (C) 2007 TK Soh <teekaysoh@gmail.com>
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
     5
#
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
     6
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
     7
try:
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
     8
    import pygtk
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
     9
    pygtk.require("2.0")
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    10
except:
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    11
    pass
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    12
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    13
import os
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    14
import sys
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    15
import gtk
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    16
from dialog import question_dialog, error_dialog, info_dialog
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    17
from mercurial import hg, ui, cmdutil, util
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    18
from mercurial.i18n import _
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    19
from mercurial.node import *
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    20
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    21
class CloneDialog(gtk.Dialog):
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    22
    """ Dialog to add tag to Mercurial repo """
299
f9ca63c50859 hggtk/clone: accept src and dest paths from command line
TK Soh <teekaysoh@yahoo.com>
parents: 298
diff changeset
    23
    def __init__(self, cwd='', repos=[]):
291
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    24
        """ Initialize the Dialog """
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    25
        buttons = (gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    26
        super(CloneDialog, self).__init__(flags=gtk.DIALOG_MODAL, 
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    27
                                           buttons=buttons)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    28
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    29
        if cwd: os.chdir(cwd)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    30
        
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    31
        # set dialog title
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    32
        title = "hg clone "
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    33
        title += " - %s" % (os.getcwd())
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    34
        self.set_title(title)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    35
299
f9ca63c50859 hggtk/clone: accept src and dest paths from command line
TK Soh <teekaysoh@yahoo.com>
parents: 298
diff changeset
    36
        self._src_path = ''
f9ca63c50859 hggtk/clone: accept src and dest paths from command line
TK Soh <teekaysoh@yahoo.com>
parents: 298
diff changeset
    37
        self._dest_path = ''
f9ca63c50859 hggtk/clone: accept src and dest paths from command line
TK Soh <teekaysoh@yahoo.com>
parents: 298
diff changeset
    38
        
f9ca63c50859 hggtk/clone: accept src and dest paths from command line
TK Soh <teekaysoh@yahoo.com>
parents: 298
diff changeset
    39
        try:
f9ca63c50859 hggtk/clone: accept src and dest paths from command line
TK Soh <teekaysoh@yahoo.com>
parents: 298
diff changeset
    40
            self._src_path = repos[0]
f9ca63c50859 hggtk/clone: accept src and dest paths from command line
TK Soh <teekaysoh@yahoo.com>
parents: 298
diff changeset
    41
            self._dest_path = repos[1]
f9ca63c50859 hggtk/clone: accept src and dest paths from command line
TK Soh <teekaysoh@yahoo.com>
parents: 298
diff changeset
    42
        except:
f9ca63c50859 hggtk/clone: accept src and dest paths from command line
TK Soh <teekaysoh@yahoo.com>
parents: 298
diff changeset
    43
            pass
f9ca63c50859 hggtk/clone: accept src and dest paths from command line
TK Soh <teekaysoh@yahoo.com>
parents: 298
diff changeset
    44
            
291
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    45
        # build dialog
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    46
        self._create()
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    47
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    48
    def _create(self):
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    49
        self.set_default_size(400, 180)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    50
        ewidth = 16
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    51
        
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    52
        # clone source
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    53
        srcbox = gtk.HBox()
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    54
        lbl = gtk.Label("Source Path:")
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    55
        lbl.set_property("width-chars", ewidth)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    56
        lbl.set_alignment(0, 0.5)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    57
        self._src_input = gtk.Entry()
299
f9ca63c50859 hggtk/clone: accept src and dest paths from command line
TK Soh <teekaysoh@yahoo.com>
parents: 298
diff changeset
    58
        self._src_input.set_text(self._src_path)
291
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    59
        self._btn_src_browse = gtk.Button("Browse...")
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    60
        self._btn_src_browse.connect('clicked', self._btn_src_clicked)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    61
        srcbox.pack_start(lbl, False, False)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    62
        srcbox.pack_start(self._src_input, True, True)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    63
        srcbox.pack_end(self._btn_src_browse, False, False, 5)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    64
        self.vbox.pack_start(srcbox, False, False, 2)
299
f9ca63c50859 hggtk/clone: accept src and dest paths from command line
TK Soh <teekaysoh@yahoo.com>
parents: 298
diff changeset
    65
        
291
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    66
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    67
        # clone destination
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    68
        destbox = gtk.HBox()
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    69
        lbl = gtk.Label("Destination Path:")
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    70
        lbl.set_property("width-chars", ewidth)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    71
        lbl.set_alignment(0, 0.5)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    72
        self._dest_input = gtk.Entry()
299
f9ca63c50859 hggtk/clone: accept src and dest paths from command line
TK Soh <teekaysoh@yahoo.com>
parents: 298
diff changeset
    73
        self._dest_input.set_text(self._dest_path)
291
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    74
        self._btn_dest_browse = gtk.Button("Browse...")
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    75
        self._btn_dest_browse.connect('clicked', self._btn_dest_clicked)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    76
        destbox.pack_start(lbl, False, False)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    77
        destbox.pack_start(self._dest_input, True, True)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    78
        destbox.pack_end(self._btn_dest_browse, False, False, 5)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    79
        self.vbox.pack_start(destbox, False, False, 2)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    80
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    81
        # revision input
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    82
        revbox = gtk.HBox()
303
8107174c1d1e hggtk/clone: rev option is for cloning instead of updating
TK Soh <teekaysoh@yahoo.com>
parents: 299
diff changeset
    83
        lbl = gtk.Label("Clone To Revision:")
291
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    84
        lbl.set_property("width-chars", ewidth)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    85
        lbl.set_alignment(0, 0.5)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    86
        self._rev_input = gtk.Entry()
303
8107174c1d1e hggtk/clone: rev option is for cloning instead of updating
TK Soh <teekaysoh@yahoo.com>
parents: 299
diff changeset
    87
        self._rev_input.set_text("")
304
6a49f3883031 hggtk/clone: add checkbox for cloning all revisions
TK Soh <teekaysoh@yahoo.com>
parents: 303
diff changeset
    88
        self._opt_allrev = gtk.CheckButton("Clone all revisions")
6a49f3883031 hggtk/clone: add checkbox for cloning all revisions
TK Soh <teekaysoh@yahoo.com>
parents: 303
diff changeset
    89
        self._opt_allrev.set_active(True)
291
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    90
        self._btn_rev_browse = gtk.Button("Select...")
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    91
        self._btn_rev_browse.connect('clicked', self._btn_rev_clicked)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    92
        revbox.pack_start(lbl, False, False)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    93
        revbox.pack_start(self._rev_input, False, False)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    94
        #revbox.pack_start(self._btn_rev_browse, False, False, 5)
304
6a49f3883031 hggtk/clone: add checkbox for cloning all revisions
TK Soh <teekaysoh@yahoo.com>
parents: 303
diff changeset
    95
        revbox.pack_start(self._opt_allrev, False, False)
291
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    96
        self.vbox.pack_start(revbox, False, False, 2)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    97
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    98
        # options
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
    99
        option_box = gtk.VBox()
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   100
        self._opt_update = gtk.CheckButton("do not update the new working directory")
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   101
        self._opt_pull = gtk.CheckButton("use pull protocol to copy metadata")
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   102
        self._opt_uncomp = gtk.CheckButton("use uncompressed transfer")
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   103
        option_box.pack_start(self._opt_update, False, False)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   104
        option_box.pack_start(self._opt_pull, False, False)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   105
        option_box.pack_start(self._opt_uncomp, False, False)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   106
        self.vbox.pack_start(option_box, False, False, 15)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   107
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   108
        # remote cmd
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   109
        lbl = gtk.Label("Remote Cmd:")
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   110
        lbl.set_alignment(0, 0.5)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   111
        self._remote_cmd = gtk.Entry()
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   112
        self.vbox.pack_end(self._remote_cmd, False, False, 1)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   113
        self.vbox.pack_end(lbl, False, False, 1)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   114
        
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   115
        # add action buttn
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   116
        self._btn_clone = gtk.Button("Clone")
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   117
        self._btn_clone.connect('clicked', self._btn_clone_clicked)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   118
        self.action_area.pack_end(self._btn_clone)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   119
        
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   120
        # show them all
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   121
        self.vbox.show_all()
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   122
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   123
    def _btn_dest_clicked(self, button):
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   124
        """ select folder as clone destination """
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   125
        dialog = gtk.FileChooserDialog(title=None,
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   126
                action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   127
                buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   128
                         gtk.STOCK_OPEN,gtk.RESPONSE_OK))
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   129
        dialog.set_default_response(gtk.RESPONSE_OK)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   130
        response = dialog.run()
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   131
        if response == gtk.RESPONSE_OK:
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   132
            self._dest_input.set_text(dialog.get_filename())
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   133
        dialog.destroy()
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   134
        
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   135
    def _btn_src_clicked(self, button):
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   136
        """ select source folder to clone """
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   137
        dialog = gtk.FileChooserDialog(title=None,
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   138
                action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   139
                buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   140
                         gtk.STOCK_OPEN,gtk.RESPONSE_OK))
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   141
        dialog.set_default_response(gtk.RESPONSE_OK)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   142
        response = dialog.run()
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   143
        if response == gtk.RESPONSE_OK:
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   144
            self._src_input.set_text(dialog.get_filename())
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   145
        dialog.destroy()
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   146
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   147
    def _btn_rev_clicked(self, button):
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   148
        """ select revision from history dialog """
392
21df78721916 hggtk: copy history select code to new file
Steve Borho <steve@borho.org>
parents: 304
diff changeset
   149
        import histselect
21df78721916 hggtk: copy history select code to new file
Steve Borho <steve@borho.org>
parents: 304
diff changeset
   150
        rev = histselect.select(self.root)
291
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   151
        if rev is not None:
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   152
            self._rev_input.set_text(rev)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   153
            
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   154
    def _btn_clone_clicked(self, button):
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   155
        # gather input data
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   156
        src = self._src_input.get_text()
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   157
        dest = self._dest_input.get_text()
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   158
        remotecmd = self._remote_cmd.get_text()
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   159
        rev = self._rev_input.get_text()
304
6a49f3883031 hggtk/clone: add checkbox for cloning all revisions
TK Soh <teekaysoh@yahoo.com>
parents: 303
diff changeset
   160
        
291
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   161
        # verify input
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   162
        if src == "":
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   163
            error_dialog("Source path is empty", "Please enter")
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   164
            self._src_input.grab_focus()
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   165
            return False
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   166
        
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   167
        # start cloning        
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   168
        try:            
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   169
            cmdline = 'hg clone'
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   170
            if self._opt_update.get_active():
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   171
                cmdline += ' --noupdate'
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   172
            if self._opt_uncomp.get_active():
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   173
                cmdline += ' --uncompressed'
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   174
            if self._opt_pull.get_active():
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   175
                cmdline += ' --pull'
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   176
            if remotecmd:   
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   177
                cmdline += ' --remotecmd %s' % util.shellquote(remotecmd)
304
6a49f3883031 hggtk/clone: add checkbox for cloning all revisions
TK Soh <teekaysoh@yahoo.com>
parents: 303
diff changeset
   178
            if not self._opt_allrev.get_active() and rev:   
291
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   179
                cmdline += ' --rev %s' % rev
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   180
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   181
            cmdline += ' --verbose'
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   182
            cmdline += ' %s' % util.shellquote(src)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   183
            if dest:
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   184
                cmdline += ' %s' % util.shellquote(dest)
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   185
            print "cmdline: ", cmdline
395
46c87c1ecc2b hggtk: rename cmd.py to hgcmd.py
Steve Borho <steve@borho.org>
parents: 392
diff changeset
   186
            import hgcmd
46c87c1ecc2b hggtk: rename cmd.py to hgcmd.py
Steve Borho <steve@borho.org>
parents: 392
diff changeset
   187
            hgcmd.run(cmdline)
291
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   188
        except util.Abort, inst:
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   189
            error_dialog("Clone aborted", str(inst))
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   190
            return False
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   191
        except:
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   192
            import traceback
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   193
            error_dialog("Clone error", traceback.format_exc())
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   194
            return False
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   195
299
f9ca63c50859 hggtk/clone: accept src and dest paths from command line
TK Soh <teekaysoh@yahoo.com>
parents: 298
diff changeset
   196
def run(cwd='', repos=[]):
f9ca63c50859 hggtk/clone: accept src and dest paths from command line
TK Soh <teekaysoh@yahoo.com>
parents: 298
diff changeset
   197
    dialog = CloneDialog(cwd, repos)
291
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   198
    dialog.run()
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   199
    
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   200
if __name__ == "__main__":
503cc1730873 hggtk: add clone dialog
TK Soh <teekaysoh@yahoo.com>
parents:
diff changeset
   201
    import sys
299
f9ca63c50859 hggtk/clone: accept src and dest paths from command line
TK Soh <teekaysoh@yahoo.com>
parents: 298
diff changeset
   202
    run(os.getcwd(), sys.argv[1:])