Commits

Anonymous committed 80d72b2

Added files for CPAN distribution

Comments (0)

Files changed (33)

+Revision history for Padre-Plugin-HG
+
+0.01    Date/time
+        First version, released on an unsuspecting world.
+
+Changes
+MANIFEST
+Makefile.PL
+README
+lib/Padre/Plugin/HG.pm
+lib/Padre/Plugin/HG/ProjectClone.pm
+lib/Padre/Plugin/HG/ProjectCommit.pm
+lib/Padre/Plugin/HG/StatusTree.pm
+lib/Padre/Plugin/HG/UserPassPrompt.pm
+t/00-load.t
+t/pod-coverage.t
+t/pod.t
+# This Makefile is for the Padre::Plugin::HG extension to perl.
+#
+# It was generated automatically by MakeMaker version
+# 6.52 (Revision: 65199) from the contents of
+# Makefile.PL. Don't edit this file, edit Makefile.PL instead.
+#
+#       ANY CHANGES MADE HERE WILL BE LOST!
+#
+#   MakeMaker ARGV: ()
+#
+#   MakeMaker Parameters:
+
+#     ABSTRACT_FROM => q[lib/Padre/Plugin/HG.pm]
+#     AUTHOR => q[Michael Mueller <michael@muellers.net.au>]
+#     LICENSE => q[perl]
+#     NAME => q[Padre::Plugin::HG]
+#     PL_FILES => {  }
+#     PREREQ_PM => { Test::More=>q[0] }
+#     VERSION_FROM => q[lib/Padre/Plugin/HG.pm]
+#     clean => { FILES=>q[Padre-Plugin-HG-*] }
+#     dist => { COMPRESS=>q[gzip -9f], SUFFIX=>q[gz] }
+
+# --- MakeMaker post_initialize section:
+
+
+# --- MakeMaker const_config section:
+
+# These definitions are from config.sh (via /usr/lib/perl/5.10/Config.pm).
+# They may have been overridden via Makefile.PL or on the command line.
+AR = ar
+CC = cc
+CCCDLFLAGS = -fPIC
+CCDLFLAGS = -Wl,-E
+DLEXT = so
+DLSRC = dl_dlopen.xs
+EXE_EXT = 
+FULL_AR = /usr/bin/ar
+LD = cc
+LDDLFLAGS = -shared -O2 -g -L/usr/local/lib
+LDFLAGS =  -L/usr/local/lib
+LIBC = /lib/libc-2.9.so
+LIB_EXT = .a
+OBJ_EXT = .o
+OSNAME = linux
+OSVERS = 2.6.24-23-server
+RANLIB = :
+SITELIBEXP = /usr/local/share/perl/5.10.0
+SITEARCHEXP = /usr/local/lib/perl/5.10.0
+SO = so
+VENDORARCHEXP = /usr/lib/perl5
+VENDORLIBEXP = /usr/share/perl5
+
+
+# --- MakeMaker constants section:
+AR_STATIC_ARGS = cr
+DIRFILESEP = /
+DFSEP = $(DIRFILESEP)
+NAME = Padre::Plugin::HG
+NAME_SYM = Padre_Plugin_HG
+VERSION = 0.01
+VERSION_MACRO = VERSION
+VERSION_SYM = 0_01
+DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\"
+XS_VERSION = 0.01
+XS_VERSION_MACRO = XS_VERSION
+XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\"
+INST_ARCHLIB = blib/arch
+INST_SCRIPT = blib/script
+INST_BIN = blib/bin
+INST_LIB = blib/lib
+INST_MAN1DIR = blib/man1
+INST_MAN3DIR = blib/man3
+MAN1EXT = 1p
+MAN3EXT = 3pm
+INSTALLDIRS = site
+DESTDIR = 
+PREFIX = $(SITEPREFIX)
+PERLPREFIX = /usr
+SITEPREFIX = /usr/local
+VENDORPREFIX = /usr
+INSTALLPRIVLIB = /usr/share/perl/5.10
+DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB)
+INSTALLSITELIB = /usr/local/share/perl/5.10.0
+DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB)
+INSTALLVENDORLIB = /usr/share/perl5
+DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB)
+INSTALLARCHLIB = /usr/lib/perl/5.10
+DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB)
+INSTALLSITEARCH = /usr/local/lib/perl/5.10.0
+DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH)
+INSTALLVENDORARCH = /usr/lib/perl5
+DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH)
+INSTALLBIN = /usr/bin
+DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN)
+INSTALLSITEBIN = /usr/local/bin
+DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN)
+INSTALLVENDORBIN = /usr/bin
+DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN)
+INSTALLSCRIPT = /usr/bin
+DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT)
+INSTALLSITESCRIPT = /usr/local/bin
+DESTINSTALLSITESCRIPT = $(DESTDIR)$(INSTALLSITESCRIPT)
+INSTALLVENDORSCRIPT = /usr/bin
+DESTINSTALLVENDORSCRIPT = $(DESTDIR)$(INSTALLVENDORSCRIPT)
+INSTALLMAN1DIR = /usr/share/man/man1
+DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR)
+INSTALLSITEMAN1DIR = /usr/local/man/man1
+DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR)
+INSTALLVENDORMAN1DIR = /usr/share/man/man1
+DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR)
+INSTALLMAN3DIR = /usr/share/man/man3
+DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR)
+INSTALLSITEMAN3DIR = /usr/local/man/man3
+DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR)
+INSTALLVENDORMAN3DIR = /usr/share/man/man3
+DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR)
+PERL_LIB = /usr/share/perl/5.10
+PERL_ARCHLIB = /usr/lib/perl/5.10
+LIBPERL_A = libperl.a
+FIRST_MAKEFILE = Makefile
+MAKEFILE_OLD = Makefile.old
+MAKE_APERL_FILE = Makefile.aperl
+PERLMAINCC = $(CC)
+PERL_INC = /usr/lib/perl/5.10/CORE
+PERL = /usr/bin/perl
+FULLPERL = /usr/bin/perl
+ABSPERL = $(PERL)
+PERLRUN = $(PERL)
+FULLPERLRUN = $(FULLPERL)
+ABSPERLRUN = $(ABSPERL)
+PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+PERL_CORE = 0
+PERM_DIR = 755
+PERM_RW = 644
+PERM_RWX = 755
+
+MAKEMAKER   = /usr/local/share/perl/5.10.0/ExtUtils/MakeMaker.pm
+MM_VERSION  = 6.52
+MM_REVISION = 65199
+
+# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
+# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
+# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
+# DLBASE  = Basename part of dynamic library. May be just equal BASEEXT.
+MAKE = make
+FULLEXT = Padre/Plugin/HG
+BASEEXT = HG
+PARENT_NAME = Padre::Plugin
+DLBASE = $(BASEEXT)
+VERSION_FROM = lib/Padre/Plugin/HG.pm
+OBJECT = 
+LDFROM = $(OBJECT)
+LINKTYPE = dynamic
+BOOTDEP = 
+
+# Handy lists of source code files:
+XS_FILES = 
+C_FILES  = 
+O_FILES  = 
+H_FILES  = 
+MAN1PODS = 
+MAN3PODS = lib/Padre/Plugin/HG.pm \
+	lib/Padre/Plugin/HG/ProjectClone.pm \
+	lib/Padre/Plugin/HG/StatusTree.pm \
+	lib/Padre/Plugin/HG/UserPassPrompt.pm
+
+# Where is the Config information that we are using/depend on
+CONFIGDEP = $(PERL_ARCHLIB)$(DFSEP)Config.pm $(PERL_INC)$(DFSEP)config.h
+
+# Where to build things
+INST_LIBDIR      = $(INST_LIB)/Padre/Plugin
+INST_ARCHLIBDIR  = $(INST_ARCHLIB)/Padre/Plugin
+
+INST_AUTODIR     = $(INST_LIB)/auto/$(FULLEXT)
+INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT)
+
+INST_STATIC      = 
+INST_DYNAMIC     = 
+INST_BOOT        = 
+
+# Extra linker info
+EXPORT_LIST        = 
+PERL_ARCHIVE       = 
+PERL_ARCHIVE_AFTER = 
+
+
+TO_INST_PM = lib/Padre/Plugin/HG.pm \
+	lib/Padre/Plugin/HG/ProjectClone.pm \
+	lib/Padre/Plugin/HG/ProjectCommit.pm \
+	lib/Padre/Plugin/HG/StatusTree.pm \
+	lib/Padre/Plugin/HG/UserPassPrompt.pm \
+	lib/Padre/Plugin/HG/t/HG.t
+
+PM_TO_BLIB = lib/Padre/Plugin/HG/ProjectCommit.pm \
+	blib/lib/Padre/Plugin/HG/ProjectCommit.pm \
+	lib/Padre/Plugin/HG.pm \
+	blib/lib/Padre/Plugin/HG.pm \
+	lib/Padre/Plugin/HG/t/HG.t \
+	blib/lib/Padre/Plugin/HG/t/HG.t \
+	lib/Padre/Plugin/HG/ProjectClone.pm \
+	blib/lib/Padre/Plugin/HG/ProjectClone.pm \
+	lib/Padre/Plugin/HG/UserPassPrompt.pm \
+	blib/lib/Padre/Plugin/HG/UserPassPrompt.pm \
+	lib/Padre/Plugin/HG/StatusTree.pm \
+	blib/lib/Padre/Plugin/HG/StatusTree.pm
+
+
+# --- MakeMaker platform_constants section:
+MM_Unix_VERSION = 6.52
+PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc
+
+
+# --- MakeMaker tool_autosplit section:
+# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
+AUTOSPLITFILE = $(ABSPERLRUN)  -e 'use AutoSplit;  autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1)' --
+
+
+
+# --- MakeMaker tool_xsubpp section:
+
+
+# --- MakeMaker tools_other section:
+SHELL = /bin/sh
+CHMOD = chmod
+CP = cp
+MV = mv
+NOOP = $(TRUE)
+NOECHO = @
+RM_F = rm -f
+RM_RF = rm -rf
+TEST_F = test -f
+TOUCH = touch
+UMASK_NULL = umask 0
+DEV_NULL = > /dev/null 2>&1
+MKPATH = $(ABSPERLRUN) -MExtUtils::Command -e 'mkpath' --
+EQUALIZE_TIMESTAMP = $(ABSPERLRUN) -MExtUtils::Command -e 'eqtime' --
+FALSE = false
+TRUE = true
+ECHO = echo
+ECHO_N = echo -n
+UNINST = 0
+VERBINST = 0
+MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install([ from_to => {@ARGV}, verbose => '\''$(VERBINST)'\'', uninstall_shadows => '\''$(UNINST)'\'', dir_mode => '\''$(PERM_DIR)'\'' ]);' --
+DOC_INSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'perllocal_install' --
+UNINSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'uninstall' --
+WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'warn_if_old_packlist' --
+MACROSTART = 
+MACROEND = 
+USEMAKEFILE = -f
+FIXIN = $(ABSPERLRUN) -MExtUtils::MY -e 'MY->fixin(shift)' --
+
+
+# --- MakeMaker makemakerdflt section:
+makemakerdflt : all
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dist section:
+TAR = tar
+TARFLAGS = cvf
+ZIP = zip
+ZIPFLAGS = -r
+COMPRESS = gzip -9f
+SUFFIX = gz
+SHAR = shar
+PREOP = $(NOECHO) $(NOOP)
+POSTOP = $(NOECHO) $(NOOP)
+TO_UNIX = $(NOECHO) $(NOOP)
+CI = ci -u
+RCS_LABEL = rcs -Nv$(VERSION_SYM): -q
+DIST_CP = best
+DIST_DEFAULT = tardist
+DISTNAME = Padre-Plugin-HG
+DISTVNAME = Padre-Plugin-HG-0.01
+
+
+# --- MakeMaker macro section:
+
+
+# --- MakeMaker depend section:
+
+
+# --- MakeMaker cflags section:
+
+
+# --- MakeMaker const_loadlibs section:
+
+
+# --- MakeMaker const_cccmd section:
+
+
+# --- MakeMaker post_constants section:
+
+
+# --- MakeMaker pasthru section:
+
+PASTHRU = LIBPERL_A="$(LIBPERL_A)"\
+	LINKTYPE="$(LINKTYPE)"\
+	PREFIX="$(PREFIX)"
+
+
+# --- MakeMaker special_targets section:
+.SUFFIXES : .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT)
+
+.PHONY: all config static dynamic test linkext manifest blibdirs clean realclean disttest distdir
+
+
+
+# --- MakeMaker c_o section:
+
+
+# --- MakeMaker xs_c section:
+
+
+# --- MakeMaker xs_o section:
+
+
+# --- MakeMaker top_targets section:
+all :: pure_all manifypods
+	$(NOECHO) $(NOOP)
+
+
+pure_all :: config pm_to_blib subdirs linkext
+	$(NOECHO) $(NOOP)
+
+subdirs :: $(MYEXTLIB)
+	$(NOECHO) $(NOOP)
+
+config :: $(FIRST_MAKEFILE) blibdirs
+	$(NOECHO) $(NOOP)
+
+help :
+	perldoc ExtUtils::MakeMaker
+
+
+# --- MakeMaker blibdirs section:
+blibdirs : $(INST_LIBDIR)$(DFSEP).exists $(INST_ARCHLIB)$(DFSEP).exists $(INST_AUTODIR)$(DFSEP).exists $(INST_ARCHAUTODIR)$(DFSEP).exists $(INST_BIN)$(DFSEP).exists $(INST_SCRIPT)$(DFSEP).exists $(INST_MAN1DIR)$(DFSEP).exists $(INST_MAN3DIR)$(DFSEP).exists
+	$(NOECHO) $(NOOP)
+
+# Backwards compat with 6.18 through 6.25
+blibdirs.ts : blibdirs
+	$(NOECHO) $(NOOP)
+
+$(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL
+	$(NOECHO) $(MKPATH) $(INST_LIBDIR)
+	$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_LIBDIR)
+	$(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists
+
+$(INST_ARCHLIB)$(DFSEP).exists :: Makefile.PL
+	$(NOECHO) $(MKPATH) $(INST_ARCHLIB)
+	$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHLIB)
+	$(NOECHO) $(TOUCH) $(INST_ARCHLIB)$(DFSEP).exists
+
+$(INST_AUTODIR)$(DFSEP).exists :: Makefile.PL
+	$(NOECHO) $(MKPATH) $(INST_AUTODIR)
+	$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_AUTODIR)
+	$(NOECHO) $(TOUCH) $(INST_AUTODIR)$(DFSEP).exists
+
+$(INST_ARCHAUTODIR)$(DFSEP).exists :: Makefile.PL
+	$(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR)
+	$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHAUTODIR)
+	$(NOECHO) $(TOUCH) $(INST_ARCHAUTODIR)$(DFSEP).exists
+
+$(INST_BIN)$(DFSEP).exists :: Makefile.PL
+	$(NOECHO) $(MKPATH) $(INST_BIN)
+	$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_BIN)
+	$(NOECHO) $(TOUCH) $(INST_BIN)$(DFSEP).exists
+
+$(INST_SCRIPT)$(DFSEP).exists :: Makefile.PL
+	$(NOECHO) $(MKPATH) $(INST_SCRIPT)
+	$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_SCRIPT)
+	$(NOECHO) $(TOUCH) $(INST_SCRIPT)$(DFSEP).exists
+
+$(INST_MAN1DIR)$(DFSEP).exists :: Makefile.PL
+	$(NOECHO) $(MKPATH) $(INST_MAN1DIR)
+	$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN1DIR)
+	$(NOECHO) $(TOUCH) $(INST_MAN1DIR)$(DFSEP).exists
+
+$(INST_MAN3DIR)$(DFSEP).exists :: Makefile.PL
+	$(NOECHO) $(MKPATH) $(INST_MAN3DIR)
+	$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN3DIR)
+	$(NOECHO) $(TOUCH) $(INST_MAN3DIR)$(DFSEP).exists
+
+
+
+# --- MakeMaker linkext section:
+
+linkext :: $(LINKTYPE)
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dlsyms section:
+
+
+# --- MakeMaker dynamic section:
+
+dynamic :: $(FIRST_MAKEFILE) $(INST_DYNAMIC) $(INST_BOOT)
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dynamic_bs section:
+
+BOOTSTRAP =
+
+
+# --- MakeMaker dynamic_lib section:
+
+
+# --- MakeMaker static section:
+
+## $(INST_PM) has been moved to the all: target.
+## It remains here for awhile to allow for old usage: "make static"
+static :: $(FIRST_MAKEFILE) $(INST_STATIC)
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker static_lib section:
+
+
+# --- MakeMaker manifypods section:
+
+POD2MAN_EXE = $(PERLRUN) "-MExtUtils::Command::MM" -e pod2man "--"
+POD2MAN = $(POD2MAN_EXE)
+
+
+manifypods : pure_all  \
+	lib/Padre/Plugin/HG.pm \
+	lib/Padre/Plugin/HG/ProjectClone.pm \
+	lib/Padre/Plugin/HG/UserPassPrompt.pm \
+	lib/Padre/Plugin/HG/StatusTree.pm
+	$(NOECHO) $(POD2MAN) --section=3 --perm_rw=$(PERM_RW) \
+	  lib/Padre/Plugin/HG.pm $(INST_MAN3DIR)/Padre::Plugin::HG.$(MAN3EXT) \
+	  lib/Padre/Plugin/HG/ProjectClone.pm $(INST_MAN3DIR)/Padre::Plugin::HG::ProjectClone.$(MAN3EXT) \
+	  lib/Padre/Plugin/HG/UserPassPrompt.pm $(INST_MAN3DIR)/Padre::Plugin::HG::UserPassPrompt.$(MAN3EXT) \
+	  lib/Padre/Plugin/HG/StatusTree.pm $(INST_MAN3DIR)/Padre::Plugin::HG::StatusTree.$(MAN3EXT) 
+
+
+
+
+# --- MakeMaker processPL section:
+
+
+# --- MakeMaker installbin section:
+
+
+# --- MakeMaker subdirs section:
+
+# none
+
+# --- MakeMaker clean_subdirs section:
+clean_subdirs :
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker clean section:
+
+# Delete temporary files but do not touch installed files. We don't delete
+# the Makefile here so a later make realclean still has a makefile to use.
+
+clean :: clean_subdirs
+	- $(RM_F) \
+	  *$(LIB_EXT) core \
+	  core.[0-9] $(INST_ARCHAUTODIR)/extralibs.all \
+	  core.[0-9][0-9] $(BASEEXT).bso \
+	  pm_to_blib.ts core.[0-9][0-9][0-9][0-9] \
+	  $(BASEEXT).x $(BOOTSTRAP) \
+	  perl$(EXE_EXT) tmon.out \
+	  *$(OBJ_EXT) pm_to_blib \
+	  $(INST_ARCHAUTODIR)/extralibs.ld blibdirs.ts \
+	  core.[0-9][0-9][0-9][0-9][0-9] *perl.core \
+	  core.*perl.*.? $(MAKE_APERL_FILE) \
+	  perl $(BASEEXT).def \
+	  core.[0-9][0-9][0-9] mon.out \
+	  lib$(BASEEXT).def perlmain.c \
+	  perl.exe so_locations \
+	  $(BASEEXT).exp 
+	- $(RM_RF) \
+	  Padre-Plugin-HG-* blib 
+	- $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) $(DEV_NULL)
+
+
+# --- MakeMaker realclean_subdirs section:
+realclean_subdirs :
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker realclean section:
+# Delete temporary files (via clean) and also delete dist files
+realclean purge ::  clean realclean_subdirs
+	- $(RM_F) \
+	  $(MAKEFILE_OLD) $(FIRST_MAKEFILE) 
+	- $(RM_RF) \
+	  $(DISTVNAME) 
+
+
+# --- MakeMaker metafile section:
+metafile : create_distdir
+	$(NOECHO) $(ECHO) Generating META.yml
+	$(NOECHO) $(ECHO) '--- #YAML:1.0' > META_new.yml
+	$(NOECHO) $(ECHO) 'name:               Padre-Plugin-HG' >> META_new.yml
+	$(NOECHO) $(ECHO) 'version:            0.01' >> META_new.yml
+	$(NOECHO) $(ECHO) 'abstract:           Mecurial interface for Padre' >> META_new.yml
+	$(NOECHO) $(ECHO) 'author:' >> META_new.yml
+	$(NOECHO) $(ECHO) '    - Michael Mueller <michael@muellers.net.au>' >> META_new.yml
+	$(NOECHO) $(ECHO) 'license:            perl' >> META_new.yml
+	$(NOECHO) $(ECHO) 'distribution_type:  module' >> META_new.yml
+	$(NOECHO) $(ECHO) 'configure_requires:' >> META_new.yml
+	$(NOECHO) $(ECHO) '    ExtUtils::MakeMaker:  0' >> META_new.yml
+	$(NOECHO) $(ECHO) 'build_requires:' >> META_new.yml
+	$(NOECHO) $(ECHO) '    ExtUtils::MakeMaker:  0' >> META_new.yml
+	$(NOECHO) $(ECHO) 'requires:' >> META_new.yml
+	$(NOECHO) $(ECHO) '    Test::More:  0' >> META_new.yml
+	$(NOECHO) $(ECHO) 'no_index:' >> META_new.yml
+	$(NOECHO) $(ECHO) '    directory:' >> META_new.yml
+	$(NOECHO) $(ECHO) '        - t' >> META_new.yml
+	$(NOECHO) $(ECHO) '        - inc' >> META_new.yml
+	$(NOECHO) $(ECHO) 'generated_by:       ExtUtils::MakeMaker version 6.52' >> META_new.yml
+	$(NOECHO) $(ECHO) 'meta-spec:' >> META_new.yml
+	$(NOECHO) $(ECHO) '    url:      http://module-build.sourceforge.net/META-spec-v1.4.html' >> META_new.yml
+	$(NOECHO) $(ECHO) '    version:  1.4' >> META_new.yml
+	-$(NOECHO) $(MV) META_new.yml $(DISTVNAME)/META.yml
+
+
+# --- MakeMaker signature section:
+signature :
+	cpansign -s
+
+
+# --- MakeMaker dist_basics section:
+distclean :: realclean distcheck
+	$(NOECHO) $(NOOP)
+
+distcheck :
+	$(PERLRUN) "-MExtUtils::Manifest=fullcheck" -e fullcheck
+
+skipcheck :
+	$(PERLRUN) "-MExtUtils::Manifest=skipcheck" -e skipcheck
+
+manifest :
+	$(PERLRUN) "-MExtUtils::Manifest=mkmanifest" -e mkmanifest
+
+veryclean : realclean
+	$(RM_F) *~ */*~ *.orig */*.orig *.bak */*.bak *.old */*.old 
+
+
+
+# --- MakeMaker dist_core section:
+
+dist : $(DIST_DEFAULT) $(FIRST_MAKEFILE)
+	$(NOECHO) $(ABSPERLRUN) -l -e 'print '\''Warning: Makefile possibly out of date with $(VERSION_FROM)'\''' \
+	  -e '    if -e '\''$(VERSION_FROM)'\'' and -M '\''$(VERSION_FROM)'\'' < -M '\''$(FIRST_MAKEFILE)'\'';' --
+
+tardist : $(DISTVNAME).tar$(SUFFIX)
+	$(NOECHO) $(NOOP)
+
+uutardist : $(DISTVNAME).tar$(SUFFIX)
+	uuencode $(DISTVNAME).tar$(SUFFIX) $(DISTVNAME).tar$(SUFFIX) > $(DISTVNAME).tar$(SUFFIX)_uu
+
+$(DISTVNAME).tar$(SUFFIX) : distdir
+	$(PREOP)
+	$(TO_UNIX)
+	$(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME)
+	$(RM_RF) $(DISTVNAME)
+	$(COMPRESS) $(DISTVNAME).tar
+	$(POSTOP)
+
+zipdist : $(DISTVNAME).zip
+	$(NOECHO) $(NOOP)
+
+$(DISTVNAME).zip : distdir
+	$(PREOP)
+	$(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME)
+	$(RM_RF) $(DISTVNAME)
+	$(POSTOP)
+
+shdist : distdir
+	$(PREOP)
+	$(SHAR) $(DISTVNAME) > $(DISTVNAME).shar
+	$(RM_RF) $(DISTVNAME)
+	$(POSTOP)
+
+
+# --- MakeMaker distdir section:
+create_distdir :
+	$(RM_RF) $(DISTVNAME)
+	$(PERLRUN) "-MExtUtils::Manifest=manicopy,maniread" \
+		-e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');"
+
+distdir : create_distdir distmeta 
+	$(NOECHO) $(NOOP)
+
+
+
+# --- MakeMaker dist_test section:
+disttest : distdir
+	cd $(DISTVNAME) && $(ABSPERLRUN) Makefile.PL 
+	cd $(DISTVNAME) && $(MAKE) $(PASTHRU)
+	cd $(DISTVNAME) && $(MAKE) test $(PASTHRU)
+
+
+
+# --- MakeMaker dist_ci section:
+
+ci :
+	$(PERLRUN) "-MExtUtils::Manifest=maniread" \
+	  -e "@all = keys %{ maniread() };" \
+	  -e "print(qq{Executing $(CI) @all\n}); system(qq{$(CI) @all});" \
+	  -e "print(qq{Executing $(RCS_LABEL) ...\n}); system(qq{$(RCS_LABEL) @all});"
+
+
+# --- MakeMaker distmeta section:
+distmeta : create_distdir metafile
+	$(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{META.yml} => q{Module meta-data (added by MakeMaker)}}) } ' \
+	  -e '    or print "Could not add META.yml to MANIFEST: $${'\''@'\''}\n"' --
+
+
+
+# --- MakeMaker distsignature section:
+distsignature : create_distdir
+	$(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{SIGNATURE} => q{Public-key signature (added by MakeMaker)}}) } ' \
+	  -e '    or print "Could not add SIGNATURE to MANIFEST: $${'\''@'\''}\n"' --
+	$(NOECHO) cd $(DISTVNAME) && $(TOUCH) SIGNATURE
+	cd $(DISTVNAME) && cpansign -s
+
+
+
+# --- MakeMaker install section:
+
+install :: pure_install doc_install
+	$(NOECHO) $(NOOP)
+
+install_perl :: pure_perl_install doc_perl_install
+	$(NOECHO) $(NOOP)
+
+install_site :: pure_site_install doc_site_install
+	$(NOECHO) $(NOOP)
+
+install_vendor :: pure_vendor_install doc_vendor_install
+	$(NOECHO) $(NOOP)
+
+pure_install :: pure_$(INSTALLDIRS)_install
+	$(NOECHO) $(NOOP)
+
+doc_install :: doc_$(INSTALLDIRS)_install
+	$(NOECHO) $(NOOP)
+
+pure__install : pure_site_install
+	$(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+doc__install : doc_site_install
+	$(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+pure_perl_install :: all
+	$(NOECHO) $(MOD_INSTALL) \
+		read $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist \
+		write $(DESTINSTALLARCHLIB)/auto/$(FULLEXT)/.packlist \
+		$(INST_LIB) $(DESTINSTALLPRIVLIB) \
+		$(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
+		$(INST_BIN) $(DESTINSTALLBIN) \
+		$(INST_SCRIPT) $(DESTINSTALLSCRIPT) \
+		$(INST_MAN1DIR) $(DESTINSTALLMAN1DIR) \
+		$(INST_MAN3DIR) $(DESTINSTALLMAN3DIR)
+	$(NOECHO) $(WARN_IF_OLD_PACKLIST) \
+		$(SITEARCHEXP)/auto/$(FULLEXT)
+
+
+pure_site_install :: all
+	$(NOECHO) $(MOD_INSTALL) \
+		read $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist \
+		write $(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist \
+		$(INST_LIB) $(DESTINSTALLSITELIB) \
+		$(INST_ARCHLIB) $(DESTINSTALLSITEARCH) \
+		$(INST_BIN) $(DESTINSTALLSITEBIN) \
+		$(INST_SCRIPT) $(DESTINSTALLSITESCRIPT) \
+		$(INST_MAN1DIR) $(DESTINSTALLSITEMAN1DIR) \
+		$(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR)
+	$(NOECHO) $(WARN_IF_OLD_PACKLIST) \
+		$(PERL_ARCHLIB)/auto/$(FULLEXT)
+
+pure_vendor_install :: all
+	$(NOECHO) $(MOD_INSTALL) \
+		read $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist \
+		write $(DESTINSTALLVENDORARCH)/auto/$(FULLEXT)/.packlist \
+		$(INST_LIB) $(DESTINSTALLVENDORLIB) \
+		$(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
+		$(INST_BIN) $(DESTINSTALLVENDORBIN) \
+		$(INST_SCRIPT) $(DESTINSTALLVENDORSCRIPT) \
+		$(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \
+		$(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
+
+doc_perl_install :: all
+	$(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+	-$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+	-$(NOECHO) $(DOC_INSTALL) \
+		"Module" "$(NAME)" \
+		"installed into" "$(INSTALLPRIVLIB)" \
+		LINKTYPE "$(LINKTYPE)" \
+		VERSION "$(VERSION)" \
+		EXE_FILES "$(EXE_FILES)" \
+		>> $(DESTINSTALLARCHLIB)/perllocal.pod
+
+doc_site_install :: all
+	$(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+	-$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+	-$(NOECHO) $(DOC_INSTALL) \
+		"Module" "$(NAME)" \
+		"installed into" "$(INSTALLSITELIB)" \
+		LINKTYPE "$(LINKTYPE)" \
+		VERSION "$(VERSION)" \
+		EXE_FILES "$(EXE_FILES)" \
+		>> $(DESTINSTALLARCHLIB)/perllocal.pod
+
+doc_vendor_install :: all
+	$(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+	-$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+	-$(NOECHO) $(DOC_INSTALL) \
+		"Module" "$(NAME)" \
+		"installed into" "$(INSTALLVENDORLIB)" \
+		LINKTYPE "$(LINKTYPE)" \
+		VERSION "$(VERSION)" \
+		EXE_FILES "$(EXE_FILES)" \
+		>> $(DESTINSTALLARCHLIB)/perllocal.pod
+
+
+uninstall :: uninstall_from_$(INSTALLDIRS)dirs
+	$(NOECHO) $(NOOP)
+
+uninstall_from_perldirs ::
+	$(NOECHO) $(UNINSTALL) $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist
+
+uninstall_from_sitedirs ::
+	$(NOECHO) $(UNINSTALL) $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist
+
+uninstall_from_vendordirs ::
+	$(NOECHO) $(UNINSTALL) $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist
+
+
+# --- MakeMaker force section:
+# Phony target to force checking subdirectories.
+FORCE :
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker perldepend section:
+
+
+# --- MakeMaker makefile section:
+# We take a very conservative approach here, but it's worth it.
+# We move Makefile to Makefile.old here to avoid gnu make looping.
+$(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP)
+	$(NOECHO) $(ECHO) "Makefile out-of-date with respect to $?"
+	$(NOECHO) $(ECHO) "Cleaning current config before rebuilding Makefile..."
+	-$(NOECHO) $(RM_F) $(MAKEFILE_OLD)
+	-$(NOECHO) $(MV)   $(FIRST_MAKEFILE) $(MAKEFILE_OLD)
+	- $(MAKE) $(USEMAKEFILE) $(MAKEFILE_OLD) clean $(DEV_NULL)
+	$(PERLRUN) Makefile.PL 
+	$(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <=="
+	$(NOECHO) $(ECHO) "==> Please rerun the $(MAKE) command.  <=="
+	$(FALSE)
+
+
+
+# --- MakeMaker staticmake section:
+
+# --- MakeMaker makeaperl section ---
+MAP_TARGET    = perl
+FULLPERL      = /usr/bin/perl
+
+$(MAP_TARGET) :: static $(MAKE_APERL_FILE)
+	$(MAKE) $(USEMAKEFILE) $(MAKE_APERL_FILE) $@
+
+$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE) pm_to_blib
+	$(NOECHO) $(ECHO) Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET)
+	$(NOECHO) $(PERLRUNINST) \
+		Makefile.PL DIR= \
+		MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \
+		MAKEAPERL=1 NORECURS=1 CCCDLFLAGS=
+
+
+# --- MakeMaker test section:
+
+TEST_VERBOSE=0
+TEST_TYPE=test_$(LINKTYPE)
+TEST_FILE = test.pl
+TEST_FILES = t/*.t
+TESTDB_SW = -d
+
+testdb :: testdb_$(LINKTYPE)
+
+test :: $(TEST_TYPE) subdirs-test
+
+subdirs-test ::
+	$(NOECHO) $(NOOP)
+
+
+test_dynamic :: pure_all
+	PERL_DL_NONLAZY=1 $(FULLPERLRUN) "-MExtUtils::Command::MM" "-e" "test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')" $(TEST_FILES)
+
+testdb_dynamic :: pure_all
+	PERL_DL_NONLAZY=1 $(FULLPERLRUN) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE)
+
+test_ : test_dynamic
+
+test_static :: test_dynamic
+testdb_static :: testdb_dynamic
+
+
+# --- MakeMaker ppd section:
+# Creates a PPD (Perl Package Description) for a binary distribution.
+ppd :
+	$(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="0.01">' > $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '    <ABSTRACT>Mecurial interface for Padre</ABSTRACT>' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '    <AUTHOR>Michael Mueller &lt;michael@muellers.net.au&gt;</AUTHOR>' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '    <IMPLEMENTATION>' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '        <REQUIRE NAME="Test::More" />' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '        <ARCHITECTURE NAME="i486-linux-gnu-thread-multi-5.10" />' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '        <CODEBASE HREF="" />' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '    </IMPLEMENTATION>' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '</SOFTPKG>' >> $(DISTNAME).ppd
+
+
+# --- MakeMaker pm_to_blib section:
+
+pm_to_blib : $(TO_INST_PM)
+	$(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', q[$(PM_FILTER)], '\''$(PERM_DIR)'\'')' -- \
+	  lib/Padre/Plugin/HG/ProjectCommit.pm blib/lib/Padre/Plugin/HG/ProjectCommit.pm \
+	  lib/Padre/Plugin/HG.pm blib/lib/Padre/Plugin/HG.pm \
+	  lib/Padre/Plugin/HG/t/HG.t blib/lib/Padre/Plugin/HG/t/HG.t \
+	  lib/Padre/Plugin/HG/ProjectClone.pm blib/lib/Padre/Plugin/HG/ProjectClone.pm \
+	  lib/Padre/Plugin/HG/UserPassPrompt.pm blib/lib/Padre/Plugin/HG/UserPassPrompt.pm \
+	  lib/Padre/Plugin/HG/StatusTree.pm blib/lib/Padre/Plugin/HG/StatusTree.pm 
+	$(NOECHO) $(TOUCH) pm_to_blib
+
+
+# --- MakeMaker selfdocument section:
+
+
+# --- MakeMaker postamble section:
+
+
+# End.
+use strict;
+use warnings;
+use ExtUtils::MakeMaker;
+
+WriteMakefile(
+    NAME                => 'Padre::Plugin::HG',
+    AUTHOR              => q{Michael Mueller <michael@muellers.net.au>},
+    VERSION_FROM        => 'lib/Padre/Plugin/HG.pm',
+    ABSTRACT_FROM       => 'lib/Padre/Plugin/HG.pm',
+    ($ExtUtils::MakeMaker::VERSION >= 6.3002
+      ? ('LICENSE'=> 'perl')
+      : ()),
+    PL_FILES            => {},
+    PREREQ_PM => {
+        'Test::More' => 0,
+    },
+    dist                => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
+    clean               => { FILES => 'Padre-Plugin-HG-*' },
+);

Padre-Plugin-HG-0.01.tar.gz

Binary file added.
+Padre-Plugin-HG
+
+The README is used to introduce the module and provide instructions on
+how to install the module, any machine dependencies it may have (for
+example C compilers and installed libraries) and any other information
+that should be provided before the module is installed.
+
+A README file is required for CPAN modules since CPAN extracts the README
+file from a module distribution so that people browsing the archive
+can use it to get an idea of the module's uses. It is usually a good idea
+to provide version information here so that people can decide whether
+fixes for the module are worth downloading.
+
+
+INSTALLATION
+
+To install this module, run the following commands:
+
+	perl Makefile.PL
+	make
+	make test
+	make install
+
+SUPPORT AND DOCUMENTATION
+
+After installing, you can find documentation for this module with the
+perldoc command.
+
+    perldoc Padre::Plugin::HG
+
+You can also look for information at:
+
+    RT, CPAN's request tracker
+        http://rt.cpan.org/NoAuth/Bugs.html?Dist=Padre-Plugin-HG
+
+    AnnoCPAN, Annotated CPAN documentation
+        http://annocpan.org/dist/Padre-Plugin-HG
+
+    CPAN Ratings
+        http://cpanratings.perl.org/d/Padre-Plugin-HG
+
+    Search CPAN
+        http://search.cpan.org/dist/Padre-Plugin-HG/
+
+
+COPYRIGHT AND LICENCE
+
+Copyright (C) 2009 Michael Mueller
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of either: the GNU General Public License as published
+by the Free Software Foundation; or the Artistic License.
+
+See http://dev.perl.org/licenses/ for more information.
+

blib/arch/.exists

Empty file added.

blib/arch/auto/Padre/Plugin/HG/.exists

Empty file added.

blib/bin/.exists

Empty file added.

blib/lib/Padre/Plugin/.exists

Empty file added.

blib/lib/Padre/Plugin/HG.pm

+package Padre::Plugin::HG;
+
+use 5.008;
+use warnings;
+use strict;
+
+use Padre::Config ();
+use Padre::Wx     ();
+use Padre::Plugin ();
+use Padre::Util   ();
+
+use Capture::Tiny  qw(capture_merged);
+use File::Basename ();
+use File::Spec;
+use lib ("/home/mm/.padre/plugins");
+use Padre::Plugin::HG::StatusTree;
+use Padre::Plugin::HG::ProjectCommit;
+use Padre::Plugin::HG::ProjectClone;
+use Padre::Plugin::HG::UserPassPrompt;
+my %projects;
+our $VERSION = '0.01';
+our @ISA     = 'Padre::Plugin';
+
+my $VCS = "Mercurial";
+
+my %VCSCommand = ( commit => 'hg commit -A -m"$message" $path ',
+		add => 'hg add $path',
+		status =>'hg status --all $path',
+		root => 'hg root', 
+		diff => 'hg diff $path',
+		clone=> 'hg clone $path',
+		pull =>'hg pull --update --noninteractive  ',
+		push =>'hg push $path');
+		
+my %HGStatus = ( M => 'File Modified', 
+A => 'File Added not Committed',
+R => 'File Removed',
+C => 'Up to Date',
+'!' => 'Deleted But Still Tracked!',
+'?' => 'Not Tracked',
+I => 'ignored'
+);
+
+=pod
+
+=head1 NAME
+
+Padre::Plugin::HG - Mecurial interface for Padre
+
+=head1 SYNOPSIS
+
+cpan install Padre::Plugin::HG
+
+Access it via Plugin/HG then View Project 
+
+
+=head1 AUTHOR
+
+Michael Mueller << <michael at muellers.net.au> >>
+
+=head1 BUGS
+
+Please report any bugs or feature requests to L<http://padre.perlide.org/>
+
+
+=head1 COPYRIGHT & LICENSE
+
+Copyright 2008-2009 Michael Mueller
+all rights reserved.
+
+This program is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+=head1 METHODS
+
+=cut
+
+
+#####################################################################
+# Padre::Plugin Methods
+
+sub padre_interfaces {
+	'Padre::Plugin' => 0.24
+}
+
+sub plugin_name {
+	'HG';
+}
+
+sub menu_plugins_simple {
+	my $self = shift;
+	return $self->plugin_name => [
+		'About'             => sub { $self->show_about },
+		'View Project'	    => sub {$self->show_statusTree},
+		'Add'		    => sub {$self->vcs_add},
+		'Clone'		    => sub {$self->show_project_clone},
+		'Commit...' 	  => sub { $self->show_commit_list},
+	];
+}
+
+
+
+#####################################################################
+# Custom Methods
+
+sub show_about {
+	my $self = shift;
+
+	# Generate the About dialog
+	my $about = Wx::AboutDialogInfo->new;
+	$about->SetName("Padre::Plugin::HG");
+	$about->SetDescription( <<"END_MESSAGE" );
+Mecurial support for Padre
+END_MESSAGE
+	$about->SetVersion( $VERSION );
+
+	# Show the About dialog
+	Wx::AboutBox( $about );
+
+	return;
+}
+=pod
+
+=head2 vcs_commit
+
+ performs the commit 
+ $self->vcs_commit($filename, $dir);
+ will prompt for the commit message.
+ 
+=cut
+
+sub vcs_commit {
+	my ($self, $path, $dir ) = @_;
+	my $main = Padre->ide->wx->main;
+	
+	if (!$self->_project_root($path))
+	{
+		$main->error("File not in a $VCS Project", "Padre $VCS" );
+		return;
+	}
+
+	my $message = $main->prompt("$VCS Commit of $path", "Please type in your message", "MY_".$VCS."_COMMIT");
+	if ($message) {
+		
+		my $command = eval "qq\0$VCSCommand{commit} $path\0";
+		my $result = $self->vcs_execute($command, $dir);
+		$main->message( $result, "$VCS Commiting $path" );
+	}
+
+	return;	
+}
+
+=pod
+
+=head2 vcs_add
+
+ Adds the file to the repository
+ $self->vcs_add($filename, $dir);
+ will prompt for the commit message.
+ 
+=cut
+
+sub vcs_add {
+	my ($self, $path, $dir) = @_;
+	my $main = Padre->ide->wx->main;
+	my $command = eval "qq\0$VCSCommand{add} $path\0";
+	my $result = $self->vcs_execute($command,$dir);
+	$main->message( $result, "$VCS Adding to Repository" );
+	return;	
+}
+
+=pod
+
+=head2 vcs_add
+
+ Adds the file to the repository
+ $self->vcs_diff($filename, $dir);
+ provides some basic diffing the current file agains the tip
+
+=cut
+sub vcs_diff {
+	my ($self, $path, $dir) = @_;
+	
+	my $main = Padre->ide->wx->main;
+	my $command = eval "qq\0$VCSCommand{diff} $path\0";
+	return $main->error('File not in a $VCS Project', "Padre $VCS" ) if not $self->_project_root($path);
+	my $result = $self->vcs_execute($command, $dir);
+	use Padre::Wx::Dialog::Text;
+	Padre::Wx::Dialog::Text->show($main, "$VCS Diff of $path", $result);
+	return;
+}
+
+=pod
+
+=head2 clone_project
+
+ Adds the file to the repository
+ $self->vcs_diff($repository, $destination_dir);
+ Will clone a repository and place it in the destination dir
+ 
+=cut
+sub clone_project
+{
+	my ($self, $path, $dir) = @_;
+	my $main = Padre->ide->wx->main;
+	my $command = eval "qq\0$VCSCommand{clone}\0";
+	my $result = $self->vcs_execute($command, $dir);
+	$main->message( $result, "$VCS Cloning $path" );
+	return;
+}
+=pod
+
+=head2 pull_update_project
+
+ Pulls updates to a project. 
+ It will perform an update automatically on the repository
+ $self->pull_update_project($file, $projectdir);
+ Only pulls changes from the default repository, which is normally
+ the one you cloned from.
+
+=cut
+sub pull_update_project
+{
+	my ($self, $path, $dir) = @_;
+	my $main = Padre->ide->wx->main;
+	return $main->error('File not in a $VCS Project', "Padre $VCS" ) if not $self->_project_root($path);
+	my $command = eval "qq\0$VCSCommand{pull}\0";
+	my $result = $self->vcs_execute($command, $dir);
+	$main->message( $result, "$VCS Cloning $path" );
+	return;
+}
+=pod
+
+=head2 push_project
+
+ Pushes updates to a remote repository. 
+ Prompts for the username and password. 
+ $self->push_project($file, $projectdir);
+ Only pushes changes to the default remote repository, which is normally
+ the one you cloned from.
+
+=cut
+sub push_project
+{
+	my ($self, $path, $dir) = @_;
+	my $main = Padre->ide->wx->main;
+	return $main->error('File not in a $VCS Project', "Padre $VCS" ) if not $self->_project_root($path);
+	my $config_command = 'hg showconfig';
+	my $result1 = $self->vcs_execute($config_command, $dir);	#overwriting path on purpose.
+	#overwriting path on purpose.
+	#gets the configured push path if it exists
+	($path) = $result1 =~ /paths.default=(.*)/;
+	return $main->error('No default push path', "Padre $VCS" ) if not $path;
+	my ($default_username) = $path =~ /\/\/(.*)@/;
+	my $prompt = Padre::Plugin::HG::UserPassPrompt->new(
+			title=>'Mecurial Push',
+			default_username=>$default_username, 
+			default_password =>'');
+	my $username = $prompt->{username};
+	my $password = $prompt->{password};
+	$path =~ s/\/(.*)@/\/\/$username:$password@/g;
+	print "path $path";
+	my $command = eval "qq\0$VCSCommand{push}\0";
+	my $result = $self->vcs_execute($command, $dir);
+	$main->message( $result, "$VCS Pushing $path" );
+	return;
+}
+
+=pod
+
+=head2 vcs_execute
+
+ Executes a command after changing to the appropriate dir.
+ $self->vcs_execute($command, $dir);
+ All output is captured and returned as a string.
+
+=cut
+sub vcs_execute
+{
+	my ($self, $command, $dir) = @_;
+	print "\n\nvcs_execute $command $dir\n\n";
+	my $result = capture_merged(sub{chdir($dir);system($command)});
+	print "\n\nresult = $result \n\n";
+	return $result;
+}
+
+=pod
+
+=head2 show_statusTree
+
+ Displays a Project Browser in the side pane. The Browser shows the status of the
+ files in HG and gives menu options to perform actions. 
+
+=cut
+sub show_statusTree
+{	
+	my ($self) = @_;
+	my $main = Padre->ide->wx->main;
+	my $project_root = $self->_project_root(current_filename());
+
+	return $main->error("Not a $VCS Project") if !$project_root;
+	# we only want to add a tree for projects that don't already have one. 
+	if (!exists($projects{$project_root}) )
+	{
+		$projects{$project_root} = Padre::Plugin::HG::StatusTree->new($self,$project_root);	
+	}
+}
+
+=pod
+
+=head2 show_commit_list
+
+ Displays a list of all the files that are awaiting commiting. It will include
+ not added and deleted files adding and removing them as required. 
+
+=cut
+sub show_commit_list
+{	
+	my ($self) = @_;
+	my $main = Padre->ide->wx->main;
+	 $self->{project_path} = $self->_project_root(current_filename());
+
+	return $main->error("Not a $VCS Project") if ! $self->{project_path} ;
+ 
+	Padre::Plugin::HG::ProjectCommit->showList($self);	
+
+}
+
+=pod
+
+=head2 show_project_clone
+
+ Dialog for project cloning
+
+=cut
+
+sub show_project_clone
+{	
+	my ($self) = @_;
+	my $main = Padre->ide->wx->main;
+	Padre::Plugin::HG::ProjectClone->new($self);	
+
+}
+
+=pod
+
+=head2 _project_root
+
+ $self->_project_root($filename);
+ Calculates the project root.  if the file is not in a project it 
+ will return 0 
+ otherwise it returns the fully qualified path to the project. 
+
+=cut
+
+sub _project_root
+{
+	my ($self, $filename) = @_;
+	my $dir = File::Basename::dirname($filename);
+	my $project_root = $self->vcs_execute($VCSCommand{root}, $dir);
+	#file in not in a HG project.
+	if ($project_root =~ m/^abort:/)
+	{
+			$project_root = 0;
+	}
+	chomp ($project_root);
+	return $project_root;
+}
+
+=pod
+
+=head2 _get_hg_files
+
+ $self->_get_hg_files(@hgStatus);
+  Pass the output of hg status and it will give back an array
+  each element of the array is [$status, $filename]
+
+=cut
+
+sub _get_hg_files
+{
+	my ($self, @hg_status) = @_;
+	my @files;
+	foreach my $line (@hg_status)
+	{
+		my ($filestatus, $path) = split(/\s/,$line);
+		push (@files, ([$filestatus,$path]));
+	}
+	return @files;
+}
+
+=pod
+
+=head2 current_filename
+
+ $self->current_filename();
+  returns the path of the file with the current attention 
+  in the ide.
+
+=cut
+
+
+sub current_filename {
+
+	my $main = Padre->ide->wx->main;
+	my $doc = $main->current->document;
+	
+	my $filename = $doc->filename;
+	return $main->error("No document found") if not $filename;
+        return ($filename); 
+}
+
+1;
+
+# Copyright 2008-2009 Michael Mueller.
+# LICENSE
+# This program is free software; you can redistribute it and/or
+# modify it under the same terms as Perl 5 itself.
+

blib/lib/Padre/Plugin/HG/ProjectClone.pm

+package Padre::Plugin::HG::ProjectClone;
+
+
+
+
+
+
+=pod
+
+=head1 NAME
+
+Module::Name - My author was too lazy to write an abstract
+
+=head1 SYNOPSIS
+
+  my $object = Module::Name->new(
+      foo  => 'bar',
+      flag => 1,
+  );
+  
+  $object->dummy;
+
+=head1 DESCRIPTION
+
+The author was too lazy to write a description.
+
+=head1 METHODS
+
+=cut
+
+use 5.006;
+use strict;
+use warnings;
+
+our $VERSION = '0.01';
+
+use Wx qw[:everything];
+use base 'Wx::Panel';
+
+=pod
+
+=head2 new
+
+  my $object = Module::Name->new(
+      foo => 'bar',
+  );
+
+The C<new> constructor lets you create a new B<Module::Install> object.
+
+So no big surprises there...
+
+Returns a new B<Module::Install> or dies on error.
+
+=cut
+
+sub new
+{
+    my ($class, $hg) = @_; 
+    my $self       = $class->SUPER::new( Padre::Current->main);
+    $self->{hg} = $hg;
+    $self->enter_repository();
+    if ($self->{project_url})
+    {
+        $self->choose_destination();
+        $self->clone();
+    }
+    
+    
+    return $self;
+}
+
+sub clone
+{
+    my ($self) = @_;
+   if ($self->{project_url}  and $self->{selected_dir})
+   {
+         $self->{hg}->clone_project($self->{project_url},$self->{destination_dir}); 
+   }
+        
+    
+}
+
+sub enter_repository
+{
+ my ($self) = @_;
+ my $main = Padre->ide->wx->main;
+ my $message = $main->prompt("Clone Project", "Enter the Project URL to clone", 'http://');    
+ $self->{project_url} = $message ; 
+    
+}
+
+sub choose_destination
+{
+    my ($self) = @_;
+    my $dialog = Wx::DirDialog->new($self, 'Choose a Destination Directory');
+    $dialog->ShowModal();
+    $self->{destination_dir} = $dialog->GetPath();
+}
+=pod
+
+=head2 dummy
+
+This method does something... apparently.
+
+=cut
+
+
+
+1;
+
+=pod
+
+=head1 SUPPORT
+
+No support is available
+
+=head1 AUTHOR
+
+Copyright 2008 Anonymous.
+
+=cut

blib/lib/Padre/Plugin/HG/ProjectCommit.pm

+package Padre::Plugin::HG::ProjectCommit;
+use strict;
+use Wx qw[:everything];
+use Wx::Event qw( EVT_BUTTON );
+use base 'Wx::Panel';
+
+
+my $images = Wx::ImageList->new( 16, 16 );
+        my $file_types = {
+                M => $images->Add(
+	                        Wx::ArtProvider::GetBitmap( 'wxART_TIP', 'wxART_OTHER_C', [ 16, 16 ] ),
+                ),
+                dir => $images->Add(
+                        Wx::ArtProvider::GetBitmap( 'wxART_FOLDER', 'wxART_OTHER_C', [ 16, 16 ] ),
+                ),
+                C => $images->Add(
+                        Wx::ArtProvider::GetBitmap( 'wxART_TICK_MARK', 'wxART_OTHER_C', [ 16, 16 ] ),
+                ),
+                '?' => $images->Add(
+                        Wx::ArtProvider::GetBitmap( 'wxART_MISSING_IMAGE', 'wxART_OTHER_C', [ 16, 16 ] ),
+                ),
+          };
+
+
+sub showList
+{
+	my ($class, $hg) = @_;
+	
+	my $self       = $class->SUPER::new( Padre::Current->main);
+	$self->{hg} = $hg;
+	my $frame = Wx::Frame->new( undef, -1, 'Padre Mecurial Commit');
+	my $sizer = Wx::BoxSizer->new(wxVERTICAL);
+	my $sizer2 = Wx::BoxSizer->new(wxHORIZONTAL);
+	my   $listbox1 = Wx::ListCtrl->new($frame, -1, wxDefaultPosition,
+	wxDefaultSize,wxLC_LIST, wxDefaultValidator, 'listbox_1');
+        $listbox1->AssignImageList($images,1);
+        #insert the HG data
+        chdir ($self->{hg}->{project_path});
+        my @hgdata = `hg status`;
+        my @filestatus =  $self->{hg}->_get_hg_files(@hgdata);
+        $self->{file_listbox} = $listbox1;
+	$self->_populate_list( \@filestatus );
+   
+
+	
+
+
+	my $ok_button = Wx::Button->new($frame, 
+						1,                  # id
+						"OK", # label
+						[50,50]             # position
+                                       );
+	my $cancel_button = Wx::Button->new($frame,             # parent
+                                        2,                  # id
+                                        "Cancel", # label
+                                        [50,50]             # position
+                                       );
+
+	#Handle the Button Clicks
+	
+	EVT_BUTTON( $ok_button, 
+             1,         
+             sub{$self->_get_selected_items} 
+             );
+             
+	EVT_BUTTON( $cancel_button, 
+             2,
+              sub{$frame->Destroy(); return} 
+             );
+
+    $sizer->Add($listbox1, 1, wxEXPAND, 10);
+    $sizer2->Add($ok_button, 0, wxALL, 10);
+    $sizer2->Add($cancel_button, 0, wxALL, 10);
+    $sizer->Add($sizer2, 0, wxEXPAND, 10);
+    $frame->SetSizerAndFit($sizer);
+    $frame->Show( 1 ); 
+}
+
+
+sub _get_selected_items
+{
+	my( $self, $event ) = @_; 
+
+	# Change the contents of $self->{txt}
+	print "print the button was clicked\n";
+	my $file_list;
+	#$self->{txt}->SetLabel("The button was clicked!"); 
+	my $item = -1;
+	 while ( 1 ==1 )
+	{
+        $item = $self->{file_listbox}->GetNextItem($item,
+                                     wxLIST_NEXT_ALL,
+                                     wxLIST_STATE_SELECTED);
+        if ( $item == -1 )
+        {
+            last;
+	}
+        # this item is selected - do whatever is needed with it
+        my $itemObj = $self->{file_listbox}->GetItem($item);
+        $file_list .= '"'.$itemObj->GetText().'" ';
+       
+    }
+    
+    $self->{hg}->vcs_commit($file_list, $self->{hg}->{project_path});
+}
+
+sub _populate_list
+{
+ my ($self, $filestatus) = @_;
+ 
+ if (!$filestatus) {return}
+ foreach my $file (@$filestatus)
+ {
+	my ($status, $path) = @$file;
+	$self->{file_listbox}->InsertImageStringItem(1, $path, $file_types->{$status});
+ }	
+	
+}
+
+

blib/lib/Padre/Plugin/HG/StatusTree.pm

+package Padre::Plugin::HG::StatusTree;
+=pod
+
+=head1 NAME
+
+Padre::Plugin::HG::StatusTree
+Displays the status of the current hg project in a tree format
+
+=head1 SYNOPSIS
+
+ my $object = Padre::Plugin::HG::StatusTree->new($self,$project_root);
+
+=head1 DESCRIPTION
+
+This module diplays a tree in the left panel of the ide that shows
+the mecurial status of each file.  
+Right clicking on a file will give you options to perform actions.  Right clicking the
+project root will give you project wide options. 
+
+=head1 METHODS
+
+=cut
+
+use strict;
+use warnings;
+
+our $VERSION = '0.01';
+
+use Padre::Wx;
+use Padre::Util qw/_T/;
+use Wx qw/WXK_UP WXK_DOWN wxTR_HAS_BUTTONS  wxTR_HIDE_ROOT  /;
+use base 'Wx::Panel';
+use Padre::Plugin::My;
+use File::Spec;
+use File::Basename;
+my $HG;
+my %dirTree;
+my $project_name;
+my %WxTree;
+my $ThisTree;
+
+
+  #setup the image list 
+  my $images = Wx::ImageList->new( 16, 16 );
+        my $file_types = {
+                M => $images->Add(
+	                        Wx::ArtProvider::GetBitmap( 'wxART_TIP', 'wxART_OTHER_C', [ 16, 16 ] ),
+                ),
+                dir => $images->Add(
+                        Wx::ArtProvider::GetBitmap( 'wxART_FOLDER', 'wxART_OTHER_C', [ 16, 16 ] ),
+                ),
+                C => $images->Add(
+                        Wx::ArtProvider::GetBitmap( 'wxART_TICK_MARK', 'wxART_OTHER_C', [ 16, 16 ] ),
+                ),
+                '?' => $images->Add(
+                        Wx::ArtProvider::GetBitmap( 'wxART_MISSING_IMAGE', 'wxART_OTHER_C', [ 16, 16 ] ),
+                ),
+          };
+  
+
+
+
+my @root = qw (root root);
+
+=pod
+
+=head2 new
+
+ Creates and displays the status tree
+ $tree = Padre::Plugin::HG::StatusTree->new($self, $project_root);
+
+=cut
+
+sub new
+{
+  my ($class, $hg, $root) = @_;
+  $project_name = $root;
+  $HG = $hg;
+
+  my $self       = $class->SUPER::new( Padre::Current->main->left );
+  my $box        = Wx::BoxSizer->new(Wx::wxVERTICAL);
+  my $treectrl = Wx::TreeCtrl->new( $self, -1 );
+  $treectrl->AssignImageList($images);
+
+  $self->drawTree($treectrl);
+  Wx::Event::EVT_TREE_ITEM_MENU(
+         $treectrl, $treectrl,
+         \&_on_tree_item_menu,
+  );
+  
+  #Double Click
+  Wx::Event::EVT_TREE_ITEM_ACTIVATED(
+            $treectrl, $treectrl,
+             \&_on_tree_item_activated
+  );
+  
+  $box->Add( $treectrl, 1, Wx::wxGROW );
+
+  $self->SetSizer($box);  
+  Padre::Current->main->left->show($self);
+  $ThisTree = $self;
+  return $self;
+   
+}
+
+
+=pod
+
+=head2 gettext_label
+
+        Works out what to name the tab for the project.
+
+=cut
+
+sub gettext_label {
+        
+         my @dirs = File::Spec->splitdir( $project_name );
+         my $name = File::Spec->catdir(('..',$dirs[-2], $dirs[-1]));
+         chomp $name;
+        return "(HG) ".$name;
+}
+
+=pod
+
+=head2 getWxNode
+
+        Add the nodes to the tree. 
+        getWxNode($treectrl,[name,parent,type],path);
+=cut
+
+sub getWxNode
+{
+    my ($treectrl,$node,$path) = @_;
+    
+    my $name = $node->[0];
+    my $parent = $node->[1];
+    my $type = $node->[2];
+    chomp $path;
+    chomp $name;
+    if (exists($WxTree{$path}))
+    {
+      return $WxTree{$path};
+      # $WxTree{$path} = $treectrl->AppendItem( $WxTree{$parent}, $name);
+      
+    }else
+    {
+        $WxTree{$path} = $treectrl->AppendItem( 
+                  getWxNode($treectrl, $dirTree{$parent}, $parent), 
+                            $name, 
+                            $file_types->{$type},
+                             -1,
+                             Wx::TreeItemData->new(
+                                            {   name => $name,
+                                                path  => $path,
+	                                        type => $type,
+	                                }));
+    }
+  
+  
+}
+
+=pod
+
+=head2 parseHgStatus
+
+ $self->parseHgstatus(@hgstatus);
+ parses the output of HGstatus and calls create branch for each item.
+ 
+=cut
+
+sub parseHgStatus
+{
+      my (@hgstatus) = @_;
+      
+      foreach my $line (@hgstatus)
+      {
+        my ($filestatus, $path) = split(/\s/,$line);
+        chomp $path;
+        my @dir =  split(/\//,$path);
+        createBranch(\@dir,$filestatus);
+               
+      }
+  
+  
+  
+}
+
+=pod
+
+=head2 createBranch
+
+ $self->parseHgstatus(@hgstatus);
+ parses the output of HGstatus and calls create branch for each item.
+ 
+=cut
+
+
+sub createBranch
+{
+  
+  my ($dirRef, $status) = @_;
+  my @dir = @$dirRef;
+  my $count = 0;
+  my %parentChild;
+  foreach my $item (@dir)
+  {
+    my $type;
+    my $parent = '';
+    if ($count == 0 ) 
+    { 
+      $parent = $dirTree{root}->[0]; 
+    }
+    else
+    {
+      $parent= join('/',@dir[0..$count -1 ]);
+    }
+    my $node = join('/',@dir[0..$count]);
+    if (!exists($dirTree{$node}))
+    {
+
+	     if ($count < (scalar(@dir) -1))
+	     {
+	       $type = 'dir';
+	     }
+	     else
+	     {
+	       $type = $status;
+	     }
+	     $dirTree{$node} = [$item, $parent, $type];
+    }
+    
+     $count ++;
+  }
+  #return %dirTree;
+}
+
+=pod
+
+=head2 drawTree
+
+ $self->drawTree($treectrl);
+ creates the Tree from the output of the vcs status
+ 
+=cut
+
+sub drawTree {
+  my ($self,$treectrl) = @_;
+  
+  %WxTree = ();
+  $WxTree{root} = $treectrl->AddRoot( 
+                        $project_name, 
+                        $file_types->{dir},
+                        -1,
+                        Wx::TreeItemData->new(
+                                            {   name => 'root',
+                                                path  => '',
+	                                        type => 'root',
+	                                })  ); 
+    
+ 
+  %dirTree = ();
+  $dirTree{root} = ['root', 'root', 'dir'];
+  chdir ($project_name);
+  my @hgStatus = `hg status --all`;
+  chomp (@hgStatus);
+  parseHgStatus(@hgStatus);
+  foreach my $file  (keys(%dirTree))
+  {
+       my $path = File::Spec->catdir($project_name,$file);
+       my $dir = File::Basename::dirname($path);
+       print $path."\n";
+       getWxNode($treectrl, $dirTree{$file}, $file);      
+  }
+
+
+}
+=pod
+
+=head2 _on_tree_item_activated
+
+        Performs actions when the users double clicks on a tree node
+        
+ 
+=cut
+ 
+sub _on_tree_item_activated
+{
+	
+	my ( $self, $event,$me ) = @_;
+	my $node      = $event->GetItem;
+        my $node_data = $self->GetPlData($node);
+	my $selected_path  = $node_data->{path};
+        my $selected_file = $node_data->{name};
+        my $selected_type = $node_data->{type};
+        my $full_path = File::Spec->catdir(($project_name,$selected_path));
+
+        if ($selected_type ne 'dir' and $selected_type ne 'root')
+        {
+                open_file($full_path);
+        }
+        
+
+}
+
+=pod
+
+=head2  _on_tree_item_menu
+
+        Called when a user right clicks a node in the tree
+        Shows different options depending if a file/dir or root
+        is selected. 
+        
+ 
+=cut
+sub _on_tree_item_menu {
+        my ( $self, $event,$me ) = @_;
+        my $node      = $event->GetItem;
+        my $node_data = $self->GetPlData($node);
+        my $menu          = Wx::Menu->new;
+        # Default action - same when the item is activated
+        my $selected_path  = $node_data->{path};
+        my $selected_file = $node_data->{name};
+        my $selected_type = $node_data->{type};
+        my $full_path = File::Spec->catdir(($project_name,$selected_path));
+        print "selected Path = $selected_path\n";
+        my $parent_dir = File::Basename::dirname($full_path);
+        #Commit
+        if ($selected_type eq 'root')
+        {
+               print "ParentDir". $parent_dir ."\n";
+                my $default = $menu->Append(
+                        -1,
+                       Wx::gettext( 'Refresh' ));
+                    
+                Wx::Event::EVT_MENU(
+                       $self, $default,
+                       sub { $ThisTree->refresh($self) }
+               );   
+               my $pull = $menu->Append(
+                        -1,
+                       Wx::gettext( 'Pull & Update' ));
+                    
+                Wx::Event::EVT_MENU(
+                       $self, $pull,
+                        sub {  $HG->pull_update_project($selected_file, $project_name) }
+               );    
+               my $push = $menu->Append(
+                        -1,
+                       Wx::gettext( 'Push' ));
+                    
+                Wx::Event::EVT_MENU(
+                       $self, $push,
+                       sub {  $HG->push_project($selected_file, $project_name) }
+               );   
+        }
+        
+        elsif ($selected_type ne 'dir' and $selected_type ne 'root')
+        {
+                my $default = $menu->Append(
+                        -1,
+                       Wx::gettext( 'Commit' ));
+                    
+                Wx::Event::EVT_MENU(
+                       $self, $default,
+                       sub { $HG->vcs_commit($selected_file, $parent_dir ); $ThisTree->refresh($self)}
+               );
+               
+               #Add
+               my $add = $menu->Append(
+                         -1,
+                       Wx::gettext( 'Add' ));
+                    
+                Wx::Event::EVT_MENU(
+                       $self, $add,
+                       sub { $HG->vcs_add($selected_file, $parent_dir);$ThisTree->refresh($self)}
+               );   
+               
+               #diff (just diffs current file to Tip) 
+               my $diff = $menu->Append(
+                         -1,
+                       Wx::gettext( 'Diff to Tip' ));
+                    
+                Wx::Event::EVT_MENU(
+                       $self, $diff,
+                       sub { $HG->vcs_diff($selected_file, $parent_dir);}
+               );  
+               
+               #open 
+               my $open = $menu->Append(
+                         -1,
+                       Wx::gettext( 'Open' ));
+                    
+                Wx::Event::EVT_MENU(
+                       $self, $open,
+                       sub{open_file($full_path)}
+               ); 
+               
+                 
+       }
+       
+       
+        my $x = $event->GetPoint->x;
+        my $y = $event->GetPoint->y;
+        $self->PopupMenu( $menu, $x, $y );
+        
+
+}
+
+
+=pod
+
+=head2  open_file
+
+        open_file($path)
+        opens the file in the editor. 
+        
+ 
+=cut
+sub open_file
+{ 
+     	 my ($path) = @_;
+     	        my $main = Padre->ide->wx->main;
+	        if ( my $id = $main->find_editor_of_file($path) ) {
+	                my $page = $main->notebook->GetPage($id);
+	                $page->SetFocus;
+	        } else {
+	                $main->setup_editors($path);
+	        }
+}
+
+=pod
+
+=head2  refresh
+
+        $self->refresh();
+        refreshes the tree control by deleteing all items and 
+        readding them. 
+ 
+=cut
+
+sub refresh {
+    my ($self, $treeCtrl) = @_;
+        $treeCtrl->DeleteAllItems;
+        $self->drawTree($treeCtrl); 
+    return ();
+}
+1;

blib/lib/Padre/Plugin/HG/UserPassPrompt.pm

+package Padre::Plugin::HG::UserPassPrompt;
+
+=pod
+
+=head1 NAME
+
+Padre::Plugin::HG::UserPassPrompt 
+provides the username and password prompts for Padre::Plugin::HG
+
+=head1 SYNOPSIS
+
+  my $object = Padre::Plugin::HG::UserPassPrompt->new(
+      title => 'project X',
+      default_username => 'fred',
+      default_password => 'XXXX',
+      
+  );
+  
+  $password = $object->{password};
+  $username = $object->{username};
+
+=head1 DESCRIPTION
+
+This module diplays a username and password prompt for actions like
+pushing in Padre::Plugin::HG
+
+=head1 METHODS
+
+=cut
+
+use 5.006;
+use strict;
+use warnings;
+use Wx qw[:everything];
+use Wx::Event qw( EVT_BUTTON );
+use base 'Wx::Panel';
+our $VERSION = '0.01';
+
+=pod
+
+=head2 new
+
+  my $object = adre::Plugin::HG::UserPassPrompt->new(
+      title => 'project X',
+      default_username => 'fred',
+      default_password => 'XXXX',
+      
+  );
+