Bug#683714: svn-workbench/1.6.6-2
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
Hi,
Please unblock svn-workbench package.
As I already said(*), it is needed to introduce subversion1.7 to Wheezy.
debdiff is here.
$ debdiff svn-workbench_1.6.6-1.dsc svn-workbench_1.6.6-2.dsc
diff -u svn-workbench-1.6.6/debian/changelog svn-workbench-1.6.6/debian/changelog
--- svn-workbench-1.6.6/debian/changelog
+++ svn-workbench-1.6.6/debian/changelog
@@ -1,3 +1,9 @@
+svn-workbench (1.6.6-2) unstable; urgency=low
+
+ * upload to unstable
+
+ -- Hideki Yamane <henrich@debian.org> Thu, 02 Aug 2012 13:46:42 +0900
+
svn-workbench (1.6.6-1) experimental; urgency=low
and debdiff between testing and 1.6.6-1 is below.
*) https://lists.debian.org/debian-release/2012/07/msg01524.html
------------------------------------------------------------------------------
Hi,
On Wed, 18 Jul 2012 21:22:01 +0200
Julien Cristau <jcristau@debian.org> wrote:
> > > Have you tested the reverse dependencies with the new
> > > version (seems to be svn-workbench, svn-load, , ibid,
> > > w3af-console)?
> >
> > Not yet, honestly.
> >
> > So, I should ask others to help this migration with upgraded pysvn
> > by putting it to experimental once, then post "call for check" for
> > their package. After that, I'll put pysvn to unstable and post unblock
> > request to BTS.
> >
> Sounds good to me. Thanks!
I've investigated pysvn related pacakge, Workbench needs update to new upstream
version. Workbench 1.6.6 (released 4 Mar 2012) supports Subversion 1.7.3 and
1.6.17. I want to put it to repository, so once to experimental.
Note that, its debdiff is also huge - 5000 lines. 3300 lines are just changes with
copyright year, win32/MacOSX platform depended and internationalization (hu.po),
but 1700 lines remain. If you, release manager could say "Go" for it, I'll upload
to unstable after few days.
Pros)
- We can step forward to put subversion1.7 into Wheezy
- If there's any regression for it, no other packages are affected.
(No reverse dependency)
- it released 3 month before freeze, and there's no issue after that, just I can
see is on Windows issue http://pysvn.tigris.org/issues/show_bug.cgi?id=176
- It reduces work for security/important update patch produce in the future
- "about" menu doesn't work with current unstable version, but new 1.6.6
works fine at least ;)
Cons)
- You know, it violates basic freeze rule (and its diff 1700 lines at least)
Notes)
- Workbench 1.6.6 with pysvn 1.7.6 looks good for me (with several minutes test).
Now this package is orphaned, so I'll adopt this package and keep update and
fix it (to learn python app :).
--
Regards,
Hideki Yamane henrich @ debian.or.jp/org
http://wiki.debian.org/HidekiYamane
diff -Nru svn-workbench-1.6.2/Source/make_pot_file.py svn-workbench-1.6.6/Source/make_pot_file.py
--- svn-workbench-1.6.2/Source/make_pot_file.py 2009-10-03 17:25:22.000000000 +0900
+++ svn-workbench-1.6.6/Source/make_pot_file.py 2011-11-06 23:19:48.000000000 +0900
@@ -12,7 +12,7 @@
f.write( '%s\n' % py_file )
f.close()
-rc = os.system( 'xgettext '
+cmd = ('xgettext '
'--files-from=wb_files.tmp '
'--default-domain=pysvn_workbench '
'--output=I18N/pysvn_workbench.current.pot '
@@ -25,5 +25,8 @@
'--no-wrap '
'--width=2047 '
'--add-comments=Translat '
- '--language=Python' )
+ '--language=Python')
+
+print 'Info: %s' % (cmd,)
+rc = os.system( cmd )
sys.exit( rc )
diff -Nru svn-workbench-1.6.2/Source/wb-diff.sh svn-workbench-1.6.6/Source/wb-diff.sh
--- svn-workbench-1.6.2/Source/wb-diff.sh 1970-01-01 09:00:00.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb-diff.sh 2011-11-05 22:50:19.000000000 +0900
@@ -0,0 +1,29 @@
+#!/bin/sh
+export PYSVN_WORKBENCH_STDOUT_LOG=$(tty)
+
+SOURCEDIR=$( dirname $0 )
+
+if [ "$PYTHONPATH" = "" ]
+then
+ export PYTHONPATH=${SOURCEDIR}
+else
+ export PYTHONPATH=${SOURCEDIR}:$PYTHONPATH
+fi
+
+PYTHON=${PYTHON:-python}
+BASENAME=$( basename ${PYTHON} )
+SUFFIX=${X#python*}
+DIRNAME=$( dirname ${PYTHON} )
+
+if [ "${DIRNAME}" != "" ]
+then
+ DIRNAME=${DIRNAME}/
+fi
+PYTHONW=${DIRNAME}pythonw${SUFFIX}
+
+if [ -e ${PYTHONW} ]
+then
+ ${PYTHONW} ${SOURCEDIR}/wb_diff_main.py $*
+else
+ ${PYTHON} ${SOURCEDIR}/wb_diff_main.py $*
+fi
diff -Nru svn-workbench-1.6.2/Source/wb.sh svn-workbench-1.6.6/Source/wb.sh
--- svn-workbench-1.6.2/Source/wb.sh 2006-10-25 06:51:49.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb.sh 2011-11-27 23:20:58.000000000 +0900
@@ -9,7 +9,7 @@
PYTHON=${PYTHON:-python}
BASENAME=$( basename ${PYTHON} )
-SUFFIX=${X#python*}
+SUFFIX=${BASENAME#python*}
DIRNAME=$( dirname ${PYTHON} )
if [ "${DIRNAME}" != "" ]
@@ -18,9 +18,14 @@
fi
PYTHONW=${DIRNAME}pythonw${SUFFIX}
+if [ -e /System/Library/CoreServices/SystemVersion.plist ]
+then
+ ARCH_CMD="arch -i386"
+fi
+
if [ -e ${PYTHONW} ]
then
- ${PYTHONW} wb_main.py $*
+ ${ARCH_CMD} ${PYTHONW} wb_main.py $*
else
- ${PYTHON} wb_main.py $*
+ ${ARCH_CMD} ${PYTHON} wb_main.py $*
fi
diff -Nru svn-workbench-1.6.2/Source/wb_app.py svn-workbench-1.6.6/Source/wb_app.py
--- svn-workbench-1.6.2/Source/wb_app.py 2012-07-25 06:31:59.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_app.py 2012-07-25 06:31:59.000000000 +0900
@@ -663,6 +663,8 @@
def emit( self, record ):
try:
msg = self.format(record) + '\n'
+ if type( msg ) == types.UnicodeType:
+ msg = msg.encode( 'utf-8' )
sys.__stdout__.write( msg )
diff -Nru svn-workbench-1.6.2/Source/wb_dialogs.py svn-workbench-1.6.6/Source/wb_dialogs.py
--- svn-workbench-1.6.2/Source/wb_dialogs.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_dialogs.py 2010-12-31 02:50:13.000000000 +0900
@@ -14,6 +14,7 @@
import os
import pysvn
import wb_subversion_utils
+import wb_platform_specific
id_log_message_text = wx.NewId()
id_last_log_message = wx.NewId()
@@ -123,7 +124,7 @@
self.last_log_message_text = None
if self.message_filename is not None:
try:
- self.last_log_message_text = file( self.message_filename, 'r' ).read().decode('utf-8').strip()
+ self.last_log_message_text = wb_platform_specific.uOpen( self.message_filename, 'r' ).read().decode('utf-8').strip()
except EnvironmentError:
self.last_log_message_text = ''
@@ -150,7 +151,7 @@
def OnOk( self, event ):
self.EndModal( wx.ID_OK )
try:
- file( self.message_filename, 'w' ).write( self.getLogMessage().encode('utf-8') )
+ wb_platform_specific.uOpen( self.message_filename, 'w' ).write( self.getLogMessage().encode('utf-8') )
except (IOError,OSError):
pass
diff -Nru svn-workbench-1.6.2/Source/wb_frame.py svn-workbench-1.6.6/Source/wb_frame.py
--- svn-workbench-1.6.2/Source/wb_frame.py 2009-10-11 23:04:16.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_frame.py 2011-11-27 22:43:10.000000000 +0900
@@ -27,6 +27,7 @@
import wb_platform_specific
import wb_bookmarks_dialogs
import wb_toolbars
+import wb_subversion_utils
import wb_config
@@ -118,6 +119,9 @@
self.menu_actions.Append( wb_ids.id_SP_Revert, T_('Revert...'), T_('Revert') )
self.menu_actions.AppendSeparator()
self.menu_actions.Append( wb_ids.id_SP_Cleanup, T_('Clean up'), T_('Clean up working copy') )
+ if wb_subversion_utils.version_info.has_upgrade:
+ self.menu_actions.AppendSeparator()
+ self.menu_actions.Append( wb_ids.id_SP_Upgrade, T_('Upgrade'), T_('Upgrade working copy') )
self.menu_actions.AppendSeparator()
self.menu_actions.Append( wb_ids.id_SP_CreateTag, T_('Create Tag...'), T_('Create Tag') )
self.menu_actions.Append( wb_ids.id_SP_CreateBranch, T_('Create Branch...'), T_('Create Branch') )
@@ -345,6 +349,10 @@
wx.EVT_MENU( self, wb_ids.id_SP_UpdateTo, self.app.eventWrapper( self.OnSpUpdateTo ) )
wx.EVT_UPDATE_UI( self, wb_ids.id_SP_UpdateTo, self.app.eventWrapper( self.OnUpdateUiSpUpdateTo ) )
+ if wb_subversion_utils.version_info.has_upgrade:
+ wx.EVT_MENU( self, wb_ids.id_SP_Upgrade, self.app.eventWrapper( self.OnSpUpgrade ) )
+ wx.EVT_UPDATE_UI( self, wb_ids.id_SP_Upgrade, self.app.eventWrapper( self.OnUpdateUiSpUpgrade ) )
+
wx.EVT_MENU( self, wb_ids.id_SP_Report_Updates, self.app.eventWrapper( self.OnSpReportUpdates ) )
wx.EVT_UPDATE_UI( self, wb_ids.id_SP_Report_Updates, self.app.eventWrapper( self.OnUpdateUiSpReportUpdates ) )
wx.EVT_MENU( self, wb_ids.id_SP_Report_LocksWc, self.app.eventWrapper( self.OnSpReportLocksWc ) )
@@ -462,13 +470,17 @@
ver_str = ('%d.%d.%d-%d\n' %
(wb_version.major, wb_version.minor,
wb_version.patch, wb_version.build))
- str_message = ((T_('Work Bench version: %s') % ver_str) +
- '\n' + wb_source_control_providers.getProviderAboutStrings() +
- '\nwxPython %d.%d.%d.%d %s' % wx.VERSION +
- '\nPython %d.%d.%d %s %d\n' % sys.version_info +
- T_('\nCopyright Barry Scott (c) 2003-2009. All rights reserved')
- )
- wx.LogMessage( str_message )
+ str_message_parts = [T_('Work Bench version: %s') % ver_str
+ ,wb_source_control_providers.getProviderAboutStrings()
+ ,'wxPython %d.%d.%d.%d %s' % wx.VERSION
+ ,'Python %d.%d.%d %s %d\n' % (sys.version_info[0]
+ ,sys.version_info[1]
+ ,sys.version_info[2]
+ ,sys.version_info[3]
+ ,sys.version_info[4])
+
+ ,T_('\nCopyright Barry Scott (c) 2003-2011. All rights reserved')]
+ wx.LogMessage( '\n'.join( str_message_parts ) )
def OnCmdPreferences( self, event ):
pref_dialog = wb_preferences_dialog.PreferencesDialog( self, self.app )
@@ -770,7 +782,8 @@
def OnUpdateUiSpAnnotate( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.versioned and (not self.ui_state_focus.is_folder) )
@@ -780,7 +793,8 @@
def OnUpdateUiSpCheckin( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.need_checkin
@@ -872,7 +886,8 @@
def OnUpdateUiSpDiffWorkHead( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
if self.ui_state_list is self.ui_state_focus:
@@ -888,14 +903,16 @@
def OnUpdateUiSpDiffWorkBranchOriginBase( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_list.versioned and not self.ui_state_list.new_versioned )
def OnUpdateUiSpDiffWorkBranchOriginHead( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_list.versioned and not self.ui_state_list.new_versioned )
@@ -907,7 +924,8 @@
self.getUpdateUiState()
if wb_config.debug_selection_update: print 'ZF: OnUpdateUiSpHistory versioned %r handler %r' % (
self.ui_state_focus.versioned, self.event_handler)
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.versioned and not self.ui_state_focus.new_versioned )
@@ -917,7 +935,8 @@
def OnUpdateUiSpInfo( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.versioned )
@@ -949,7 +968,8 @@
def OnUpdateUiSpProperties( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.versioned )
@@ -1001,7 +1021,8 @@
def OnUpdateUiSpRevert( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.revertable )
@@ -1019,7 +1040,8 @@
def OnUpdateUiSpUpdate( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
elif self.ui_state_focus.is_project_parent:
@@ -1041,6 +1063,16 @@
def OnUpdateUiSpUpdateTo( self, event ):
self.OnUpdateUiSpUpdate(event)
+ def OnSpUpgrade( self, event ):
+ self.clearUpdateUiState()
+ return self.tree_panel.OnSpUpgrade()
+
+ def OnUpdateUiSpUpgrade( self, event ):
+ self.getUpdateUiState()
+
+ # this is a tree only command
+ event.Enable( self.list_panel.list_handler.project_info.need_upgrade )
+
#----------------------------------------
def Sp_Dispatch( self, sp_func_name ):
self.clearUpdateUiState()
@@ -1102,7 +1134,7 @@
self.text_ctrl = StyledLogCtrl( self.app, self )
# Redirect the console IO to this panel
- sys.stdin = file( wb_platform_specific.getNullDevice(), 'r' )
+ sys.stdin = wb_platform_specific.uOpen( wb_platform_specific.getNullDevice(), 'r' )
if self.app.isStdIoRedirect():
sys.stdout = self
sys.stderr = self
diff -Nru svn-workbench-1.6.2/Source/wb_ids.py svn-workbench-1.6.6/Source/wb_ids.py
--- svn-workbench-1.6.2/Source/wb_ids.py 2009-03-08 03:25:46.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_ids.py 2011-11-21 01:52:09.000000000 +0900
@@ -75,6 +75,7 @@
id_SP_Unlock = wx.NewId()
id_SP_Update = wx.NewId()
id_SP_UpdateTo = wx.NewId()
+id_SP_Upgrade = wx.NewId()
id_SP_CreateTag = wx.NewId()
id_SP_CreateBranch = wx.NewId()
diff -Nru svn-workbench-1.6.2/Source/wb_list_panel_common.py svn-workbench-1.6.6/Source/wb_list_panel_common.py
--- svn-workbench-1.6.2/Source/wb_list_panel_common.py 2009-10-12 01:25:29.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_list_panel_common.py 2011-11-21 01:52:09.000000000 +0900
@@ -21,6 +21,7 @@
import wb_ids
import wb_shell_commands
import wb_dialogs
+import wb_platform_specific
class ListSortData:
def __init__( self, order=1, field=0 ):
@@ -54,6 +55,7 @@
self.unversioned = False
self.need_checkin = False
self.need_checkout = False
+ self.need_upgrade = False
self.conflict = False
self.file_exists = False
self.is_folder = False
@@ -328,7 +330,7 @@
if self.list_handler.mayOpen( row ):
self.app.selectTreeNode( filename )
- elif not os.path.isdir( filename ):
+ elif not wb_platform_specific.uPathIsdir( filename ):
wb_shell_commands.EditFile( self.app, self.list_handler.getProjectInfo(), filename )
def isTreeHandler( self ):
diff -Nru svn-workbench-1.6.2/Source/wb_main.py svn-workbench-1.6.6/Source/wb_main.py
--- svn-workbench-1.6.2/Source/wb_main.py 2009-10-04 20:50:50.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_main.py 2012-03-04 05:14:15.000000000 +0900
@@ -27,7 +27,7 @@
or (sys.platform == 'darwin' and '--noredirect' not in sys.argv) ):
stdout_filename = os.environ.get( 'PYSVN_WORKBENCH_STDOUT_LOG', '/tmp/workbench.tmp' )
-elif sys.platform.startswith( 'win' ):
+elif sys.platform.startswith( 'win' ) and '--noredirect' not in sys.argv:
stdout_filename = os.path.join( os.environ[ 'TEMP' ], 'workbench.tmp' )
if stdout_filename is not None:
diff -Nru svn-workbench-1.6.2/Source/wb_platform_unix_specific.py svn-workbench-1.6.6/Source/wb_platform_unix_specific.py
--- svn-workbench-1.6.2/Source/wb_platform_unix_specific.py 2007-12-01 16:13:47.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_platform_unix_specific.py 2011-01-05 20:46:33.000000000 +0900
@@ -13,6 +13,7 @@
'''
import os
+import types
def getApplicationDir():
return os.path.join( os.environ['HOME'], '.WorkBench' )
@@ -22,3 +23,48 @@
def getNullDevice():
return '/dev/null'
+
+def uPathExists( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.path.exists( path )
+
+def uPathIsdir( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.path.isdir( path )
+
+def uAccess( path, mode ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.access( path, mode )
+
+def uRemove( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.remove( path )
+
+def uRename( path1, path2 ):
+ if type(path1) == types.UnicodeType:
+ path1 = path1.encode( 'utf-8' )
+
+ if type(path2) == types.UnicodeType:
+ path2 = path2.encode( 'utf-8' )
+
+ return os.rename( path1, path2 )
+
+def uOpen( path, mode ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return open( path, mode )
+
+def uChdir( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.chdir( path )
diff -Nru svn-workbench-1.6.2/Source/wb_preferences.py svn-workbench-1.6.6/Source/wb_preferences.py
--- svn-workbench-1.6.2/Source/wb_preferences.py 2009-10-11 23:04:16.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_preferences.py 2010-12-31 02:50:13.000000000 +0900
@@ -105,14 +105,14 @@
new_name = self.pref_filename + '.tmp'
old_name = self.pref_filename + '.old'
- f = file( new_name, 'w' )
+ f = wb_platform_specific.uOpen( new_name, 'w' )
self.pref_data.write( f )
f.close()
- if os.path.exists( self.pref_filename ):
- if os.path.exists( old_name ): # os.rename does not delete automatically on Windows.
- os.remove( old_name )
- os.rename( self.pref_filename, old_name )
- os.rename( new_name, self.pref_filename )
+ if wb_platform_specific.uPathExists( self.pref_filename ):
+ if wb_platform_specific.uPathExists( old_name ): # os.rename does not delete automatically on Windows.
+ wb_platform_specific.uRemove( old_name )
+ wb_platform_specific.uRename( self.pref_filename, old_name )
+ wb_platform_specific.uRename( new_name, self.pref_filename )
self.app.log.info( T_('Wrote preferences to %s') % self.pref_filename )
@@ -123,7 +123,7 @@
def __init__( self, log, xml_pref_filename, ini_pref_filename ):
self.all_sections = {}
- if os.path.exists( xml_pref_filename ):
+ if wb_platform_specific.uPathExists( xml_pref_filename ):
log.info( T_('Reading preferences from %s') % xml_pref_filename )
self.__readXml( xml_pref_filename )
else:
@@ -132,7 +132,7 @@
def __readXml( self, xml_pref_filename ):
try:
- f = file( xml_pref_filename, 'r' )
+ f = wb_platform_specific.uOpen( xml_pref_filename, 'r' )
text = f.read()
f.close()
diff -Nru svn-workbench-1.6.2/Source/wb_preferences_dialog.py svn-workbench-1.6.6/Source/wb_preferences_dialog.py
--- svn-workbench-1.6.2/Source/wb_preferences_dialog.py 2009-10-03 19:22:02.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_preferences_dialog.py 2010-12-31 02:50:13.000000000 +0900
@@ -18,6 +18,7 @@
import wb_dialogs
import wb_tree_panel
import wb_toolbars
+import wb_platform_specific
class PreferencesDialog( wx.Dialog ):
def __init__( self, parent, app ):
@@ -168,14 +169,14 @@
# otherwise it must exist
valid = False
if wx.Platform == '__WXMAC__':
- valid = (os.access( self.text_ctrl_editor.GetValue(), os.X_OK )
- or not os.path.isdir( self.text_ctrl_editor.GetValue() ) )
+ valid = (wb_platform_specific.uAccess( self.text_ctrl_editor.GetValue(), os.X_OK )
+ or not wb_platform_specific.uPathIsdir( self.text_ctrl_editor.GetValue() ) )
elif wx.Platform == '__WXMSW__':
- valid = (os.path.exists( self.text_ctrl_editor.GetValue() )
- or not os.path.isdir( self.text_ctrl_editor.GetValue() ) )
+ valid = (wb_platform_specific.uPathExists( self.text_ctrl_editor.GetValue() )
+ or not wb_platform_specific.uPathIsdir( self.text_ctrl_editor.GetValue() ) )
else:
- valid = (os.access( self.text_ctrl_editor.GetValue(), os.X_OK )
- or not os.path.isdir( self.text_ctrl_editor.GetValue() ) )
+ valid = (wb_platform_specific.uAccess( self.text_ctrl_editor.GetValue(), os.X_OK )
+ or not wb_platform_specific.uPathIsdir( self.text_ctrl_editor.GetValue() ) )
if not valid:
wx.MessageBox(
diff -Nru svn-workbench-1.6.2/Source/wb_project_dialogs.py svn-workbench-1.6.6/Source/wb_project_dialogs.py
--- svn-workbench-1.6.2/Source/wb_project_dialogs.py 2009-09-20 19:51:33.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_project_dialogs.py 2010-12-31 02:50:13.000000000 +0900
@@ -12,7 +12,10 @@
'''
import wx
import wx.wizard
+
import wb_source_control_providers
+import wb_platform_specific
+
import pysvn
import os
@@ -143,7 +146,7 @@
wc_path = os.path.expanduser( self.wc_path_ctrl.GetValue().strip() )
url = None
- if os.path.exists( wc_path ):
+ if wb_platform_specific.uPathExists( wc_path ):
try:
info = self.client.info( wc_path )
url = info.url
@@ -508,14 +511,14 @@
state.wc_path = os.path.abspath( os.path.expanduser( self.wc_path_ctrl.GetValue().strip() ) )
state.url_path = self.url_ctrl.GetLabel().strip()
- if not os.path.exists( state.wc_path ):
+ if not wb_platform_specific.uPathExists( state.wc_path ):
wx.MessageBox( T_('Path %s\n'
'Does not exist\n'
'Choose an existing subversion working copy directory')
% state.wc_path, style=wx.OK|wx.ICON_ERROR );
return False
- if not os.path.isdir( state.wc_path ):
+ if not wb_platform_specific.uPathIsdir( state.wc_path ):
wx.MessageBox( T_('Path %s\n'
'Is not a directory\n'
'Choose an existing subversion working copy directory')
@@ -557,7 +560,7 @@
wc_path = os.path.expanduser( wc_path )
url = None
- if os.path.exists( wc_path ):
+ if wb_platform_specific.uPathExists( wc_path ):
try:
info = self.parent.client_pi.client_fg.info( wc_path )
url = info.url
@@ -665,8 +668,8 @@
style=wx.OK|wx.ICON_ERROR );
return False
- if os.path.exists( state.wc_path ):
- if not os.path.isdir( state.wc_path ):
+ if wb_platform_specific.uPathExists( state.wc_path ):
+ if not wb_platform_specific.uPathIsdir( state.wc_path ):
wx.MessageBox( T_('Path %s\n'
'Is not a directory\n'
'Choose a directory that is empty and not in use by subversion')
diff -Nru svn-workbench-1.6.2/Source/wb_read_file.py svn-workbench-1.6.6/Source/wb_read_file.py
--- svn-workbench-1.6.2/Source/wb_read_file.py 2007-04-07 17:51:00.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_read_file.py 2010-12-31 02:50:13.000000000 +0900
@@ -13,8 +13,10 @@
import locale
import codecs
+import wb_platform_specific
+
def readFileContentsAsUnicode( filename ):
- f = file( filename, 'r' )
+ f = wb_platform_specific.uOpen( filename, 'r' )
contents = f.read()
f.close()
@@ -37,15 +39,22 @@
if( len(contents) > len(codecs.BOM_UTF8)
and contents[0:len(codecs.BOM_UTF8)] == codecs.BOM_UTF8 ):
encoding = 'utf-8'
+
elif( len(contents) > len(codecs.BOM_UTF16_LE)
and contents[0:len(codecs.BOM_UTF16_LE)] in [codecs.BOM_UTF16_LE, codecs.BOM_UTF16_BE]):
encoding = 'utf-16'
+
elif( len(contents) > len(codecs.BOM_UTF32_LE)
and contents[0:len(codecs.BOM_UTF32_LE)] in [codecs.BOM_UTF32_LE, codecs.BOM_UTF32_BE]):
encoding = 'utf-32'
+
else:
encoding = locale.getdefaultlocale()[1]
+ # Mac says mac-roman when utf-8 is what is required
+ if encoding == 'mac-roman':
+ encoding = 'utf-8'
+
if encoding is None:
encoding = 'iso8859-1'
diff -Nru svn-workbench-1.6.2/Source/wb_shell_unix_commands.py svn-workbench-1.6.6/Source/wb_shell_unix_commands.py
--- svn-workbench-1.6.2/Source/wb_shell_unix_commands.py 2009-10-11 22:00:29.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_shell_unix_commands.py 2011-01-05 03:50:40.000000000 +0900
@@ -13,11 +13,14 @@
import os
import signal
import subprocess
+import types
+
+import wb_platform_specific
__sigchld_handler_installed = False
gui_terminals = ['gnome-terminal', 'konsole', 'xterm', 'xfce4-terminal']
-gui_file_browsers = ['nautilus', 'konqueror', 'thunar']
+gui_file_browsers = ['nautilus', 'konqueror', 'thunar', 'dolphin']
def getTerminalProgramList():
return gui_terminals[:]
@@ -41,20 +44,20 @@
cur_dir = os.getcwd()
try:
- os.chdir( project_info.getWorkingDir() )
+ wb_platform_specific.uChdir( project_info.getWorkingDir() )
__run_command( app, editor_image, editor_args )
finally:
- os.chdir( cur_dir )
+ wb_platform_specific.uChdir( cur_dir )
def ShellOpen( app, project_info, filename ):
app.log.info( T_('Open %s') % filename )
cur_dir = os.getcwd()
try:
- os.chdir( project_info.getWorkingDir() )
- os.system( "gnome-open '%s'" % filename )
+ wb_platform_specific.uChdir( project_info.getWorkingDir() )
+ os.system( "xdg-open '%s'" % filename )
finally:
- os.chdir( cur_dir )
+ wb_platform_specific.uChdir( cur_dir )
def GuiDiffFiles( app, options ):
cmd_line = "'%s' %s &" % (app.prefs.getDiffTool().gui_diff_tool, options)
@@ -79,7 +82,7 @@
title.append( pi.project_name )
pi = pi.parent
- f = open( shell_script_filename, 'w' )
+ f = wb_platform_specific.uOpen( shell_script_filename, 'w' )
f.write( 'export WB_WD="%s"\n' % working_dir )
f.write( 'cd "%s"\n' % working_dir )
@@ -105,10 +108,12 @@
if terminal_program == 'konsole':
__run_command( app, terminal_program,
- ['-T', ' '.join( title ), '--workdir', working_dir, '-e', shell_script_filename] )
+ ['--title', ' '.join( title ), '--workdir', working_dir, '-e', '/bin/sh', shell_script_filename] )
+
elif terminal_program in ('gnome-terminal', 'xfce4-terminal'):
__run_command( app, terminal_program,
['--title', ' '.join( title ), '--working-directory', working_dir, '-x', shell_script_filename] )
+
elif terminal_program == 'xterm':
__run_command( app, terminal_program,
['-T', ' '.join( title ), '-e', shell_script_filename] )
@@ -130,9 +135,10 @@
if not found:
return
- if browser_program == 'konsole':
+ if browser_program == 'konqueror':
__run_command( app, browser_program, ['--mimetype', 'inode/directory', project_info.getWorkingDir()] )
- elif browser_program in ('nautilus', 'thunar'):
+
+ elif browser_program in ('nautilus', 'thunar', 'dolphin'):
__run_command( app, browser_program, [project_info.getWorkingDir()] )
def __run_command( app, cmd, args ):
@@ -158,8 +164,17 @@
signal.signal( signal.SIGCHLD, __sigchld_handler )
__sigchld_handler_installed = True
+ cmd = asUtf8( cmd )
+ args = [asUtf8( arg ) for arg in args]
+
os.spawnvpe( os.P_NOWAIT, cmd, [cmd]+args, env )
+def asUtf8( s ):
+ if type( s ) == types.UnicodeType:
+ return s.encode( 'utf-8' )
+ else:
+ return s
+
def __sigchld_handler( signum, frame ):
try:
while True:
diff -Nru svn-workbench-1.6.2/Source/wb_show_diff_frame.py svn-workbench-1.6.6/Source/wb_show_diff_frame.py
--- svn-workbench-1.6.2/Source/wb_show_diff_frame.py 2009-10-12 01:36:44.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_show_diff_frame.py 2010-12-31 02:50:13.000000000 +0900
@@ -23,6 +23,10 @@
# fix up line endings CRLF to LF and CR to LF
text = raw_text.replace( '\r\n', '\n' ).replace( '\r', '\n' )
+ try:
+ text = text.decode( 'utf-8' )
+ except ValueError:
+ pass
diff_prefs = app.prefs.getDiffWindow()
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_checkin.py svn-workbench-1.6.6/Source/wb_subversion_checkin.py
--- svn-workbench-1.6.2/Source/wb_subversion_checkin.py 2009-10-03 17:21:08.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_checkin.py 2011-11-21 01:52:09.000000000 +0900
@@ -30,7 +30,7 @@
class CheckinFrame(wx.Frame):
def __init__( self, app, project_info, all_files ):
- wx.Frame.__init__( self, None, -1, T_('Check in for %s') % project_info.wc_path, size=(700,500) )
+ wx.Frame.__init__( self, None, -1, T_('Check in for %s') % project_info.wc_path, size=(1000,500) )
self.app = app
@@ -110,7 +110,7 @@
self.last_log_message_text = None
try:
- f = file( self.message_filename, 'r' )
+ f = wb_platform_specific.uOpen( self.message_filename, 'r' )
self.last_log_message_text = f.read().decode('utf-8').strip()
f.close()
except EnvironmentError:
@@ -232,7 +232,7 @@
message = self.log_message_ctrl.GetValue().encode('utf-8')
try:
- f = file( self.message_filename, 'w' )
+ f = wb_platform_specific.uOpen( self.message_filename, 'w' )
f.write( message )
f.close()
except EnvironmentError:
@@ -329,7 +329,10 @@
self.all_excluded_files = {}
self.__parent = parent
-
+
+ def overrideColumnInfo( self ):
+ self.column_info.setColumnWidth( 'Name', self.column_info.getColumnWidth( 'Name' ) + 20 )
+
def getContextMenu( self ):
menu_template = [
('', wb_ids.id_File_Edit, T_('Edit') )
@@ -398,7 +401,7 @@
# Set the project files to be this new list
self.project_info.all_files = all_files
-
+
class CheckinProjectInfo:
def __init__( self, project_info, all_files ):
self.all_files = all_files
@@ -407,6 +410,7 @@
self.url = project_info.url
self.wc_path = project_info.wc_path
self.need_checkout = False
+ self.need_upgrade = False
self.client_fg = project_info.client_fg
self.client_bg = project_info.client_bg
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_diff.py svn-workbench-1.6.6/Source/wb_subversion_diff.py
--- svn-workbench-1.6.2/Source/wb_subversion_diff.py 2009-04-13 19:35:09.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_diff.py 2010-12-31 02:50:13.000000000 +0900
@@ -20,6 +20,7 @@
import wb_show_diff_frame
import wb_read_file
import wb_diff_frame
+import wb_platform_specific
debug_diff = False
@@ -93,18 +94,18 @@
for path_info in (old_path_info, new_path_info):
if( path_info.revision is None
or path_info.revision.kind == pysvn.opt_revision_kind.working ):
- if not os.path.exists( path_info.path ):
+ if not wb_platform_specific.uPathExists( path_info.path ):
app.log_error( '"%s" does not exist.' % path_info.path )
fd, path_info.path = tempfile.mkstemp( suffix=os.path.basename( path_info.path ) )
os.close( fd )
# keep track of the temp file
app.all_temp_files.append( path_info.path )
- if os.path.isdir( path_info.path ):
+ if wb_platform_specific.uPathIsdir( path_info.path ):
app.log_error( '"%s" refers to a directory.' % path_info.path )
return
- if not os.access( path_info.path, os.R_OK ):
+ if not wb_platform_specific.uAccess( path_info.path, os.R_OK ):
app.log_error( '"%s" cannot be read.' % path_info.path )
return
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_history.py svn-workbench-1.6.6/Source/wb_subversion_history.py
--- svn-workbench-1.6.2/Source/wb_subversion_history.py 2009-09-20 19:51:33.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_history.py 2011-01-05 03:50:40.000000000 +0900
@@ -17,6 +17,7 @@
import os
import time
import types
+import urllib
import pysvn
@@ -53,7 +54,10 @@
self.author = author
self.date = date
self.label = label
- self.message = message
+ try:
+ self.message = message.decode( 'utf-8' )
+ except ValueError:
+ self.message = message
self.changed_paths = changed_paths
self.changed_paths.sort( self.by_changed_path )
@@ -70,14 +74,22 @@
if filter_field == T_('Author'):
return filter_text.lower() in self.author.lower()
+
elif filter_field == T_('Comment'):
return filter_text.lower() in self.message.lower()
+
elif filter_field == T_('Path'):
for changed_path in self.changed_paths:
- if filter_text.lower() in changed_path.path.lower():
+ try:
+ c_p_p = changed_path.path.decode('utf-8')
+ except ValueError:
+ c_p_p = changed_path.path
+
+ if filter_text.lower() in c_p_p.lower():
return True
return False
+
else:
assert( False )
return False
@@ -101,7 +113,8 @@
if len( all_log_entries ) == 0:
return info.URL, all_history_entries
- repos_path = info.URL[len(info.repos_root_URL):]
+ repos_path = urllib.unquote( info.URL[len(info.repos_root_URL):].encode( 'utf-8' ) )
+
for log in all_log_entries:
# author is optional
if 'author' not in log:
@@ -110,7 +123,7 @@
all_history_entries.append(
LogEntry(
log.revision.number,
- info.repos_root_URL+repos_path,
+ info.URL,
log.author,
log.date,
'',
@@ -119,7 +132,11 @@
for changed_path in log.changed_paths:
if changed_path.action in ['A','M']:
- if repos_path == changed_path.path:
+ if changed_path.path is not None:
+ c_p_p = changed_path.path.decode( 'utf-8' )
+ else:
+ c_p_p = None
+ if repos_path == c_p_p:
if changed_path.copyfrom_path is not None:
repos_path = changed_path.copyfrom_path
break
@@ -484,7 +501,7 @@
# Arrange the panels with the splitter windows
self.splitter.AppendWindow( self.panel_history, 250 )
self.splitter.AppendWindow( self.panel_comment, 100 )
- self.splitter.AppendWindow( self.panel_changed_paths, 150 )
+ self.splitter.AppendWindow( self.panel_changed_paths, 200 )
self.selected_revisions = {}
@@ -508,7 +525,7 @@
char_width = 9
self.list_ctrl.SetColumnWidth( self.col_revision, 7*char_width )
self.list_ctrl.SetColumnWidth( self.col_author, 14*char_width )
- self.list_ctrl.SetColumnWidth( self.col_date, 15*char_width )
+ self.list_ctrl.SetColumnWidth( self.col_date, 18*char_width )
self.list_ctrl.SetColumnWidth( self.col_label, 12*char_width )
self.list_ctrl.SetColumnWidth( self.col_message, 40*char_width )
@@ -525,9 +542,9 @@
char_width = 9
self.paths_ctrl.SetColumnWidth( self.col_action, 7*char_width )
- self.paths_ctrl.SetColumnWidth( self.col_path, 40*char_width )
+ self.paths_ctrl.SetColumnWidth( self.col_path, 60*char_width )
self.paths_ctrl.SetColumnWidth( self.col_copyfrom_revision, 6*char_width )
- self.paths_ctrl.SetColumnWidth( self.col_copyfrom_path, 40*char_width )
+ self.paths_ctrl.SetColumnWidth( self.col_copyfrom_path, 60*char_width )
self.initButtons( self.v_sizer_history )
@@ -686,7 +703,7 @@
self.paths_ctrl.InsertStringItem( index,
action_map.get( info.action, info.action ) )
self.paths_ctrl.SetStringItem( index, self.col_path,
- info.path )
+ info.path.decode( 'utf-8' ) )
if info.copyfrom_path is not None:
self.paths_ctrl.SetStringItem( index, self.col_copyfrom_revision,
str( info.copyfrom_revision.number ) )
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_list_handler.py svn-workbench-1.6.6/Source/wb_subversion_list_handler.py
--- svn-workbench-1.6.2/Source/wb_subversion_list_handler.py 2009-09-20 19:51:33.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_list_handler.py 2011-11-21 01:52:09.000000000 +0900
@@ -25,6 +25,7 @@
import wb_clipboard
import wb_diff_frame
import wb_dialogs
+import wb_platform_specific
class SubversionListHandler(wb_subversion_list_handler_common.SubversionListHandlerCommon):
def __init__( self, app, list_panel, project_info ):
@@ -34,9 +35,14 @@
return '<SubversionListHandler %r>' % self.project_info
def getContextMenu( self ):
- if self.project_info.need_checkout:
+ if self.project_info.need_upgrade:
+ menu_template = \
+ [('', wb_ids.id_SP_Upgrade, T_('Upgrade') )]
+
+ elif self.project_info.need_checkout:
menu_template = \
[('', wb_ids.id_SP_Checkout, T_('Checkout') )]
+
else:
menu_template = \
[('', wb_ids.id_File_Edit, T_('Edit') )]
@@ -117,7 +123,7 @@
all_status = []
try:
for filename in paste_data.getAllFilenames():
- if os.path.isdir( filename ):
+ if wb_platform_specific.uPathIsdir( filename ):
dir_status = self.project_info.client_bg.status( os.path.dirname( filename ), recurse=False )
all_status.extend( [s for s in dir_status if s.path == filename] )
else:
@@ -149,7 +155,7 @@
else:
rename_title = T_('Rename')
- while os.path.exists( new_filename ):
+ while wb_platform_specific.uPathExists( new_filename ):
new_name, force = self.app.renameFile( rename_title, os.path.basename( old_filename ), None )
if new_name is None:
return
@@ -168,7 +174,7 @@
try:
if paste_data.isCopy():
- if os.path.isdir( old_filename ):
+ if wb_platform_specific.uPathIsdir( old_filename ):
if is_controlled:
self.project_info.client_bg.copy( old_filename, new_filename )
else:
@@ -179,11 +185,11 @@
ok = True
else:
- if os.path.isdir( old_filename ):
+ if wb_platform_specific.uPathIsdir( old_filename ):
if is_controlled:
self.project_info.client_bg.move( old_filename, new_filename, force=force )
else:
- os.rename( old_filename, new_filename )
+ wb_platform_specific.uRename( old_filename, new_filename )
else:
text_status = self.getTextStatus( status )
prop_status = self.getPropStatus( status )
@@ -249,7 +255,7 @@
if is_controlled:
if text_status == pysvn.wc_status_kind.added:
self.project_info.client_fg.revert( filename )
- os.remove( filename )
+ wb_platform_specific.uRemove( filename )
elif( text_status == pysvn.wc_status_kind.modified
or prop_status == pysvn.wc_status_kind.modified ):
@@ -260,7 +266,7 @@
self.project_info.client_fg.remove( filename )
else:
- os.remove( filename )
+ wb_platform_specific.uRemove( filename )
except pysvn.ClientError, e:
self.app.log_client_error( e )
@@ -301,7 +307,7 @@
def __copyFile( self, old_filename, new_full_filename, is_controlled, text_status, prop_status ):
if not is_controlled:
raise EnvironmentError( 'TBD - copy file' )
- os.rename( old_filename, new_full_filename )
+ wb_platform_specific.uRename( old_filename, new_full_filename )
return
if( text_status == pysvn.wc_status_kind.normal
@@ -312,7 +318,7 @@
def __moveFile( self, old_filename, new_full_filename, is_controlled, text_status, prop_status ):
if not is_controlled:
- os.rename( old_filename, new_full_filename )
+ wb_platform_specific.uRename( old_filename, new_full_filename )
return
if text_status == pysvn.wc_status_kind.added:
@@ -323,7 +329,7 @@
print( T_('Rename %(from)s %(to)s') %
{'from': old_filename
,'to': new_full_filename} )
- os.rename( old_filename, new_full_filename )
+ wb_platform_specific.uRename( old_filename, new_full_filename )
self.project_info.client_fg.add( new_full_filename )
# all_prop_lists is empty if there are no properties set
@@ -339,7 +345,7 @@
for tmp_name_index in range( 100 ):
tmp_filename = os.path.join( os.path.dirname( old_filename ),
'%s.%d.tmp' % (new_full_filename, tmp_name_index) )
- if not os.path.exists( tmp_filename ):
+ if not wb_platform_specific.uPathExists( tmp_filename ):
new_full_tmp_filename = tmp_filename
break
@@ -353,15 +359,15 @@
print( T_('Rename %(from)s %(to)s') %
{'from': old_filename
,'to': new_full_tmp_filename} )
- os.rename( old_filename, new_full_tmp_filename )
+ wb_platform_specific.uRename( old_filename, new_full_tmp_filename )
self.project_info.client_fg.revert( old_filename )
self.project_info.client_fg.move( old_filename, new_full_filename )
- os.remove( new_full_filename )
+ wb_platform_specific.uRemove( new_full_filename )
print( T_('Rename %(from)s %(to)s') %
{'from': new_full_tmp_filename
,'to': new_full_tmp_filename} )
- os.rename( new_full_tmp_filename, new_full_filename )
+ wb_platform_specific.uRename( new_full_tmp_filename, new_full_filename )
if len(all_props) > 0:
_, prop_dict = all_props[0]
@@ -460,8 +466,11 @@
if self.project_info.notification_of_files_in_conflict > 0:
wx.MessageBox( S_("%d file is in conflict",
- "%d files are in conflict", self.project_info.notification_of_files_in_conflict) % self.project_info.notification_of_files_in_conflict,
- T_("Warning"), style=wx.OK|wx.ICON_EXCLAMATION )
+ "%d files are in conflict",
+ self.project_info.notification_of_files_in_conflict) %
+ self.project_info.notification_of_files_in_conflict,
+ T_("Warning"),
+ style=wx.OK|wx.ICON_EXCLAMATION )
self.app.clearProgress()
self.app.setAction( T_('Ready') )
@@ -513,8 +522,11 @@
if self.project_info.notification_of_files_in_conflict > 0:
wx.MessageBox( S_("%d file is in conflict",
- "%d files are in conflict", self.project_info.notification_of_files_in_conflict) % self.project_info.notification_of_files_in_conflict,
- T_("Warning"), style=wx.OK|wx.ICON_EXCLAMATION )
+ "%d files are in conflict",
+ self.project_info.notification_of_files_in_conflict) %
+ self.project_info.notification_of_files_in_conflict,
+ T_("Warning"),
+ style=wx.OK|wx.ICON_EXCLAMATION )
self.app.clearProgress()
self.app.setAction( T_('Ready') )
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_list_handler_common.py svn-workbench-1.6.6/Source/wb_subversion_list_handler_common.py
--- svn-workbench-1.6.2/Source/wb_subversion_list_handler_common.py 2009-10-03 19:22:02.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_list_handler_common.py 2011-11-21 01:52:09.000000000 +0900
@@ -26,6 +26,7 @@
import wb_subversion_properties_dialog
import wb_subversion_diff
import wb_config
+import wb_platform_specific
col_labels = [
('Name', U_('Name'), 25, 10, 100, wx.LIST_FORMAT_LEFT),
@@ -106,6 +107,15 @@
for index, name in enumerate( self.column_order ):
self.column_info_by_name[ name ].column = index
+ def getColumnWidth( self, column_name ):
+ return self.column_info_by_name[ column_name ].width
+
+ def setColumnWidth( self, column_name, width ):
+ info = self.column_info_by_name[ column_name ]
+ width = max( info.min_width, width )
+ width = min( info.max_width, width )
+ info.width = width
+
def getColumnOrder( self ):
return self.column_order
@@ -200,6 +210,10 @@
def setupColumnInfo( self ):
self.column_info.setFromPreferenceData( self.app.prefs.getView() )
+ self.overrideColumnInfo()
+
+ def overrideColumnInfo( self ):
+ pass
def setupColumns( self ):
self.setupColumnInfo()
@@ -228,8 +242,9 @@
self.list_panel.updateHeader( self.project_info.url, self.project_info.wc_path )
- # nothing doing if the wc does not exist
- if self.project_info.need_checkout:
+ # nothing doing if the wc does not exist or needs upgrade
+ if( self.project_info.need_checkout
+ or self.project_info.need_upgrade ):
# empty the list
g.DeleteAllItems()
@@ -283,7 +298,8 @@
def sortList( self, sort_data ):
self.app.log.debug('sortList' )
- if self.project_info.need_checkout:
+ if( self.project_info.need_checkout
+ or self.project_info.need_upgrade ):
# nothing to sort
return
@@ -354,6 +370,12 @@
def OnGetItemText( self, index, col ):
column = self.column_info.getNameByColumn( col )
+ if self.project_info.need_upgrade:
+ if column == self.col_name:
+ return T_('Use the Upgrade command to convert the working copy to the required format')
+ else:
+ return ''
+
if self.project_info.need_checkout:
if column == self.col_name:
if self.isProjectParent():
@@ -404,7 +426,8 @@
return value
def OnGetItemAttr( self, index ):
- if self.project_info.need_checkout:
+ if( self.project_info.need_checkout
+ or self.project_info.need_upgrade ):
colour = wb_config.colour_status_need_checkout
else:
colour = self.statusColour( self.all_files[ index ] )
@@ -417,7 +440,8 @@
return self.all_item_attr[ colour ]
def isItemImageFolder(self, item):
- if self.project_info.need_checkout:
+ if( self.project_info.need_checkout
+ or self.project_info.need_upgrade ):
return True
elif self.GetItemIsDir( item ):
@@ -429,14 +453,14 @@
def GetItemIsDir(self, item):
status = self.all_files[ item ]
if status.entry is None:
- is_dir = os.path.isdir( status.path )
+ is_dir = wb_platform_specific.uPathIsdir( status.path )
else:
is_dir = status.entry.kind == pysvn.node_kind.dir
return is_dir
def __get_NameColumn( self, status, prefix_len ):
if status.entry is None:
- is_dir = os.path.isdir( status.path )
+ is_dir = wb_platform_specific.uPathIsdir( status.path )
else:
is_dir = status.entry.kind == pysvn.node_kind.dir
if is_dir:
@@ -493,7 +517,7 @@
return wb_subversion_utils.fmtDateTime( status.entry.commit_time )
def __get_LockCommentColumn( self, status ):
- if status.repos_lock is not None:
+ if status.repos_lock is not None and status.repos_lock.comment is not None:
comment = status.repos_lock.comment.replace( '\n', ' ' )
elif status.entry is not None and status.entry.lock_comment is not None:
comment = status.entry.lock_comment.replace( '\n', ' ' )
@@ -516,6 +540,10 @@
state = wb_list_panel_common.ListItemState()
+ if self.project_info.need_upgrade:
+ state.need_upgrade = True
+ return state
+
if self.project_info.need_checkout:
state.need_checkout = True
state.ui_project_parent = True
@@ -535,10 +563,10 @@
for row in all_rows:
filename = self.all_files[ row ].path
- if not os.path.exists( filename ):
+ if not wb_platform_specific.uPathExists( filename ):
state.file_exists = False
- if os.path.isdir( filename ):
+ if wb_platform_specific.uPathIsdir( filename ):
state.modified = False
state.conflict = False
state.file_exists = False
@@ -603,7 +631,7 @@
def mayOpen( self, row_or_status ):
status = self.getStatusFromRowOrStatus( row_or_status )
if status.entry is None:
- return not os.path.isdir( self.getFilename( row_or_status ) )
+ return not wb_platform_specific.uPathIsdir( self.getFilename( row_or_status ) )
else:
return status.entry.kind == pysvn.node_kind.dir
@@ -974,7 +1002,7 @@
prop_dict = {}
else:
_, prop_dict = prop_list[0]
- if os.path.isdir( filename ):
+ if wb_platform_specific.uPathIsdir( filename ):
dialog = wb_subversion_properties_dialog.DirPropertiesDialog( self.app,
self.list_panel.list_ctrl,
filename,
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_project_info.py svn-workbench-1.6.6/Source/wb_subversion_project_info.py
--- svn-workbench-1.6.2/Source/wb_subversion_project_info.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_project_info.py 2012-03-04 05:14:15.000000000 +0900
@@ -29,6 +29,8 @@
import wb_subversion_tree_handler
import wb_subversion_list_handler
import wb_subversion_utils
+import wb_platform_specific
+import wb_subversion_utils
_fast_proplist = True
@@ -48,6 +50,7 @@
self.all_tree_files_status = []
self.need_checkout = True
+ self.need_upgrade = False
self.need_properties = False
self.files_properties = {}
@@ -179,8 +182,13 @@
self.notification_of_files_in_conflict += 1
# print anything that gets through the filter
- msg = '%s %s\n' % (action_letter, arg_dict['path'])
- self.app.foregroundProcess( sys.stdout.write, (msg,) )
+ try:
+ path = arg_dict['path'].decode( 'utf-8' )
+ except ValueError:
+ path = arg_dict['path']
+
+ msg = u'%s %s\n' % (action_letter, path)
+ self.app.foregroundProcess( sys.stdout.write, (msg.encode( 'utf-8' ),) )
def readPreferences( self, get_option ):
wb_source_control_providers.ProjectInfo.readPreferences( self, get_option )
@@ -261,15 +269,26 @@
self.dir_status = None
self.need_checkout = True
- if not os.path.exists( self.wc_path ):
+ if not wb_platform_specific.uPathExists( self.wc_path ):
return
p = self.app.prefs.getView()
+
try:
+ self.need_upgrade = False
entry = self.client_fg.info( self.wc_path )
+
except pysvn.ClientError, e:
+ if wb_subversion_utils.version_info.has_upgrade:
+ # is it the 'Working copy XXX is too old' error?
+ if e.args[1][0][1] == pysvn.svn_err.wc_upgrade_required:
+ self.need_checkout = False
+ self.need_upgrade = True
+ return
+
# is it the 'is not a working copy' error?
if e.args[1][0][1] == pysvn.svn_err.wc_not_directory:
+ # need_checkout
return
print 'Error: %s' % e.args[0]
@@ -282,12 +301,14 @@
self.all_files_status = self.client_fg.status( self.wc_path, recurse=p.view_recursive, ignore=False )
+
self.need_checkout = False
# sort list
self.all_files_status.sort( wb_subversion_utils.by_path )
+
# remember dir_status before filtering
- if len(self.all_files_status) > 0 and self.all_files_status[0].path == self.wc_path:
+ if len(self.all_files_status) > 0 and os.path.normcase( self.all_files_status[0].path ) == os.path.normcase( self.wc_path ):
self.dir_status = self.all_files_status[0]
del self.all_files_status[0]
@@ -372,7 +393,7 @@
return self.dir_status
def __proplist( self, path ):
- if os.path.isdir( path ):
+ if wb_platform_specific.uPathIsdir( path ):
prop_file = os.path.join( path, '.svn', 'dir-props' )
base_prop_file = os.path.join( path, '.svn', 'dir-prop-base' )
else:
@@ -382,10 +403,10 @@
result = {}
try:
- f = file( prop_file )
+ f = wb_platform_specific.uOpen( prop_file )
except EnvironmentError:
try:
- f = file( base_prop_file )
+ f = wb_platform_specific.uOpen( base_prop_file )
except EnvironmentError:
return result
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_report_branch_changes.py svn-workbench-1.6.6/Source/wb_subversion_report_branch_changes.py
--- svn-workbench-1.6.2/Source/wb_subversion_report_branch_changes.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_report_branch_changes.py 2011-11-21 01:52:09.000000000 +0900
@@ -18,7 +18,6 @@
import wb_list_panel_common
import wb_subversion_utils
import wb_subversion_list_handler_common
-import wb_platform_specific
class ReportBranchChangesFrame(wx.Frame):
def __init__( self, app, project_info, all_files ):
@@ -177,6 +176,7 @@
self.url = project_info.url
self.wc_path = project_info.wc_path
self.need_checkout = False
+ self.need_upgrade = False
self.client_fg = project_info.client_fg
self.client_bg = project_info.client_bg
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_report_lock.py svn-workbench-1.6.6/Source/wb_subversion_report_lock.py
--- svn-workbench-1.6.2/Source/wb_subversion_report_lock.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_report_lock.py 2011-11-21 01:52:09.000000000 +0900
@@ -16,13 +16,13 @@
import time
import pysvn
+import wb_config
import wb_ids
import wb_images
import wb_exceptions
import wb_list_panel_common
import wb_subversion_utils
import wb_subversion_list_handler_common
-import wb_platform_specific
class ReportLockFrame(wx.Frame):
def __init__( self, app, project_info, all_files, show_repos_locks=False ):
@@ -220,6 +220,7 @@
self.url = project_info.url
self.wc_path = project_info.wc_path
self.need_checkout = False
+ self.need_upgrade = False
self.client_fg = project_info.client_fg
self.client_bg = project_info.client_bg
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_report_revision_changes.py svn-workbench-1.6.6/Source/wb_subversion_report_revision_changes.py
--- svn-workbench-1.6.2/Source/wb_subversion_report_revision_changes.py 2009-10-03 17:21:08.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_report_revision_changes.py 2011-11-21 01:52:09.000000000 +0900
@@ -23,7 +23,6 @@
import wb_subversion_diff
import wb_subversion_utils
import wb_subversion_list_handler_common
-import wb_platform_specific
import wb_subversion_annotate
import wb_subversion_info_dialog
import wb_subversion_history
@@ -294,6 +293,7 @@
self.url = project_info.url
self.wc_path = project_info.wc_path
self.need_checkout = False
+ self.need_upgrade = False
self.client_fg = project_info.client_fg
self.client_bg = project_info.client_bg
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_report_updates.py svn-workbench-1.6.6/Source/wb_subversion_report_updates.py
--- svn-workbench-1.6.2/Source/wb_subversion_report_updates.py 2009-09-20 19:51:33.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_report_updates.py 2011-11-21 01:52:09.000000000 +0900
@@ -23,7 +23,6 @@
import wb_list_panel_common
import wb_subversion_utils
import wb_subversion_list_handler_common
-import wb_platform_specific
id_exclude = wx.NewId()
id_include = wx.NewId()
@@ -254,6 +253,7 @@
self.url = project_info.url
self.wc_path = project_info.wc_path
self.need_checkout = False
+ self.need_upgrade = False
self.client_fg = project_info.client_fg
self.client_bg = project_info.client_bg
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_tree_handler.py svn-workbench-1.6.6/Source/wb_subversion_tree_handler.py
--- svn-workbench-1.6.2/Source/wb_subversion_tree_handler.py 2009-09-20 19:51:33.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_tree_handler.py 2012-03-03 23:31:36.000000000 +0900
@@ -33,6 +33,7 @@
import wb_clipboard
import wb_dialogs
import wb_config
+import wb_platform_specific
class SubversionProject(wb_tree_panel.TreeProjectItem):
def __init__( self, app, project_info ):
@@ -52,7 +53,7 @@
dir_status = self.project_info.getDirStatus()
if dir_status is None:
# no status available - make a guess
- if not os.path.exists( self.project_info.wc_path ):
+ if not wb_platform_specific.uPathExists( self.project_info.wc_path ):
# nothing there
return False
else:
@@ -61,7 +62,7 @@
for file in self.project_info.getTreeFilesStatus():
if( (file.entry is not None and file.entry.kind == pysvn.node_kind.dir)
- or (file.entry is None and os.path.isdir( file.path )) ):
+ or (file.entry is None and wb_platform_specific.uPathIsdir( file.path )) ):
return True
return False
@@ -71,7 +72,7 @@
for file in self.project_info.getTreeFilesStatus():
- if( (file.entry is None and os.path.isdir( file.path ))
+ if( (file.entry is None and wb_platform_specific.uPathIsdir( file.path ))
or (file.entry is not None and file.entry.kind == pysvn.node_kind.dir) ):
pi = wb_subversion_project_info.ProjectInfo( self.app, self.project_info )
name = os.path.basename( file.path )
@@ -92,17 +93,17 @@
dir_status = self.project_info.getDirStatus()
if dir_status is None:
# no status available - make a guess
- if not os.path.exists( self.project_info.wc_path ):
+ if not wb_platform_specific.uPathExists( self.project_info.wc_path ):
# nothing there
return wb_config.colour_status_need_checkout
- elif not os.path.exists( os.path.join( self.project_info.wc_path, '.svn' ) ):
+ elif not wb_platform_specific.uPathExists( os.path.join( self.project_info.wc_path, '.svn' ) ):
# not versioned
return wb_config.colour_status_unversioned
else:
# versioned and present
return wb_config.colour_status_normal
- elif not os.path.exists( dir_status.path ):
+ elif not wb_platform_specific.uPathExists( dir_status.path ):
# nothing there
return wb_config.colour_status_need_checkout
elif dir_status.text_status in [pysvn.wc_status_kind.unversioned, pysvn.wc_status_kind.ignored]:
@@ -126,6 +127,7 @@
state.unversioned = False
state.need_checkin = False
state.need_checkout = True
+ state.need_upgrade = False
state.conflict = False
state.file_exists = False
state.revertable = False
@@ -137,10 +139,11 @@
state.unversioned = True
state.need_checkin = True
state.need_checkout = False
+ state.need_upgrade = False
state.conflict = True
state.file_exists = True
- if not os.path.exists( dir_status.path ):
+ if not wb_platform_specific.uPathExists( dir_status.path ):
state.file_exists = False
text_status = dir_status.text_status
@@ -539,7 +542,7 @@
and dialog.getTemplateFilename() is not None ):
try:
template_filename = os.path.join( template_dir, dialog.getTemplateFilename() )
- t = file( template_filename, 'r' )
+ t = wb_platform_specific.uOpen( template_filename, 'r' )
template_contents = t.read()
t.close()
@@ -551,7 +554,7 @@
try:
new_filename = os.path.join( self.project_info.wc_path, dialog.getNewFilename() )
- f = file( new_filename, 'w' )
+ f = wb_platform_specific.uOpen( new_filename, 'w' )
f.write( template_contents )
f.close()
@@ -799,7 +802,7 @@
self.app.log_client_error( e )
else:
try:
- os.rename( old_filename, new_full_filename )
+ wb_platform_specific.uRename( old_filename, new_full_filename )
except (OSError,IOError), e:
self.app.log.error( str(e) )
@@ -887,11 +890,26 @@
if self.project_info.notification_of_files_in_conflict > 0:
wx.MessageBox( S_("%d file is in conflict",
- "%d files are in conflict", self.project_info.notification_of_files_in_conflict) % self.project_info.notification_of_files_in_conflict,
+ "%d files are in conflict",
+ self.project_info.notification_of_files_in_conflict) %
+ self.project_info.notification_of_files_in_conflict,
T_("Warning"), style=wx.OK|wx.ICON_EXCLAMATION )
self.app.clearProgress()
self.app.setAction( T_('Ready') )
+ self.app.refreshFrame()
+
+ def Cmd_Dir_Upgrade( self ):
+ self.app.setAction( T_('Upgrade %s...') % self.project_info.wc_path )
+
+ try:
+ self.project_info.client_fg.upgrade( self.project_info.wc_path )
+
+ except pysvn.ClientError, e:
+ self.app.log_client_error( e )
+
+ self.app.clearProgress()
+ self.app.setAction( T_('Ready') )
self.app.refreshFrame()
def Cmd_Dir_Copy( self, all_filenames ):
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_utils.py svn-workbench-1.6.6/Source/wb_subversion_utils.py
--- svn-workbench-1.6.2/Source/wb_subversion_utils.py 2009-09-14 01:02:30.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_utils.py 2011-11-21 07:37:53.000000000 +0900
@@ -25,6 +25,8 @@
self.notify_action_has_failed_lock = hasattr( pysvn.wc_notify_action, 'failed_lock' )
self.has_depth = hasattr( pysvn, 'depth' )
self.notify_action_has_property_events = hasattr( pysvn.wc_notify_action, 'property_added' )
+ self.notify_action_has_upgrade_events = hasattr( pysvn.wc_notify_action, 'upgraded_path' )
+ self.has_upgrade = self.notify_action_has_upgrade_events
version_info = svn_version_info()
@@ -150,6 +152,33 @@
wc_notify_action_map[ pysvn.wc_notify_action.tree_conflict ] = 'tree_conflict'
wc_notify_action_map[ pysvn.wc_notify_action.failed_external ] = 'failed_external'
+if version_info.notify_action_has_upgrade_events:
+ wc_notify_action_map[ pysvn.wc_notify_action.upgraded_path ] = 'upgraded_path'
+ wc_notify_action_map[ pysvn.wc_notify_action.update_started ] = "update_started"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_skip_obstruction ] = "update_skip_obstruction"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_skip_working_only ] = "update_skip_working_only"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_external_removed ] = "update_external_removed"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_shadowed_add ] = "update_shadowed_add"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_shadowed_update ] = "update_shadowed_update"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_shadowed_delete ] = "update_shadowed_delete"
+ wc_notify_action_map[ pysvn.wc_notify_action.merge_record_info ] = "merge_record_info"
+ wc_notify_action_map[ pysvn.wc_notify_action.upgraded_path ] = "upgraded_path"
+ wc_notify_action_map[ pysvn.wc_notify_action.merge_record_info_begin ] = "merge_record_info_begin"
+ wc_notify_action_map[ pysvn.wc_notify_action.merge_elide_info ] = "merge_elide_info"
+ wc_notify_action_map[ pysvn.wc_notify_action.patch ] = "patch"
+ wc_notify_action_map[ pysvn.wc_notify_action.patch_applied_hunk ] = "patch_applied_hunk"
+ wc_notify_action_map[ pysvn.wc_notify_action.patch_rejected_hunk ] = "patch_rejected_hunk"
+ wc_notify_action_map[ pysvn.wc_notify_action.patch_hunk_already_applied ] = "patch_hunk_already_applied"
+ wc_notify_action_map[ pysvn.wc_notify_action.commit_copied ] = "commit_copied"
+ wc_notify_action_map[ pysvn.wc_notify_action.commit_copied_replaced ] = "commit_copied_replaced"
+ wc_notify_action_map[ pysvn.wc_notify_action.url_redirect ] = "url_redirect"
+ wc_notify_action_map[ pysvn.wc_notify_action.path_nonexistent ] = "path_nonexistent"
+ wc_notify_action_map[ pysvn.wc_notify_action.exclude ] = "exclude"
+ wc_notify_action_map[ pysvn.wc_notify_action.failed_conflict ] = "failed_conflict"
+ wc_notify_action_map[ pysvn.wc_notify_action.failed_missing ] = "failed_missing"
+ wc_notify_action_map[ pysvn.wc_notify_action.failed_out_of_date ] = "failed_out_of_date"
+ wc_notify_action_map[ pysvn.wc_notify_action.failed_no_parent ] = "failed_no_parent"
+
wc_notify_type_map = {
pysvn.wc_notify_action.add: 'A',
pysvn.wc_notify_action.commit_added: 'C',
@@ -191,6 +220,32 @@
wc_notify_type_map[ pysvn.wc_notify_action.tree_conflict ] = None
wc_notify_type_map[ pysvn.wc_notify_action.failed_external ] = None
+if version_info.notify_action_has_upgrade_events:
+ wc_notify_type_map[ pysvn.wc_notify_action.upgraded_path ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_started ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_skip_obstruction ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_skip_working_only ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_external_removed ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_shadowed_add ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_shadowed_update ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_shadowed_delete ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.merge_record_info ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.upgraded_path ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.merge_record_info_begin ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.merge_elide_info ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.patch ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.patch_applied_hunk ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.patch_rejected_hunk ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.patch_hunk_already_applied ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.commit_copied ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.commit_copied_replaced ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.url_redirect ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.path_nonexistent ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.exclude ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.failed_conflict ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.failed_missing ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.failed_out_of_date ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.failed_no_parent ] = None
#
# format the concise status from file
diff -Nru svn-workbench-1.6.2/Source/wb_tree_panel.py svn-workbench-1.6.6/Source/wb_tree_panel.py
--- svn-workbench-1.6.2/Source/wb_tree_panel.py 2012-07-25 06:31:59.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_tree_panel.py 2012-07-25 06:31:59.000000000 +0900
@@ -35,6 +35,7 @@
self.unversioned = False
self.need_checkin = False
self.need_checkout = False
+ self.need_upgrade = False
self.conflict = False
self.file_exists = False
self.is_folder = True
@@ -127,13 +128,11 @@
dc.Clear()
w, h = self.GetSize()
if self.FindFocus() == self.tree_ctrl:
- print 'tree focus'
dc.SetPen( wx.Pen( "red", 1 ) )
dc.DrawRectangle( 0, 0, w, h )
else:
dc.SetPen( wx.Pen( "green", 1 ) )
dc.DrawRectangle( 0, 0, w, h )
- print 'tree unfocus'
event.Skip()
def initFrame( self ):
@@ -266,6 +265,7 @@
if first_item:
self.tree_ctrl.SelectItem( first_item )
+ # QQQ: EnsureVisible causes an assert in wxPython 2.8.12.1 on Mac OS X
self.tree_ctrl.EnsureVisible( first_item )
def updateTreeSelectedItem( self ):
@@ -318,12 +318,14 @@
child_item, cookie = self.tree_ctrl.GetFirstChild( this_item )
while child_item:
child_handler = self.tree_ctrl.GetPyData( child_item )
+ # Since WX 2.8.11.1 need to call updateStatus() here - guess that a callback sequence changed
+ child_handler.updateStatus()
self.tree_ctrl.SetItemHasChildren( child_item, child_handler.mayExpand() )
self.tree_ctrl.SetItemTextColour( child_item, child_handler.getTreeNodeColour() )
child_item, cookie = self.tree_ctrl.GetNextChild( this_item, cookie )
- # set the has children state
+ # set the has-children state
self.tree_ctrl.SetItemHasChildren( this_item, len(project_info_list) > 0 )
def gotoBookmark( self, bookmark_name ):
@@ -768,6 +770,9 @@
def OnSpUpdateTo( self ):
return self.Sp_Dispatch( 'Cmd_Dir_UpdateTo' )
+ def OnSpUpgrade( self ):
+ return self.Sp_Dispatch( 'Cmd_Dir_Upgrade' )
+
#----------------------------------------
def OnSpCopy( self, filename_list ):
return self.Sp_DispatchDrop( 'Cmd_Dir_Copy', filename_list )
diff -Nru svn-workbench-1.6.2/Source/wb_version.py svn-workbench-1.6.6/Source/wb_version.py
--- svn-workbench-1.6.2/Source/wb_version.py 2010-01-04 00:53:16.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_version.py 2012-03-04 06:15:22.000000000 +0900
@@ -13,5 +13,5 @@
'''
major = 1
minor = 6
-patch = 2
-build = 1283
+patch = 6
+build = 1465
diff -Nru svn-workbench-1.6.2/debian/changelog svn-workbench-1.6.6/debian/changelog
--- svn-workbench-1.6.2/debian/changelog 2012-07-25 06:31:59.000000000 +0900
+++ svn-workbench-1.6.6/debian/changelog 2012-07-25 06:31:59.000000000 +0900
@@ -1,3 +1,13 @@
+svn-workbench (1.6.6-1) UNRELEASED; urgency=low
+
+ * QA upload.
+ * New upstream release
+ - support subversion1.7
+ * debian/watch
+ - exec uupdate automatically
+
+ -- Hideki Yamane <henrich@debian.org> Wed, 25 Jul 2012 05:16:20 +0900
+
svn-workbench (1.6.2-2) unstable; urgency=low
* Orphan the package.
diff -Nru svn-workbench-1.6.2/debian/watch svn-workbench-1.6.6/debian/watch
--- svn-workbench-1.6.2/debian/watch 2012-07-25 06:31:59.000000000 +0900
+++ svn-workbench-1.6.6/debian/watch 2012-07-25 06:31:59.000000000 +0900
@@ -1,2 +1,2 @@
version=3
-http://pysvn.tigris.org/project_downloads.html .*/WorkBench-(.*)\.tar\.gz
+http://pysvn.tigris.org/project_downloads.html .*/WorkBench-(.*)\.tar\.gz debian uupdate
diff -Nru svn-workbench-1.6.2/Builder/builder_custom_init.cmd svn-workbench-1.6.6/Builder/builder_custom_init.cmd
--- svn-workbench-1.6.2/Builder/builder_custom_init.cmd 2009-10-03 17:25:22.000000000 +0900
+++ svn-workbench-1.6.6/Builder/builder_custom_init.cmd 2011-11-06 23:19:48.000000000 +0900
@@ -4,12 +4,10 @@
set PY_MAJ=2
if not "%1" == "" set PY_MAJ=%1
-set PY_MIN=6
+set PY_MIN=7
if not "%2" == "" set PY_MIN=%2
-set BUILD_TYPE=Release
-if not "%3" == "" set BUILD_TYPE=%3
-if not "%4" == "" set SVN_VER_MAJ_MIN=%4
+if not "%3" == "" set SVN_VER_MAJ_MIN=%3
if "%SVN_VER_MAJ_MIN%" == "" set /p SVN_VER_MAJ_MIN="Build against Subversion Version [maj.min]: "
if "%SVN_VER_MAJ_MIN%" == "" goto :eof
@@ -22,8 +20,10 @@
if "%PY_MAJ%.%PY_MIN%" == "2.4" set COMPILER=msvc71
if "%PY_MAJ%.%PY_MIN%" == "2.5" set COMPILER=msvc71
if "%PY_MAJ%.%PY_MIN%" == "2.6" set COMPILER=msvc90
+if "%PY_MAJ%.%PY_MIN%" == "2.7" set COMPILER=msvc90
if "%PY_MAJ%.%PY_MIN%" == "3.0" set COMPILER=msvc90
if "%PY_MAJ%.%PY_MIN%" == "3.1" set COMPILER=msvc90
+if "%PY_MAJ%.%PY_MIN%" == "3.2" set COMPILER=msvc90
if exist ..\..\ReleaseEngineering\win32-%COMPILER%\software-versions-%SVN_VER_MAJ_MIN%.cmd (
pushd ..\..\ReleaseEngineering\win32-%COMPILER%
@@ -31,24 +31,24 @@
popd
)
-rem see if there is a built pysvn.pyd
+rem see if there is a built pysvn
if not "%TARGET%" == "" set PYSVN_PYTHONPATH=%TARGET%\py%PY_MAJ%%PY_MIN%_pysvn\Source
-if not "%TARGET%" == "" set PYTHONPATH=%PYSVN_PYTHONPATH%
+if not "%TARGET%" == "" set PYTHONPATH=%PYSVN_PYTHONPATH%;%WORKDIR%\Source
+if "%TARGET%" == "" set PYTHONPATH=%WORKDIR%\Source
+
echo PYTHONPATH %PYTHONPATH%
set MEINC_INSTALLER_DIR=%WORKDIR%\Import\MEINC_Installer-%MEINC_INSTALLER_VER%-py%PY_MAJ%%PY_MIN%-win32
-set PYCHECKER_DIR=%WORKDIR%\Import\PyChecker
-set INCLUDE=%MEINC_INSTALLER_DIR%;%PYCHECKER_DIR%;%INCLUDE%
-set SUBVERSION=%TARGET%\subversion-%SVN_VER%
-set APR=%SUBVERSION%
-set PY=c:\python%PY_MAJ%%PY_MIN%
-set PYLIB=python%PY_MAJ%%PY_MIN%
+set INCLUDE=%MEINC_INSTALLER_DIR%;%INCLUDE%
+
+set PY=c:\python%PY_MAJ%%PY_MIN%.win32
+if not exist %PY%\python.exe set PY=c:\python%PY_MAJ%%PY_MIN%
+
set PYTHON=%PY%\python.exe
rem Need python and SVN on the path
-rem need c:\unxutils on the path to access the gettext utilities
-PATH %PY%;%SUBVERSION%\%BUILD_TYPE%\bin;c:\unxutils;%PATH%
+PATH %PY%;%SVN_BIN%;c:\UnxUtils;%PATH%
-python -c "import sys;print 'Info: Python Version',sys.version"
-python -c "import pysvn;print 'Info: pysvn Version',pysvn.version,'svn version',pysvn.svn_version"
+%PYTHON% -c "import sys;print 'Info: Python Version',sys.version"
+%PYTHON% -c "import pysvn;print 'Info: pysvn Version',pysvn.version,'svn version',pysvn.svn_version"
popd
diff -Nru svn-workbench-1.6.2/Builder/builder_custom_init.sh svn-workbench-1.6.6/Builder/builder_custom_init.sh
--- svn-workbench-1.6.2/Builder/builder_custom_init.sh 2009-09-26 20:02:40.000000000 +0900
+++ svn-workbench-1.6.6/Builder/builder_custom_init.sh 2011-11-27 23:56:01.000000000 +0900
@@ -9,12 +9,12 @@
if [ "$(uname)" = "Darwin" ]
then
# default to 2.3 on Mac OS X
- PREF_VER=2.6
+ PREF_VER=2.7
else
PREF_VER=
fi
fi
-for PY_VER in ${PREF_VER} 2.6 2.5
+for PY_VER in ${PREF_VER} 2.7 2.6 2.5
do
# used in pick python to use in Builder driver makefile
export PYTHON=$( which python${PY_VER} )
@@ -31,11 +31,8 @@
export WC_SVNVERSION=svnversion
fi
-export PYCXX=${WORKDIR}/Import/pycxx_${PYCXXVER}
-
export MEINC_INSTALLER_DIR=${WORKDIR}/Import/MEINC_Installer
-export PYCHECKER_DIR=${WORKDIR}/Import/PyChecker
-for _DIR in ${WORKDIR}/../Extension/Source ${WORKDIR}/../py${PYSVN_PY_VER}_pysvn/Source
+for _DIR in ${WORKDIR}/../Extension/Source ${WORKDIR}/../py${PYSVN_PY_VER}_pysvn_python_org//Source
do
if [ -e "${_DIR}" ]
then
diff -Nru svn-workbench-1.6.2/Builder/linux.mak svn-workbench-1.6.6/Builder/linux.mak
--- svn-workbench-1.6.2/Builder/linux.mak 2004-08-07 19:32:21.000000000 +0900
+++ svn-workbench-1.6.6/Builder/linux.mak 2010-11-19 00:29:25.000000000 +0900
@@ -12,6 +12,7 @@
cd ../Import/MEINC_Installer/source/linux && $(PYTHON) Make.py && $(MAKE) && rm -f ../../config.dat
clean:
+ find .. -name '*.pyc' -exec rm {} ';'
cd ../Source && $(MAKE) -f linux.mak clean
cd ../Kit/Linux && rm -rf tmp
cd ../Import/MEINC_Installer/source/linux && $(MAKE) clean
diff -Nru svn-workbench-1.6.2/Builder/version.info svn-workbench-1.6.6/Builder/version.info
--- svn-workbench-1.6.2/Builder/version.info 2009-10-03 17:06:15.000000000 +0900
+++ svn-workbench-1.6.6/Builder/version.info 2011-02-28 05:20:43.000000000 +0900
@@ -1,4 +1,4 @@
MAJOR=1
MINOR=6
-PATCH=2
+PATCH=6
BUILD=0
diff -Nru svn-workbench-1.6.2/INSTALL.html svn-workbench-1.6.6/INSTALL.html
--- svn-workbench-1.6.2/INSTALL.html 2008-12-03 07:25:19.000000000 +0900
+++ svn-workbench-1.6.6/INSTALL.html 2011-02-21 03:45:46.000000000 +0900
@@ -4,7 +4,7 @@
<head>
<title>Installing pysvn Workbench</title>
<style type="text/css">
-pre
+pre
{
max-width: 40em;
margin-left: 4em;
@@ -22,11 +22,13 @@
<h2>Prerequisites</h2>
<ul>
-<li>Python 2.4 or later</li>
+<li><a href="http://www.python.org/">Python</a> version 2.4 or later.</li>
-<li>Install the pysvn Extension 1.5.0 or later.</li>
+<li>Install the <a href="http://pysvn.tigris.org/">pysvn</a> Extension 1.5.0 or later.</li>
-<li>Install wxPython verison 2.6.1.0 or better.</li>
+<li>Install <a href="http://www.wxpython.org/">wxPython</a> version 2.6.1.0 or better.</li>
+
+<li>If necessary install <a href="http://sourceforge.net/projects/pywin32/">pywin32</a> version 2.8.8.0 or better.</li>
</ul>
<h2>Preparing to run WorkBench</h2>
@@ -44,5 +46,12 @@
<p>In the <code>Source</code> folder:</p>
<pre>python wb_main.py</pre>
+<h2>Troubleshooting</h2>
+
+<p>Check the output from wb_main.py. You can prevent wb_main.py redirecting stdout by running as:</p>
+<pre>python wb_main.py --noredirect</pre>
+
+<p>On Windows does not have a usable stdout instead check "%TEMP%\workbench.tmp" for Python messages and errors.</p>
+
</body>
</html>
diff -Nru svn-workbench-1.6.2/Kit/Win32/msvc90_system_files.iss svn-workbench-1.6.6/Kit/Win32/msvc90_system_files.iss
--- svn-workbench-1.6.2/Kit/Win32/msvc90_system_files.iss 2009-09-26 07:01:20.000000000 +0900
+++ svn-workbench-1.6.6/Kit/Win32/msvc90_system_files.iss 2011-11-06 23:19:48.000000000 +0900
@@ -3,8 +3,8 @@
;
; begin VC system files
-Source: "c:\Program Files\Microsoft Visual Studio 9.0\vc\redist\x86\Microsoft.VC90.CRT\Microsoft.VC90.CRT.manifest"; DestDir: "{app}"
-Source: "c:\Program Files\Microsoft Visual Studio 9.0\vc\redist\x86\Microsoft.VC90.CRT\msvcm90.dll"; DestDir: "{app}"
-Source: "c:\Program Files\Microsoft Visual Studio 9.0\vc\redist\x86\Microsoft.VC90.CRT\msvcp90.dll"; DestDir: "{app}"
-Source: "c:\Program Files\Microsoft Visual Studio 9.0\vc\redist\x86\Microsoft.VC90.CRT\msvcr90.dll"; DestDir: "{app}"
+Source: "c:\Program Files (x86)\Microsoft Visual Studio 9.0\vc\redist\x86\Microsoft.VC90.CRT\Microsoft.VC90.CRT.manifest"; DestDir: "{app}"
+Source: "c:\Program Files (x86)\Microsoft Visual Studio 9.0\vc\redist\x86\Microsoft.VC90.CRT\msvcm90.dll"; DestDir: "{app}"
+Source: "c:\Program Files (x86)\Microsoft Visual Studio 9.0\vc\redist\x86\Microsoft.VC90.CRT\msvcp90.dll"; DestDir: "{app}"
+Source: "c:\Program Files (x86)\Microsoft Visual Studio 9.0\vc\redist\x86\Microsoft.VC90.CRT\msvcr90.dll"; DestDir: "{app}"
; end VC system files
diff -Nru svn-workbench-1.6.2/Kit/Win32/win32.mak svn-workbench-1.6.6/Kit/Win32/win32.mak
--- svn-workbench-1.6.2/Kit/Win32/win32.mak 2009-10-03 17:25:22.000000000 +0900
+++ svn-workbench-1.6.6/Kit/Win32/win32.mak 2011-11-06 23:19:48.000000000 +0900
@@ -4,7 +4,7 @@
copy ..\..\LICENSE.txt tmp\workbench_LICENSE.txt
copy ..\..\Source\bin\wb.exe tmp\WorkBench.exe
copy ..\..\Source\bin\wb.exe.manifest tmp\WorkBench.exe.manifest
- "c:\Program Files\Inno Setup 5\ISCC.exe" tmp\workbench-branded.iss
+ "c:\Program Files (x86)\Inno Setup 5\ISCC.exe" tmp\workbench-branded.iss
tmp\setup_copy.cmd
info_before.txt: workbench-branded.iss
@@ -16,7 +16,7 @@
python setup_version_handling.py
debug:
- "c:\Program Files\Inno Setup 5\Compil32.exe" workbench-branded.iss
+ "c:\Program Files (x86)\Inno Setup 5\Compil32.exe" workbench-branded.iss
clean:
if exist tmp rmdir /s /q tmp
diff -Nru svn-workbench-1.6.2/Kit/Win32/workbench.iss svn-workbench-1.6.6/Kit/Win32/workbench.iss
--- svn-workbench-1.6.2/Kit/Win32/workbench.iss 2009-10-03 17:35:08.000000000 +0900
+++ svn-workbench-1.6.6/Kit/Win32/workbench.iss 2012-03-03 19:53:31.000000000 +0900
@@ -12,7 +12,7 @@
[Setup]
AppName=WorkBench
AppVerName=WorkBench UNCONTROLLED
-AppCopyright=Copyright (C) 2003-2007 Barry A. Scott
+AppCopyright=Copyright (C) 2003-2012 Barry A. Scott
DefaultDirName={pf}\PySVN\WorkBench
DefaultGroupName=WorkBench for Subversion
UninstallDisplayIcon={app}\WorkBench.exe
@@ -32,5 +32,5 @@
Source: "workbench_LICENSE.txt"; DestDir: "{app}";
Source: "..\..\..\Docs\WorkBench.html"; DestDir: "{app}";
-Source: "WorkBench.exe"; DestDir: "{app}";
-Source: "WorkBench.exe.manifest"; DestDir: "{app}";
+Source: "WorkBench.exe"; DestDir: "{app}"; Flags: ignoreversion;
+Source: "WorkBench.exe.manifest"; DestDir: "{app}"; Flags: ignoreversion;
diff -Nru svn-workbench-1.6.2/LICENSE.txt svn-workbench-1.6.6/LICENSE.txt
--- svn-workbench-1.6.2/LICENSE.txt 2009-01-10 23:35:03.000000000 +0900
+++ svn-workbench-1.6.6/LICENSE.txt 2012-03-03 23:57:22.000000000 +0900
@@ -1,5 +1,5 @@
=================================================================
-Copyright (C) 2003-2009 Barry A. Scott. All rights reserved.
+Copyright (C) 2003-2012 Barry A. Scott. All rights reserved.
=================================================================
The Apache Software License, Version 1.1
diff -Nru svn-workbench-1.6.2/Source/I18N/pysvn_workbench_hu.po svn-workbench-1.6.6/Source/I18N/pysvn_workbench_hu.po
--- svn-workbench-1.6.2/Source/I18N/pysvn_workbench_hu.po 1970-01-01 09:00:00.000000000 +0900
+++ svn-workbench-1.6.6/Source/I18N/pysvn_workbench_hu.po 2010-07-26 00:44:44.000000000 +0900
@@ -0,0 +1,2416 @@
+# Hungarian translation of pysvn/WorkBench
+# Copyright (C) 2010 Free Software Foundation, Inc.
+# This file is distributed under the same license as the pysvn/WorkBench package.
+# Laszlo Csordas <csola48 at gmail dot com>, Copyright (C) 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pysvn_workbench_hu.current\n"
+"Report-Msgid-Bugs-To: barryscott@tigris.org\n"
+"POT-Creation-Date: 2009-09-30 19:53+0200\n"
+"PO-Revision-Date: 2010-07-11 10:15+0100\n"
+"Last-Translator: csola48 <csola48@gmail.com>\n"
+"Language-Team: magyar <csola48@gmail.hu>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.10\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Poedit-Language: Hungarian\n"
+"X-Poedit-Country: HUNGARY\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: wb_app.py:111
+#: wb_frame.py:43
+msgid "PySVN WorkBench"
+msgstr "PySVN WorkBench"
+
+#: wb_app.py:185
+msgid "Work Bench starting"
+msgstr "WorkBench ind鱈t叩sa"
+
+#: wb_bookmarks_dialogs.py:58
+#: wb_frame.py:158
+msgid "Manage Bookmarks"
+msgstr "Kテカnyvjelzナ_ kezelテゥse"
+
+#: wb_bookmarks_dialogs.py:73
+#: wb_bookmarks_dialogs.py:74
+#: wb_bookmarks_dialogs.py:75
+#: wb_bookmarks_dialogs.py:76
+msgid "Menu"
+msgstr "Men端"
+
+#: wb_bookmarks_dialogs.py:77
+msgid "WC Path"
+msgstr "Munkap辿ld叩ny 炭tvonala"
+
+#: wb_bookmarks_dialogs.py:93
+#: wb_preferences_dialog.py:374
+msgid " Delete "
+msgstr "T旦rl辿s"
+
+#: wb_bookmarks_dialogs.py:96
+msgid " Properties "
+msgstr "Tulajdons叩gok"
+
+#: wb_bookmarks_dialogs.py:99
+#: wb_bookmarks_dialogs.py:306
+#: wb_dialogs.py:59
+#: wb_dialogs.py:187
+#: wb_dialogs.py:244
+#: wb_dialogs.py:314
+#: wb_dialogs.py:388
+#: wb_dialogs.py:444
+#: wb_dialogs.py:511
+#: wb_dialogs.py:610
+#: wb_dialogs.py:736
+#: wb_preferences_dialog.py:59
+#: wb_project_dialogs.py:103
+#: wb_subversion_history.py:228
+#: wb_subversion_info_dialog.py:35
+#: wb_subversion_properties_dialog.py:175
+msgid " OK "
+msgstr " OK "
+
+#: wb_bookmarks_dialogs.py:100
+#: wb_bookmarks_dialogs.py:307
+#: wb_dialogs.py:60
+#: wb_dialogs.py:189
+#: wb_dialogs.py:246
+#: wb_dialogs.py:316
+#: wb_dialogs.py:390
+#: wb_dialogs.py:446
+#: wb_dialogs.py:513
+#: wb_dialogs.py:612
+#: wb_dialogs.py:739
+#: wb_preferences_dialog.py:61
+#: wb_project_dialogs.py:105
+#: wb_subversion_checkin.py:137
+#: wb_subversion_history.py:230
+#: wb_subversion_properties_dialog.py:177
+#: wb_subversion_report_updates.py:287
+msgid " Cancel "
+msgstr " T旦r旦l"
+
+#: wb_bookmarks_dialogs.py:244
+msgid "Bookmark Properties"
+msgstr "Kテカnyvjelzナ_ tulajdonsテ。gok"
+
+#: wb_bookmarks_dialogs.py:286
+msgid "WC Path: "
+msgstr "Munkap辿ld叩ny 炭tvonala: "
+
+#: wb_bookmarks_dialogs.py:290
+msgid "Menu1: "
+msgstr "Men端 1: "
+
+#: wb_bookmarks_dialogs.py:294
+msgid "Menu2: "
+msgstr "Men端 2: "
+
+#: wb_bookmarks_dialogs.py:298
+msgid "Menu3: "
+msgstr "Men端 3: "
+
+#: wb_bookmarks_dialogs.py:302
+msgid "Menu Name: "
+msgstr "Men端 neve: "
+
+#: wb_dialogs.py:40
+msgid "Status"
+msgstr "テ〕lapot"
+
+#: wb_dialogs.py:42
+msgid "Filename"
+msgstr "F叩jln辿v"
+
+#: wb_dialogs.py:56
+msgid "Force"
+msgstr "K辿nyszer鱈t"
+
+#: wb_dialogs.py:134
+#: wb_subversion_checkin.py:140
+msgid "Insert Last Message"
+msgstr "Utols坦 端zenet besz炭r叩sa"
+
+#: wb_dialogs.py:164
+msgid "Credentials"
+msgstr "Igazol坦 iratok"
+
+#: wb_dialogs.py:168
+msgid "Username:"
+msgstr "Felhaszn叩l坦 neve:"
+
+#: wb_dialogs.py:176
+msgid "Password:"
+msgstr "Jelsz坦:"
+
+#: wb_dialogs.py:182
+msgid "Always uses these credentials"
+msgstr "M叩r haszn叩lt ez az igazol坦 irat"
+
+#: wb_dialogs.py:227
+#, python-format
+msgid "Trust server %s"
+msgstr "Hitelesテュtナ_ szerver %s"
+
+#: wb_dialogs.py:232
+msgid "Server Certificate"
+msgstr "Szerver igazol叩s"
+
+#: wb_dialogs.py:239
+msgid "Always trust this server"
+msgstr "Ez a szerver m叩r hiteles鱈tett"
+
+#: wb_dialogs.py:290
+#: wb_frame.py:114
+#: wb_frame.py:157
+#: wb_subversion_list_handler.py:73
+msgid "Add"
+msgstr "Hozz叩ad叩s"
+
+#: wb_dialogs.py:294
+#: wb_dialogs.py:366
+msgid "From:"
+msgstr "Innen:"
+
+#: wb_dialogs.py:300
+msgid "Force Add"
+msgstr "K辿nyszer鱈tett hozz叩ad叩s"
+
+#: wb_dialogs.py:306
+msgid "Recursive Add"
+msgstr "Rekurz鱈v hozz叩ad叩s"
+
+#: wb_dialogs.py:362
+#: wb_frame.py:115
+#: wb_subversion_list_handler.py:150
+#: wb_subversion_list_handler.py:379
+#: wb_subversion_list_handler.py:386
+#: wb_subversion_tree_handler.py:794
+msgid "Rename"
+msgstr "テ》nevezテゥs"
+
+#: wb_dialogs.py:372
+msgid "To:"
+msgstr "Eddig:"
+
+#: wb_dialogs.py:383
+msgid "Force rename"
+msgstr "K辿nyszer鱈tett 叩tnevez辿s"
+
+#: wb_dialogs.py:436
+#: wb_subversion_info_dialog.py:56
+#: wb_subversion_tree_handler.py:513
+msgid "Name:"
+msgstr "N辿v:"
+
+#: wb_dialogs.py:437
+msgid "New Folder"
+msgstr "テ嗚 dossziテゥ"
+
+#: wb_dialogs.py:480
+#: wb_dialogs.py:485
+msgid "New File"
+msgstr "テ嗚 fテ。jl"
+
+#: wb_dialogs.py:489
+msgid "New Filename:"
+msgstr "テ嗚 fテ。jlnテゥv:"
+
+#: wb_dialogs.py:504
+msgid "Template:"
+msgstr "Minta:"
+
+#: wb_dialogs.py:554
+msgid "Empty directory"
+msgstr "テ徨es kテカnyvtテ。r"
+
+#: wb_dialogs.py:556
+msgid "Children files only"
+msgstr "Csak alf叩jlok"
+
+#: wb_dialogs.py:557
+msgid "Immediate children"
+msgstr "K旦zvetlen alf叩jlok"
+
+#: wb_dialogs.py:558
+msgid "Only already checked out descendants"
+msgstr "Csak mテ。r ellenナ喪zテカtt leszテ。rmazottak"
+
+#: wb_dialogs.py:559
+msgid "All descendants (Full recursion)"
+msgstr "テ穆szes leszテ。rmazott (teljesen rekurzテュv)"
+
+#: wb_dialogs.py:570
+msgid "HEAD revision"
+msgstr "HEAD rev鱈zi坦"
+
+#: wb_dialogs.py:578
+#: wb_subversion_info_dialog.py:64
+#: wb_subversion_info_dialog.py:108
+msgid "Revision:"
+msgstr "Rev鱈zi坦:"
+
+#: wb_dialogs.py:590
+msgid "Apply on"
+msgstr "Alkalmaz叩s be"
+
+#: wb_dialogs.py:593
+msgid "Recursive (all)"
+msgstr "Rekurz鱈v (旦sszes)"
+
+#: wb_dialogs.py:599
+msgid "Depth:"
+msgstr "M辿lys辿g:"
+
+#: wb_dialogs.py:648
+msgid "Please enter a revision number > 0!"
+msgstr "テ荒jon egy revテュziテウ szテ。mot, amely > 0!"
+
+#: wb_dialogs.py:653
+msgid "Please enter digits only!"
+msgstr "Csak sz叩mjegy lehet!"
+
+#: wb_dialogs.py:705
+msgid "Copy From:"
+msgstr "M叩sol innen:"
+
+#: wb_dialogs.py:708
+msgid "Copy To:"
+msgstr "M叩sol ide:"
+
+#: wb_dialogs.py:733
+#: wb_subversion_checkin.py:133
+msgid "Log message"
+msgstr "Napl坦 bejegyz辿s"
+
+#: wb_dialogs.py:791
+#: wb_frame.py:122
+msgid "Create Tag"
+msgstr "Tag k辿sz鱈t辿se"
+
+#: wb_dialogs.py:795
+#: wb_frame.py:123
+msgid "Create Branch"
+msgstr "Branch k辿sz鱈t辿se"
+
+#: wb_diff_frame.py:49
+#: wb_show_diff_frame.py:32
+#, python-format
+msgid "Diff %(title1)s and %(title2)s"
+msgstr "テ穆szehasonlテュtテ。s a/z/ %(title1)s テゥs a/z/ %(title2)s kテカzテカtt"
+
+#: wb_diff_frame.py:59
+msgid "Expand folds"
+msgstr "Dosszi辿 kibont叩sa"
+
+#: wb_diff_frame.py:59
+msgid "Expand all folds"
+msgstr "テ穆szes dossziテゥ kibontテ。sa"
+
+#: wb_diff_frame.py:60
+msgid "Collapse folds"
+msgstr "Dosszi辿 bez叩r叩sa"
+
+#: wb_diff_frame.py:60
+msgid "Collapse all folds"
+msgstr "テ穆szes dossziテゥn bezテ。rテ。sa"
+
+#: wb_diff_frame.py:62
+msgid "Toggle whitespace"
+msgstr "L叩that坦 sz坦k旦z bekapcsol叩sa"
+
+#: wb_diff_frame.py:62
+msgid "Show/hide whitespace"
+msgstr "L叩that坦 sz坦k旦z mutat叩sa/rejt辿se"
+
+#: wb_diff_frame.py:64
+msgid "Previous difference"
+msgstr "Kor叩bbi k端l旦nbs辿g"
+
+#: wb_diff_frame.py:64
+msgid "Positions the cursor at the previous difference between the files"
+msgstr "Helyezze a kurzort a fテ。jlok kテカzテカtti megelナ想ナ_ kテシlテカnbsテゥgre"
+
+#: wb_diff_frame.py:65
+msgid "Next difference"
+msgstr "Kテカvetkezナ_ kテシlテカnbsテゥg"
+
+#: wb_diff_frame.py:65
+msgid "Positions the cursor at the next difference between the files"
+msgstr "Helyezze a kurzort a fテ。jlok kテカzテカtti kテカvetkezナ_ kテシlテカnbsテゥgre"
+
+#: wb_diff_frame.py:85
+msgid "Key: "
+msgstr "Kulcs: "
+
+#: wb_diff_frame.py:86
+msgid "Inserted text "
+msgstr "Besz炭rt sz旦veg "
+
+#: wb_diff_frame.py:87
+msgid "Deleted text "
+msgstr "T旦r旦lt sz旦veg"
+
+#: wb_diff_frame.py:88
+msgid "Changed text"
+msgstr "Cser辿lt sz旦veg"
+
+#: wb_diff_frame.py:176
+#, python-format
+msgid "Diff %(change1)d of %(change2)d"
+msgstr "テ穆szehasonlテュtテ。s a/z/ %(change1)d テゥs a/z/ %(change2)d kテカzテカtt"
+
+#: wb_frame.py:62
+msgid "&Copy"
+msgstr "&M叩sol"
+
+#: wb_frame.py:62
+msgid "Copy Files"
+msgstr "F叩jl m叩sol叩sa"
+
+#: wb_frame.py:63
+msgid "&Cut"
+msgstr "&V叩g叩s"
+
+#: wb_frame.py:63
+msgid "Cut Files"
+msgstr "F叩jl kiv叩g叩sa"
+
+#: wb_frame.py:64
+msgid "&Paste"
+msgstr "&Beilleszt辿s"
+
+#: wb_frame.py:64
+msgid "Paste Files"
+msgstr "F叩jl beilleszt辿se"
+
+#: wb_frame.py:66
+msgid "&Clear log"
+msgstr "Napl坦 ki端r鱈t辿se"
+
+#: wb_frame.py:66
+msgid "Clear the log window"
+msgstr "Napl坦 ablak ki端r鱈t辿se"
+
+#: wb_frame.py:73
+msgid "&Preferences..."
+msgstr "&Be叩ll鱈t叩sok"
+
+#: wb_frame.py:73
+#: wb_preferences_dialog.py:24
+msgid "Preferences"
+msgstr "Be叩ll鱈t叩sok"
+
+#: wb_frame.py:74
+msgid "E&xit"
+msgstr "&Kil辿p辿s"
+
+#: wb_frame.py:74
+msgid "Exit the application"
+msgstr "Kil辿p辿s egy alkalmaz叩sb坦l"
+
+#: wb_frame.py:77
+#: wb_subversion_tree_handler.py:174
+msgid "&Command Shell"
+msgstr "&Termin叩l"
+
+#: wb_frame.py:77
+#: wb_toolbars.py:91
+msgid "Command Shell"
+msgstr "Termin叩l"
+
+#: wb_frame.py:78
+#: wb_subversion_tree_handler.py:175
+msgid "&File Browser"
+msgstr "&Fテ。jlkezelナ_"
+
+#: wb_frame.py:78
+#: wb_toolbars.py:95
+msgid "File Browser"
+msgstr "Fテ。jlkezelナ_"
+
+#: wb_frame.py:80
+#: wb_subversion_checkin.py:38
+#: wb_subversion_checkin.py:335
+#: wb_subversion_list_handler.py:42
+#: wb_subversion_report_updates.py:216
+msgid "Edit"
+msgstr "Szerkeszt辿s"
+
+#: wb_frame.py:81
+#: wb_subversion_checkin.py:40
+#: wb_subversion_checkin.py:339
+#: wb_subversion_list_handler.py:45
+#: wb_subversion_report_updates.py:219
+msgid "Open"
+msgstr "Megnyit叩s"
+
+#: wb_frame.py:83
+#: wb_subversion_checkin.py:42
+#: wb_subversion_checkin.py:343
+#: wb_subversion_list_handler.py:48
+#: wb_subversion_tree_handler.py:177
+msgid "Diff WC vs. BASE..."
+msgstr "テ穆szehasonlテュtテ。s: munkapテゥldテ。ny テゥs BASE..."
+
+#: wb_frame.py:84
+#: wb_subversion_checkin.py:43
+#: wb_subversion_checkin.py:344
+#: wb_subversion_list_handler.py:49
+#: wb_subversion_report_branch_changes.py:30
+#: wb_subversion_report_branch_changes.py:158
+#: wb_subversion_report_lock.py:38
+#: wb_subversion_report_lock.py:194
+#: wb_subversion_report_updates.py:38
+#: wb_subversion_report_updates.py:222
+#: wb_subversion_tree_handler.py:178
+msgid "Diff WC vs. HEAD..."
+msgstr "テ穆szehasonlテュtテ。s: munkapテゥldテ。ny テゥs HEAD..."
+
+#: wb_frame.py:85
+#: wb_subversion_checkin.py:44
+#: wb_subversion_checkin.py:345
+#: wb_subversion_list_handler.py:50
+#: wb_subversion_report_branch_changes.py:31
+#: wb_subversion_report_branch_changes.py:159
+#: wb_subversion_report_lock.py:39
+#: wb_subversion_report_lock.py:195
+#: wb_subversion_report_updates.py:39
+#: wb_subversion_report_updates.py:223
+msgid "Diff WC vs. branch origin BASE..."
+msgstr "テ穆szehasonlテュtテ。s: munkapテゥldテ。ny kontra branch eredeti BASE..."
+
+#: wb_frame.py:86
+#: wb_subversion_checkin.py:45
+#: wb_subversion_checkin.py:346
+#: wb_subversion_list_handler.py:51
+#: wb_subversion_report_branch_changes.py:32
+#: wb_subversion_report_branch_changes.py:160
+#: wb_subversion_report_lock.py:40
+#: wb_subversion_report_lock.py:196
+#: wb_subversion_report_updates.py:40
+#: wb_subversion_report_updates.py:224
+msgid "Diff WC vs. branch origin HEAD..."
+msgstr "テ穆szehasonlテュtテ。s: munkapテゥldテ。ny kontra branch eredeti HEAD..."
+
+#: wb_frame.py:89
+#: wb_subversion_list_handler.py:52
+msgid "Conflict"
+msgstr "Konfliktus"
+
+#: wb_frame.py:90
+#: wb_subversion_list_handler.py:53
+msgid "Diff Conflict Old vs. Mine..."
+msgstr "テ穆szehasonlテュtテウ konfliktus: rテゥgi テゥs sajテ。t..."
+
+#: wb_frame.py:91
+#: wb_subversion_list_handler.py:54
+msgid "Diff Conflict Mine vs. New..."
+msgstr "テ穆szehasonlテュtテウ konfliktus: sajテ。t テゥs テコj..."
+
+#: wb_frame.py:92
+#: wb_subversion_list_handler.py:55
+msgid "Diff Conflict Old vs. New..."
+msgstr "テ穆szehasonlテュtテウ konfliktus: rテゥgi テゥs テコj..."
+
+#: wb_frame.py:94
+#: wb_subversion_list_handler.py:57
+msgid "Resolved Conflict"
+msgstr "Feloldott konfliktus"
+
+#: wb_frame.py:97
+#: wb_subversion_checkin.py:48
+#: wb_subversion_checkin.py:348
+#: wb_subversion_list_handler.py:60
+#: wb_subversion_report_branch_changes.py:35
+#: wb_subversion_report_branch_changes.py:162
+#: wb_subversion_report_lock.py:43
+#: wb_subversion_report_lock.py:198
+#: wb_subversion_report_revision_changes.py:50
+#: wb_subversion_report_revision_changes.py:279
+#: wb_subversion_report_updates.py:43
+#: wb_subversion_report_updates.py:226
+msgid "Annotate..."
+msgstr "Megjegyz辿s..."
+
+#: wb_frame.py:98
+#: wb_subversion_checkin.py:49
+#: wb_subversion_checkin.py:349
+#: wb_subversion_list_handler.py:61
+#: wb_subversion_report_branch_changes.py:36
+#: wb_subversion_report_branch_changes.py:163
+#: wb_subversion_report_lock.py:44
+#: wb_subversion_report_lock.py:199
+#: wb_subversion_report_revision_changes.py:51
+#: wb_subversion_report_revision_changes.py:280
+#: wb_subversion_report_updates.py:44
+#: wb_subversion_report_updates.py:227
+#: wb_subversion_tree_handler.py:180
+msgid "Log history..."
+msgstr "Naplテウ elナ想mテゥnyek..."
+
+#: wb_frame.py:99
+#: wb_subversion_checkin.py:50
+#: wb_subversion_checkin.py:350
+#: wb_subversion_list_handler.py:62
+#: wb_subversion_report_branch_changes.py:37
+#: wb_subversion_report_branch_changes.py:164
+#: wb_subversion_report_lock.py:45
+#: wb_subversion_report_lock.py:200
+#: wb_subversion_report_revision_changes.py:52
+#: wb_subversion_report_revision_changes.py:281
+#: wb_subversion_tree_handler.py:181
+msgid "Information..."
+msgstr "Inform叩ci坦..."
+
+#: wb_frame.py:100
+#: wb_subversion_checkin.py:51
+#: wb_subversion_checkin.py:351
+#: wb_subversion_list_handler.py:63
+#: wb_subversion_tree_handler.py:182
+msgid "Properties..."
+msgstr "Tulajdons叩gok..."
+
+#: wb_frame.py:102
+#: wb_subversion_list_handler.py:68
+#: wb_subversion_tree_handler.py:188
+msgid "Update"
+msgstr "Friss鱈t辿s"
+
+#: wb_frame.py:103
+msgid "Update to..."
+msgstr "Friss鱈t辿s..."
+
+#: wb_frame.py:104
+#: wb_subversion_list_handler.py:39
+#: wb_subversion_tree_handler.py:185
+msgid "Checkout"
+msgstr "Ellenナ喪zテゥs"
+
+#: wb_frame.py:105
+#: wb_subversion_tree_handler.py:186
+msgid "Checkout to..."
+msgstr "Ellenナ喪zテゥs..."
+
+#: wb_frame.py:107
+#: wb_subversion_list_handler.py:71
+#: wb_subversion_tree_handler.py:191
+msgid "Checkin..."
+msgstr "Ellenナ喪zテゥs..."
+
+#: wb_frame.py:109
+#: wb_subversion_list_handler.py:65
+#: wb_subversion_report_lock.py:202
+msgid "Lock..."
+msgstr "Z叩r叩s..."
+
+#: wb_frame.py:110
+#: wb_subversion_list_handler.py:66
+#: wb_subversion_report_lock.py:203
+msgid "Unlock..."
+msgstr "Nyit叩s..."
+
+#: wb_frame.py:112
+#: wb_subversion_tree_handler.py:193
+msgid "New File..."
+msgstr "テ嗚 fテ。jl..."
+
+#: wb_frame.py:113
+#: wb_subversion_tree_handler.py:194
+msgid "Make directory..."
+msgstr "K旦nyvt叩r k辿sz鱈t辿se..."
+
+#: wb_frame.py:115
+#: wb_subversion_list_handler.py:74
+#: wb_subversion_tree_handler.py:196
+msgid "Rename..."
+msgstr "テ》nevezテゥs..."
+
+#: wb_frame.py:117
+#: wb_frame.py:167
+#: wb_subversion_list_handler.py:76
+#: wb_subversion_tree_handler.py:198
+msgid "Delete..."
+msgstr "T旦rl辿s..."
+
+#: wb_frame.py:117
+msgid "Delete"
+msgstr "T旦rl辿s"
+
+#: wb_frame.py:118
+#: wb_subversion_checkin.py:352
+#: wb_subversion_list_handler.py:77
+#: wb_subversion_tree_handler.py:199
+msgid "Revert..."
+msgstr "Visszavon叩s..."
+
+#: wb_frame.py:118
+#: wb_subversion_checkin.py:93
+#: wb_subversion_checkin.py:378
+#: wb_subversion_list_handler.py:399
+#: wb_subversion_tree_handler.py:819
+msgid "Revert"
+msgstr "Visszavon叩s"
+
+#: wb_frame.py:120
+#: wb_subversion_list_handler.py:79
+#: wb_subversion_tree_handler.py:201
+msgid "Clean up"
+msgstr "Tiszt鱈t叩s"
+
+#: wb_frame.py:120
+msgid "Clean up working copy"
+msgstr "Munkap辿ld叩ny tiszt鱈t叩sa"
+
+#: wb_frame.py:122
+msgid "Create Tag..."
+msgstr "Tag k辿sz鱈t辿se..."
+
+#: wb_frame.py:123
+msgid "Create Branch..."
+msgstr "Branch k辿sz鱈t辿se..."
+
+#: wb_frame.py:126
+msgid "Working copy Locks..."
+msgstr "Munkap辿ld叩ny z叩r叩sa..."
+
+#: wb_frame.py:126
+msgid "Locks held in Working Copy"
+msgstr "Munkap辿ld叩ny z叩rva tart叩sa"
+
+#: wb_frame.py:127
+msgid "Repository Locks..."
+msgstr "T叩rol坦 z叩r叩sa..."
+
+#: wb_frame.py:127
+msgid "Locks held in Repository"
+msgstr "T叩rol坦 z叩rva tart叩sa"
+
+#: wb_frame.py:129
+msgid "Changes..."
+msgstr "V叩ltoz叩sok..."
+
+#: wb_frame.py:129
+msgid "Changes available for checkin"
+msgstr "Vテ。ltozテ。sok hasznテ。lata ellenナ喪zテゥshez"
+
+#: wb_frame.py:130
+msgid "Updates..."
+msgstr "Friss鱈t辿s..."
+
+#: wb_frame.py:130
+msgid "Updates available in the Repository"
+msgstr "Friss鱈t辿sek haszn叩lata a t叩rol坦ban"
+
+#: wb_frame.py:131
+msgid "Branch changes..."
+msgstr "Branch cser辿je"
+
+#: wb_frame.py:131
+msgid "Files changed in this branch"
+msgstr "F叩jlok cser辿je ebben a branchban"
+
+#: wb_frame.py:134
+msgid "Show &Controlled files"
+msgstr "&Ellenナ喪zテカtt fテ。jlok mutatテ。sa"
+
+#: wb_frame.py:134
+msgid "Show Controlled files"
+msgstr "Ellenナ喪zテカtt fテ。jlok mutatテ。sa"
+
+#: wb_frame.py:135
+msgid "Show &Uncontrolled files"
+msgstr "Ellenナ喪izetlen fテ。jlok mutatテ。sa"
+
+#: wb_frame.py:135
+msgid "Show Uncontrolled files"
+msgstr "Ellenナ喪izetlen fテ。jlok mutatテ。sa"
+
+#: wb_frame.py:136
+msgid "Show &Ignored files"
+msgstr "Kihagyott f叩jlok mutat叩sa"
+
+#: wb_frame.py:136
+msgid "Show ignored files"
+msgstr "Kihagyott f叩jlok mutat叩sa"
+
+#: wb_frame.py:137
+msgid "Show &Only changed files"
+msgstr "Csak a m坦dos鱈tott f叩jlok mutat叩sa"
+
+#: wb_frame.py:137
+msgid "Filter out unchanged files"
+msgstr "Filter kikapcsol叩sa a nem v叩ltozott f叩jlokn叩l"
+
+#: wb_frame.py:139
+msgid "Show &Recursive files"
+msgstr "Rekurz鱈v f叩jlok mutat叩sa"
+
+#: wb_frame.py:139
+msgid "Show recursive files"
+msgstr "Rekurz鱈v f叩jlok mutat叩sa"
+
+#: wb_frame.py:141
+msgid "Use WorkBench Diff"
+msgstr "WorkBench 旦sszehasonl鱈t坦 haszn叩lata"
+
+#: wb_frame.py:142
+msgid "Use External GUI Diff"
+msgstr "Kテシlsナ_ GUI テカsszehasonlテュtテウ hasznテ。lata"
+
+#: wb_frame.py:143
+msgid "Use External Text Diff"
+msgstr "Sz旦veges 旦sszehasonl鱈t坦 haszn叩lata"
+
+#: wb_frame.py:144
+msgid "Use SVN Diff"
+msgstr "SVN 旦sszehasonl鱈t坦 haszn叩lata"
+
+#: wb_frame.py:146
+msgid "&Refresh\tF5"
+msgstr "Friss鱈t辿s\tF5"
+
+#: wb_frame.py:146
+msgid "Refresh display"
+msgstr "Kテゥpernyナ_ frissテュtテゥse"
+
+#: wb_frame.py:147
+msgid "&Automatic Refresh"
+msgstr "&Automatikus friss鱈t辿s"
+
+#: wb_frame.py:147
+msgid "Automatic refresh"
+msgstr "Automatikus friss鱈t辿s"
+
+#: wb_frame.py:157
+msgid "Add Bookmark"
+msgstr "Kテカnyvjelzナ_ hozzテ。adテ。sa"
+
+#: wb_frame.py:158
+msgid "Manage..."
+msgstr "Int辿z..."
+
+#: wb_frame.py:164
+#: wb_subversion_tree_handler.py:195
+msgid "Add..."
+msgstr "Hozz叩ad..."
+
+#: wb_frame.py:164
+msgid "Project Add"
+msgstr "Projekt hozz叩ad叩sa"
+
+#: wb_frame.py:165
+msgid "Settings..."
+msgstr "Be叩ll鱈t叩sok..."
+
+#: wb_frame.py:165
+#: wb_project_dialogs.py:303
+#: wb_tree_panel.py:574
+msgid "Project Settings"
+msgstr "Projekt be叩ll鱈t叩sok"
+
+#: wb_frame.py:167
+#: wb_tree_panel.py:575
+#: wb_tree_panel.py:616
+msgid "Delete Project"
+msgstr "Projekt t旦rl辿se"
+
+#: wb_frame.py:170
+msgid "&About..."
+msgstr "&N辿vjegy"
+
+#: wb_frame.py:170
+msgid "About the application"
+msgstr "Alkalmaz叩s n辿vjegye"
+
+#: wb_frame.py:174
+msgid "&File"
+msgstr "F叩jl"
+
+#: wb_frame.py:175
+msgid "&Edit"
+msgstr "Szerkeszt辿s"
+
+#: wb_frame.py:176
+msgid "&View"
+msgstr "N辿zet"
+
+#: wb_frame.py:177
+#: wb_subversion_checkin.py:60
+#: wb_subversion_report_branch_changes.py:40
+#: wb_subversion_report_lock.py:48
+#: wb_subversion_report_revision_changes.py:55
+#: wb_subversion_report_updates.py:51
+msgid "&Actions"
+msgstr "M撤velet"
+
+#: wb_frame.py:178
+msgid "&Reports"
+msgstr "Besz叩mol坦"
+
+#: wb_frame.py:179
+msgid "&Bookmarks"
+msgstr "Kテカnyvjelzナ_"
+
+#: wb_frame.py:180
+msgid "&Project"
+msgstr "Projekt"
+
+#: wb_frame.py:181
+msgid "&Help"
+msgstr "S炭g坦"
+
+#: wb_frame.py:198
+msgid "Work Bench"
+msgstr "Work Bench"
+
+#: wb_frame.py:200
+#: wb_frame.py:483
+#: wb_subversion_checkin.py:257
+#: wb_subversion_list_handler_common.py:704
+#: wb_subversion_list_handler_common.py:737
+#: wb_subversion_list_handler_common.py:773
+#: wb_subversion_list_handler_common.py:821
+#: wb_subversion_list_handler_common.py:868
+#: wb_subversion_list_handler_common.py:906
+#: wb_subversion_list_handler_common.py:951
+#: wb_subversion_list_handler_common.py:1017
+#: wb_subversion_list_handler.py:467
+#: wb_subversion_list_handler.py:520
+#: wb_subversion_report_revision_changes.py:143
+#: wb_subversion_report_revision_changes.py:180
+#: wb_subversion_report_revision_changes.py:219
+#: wb_subversion_report_updates.py:159
+#: wb_subversion_tree_handler.py:244
+#: wb_subversion_tree_handler.py:282
+#: wb_subversion_tree_handler.py:296
+#: wb_subversion_tree_handler.py:325
+#: wb_subversion_tree_handler.py:348
+#: wb_subversion_tree_handler.py:416
+#: wb_subversion_tree_handler.py:451
+#: wb_subversion_tree_handler.py:490
+#: wb_subversion_tree_handler.py:629
+#: wb_subversion_tree_handler.py:672
+#: wb_subversion_tree_handler.py:779
+#: wb_subversion_tree_handler.py:894
+msgid "Ready"
+msgstr "K辿sz"
+
+#: wb_frame.py:465
+#, python-format
+msgid "Work Bench version: %s"
+msgstr "Work Bench verzi坦: %s"
+
+#: wb_frame.py:469
+msgid ""
+"\n"
+"Copyright Barry Scott (c) 2003-2009. All rights reserved"
+msgstr ""
+"\n"
+"Copyright Barry Scott (C) 2003-2009. Minden jog fenntartva!"
+
+#: wb_frame.py:673
+#, python-format
+msgid "Adding bookmark to %s"
+msgstr "Kテカnyvjelzナ_ hozzテ。adテ。sa %s"
+
+#: wb_list_panel_common.py:108
+#: wb_list_panel_common.py:511
+#: wb_subversion_list_handler_common.py:31
+#: wb_subversion_list_handler_common.py:110
+#: wb_subversion_list_handler_common.py:243
+#: wb_subversion_report_branch_changes.py:147
+#: wb_subversion_report_lock.py:183
+#: wb_subversion_report_revision_changes.py:266
+#: wb_subversion_report_updates.py:205
+msgid "Name"
+msgstr "N辿v"
+
+#: wb_list_panel_common.py:511
+#: wb_subversion_annotate.py:59
+#: wb_subversion_history.py:71
+#: wb_subversion_history.py:377
+#: wb_subversion_history.py:503
+#: wb_subversion_list_handler_common.py:35
+#: wb_subversion_list_handler_common.py:114
+#: wb_subversion_list_handler_common.py:246
+msgid "Author"
+msgstr "Szerzナ_"
+
+#: wb_preferences_dialog.py:32
+msgid "PreferencesDialog"
+msgstr "Be叩ll鱈t叩sok p叩rbesz辿d"
+
+#: wb_preferences_dialog.py:106
+msgid "Editor"
+msgstr "Szerkesztナ_"
+
+#: wb_preferences_dialog.py:111
+msgid "Editor: "
+msgstr "Szerkesztナ_"
+
+#: wb_preferences_dialog.py:114
+msgid "Edit Arguments: "
+msgstr "Szerkesztナ_ paramテゥterei:"
+
+#: wb_preferences_dialog.py:117
+#: wb_preferences_dialog.py:210
+#: wb_project_dialogs.py:58
+#: wb_project_dialogs.py:87
+#: wb_project_dialogs.py:477
+#: wb_project_dialogs.py:636
+msgid " Browse... "
+msgstr " Keres..."
+
+#: wb_preferences_dialog.py:143
+#: wb_preferences_dialog.py:267
+msgid "Executable files (*.exe)|*.exe"
+msgstr "V辿grehajthat坦 f叩jlok (*.exe)|*.exe"
+
+#: wb_preferences_dialog.py:145
+#: wb_preferences_dialog.py:269
+msgid "Applications|*.app|Executable files|*"
+msgstr "Alkalmaz叩sok|*.app|V辿grehajthat坦 f叩jlok|*"
+
+#: wb_preferences_dialog.py:147
+#: wb_preferences_dialog.py:271
+msgid "Executable files|*"
+msgstr "V辿grehajthat坦 f叩jlok|*"
+
+#: wb_preferences_dialog.py:152
+#: wb_preferences_dialog.py:276
+msgid "Choose an Executable file"
+msgstr "V辿grehajthat坦 f叩jl v叩laszt叩sa"
+
+#: wb_preferences_dialog.py:182
+msgid "You must enter a valid editor executable"
+msgstr "テ詠vテゥnyes szerkesztナ_ megadテ。sa szテシksテゥges"
+
+#: wb_preferences_dialog.py:183
+#: wb_preferences_dialog.py:573
+#: wb_preferences_dialog.py:584
+#: wb_preferences_dialog.py:631
+#: wb_preferences_dialog.py:644
+#: wb_preferences_dialog.py:695
+#: wb_preferences_dialog.py:761
+#: wb_preferences_dialog.py:773
+#: wb_preferences_dialog.py:968
+#: wb_subversion_checkin.py:314
+#: wb_subversion_list_handler.py:224
+#: wb_subversion_list_handler.py:464
+#: wb_subversion_list_handler.py:517
+#: wb_subversion_properties_dialog.py:93
+#: wb_subversion_properties_dialog.py:114
+#: wb_subversion_tree_handler.py:355
+#: wb_subversion_tree_handler.py:637
+#: wb_subversion_tree_handler.py:640
+#: wb_subversion_tree_handler.py:669
+#: wb_subversion_tree_handler.py:815
+#: wb_subversion_tree_handler.py:891
+msgid "Warning"
+msgstr "Vigy叩zat"
+
+#: wb_preferences_dialog.py:193
+msgid "Diff Tool"
+msgstr "テ穆szehasonlテュtテウ eszkテカz"
+
+#: wb_preferences_dialog.py:201
+msgid "Work Bench Diff"
+msgstr "Work Bench 旦sszehasonl鱈t坦"
+
+#: wb_preferences_dialog.py:201
+msgid "External GUI Diff Command"
+msgstr "Kテシlsナ_ GUI テカsszehasonlテュtテウ parancs"
+
+#: wb_preferences_dialog.py:201
+msgid "External Text Diff"
+msgstr "Kテシlsナ_ szテカveges テカsszehasonlテュtテウ"
+
+#: wb_preferences_dialog.py:201
+msgid "SVN diff"
+msgstr "SVN 旦sszehasonl鱈t坦"
+
+#: wb_preferences_dialog.py:215
+msgid "Mode: "
+msgstr "M坦dszer:"
+
+#: wb_preferences_dialog.py:219
+msgid "Diff Tool: "
+msgstr "テ穆szehasonlテュtテウ eszkテカz:"
+
+#: wb_preferences_dialog.py:223
+msgid "Tool Arguments: "
+msgstr "Eszk旦z param辿terei:"
+
+#: wb_preferences_dialog.py:227
+msgid "Use"
+msgstr "Alkalmaz叩s"
+
+#: wb_preferences_dialog.py:228
+msgid ""
+"%nl for left file name, %nr for right file name,\n"
+"%tl for left title, %tr for right title"
+msgstr ""
+"%nl bal oldali f叩jln辿v, %nr jobb oldali f叩jl n辿v,\n"
+"%tl for bal oldali c鱈m, %tr jobb oldali c鱈m"
+
+#: wb_preferences_dialog.py:293
+msgid "Shell"
+msgstr "Keret"
+
+#: wb_preferences_dialog.py:298
+msgid "Terminal Init Command: "
+msgstr "Termin叩l ind鱈t坦 parancs:"
+
+#: wb_preferences_dialog.py:306
+msgid "Terminal Program: "
+msgstr "Terminal program: "
+
+#: wb_preferences_dialog.py:323
+msgid "File Browser Program: "
+msgstr "Fテ。jl keresナ_ program: "
+
+#: wb_preferences_dialog.py:358
+msgid "View"
+msgstr "N辿zet"
+
+#: wb_preferences_dialog.py:366
+msgid "Exclude filename"
+msgstr "Kihagyott f叩jln辿v"
+
+#: wb_preferences_dialog.py:372
+msgid " Add "
+msgstr " Hozz叩ad"
+
+#: wb_preferences_dialog.py:484
+msgid "Columns"
+msgstr "Oszlopok"
+
+#: wb_preferences_dialog.py:492
+#: wb_preferences_dialog.py:499
+msgid "Column"
+msgstr "Oszlop"
+
+#: wb_preferences_dialog.py:494
+#: wb_preferences_dialog.py:501
+msgid "Width"
+msgstr "Sz辿less辿g"
+
+#: wb_preferences_dialog.py:519
+#: wb_preferences_dialog.py:818
+msgid " Include --> "
+msgstr "Tartalmaz --> "
+
+#: wb_preferences_dialog.py:521
+#: wb_preferences_dialog.py:820
+msgid " <-- Exclude "
+msgstr " <-- Kihagy"
+
+#: wb_preferences_dialog.py:524
+#: wb_preferences_dialog.py:823
+msgid " Move Up "
+msgstr "Felfel辿"
+
+#: wb_preferences_dialog.py:526
+#: wb_preferences_dialog.py:825
+msgid " Move Down "
+msgstr "Lefel辿"
+
+#: wb_preferences_dialog.py:571
+#: wb_preferences_dialog.py:629
+#, python-format
+msgid "Width for %(name)s must be an number between %(min)d and %(max)d"
+msgstr "Sz辿less辿g 辿rt辿ke %(name)s egy %(min)d 辿s %(max)d k旦z旦tti sz叩m kell legyen"
+
+#: wb_preferences_dialog.py:582
+#: wb_preferences_dialog.py:642
+#, python-format
+msgid "Width for %(name)s must be between %(min)d and %(max)d"
+msgstr "Sz辿less辿g 辿rt辿ke %(name)s %(min)d 辿s %(max)d k旦z旦tt kell legyen"
+
+#: wb_preferences_dialog.py:694
+msgid "You must include the Name column"
+msgstr "Sz端ks辿ges tartalmaznia az oszlop nev辿t"
+
+#: wb_preferences_dialog.py:705
+#: wb_subversion_history.py:183
+msgid "Log History"
+msgstr "Naplテウ elナ想mテゥnyek"
+
+#: wb_preferences_dialog.py:711
+#: wb_subversion_history.py:194
+msgid "Show all entries"
+msgstr "テ穆sze bejegyzテゥs mutatテ。sa"
+
+#: wb_preferences_dialog.py:711
+msgid "Show only"
+msgstr "Csak mutassa"
+
+#: wb_preferences_dialog.py:711
+msgid "Show since"
+msgstr "Mutat onnant坦l"
+
+#: wb_preferences_dialog.py:712
+msgid "Default mode: "
+msgstr "Alaphelyzet:"
+
+#: wb_preferences_dialog.py:716
+msgid "Default limit: "
+msgstr "Alap辿rt辿k:"
+
+#: wb_preferences_dialog.py:719
+msgid "Default since interval (days): "
+msgstr "Eltelt idナ奏artam napokban:"
+
+#: wb_preferences_dialog.py:722
+msgid "Default Include tags: "
+msgstr "Alap辿rtelmezett tag:"
+
+#: wb_preferences_dialog.py:723
+#: wb_subversion_history.py:222
+msgid "Include tags in log history"
+msgstr "Tagek az elナ想mテゥnyek naplテウban"
+
+#: wb_preferences_dialog.py:760
+msgid "Limit must be greater then 0"
+msgstr "Nagyobb kell legyen az 辿rt辿k, mint 0"
+
+#: wb_preferences_dialog.py:772
+msgid "Since days must be greater then 0"
+msgstr "Eltelt napok 辿rt辿ke nagyobb, mint 0"
+
+#: wb_preferences_dialog.py:791
+msgid "Toolbar"
+msgstr "Eszk旦zt叩r"
+
+#: wb_preferences_dialog.py:800
+#: wb_preferences_dialog.py:805
+msgid "Toolbar Group"
+msgstr "Eszk旦zt叩r csoport"
+
+#: wb_preferences_dialog.py:829
+msgid "Display toolbar: "
+msgstr "Eszk旦zt叩r megjelen鱈t辿se:"
+
+#: wb_preferences_dialog.py:830
+msgid "Enabled"
+msgstr "Enged辿lyezett"
+
+#: wb_preferences_dialog.py:832
+msgid "Orientation: "
+msgstr "Ir叩nyults叩g:"
+
+#: wb_preferences_dialog.py:833
+msgid "Horizontal"
+msgstr "V鱈zszintes"
+
+#: wb_preferences_dialog.py:833
+msgid "Vertical"
+msgstr "Fテシggナ鼠eges"
+
+#: wb_preferences_dialog.py:839
+msgid "Small"
+msgstr "Kicsi"
+
+#: wb_preferences_dialog.py:839
+msgid "Large"
+msgstr "Nagy"
+
+#: wb_preferences_dialog.py:839
+msgid "Huge"
+msgstr "Hatalmas"
+
+#: wb_preferences_dialog.py:841
+msgid "Icon size: "
+msgstr "Ikon m辿rete:"
+
+#: wb_preferences_dialog.py:967
+msgid "You must include at least one Toolbar group"
+msgstr "Legal叩bb egy eszk旦zt叩r csoportot kell tartalmazni"
+
+#: wb_preferences_dialog.py:978
+msgid "Advanced"
+msgstr "Halad坦"
+
+#: wb_preferences_dialog.py:985
+msgid "Allow arbitrary paths for tag/branch"
+msgstr "テ墨kテゥnyes テコtvonalak megengedテゥse tag/branch-テゥrt"
+
+#: wb_preferences.py:117
+#, python-format
+msgid "Wrote preferences to %s"
+msgstr "Tulajdons叩gok 鱈r叩sa ide %s"
+
+#: wb_preferences.py:127
+#: wb_preferences.py:130
+#, python-format
+msgid "Reading preferences from %s"
+msgstr "Tulajdons叩gok kiolvas叩sa innen %s"
+
+#: wb_project_dialogs.py:48
+msgid "Project"
+msgstr "Projekt"
+
+#: wb_project_dialogs.py:52
+msgid "Project Name:"
+msgstr "Projekt neve:"
+
+#: wb_project_dialogs.py:60
+#: wb_project_dialogs.py:475
+#: wb_project_dialogs.py:634
+#: wb_project_dialogs.py:744
+msgid "Working copy Path:"
+msgstr "Munkap辿ld叩ny 炭tvonal:"
+
+#: wb_project_dialogs.py:67
+msgid "Subversion Trunk URL:"
+msgstr "Subversion t旦rzs URL:"
+
+#: wb_project_dialogs.py:73
+msgid "Subversion Tags URL:"
+msgstr "Subversion tagek URL:"
+
+#: wb_project_dialogs.py:79
+msgid "Subversion Branches URL:"
+msgstr "Subversion branch URL:"
+
+#: wb_project_dialogs.py:85
+msgid "New File Template Folder: "
+msgstr "テ嗚 fテ。jl sablon dossziテゥ:"
+
+#: wb_project_dialogs.py:93
+msgid "Background Colour: "
+msgstr "H叩tt辿rsz鱈n:"
+
+#: wb_project_dialogs.py:94
+msgid "Use custom background colour"
+msgstr "Saj叩t h叩tt辿rsz鱈n haszn叩lata"
+
+#: wb_project_dialogs.py:95
+msgid "Example"
+msgstr "P辿ld叩ul"
+
+#: wb_project_dialogs.py:96
+msgid " Pick Colour... "
+msgstr " Sz鱈n kijel旦l辿se..."
+
+#: wb_project_dialogs.py:185
+msgid "Enter a project name"
+msgstr "Proekt n辿v megad叩sa"
+
+#: wb_project_dialogs.py:189
+#, python-format
+msgid "Project %s already exist. Choose another name"
+msgstr "Projket %s m叩r l辿tezik. V叩laszon m叩sik nevet."
+
+#: wb_project_dialogs.py:195
+msgid "Enter a Subversion trunk URL"
+msgstr "Subversion t旦rzs URL megad叩sa"
+
+#: wb_project_dialogs.py:199
+#, python-format
+msgid "%s is not a valid Subversion trunk URL"
+msgstr "%s nem egy 辿rv辿nyes Subversion t旦rzs URL"
+
+#: wb_project_dialogs.py:205
+#: wb_project_dialogs.py:211
+#, python-format
+msgid "%s is not a valid Subversion tags URL"
+msgstr "%s nem egy 辿rv辿nyes Subversion tag URL"
+
+#: wb_project_dialogs.py:216
+msgid "Enter a Working copy path"
+msgstr "Munkap辿ld叩ny 炭tvonal megad叩sa"
+
+#: wb_project_dialogs.py:228
+#: wb_project_dialogs.py:538
+#: wb_project_dialogs.py:714
+msgid "Select Working Copy directory"
+msgstr "Munkap辿ld叩ny k旦nyvt叩r megad叩sa"
+
+#: wb_project_dialogs.py:247
+msgid "Select New File Template directory"
+msgstr "テ嗚 fテ。jl sablon kテカnyvtテ。r kivテ。lasztテ。sa"
+
+#: wb_project_dialogs.py:347
+msgid "Add Project"
+msgstr "Projekt hozz叩ad叩sa"
+
+#: wb_project_dialogs.py:444
+msgid "Working Copy"
+msgstr "Munkap辿ld叩ny"
+
+#: wb_project_dialogs.py:445
+msgid " Use new working copy directory "
+msgstr " テ嗚 munkapテゥldテ。ny kテカnyvtテ。r hasznテ。lata"
+
+#: wb_project_dialogs.py:446
+msgid " Use existing Working copy directory "
+msgstr " Meglテゥvナ_ munkapテゥldテ。ny kテカnyvtテ。r hasznテ。lata"
+
+#: wb_project_dialogs.py:470
+msgid "Select Working Copy"
+msgstr "Munkap辿ld叩ny kiv叩laszt叩sa"
+
+#: wb_project_dialogs.py:487
+#: wb_project_dialogs.py:583
+#: wb_project_dialogs.py:646
+#: wb_project_dialogs.py:751
+msgid "Subversion URL:"
+msgstr "Subversion URL:"
+
+#: wb_project_dialogs.py:512
+#, python-format
+msgid ""
+"Path %s\n"
+"Does not exist\n"
+"Choose an existing subversion working copy directory"
+msgstr ""
+"テ嗾vonal %s\n"
+"Nem l辿tezik\n"
+"Vテ。laszon egy lテゥtezナ_ Subversion munkapテゥldテ。ny kテカnyvtテ。rat"
+
+#: wb_project_dialogs.py:519
+#, python-format
+msgid ""
+"Path %s\n"
+"Is not a directory\n"
+"Choose an existing subversion working copy directory"
+msgstr ""
+"テ嗾vonal %s\n"
+"ez nem egy k旦nyvt叩r\n"
+"Vテ。laszon egy lテゥtezナ_ Subversion munkapテゥldテ。ny kテカnyvtテ。rat"
+
+#: wb_project_dialogs.py:526
+#, python-format
+msgid ""
+"Path %s\n"
+"Is not a subversion working copy\n"
+"Choose an existing subversion working copy directory"
+msgstr ""
+"テ嗾vonal %s\n"
+"ez nem egy lテゥtezナ_ Subversion munkapテゥldテ。ny\n"
+"Vテ。laszon egy lテゥtezナ_ Subversion munkapテゥldテ。ny kテカnyvtテ。rat"
+
+#: wb_project_dialogs.py:577
+msgid "Select Subversion URL"
+msgstr "Subversion URL v叩laszt叩sa"
+
+#: wb_project_dialogs.py:603
+msgid "Enter a Subversion URL"
+msgstr "Subversion URL megad叩sa"
+
+#: wb_project_dialogs.py:607
+#, python-format
+msgid "%s is not a valid Subversion URL"
+msgstr "%s nem egy 辿rv辿nyes Subversion URL"
+
+#: wb_project_dialogs.py:615
+#, python-format
+msgid ""
+"%(url)s is not a accessable Subversion URL\n"
+"%(error)s"
+msgstr ""
+"%(url)s nem egy hozzテ。fテゥrhetナ_ Subversion URL\n"
+"%(error)s"
+
+#: wb_project_dialogs.py:628
+msgid "Create new Working Copy"
+msgstr "テ嗚 munkapテゥldテ。ny kテゥszテュtテゥse"
+
+#: wb_project_dialogs.py:664
+msgid "Choose a directory that is empty and not in used by subversion"
+msgstr "V叩lasszon egy k旦nyvt叩rat, amely 端res 辿s nem haszn叩lja a Subversion"
+
+#: wb_project_dialogs.py:670
+#, python-format
+msgid ""
+"Path %s\n"
+"Is not a directory\n"
+"Choose a directory that is empty and not in use by subversion"
+msgstr ""
+"テ嗾vonal %s\n"
+"ez nem egy k旦nyvt叩r\n"
+"V叩lasszon egy k旦nyvt叩rat, amely 端res 辿s nem haszn叩lja a Subversion"
+
+#: wb_project_dialogs.py:678
+#, python-format
+msgid ""
+"Path %s\n"
+"Is a subversion working copy\n"
+"Choose a directory that is empty and not in use by subversion"
+msgstr ""
+"テ嗾vonal %s\n"
+"ez egy Subversion munkap辿ld叩ny\n"
+"V叩lasszon egy k旦nyvt叩rat, amely 端res 辿s nem haszn叩lja a Subversion"
+
+#: wb_project_dialogs.py:691
+#, python-format
+msgid ""
+"Path %s\n"
+"Is not an empty directory\n"
+"Choose a directory that is empty and not in use by subversion"
+msgstr ""
+"テ嗾vonal %s\n"
+"ez nem egy 端res k旦nyvt叩r\n"
+"V叩lasszon egy k旦nyvt叩rat, amely 端res 辿s nem haszn叩lja a Subversion"
+
+#: wb_project_dialogs.py:700
+#, python-format
+msgid ""
+"Path %(path)s\n"
+"%(error)s\n"
+"Choose a directory that is empty and not in use by subversion"
+msgstr ""
+"テ嗾vonal %(path)s\n"
+"%(error)s\n"
+"V叩lasszon egy k旦nyvt叩rat, amely 端res 辿s nem haszn叩lja a Subversion"
+
+#: wb_project_dialogs.py:727
+msgid "Project Name"
+msgstr "Projekt neve"
+
+#: wb_project_dialogs.py:733
+msgid "Project name:"
+msgstr "Projekt neve"
+
+#: wb_project_dialogs.py:768
+msgid ""
+"Project name is blank.\n"
+"Enter a project name"
+msgstr ""
+"Projekt neve nincs kit旦ltve.\n"
+"Adja meg a nevet"
+
+#: wb_project_dialogs.py:774
+#, python-format
+msgid ""
+"Project %s already exist.\n"
+"Choose another name"
+msgstr ""
+"Projekt neve %s m叩r l辿tezik.\n"
+"V叩lasszon m叩sik nevet"
+
+#: wb_shell_macosx_commands.py:58
+#: wb_shell_unix_commands.py:51
+#: wb_shell_win32_commands.py:53
+#, python-format
+msgid "Open %s"
+msgstr "Megnyit叩s %s"
+
+#: wb_shell_win32_commands.py:61
+#, python-format
+msgid ""
+"Unable to shell open %s\n"
+"Is an application associated with this file type?"
+msgstr ""
+"Termin叩l nem nyithat坦 meg %s\n"
+"Van egy alkalmaz叩s rendelve ehhez a f叩jl t鱈pushoz?"
+
+#: wb_shell_win32_commands.py:64
+#, python-format
+msgid "Unable to shell open %(filename)s - %(error)s"
+msgstr "Termin叩l nem nyithat坦 meg %(filename)s - %(error)s"
+
+#: wb_shell_win32_commands.py:122
+#, python-format
+msgid ""
+"Create process failed for command - %(command)s\n"
+"Reason %(reason)s"
+msgstr ""
+"Sikertelen parancs - %(command)s\n"
+"Indok %(reason)s"
+
+#: wb_shell_win32_commands.py:131
+#, python-format
+msgid "Created directory %s"
+msgstr "K旦nyvt叩r l辿trehoz叩sa %s"
+
+#: wb_shell_win32_commands.py:134
+#, python-format
+msgid "Create directory %(dir)s - %(error)s"
+msgstr "K旦nyvt叩r l辿trehoz叩sa %(dir)s - %(error)s"
+
+#: wb_shell_win32_commands.py:140
+#, python-format
+msgid "%s is not a directory"
+msgstr "%s nem egy k旦nyvt叩r"
+
+#: wb_subversion_annotate.py:23
+#, python-format
+msgid "Annotation of %s"
+msgstr "Jegyzet %s"
+
+#: wb_subversion_annotate.py:57
+msgid "Line"
+msgstr "Sor"
+
+#: wb_subversion_annotate.py:58
+#: wb_subversion_history.py:502
+msgid "Revision"
+msgstr "Rev鱈zi坦"
+
+#: wb_subversion_annotate.py:60
+#: wb_subversion_history.py:504
+#: wb_subversion_list_handler_common.py:33
+#: wb_subversion_list_handler_common.py:112
+msgid "Date"
+msgstr "D叩tum"
+
+#: wb_subversion_annotate.py:61
+msgid "Text"
+msgstr "Sz旦veg"
+
+#: wb_subversion_checkin.py:33
+#, python-format
+msgid "Check in for %s"
+msgstr "Ellenナ喪zテゥs itt: %s"
+
+#: wb_subversion_checkin.py:54
+msgid "Select All"
+msgstr "テ穆szes kivテ。lasztテ。sa"
+
+#: wb_subversion_checkin.py:54
+msgid "Select ALl"
+msgstr "テ穆szes kivテ。lasztテ。sa"
+
+#: wb_subversion_checkin.py:56
+#: wb_subversion_report_updates.py:47
+msgid "Exclude..."
+msgstr "Kihagy..."
+
+#: wb_subversion_checkin.py:56
+#: wb_subversion_checkin.py:97
+#: wb_subversion_report_updates.py:70
+msgid "Exclude from check in"
+msgstr "Kizテ。rva az ellenナ喪zテゥsbナ鼠"
+
+#: wb_subversion_checkin.py:57
+#: wb_subversion_report_updates.py:48
+msgid "Include..."
+msgstr "Tartalmaz..."
+
+#: wb_subversion_checkin.py:57
+msgid "Include from check in"
+msgstr "Beleテゥrtve az ellenナ喪zテゥsbe"
+
+#: wb_subversion_checkin.py:72
+#: wb_toolbars.py:98
+msgid "Edit File"
+msgstr "F叩jl szerkeszt辿se"
+
+#: wb_subversion_checkin.py:76
+#: wb_toolbars.py:101
+msgid "Open File"
+msgstr "F叩jl megnyit叩sa"
+
+#: wb_subversion_checkin.py:80
+#: wb_toolbars.py:104
+msgid "Diff changes against base"
+msgstr "V叩ltoz叩sok 旦sszehasonl鱈t叩sa a b叩zisban"
+
+#: wb_subversion_checkin.py:83
+#: wb_subversion_report_branch_changes.py:55
+#: wb_subversion_report_lock.py:63
+#: wb_subversion_report_revision_changes.py:70
+#: wb_subversion_report_updates.py:66
+#: wb_toolbars.py:107
+msgid "Show History log"
+msgstr "Elナ想mテゥnyek mutatテ。sa"
+
+#: wb_subversion_checkin.py:86
+#: wb_subversion_report_branch_changes.py:58
+#: wb_subversion_report_lock.py:66
+#: wb_subversion_report_revision_changes.py:73
+#: wb_toolbars.py:110
+msgid "File Information"
+msgstr "F叩jl inform叩ci坦"
+
+#: wb_subversion_checkin.py:89
+#: wb_toolbars.py:113
+msgid "File Properties"
+msgstr "F叩jl tulajdons叩gok"
+
+#: wb_subversion_checkin.py:93
+#: wb_toolbars.py:122
+msgid "Revert selected Files and Folders"
+msgstr "F叩jlok 辿s k旦nyvt叩rak kiv叩laszt叩s叩nak visszavon叩sa"
+
+#: wb_subversion_checkin.py:100
+#: wb_subversion_report_updates.py:73
+msgid "Include in check in"
+msgstr "Beleテゥrtve az ellenナ喪zテゥsbe"
+
+#: wb_subversion_checkin.py:136
+msgid " Check In "
+msgstr "r"
+
+#: wb_subversion_checkin.py:242
+#, python-format
+msgid "Check in %s..."
+msgstr "Ellenナ喪zテゥs %s..."
+
+#: wb_subversion_checkin.py:243
+#, python-format
+msgid "Sent %(count)d of %(total)d"
+msgstr "Kテシldテゥs %(count)d, ennyibナ鼠 %(total)d"
+
+#: wb_subversion_checkin.py:265
+#, python-format
+msgid "Checkin created revision %d"
+msgstr "Ellenナ喪zテゥs kテゥszテュtett revテュziテウ %d"
+
+#: wb_subversion_checkin.py:267
+msgid "No changes to checkin "
+msgstr "Nincsenek cserテゥk az elleナ喪zテゥshez"
+
+#: wb_subversion_checkin.py:272
+msgid "Post commit error"
+msgstr "Bek端ld辿s ut叩ni hiba"
+
+#: wb_subversion_checkin.py:313
+#: wb_subversion_list_handler.py:223
+#: wb_subversion_tree_handler.py:354
+msgid "There are no changes to check in"
+msgstr "Nincsenek cserテゥk az ellenナ喪zテゥshez"
+
+#: wb_subversion_history.py:73
+#: wb_subversion_history.py:377
+#: wb_subversion_history.py:467
+#: wb_subversion_history.py:534
+msgid "Comment"
+msgstr "Megjegyz辿s"
+
+#: wb_subversion_history.py:75
+#: wb_subversion_history.py:377
+#: wb_subversion_history.py:522
+msgid "Path"
+msgstr "テ嗾vonal"
+
+#: wb_subversion_history.py:200
+msgid "Show only:"
+msgstr "Csak ezt mutassa:"
+
+#: wb_subversion_history.py:211
+msgid "Show since:"
+msgstr "Mutat onnant坦l:"
+
+#: wb_subversion_history.py:221
+msgid "Include tags: "
+msgstr "Tagek:"
+
+#: wb_subversion_history.py:312
+#: wb_subversion_history.py:331
+#, python-format
+msgid "History of %s"
+msgstr "Elナ想mテゥnyek %s"
+
+#: wb_subversion_history.py:505
+msgid "Label"
+msgstr "C鱈mke"
+
+#: wb_subversion_history.py:506
+msgid "Message"
+msgstr "テ忝enet"
+
+#: wb_subversion_history.py:521
+msgid "Action"
+msgstr "M撤velet"
+
+#: wb_subversion_history.py:523
+msgid "Copied Revision"
+msgstr "M叩solva"
+
+#: wb_subversion_history.py:524
+msgid "Copied from"
+msgstr "M叩solva"
+
+#: wb_subversion_history.py:536
+msgid "Changed Paths"
+msgstr "M坦dos鱈tott 炭tvonalak"
+
+#: wb_subversion_history.py:623
+msgid "Diff"
+msgstr "テ穆szehasonlテュtテ。s"
+
+#: wb_subversion_history.py:625
+msgid "Annotate"
+msgstr "Jegyzet"
+
+#: wb_subversion_history.py:627
+msgid "Revision Changes"
+msgstr "V叩ltoz叩sok revizi坦ja"
+
+#: wb_subversion_history.py:724
+msgid "Log history View not implemented"
+msgstr "Naplテウ elナ想mテゥny nテゥzete nem megvalテウsテュthatテウ"
+
+#: wb_subversion_history.py:906
+#, python-format
+msgid "Revision changes for r%(rev1)d ignored. Its URL \"%(url1)s\" does not match r%(rev2)d URL \"%(url2)s\"."
+msgstr "Revテュziテウ cserテゥje r%(rev1)d mellナ想ve. Ez az URL \"%(url1)s\" nem pテ。rja a r%(rev2)d URL-nek \"%(url2)s\"."
+
+#: wb_subversion_info_dialog.py:25
+msgid "Entry"
+msgstr "Bejegyz辿s"
+
+#: wb_subversion_info_dialog.py:26
+msgid "Path:"
+msgstr "テ嗾vonal"
+
+#: wb_subversion_info_dialog.py:58
+#: wb_subversion_info_dialog.py:102
+msgid "URL:"
+msgstr "URL:"
+
+#: wb_subversion_info_dialog.py:60
+msgid "Repository:"
+msgstr "T叩rol坦:"
+
+#: wb_subversion_info_dialog.py:62
+#: wb_subversion_info_dialog.py:106
+msgid "Repository UUID:"
+msgstr "T叩rol坦 UUID:"
+
+#: wb_subversion_info_dialog.py:66
+#: wb_subversion_info_dialog.py:68
+#: wb_subversion_info_dialog.py:70
+#: wb_subversion_info_dialog.py:72
+#: wb_subversion_info_dialog.py:110
+#: wb_subversion_info_dialog.py:112
+#: wb_subversion_info_dialog.py:114
+#: wb_subversion_info_dialog.py:116
+msgid "Node kind:"
+msgstr "Node fajta:"
+
+#: wb_subversion_info_dialog.py:66
+#: wb_subversion_info_dialog.py:110
+msgid "file"
+msgstr "f叩jl"
+
+#: wb_subversion_info_dialog.py:68
+#: wb_subversion_info_dialog.py:112
+msgid "directory"
+msgstr "k旦nyvt叩r"
+
+#: wb_subversion_info_dialog.py:70
+#: wb_subversion_info_dialog.py:114
+msgid "none"
+msgstr "egyik sem"
+
+#: wb_subversion_info_dialog.py:72
+#: wb_subversion_info_dialog.py:116
+msgid "unknown"
+msgstr "ismeretlen"
+
+#: wb_subversion_info_dialog.py:75
+#: wb_subversion_info_dialog.py:77
+#: wb_subversion_info_dialog.py:79
+#: wb_subversion_info_dialog.py:81
+#: wb_subversion_info_dialog.py:143
+#: wb_subversion_info_dialog.py:145
+#: wb_subversion_info_dialog.py:147
+#: wb_subversion_info_dialog.py:149
+#: wb_subversion_info_dialog.py:151
+msgid "Schedule:"
+msgstr "Jegyz辿k:"
+
+#: wb_subversion_info_dialog.py:75
+#: wb_subversion_info_dialog.py:143
+msgid "normal"
+msgstr "norm叩l"
+
+#: wb_subversion_info_dialog.py:77
+#: wb_subversion_info_dialog.py:145
+msgid "add"
+msgstr "hozz叩ad叩s"
+
+#: wb_subversion_info_dialog.py:79
+#: wb_subversion_info_dialog.py:147
+msgid "delete"
+msgstr "t旦rl辿s"
+
+#: wb_subversion_info_dialog.py:81
+#: wb_subversion_info_dialog.py:149
+msgid "replace"
+msgstr "csere"
+
+#: wb_subversion_info_dialog.py:84
+#: wb_subversion_info_dialog.py:153
+msgid "Copied From URL:"
+msgstr "Mテ。solva errナ鼠 az URL-rナ鼠:"
+
+#: wb_subversion_info_dialog.py:86
+#: wb_subversion_info_dialog.py:155
+msgid "Copied From Revision:"
+msgstr "Mテ。solva ebbナ鼠 a revテュziテウbテウl:"
+
+#: wb_subversion_info_dialog.py:88
+#: wb_subversion_info_dialog.py:119
+msgid "Last Changed Author:"
+msgstr "Szerzナ_ utolsテウ vテ。ltozテ。sa:"
+
+#: wb_subversion_info_dialog.py:90
+#: wb_subversion_info_dialog.py:121
+msgid "Last Changed Revision:"
+msgstr "Rev鱈zi坦 utols坦 v叩ltoz叩sa:"
+
+#: wb_subversion_info_dialog.py:92
+#: wb_subversion_info_dialog.py:123
+msgid "Last Changed Date:"
+msgstr "D叩tum utols坦 v叩ltoz叩sa:"
+
+#: wb_subversion_info_dialog.py:94
+#: wb_subversion_info_dialog.py:157
+msgid "Text Last Updated:"
+msgstr "Sz旦veg utols坦 v叩ltoz叩sa:"
+
+#: wb_subversion_info_dialog.py:96
+#: wb_subversion_info_dialog.py:159
+msgid "Properties Last Updated:"
+msgstr "Tulajons叩gok utols坦 v叩ltoz叩sa:"
+
+#: wb_subversion_info_dialog.py:98
+#: wb_subversion_info_dialog.py:161
+msgid "Checksum:"
+msgstr "Ellenテカrzナ_ テカsszeg:"
+
+#: wb_subversion_info_dialog.py:104
+msgid "Repository root URL:"
+msgstr "T叩rol坦 gy旦k辿r URL:"
+
+#: wb_subversion_info_dialog.py:125
+#: wb_subversion_list_handler_common.py:927
+msgid "Lock"
+msgstr "Z叩r叩s"
+
+#: wb_subversion_info_dialog.py:128
+msgid "Lock Owner:"
+msgstr "Z叩r叩s tulajdonosa:"
+
+#: wb_subversion_info_dialog.py:129
+msgid "Lock Creation Date:"
+msgstr "Z叩r叩s k辿sz鱈t辿s d叩tuma:"
+
+#: wb_subversion_info_dialog.py:131
+msgid "Lock Expiration Date:"
+msgstr "Z叩r叩s lej叩rat叩nak d叩tuma:"
+
+#: wb_subversion_info_dialog.py:132
+#: wb_subversion_info_dialog.py:135
+msgid "Lock Token:"
+msgstr "Z叩r叩s jel旦l辿s:"
+
+#: wb_subversion_info_dialog.py:133
+msgid "Lock Comment:"
+msgstr "Z叩r叩s megjegyz辿s:"
+
+#: wb_subversion_info_dialog.py:141
+msgid "Working copy"
+msgstr "Munkap辿ld叩ny"
+
+#: wb_subversion_list_handler_common.py:32
+#: wb_subversion_list_handler_common.py:111
+#: wb_subversion_report_branch_changes.py:147
+#: wb_subversion_report_lock.py:183
+#: wb_subversion_report_revision_changes.py:266
+#: wb_subversion_report_updates.py:205
+msgid "State"
+msgstr "テ〕lapot"
+
+#: wb_subversion_list_handler_common.py:34
+#: wb_subversion_list_handler_common.py:113
+msgid "Rev"
+msgstr "Rev"
+
+#: wb_subversion_list_handler_common.py:37
+#: wb_subversion_list_handler_common.py:117
+msgid "Mimetype"
+msgstr "Mimet鱈pus"
+
+#: wb_subversion_list_handler_common.py:38
+#: wb_subversion_list_handler_common.py:118
+msgid "EOL"
+msgstr "EOL"
+
+#: wb_subversion_list_handler_common.py:39
+#: wb_subversion_list_handler_common.py:115
+msgid "Type"
+msgstr "T鱈pus"
+
+#: wb_subversion_list_handler_common.py:40
+#: wb_subversion_list_handler_common.py:119
+#: wb_subversion_report_lock.py:183
+msgid "Lock Owner"
+msgstr "Z叩r叩s tuljadonosa:"
+
+#: wb_subversion_list_handler_common.py:41
+#: wb_subversion_list_handler_common.py:120
+#: wb_subversion_report_lock.py:183
+msgid "Lock Comment"
+msgstr "Z叩r叩s megjegyz辿s"
+
+#: wb_subversion_list_handler_common.py:116
+msgid "Size"
+msgstr "M辿ret"
+
+#: wb_subversion_list_handler_common.py:348
+msgid "Use the Checkout command to fetch files"
+msgstr "Hasznテ。lja az Ellenナ喪zテゥs parancsot a fテ。jlok elhozテ。sテ。hoz"
+
+#: wb_subversion_list_handler_common.py:350
+msgid "Use the Update command to fetch files"
+msgstr "Haszn叩lja az Friss鱈t parancsot a f叩jlok behoz叩s叩hoz"
+
+#: wb_subversion_list_handler_common.py:682
+#: wb_subversion_report_revision_changes.py:121
+#, python-format
+msgid "Annotating %(count)d"
+msgstr "Jegyzetel辿s %(count)d"
+
+#: wb_subversion_list_handler_common.py:684
+#: wb_subversion_report_revision_changes.py:123
+#, python-format
+msgid "Annotate %s..."
+msgstr "Jegyzet %s..."
+
+#: wb_subversion_list_handler_common.py:708
+#: wb_subversion_tree_handler.py:385
+#, python-format
+msgid "Diff BASE %s..."
+msgstr "テ穆szehasonlテュtテ。s BASE %s..."
+
+#: wb_subversion_list_handler_common.py:743
+#: wb_subversion_tree_handler.py:421
+#, python-format
+msgid "Diff HEAD %s..."
+msgstr "テ穆szehasonlテュtテ。s HEAD %s..."
+
+#: wb_subversion_list_handler_common.py:776
+#: wb_subversion_list_handler_common.py:824
+msgid "Retrieving branch info..."
+msgstr "Branch inform叩ci坦 visszakeres辿se..."
+
+#: wb_subversion_list_handler_common.py:783
+#: wb_subversion_list_handler_common.py:830
+#: wb_subversion_tree_handler.py:772
+#, python-format
+msgid "\"%s\" is not a branch."
+msgstr "\"%s\" nem egy branch"
+
+#: wb_subversion_list_handler_common.py:783
+#: wb_subversion_list_handler_common.py:830
+#: wb_subversion_tree_handler.py:772
+#: wb_subversion_tree_handler.py:774
+msgid "Error"
+msgstr "Hiba"
+
+#: wb_subversion_list_handler_common.py:791
+#, python-format
+msgid "Diff branch origin BASE %s..."
+msgstr "テ穆szehasonlテュtテ。s branch eredeti BASE %s..."
+
+#: wb_subversion_list_handler_common.py:838
+#, python-format
+msgid "Diff branch origin HEAD %s..."
+msgstr "テ穆szehasonlテュtテ。s branch eredeti HEAD %s..."
+
+#: wb_subversion_list_handler_common.py:877
+#: wb_subversion_tree_handler.py:462
+#, python-format
+msgid "Log history %s..."
+msgstr "Elナ想mテゥnyek naplテウ %s..."
+
+#: wb_subversion_list_handler_common.py:932
+#, python-format
+msgid "Locking %(count)d"
+msgstr "Z叩rva %(count)d"
+
+#: wb_subversion_list_handler_common.py:934
+#, python-format
+msgid "Locking %s..."
+msgstr "Z叩rva %s..."
+
+#: wb_subversion_list_handler_common.py:990
+msgid "Unlock"
+msgstr "Nyitva"
+
+#: wb_subversion_list_handler_common.py:995
+#, python-format
+msgid "Unlocking %(count)d"
+msgstr "Nyit叩s %(count)d"
+
+#: wb_subversion_list_handler_common.py:997
+#, python-format
+msgid "Unlocking %s..."
+msgstr "Nyit叩s %s..."
+
+#: wb_subversion_list_handler.py:69
+#: wb_subversion_tree_handler.py:189
+msgid "Update to.."
+msgstr "Friss鱈t辿s..."
+
+#: wb_subversion_list_handler.py:102
+#, python-format
+msgid "Copied %d files to the Clipboard"
+msgstr "%d f叩jl m叩solva a v叩g坦lapra"
+
+#: wb_subversion_list_handler.py:107
+#, python-format
+msgid "Cut %d files to the Clipboard"
+msgstr "%d f叩jlok a v叩g坦lapra v叩gva"
+
+#: wb_subversion_list_handler.py:130
+msgid "Paste Copy"
+msgstr "M叩sol叩s ide"
+
+#: wb_subversion_list_handler.py:132
+msgid "Paste Move"
+msgstr "Mozgat叩s ide"
+
+#: wb_subversion_list_handler.py:148
+msgid "Save As"
+msgstr "Ment辿s m叩sk辿nt"
+
+#: wb_subversion_list_handler.py:158
+#, python-format
+msgid "%(title)s: From %(filename)s"
+msgstr "%(title)s: kor叩bban %(filename)s"
+
+#: wb_subversion_list_handler.py:161
+#, python-format
+msgid "%(title)s: To %(filename)s"
+msgstr "%(title)s: lesz %(filename)s"
+
+#: wb_subversion_list_handler.py:242
+msgid "Delete File"
+msgstr "F叩jl t旦rl辿se"
+
+#: wb_subversion_list_handler.py:323
+#: wb_subversion_list_handler.py:353
+#: wb_subversion_list_handler.py:361
+#, python-format
+msgid "Rename %(from)s %(to)s"
+msgstr "テ》nevezテゥs %(from)s %(to)s"
+
+#: wb_subversion_list_handler.py:347
+msgid "Failed to create tmp file for rename"
+msgstr "F叩jl 叩tnevez辿s辿n辿l hiba a tmp f叩jlban"
+
+#: wb_subversion_list_handler.py:410
+msgid "Resolved"
+msgstr "Megoldott"
+
+#: wb_subversion_list_handler.py:424
+#: wb_subversion_list_handler.py:477
+#: wb_subversion_report_updates.py:132
+#: wb_subversion_tree_handler.py:828
+#: wb_subversion_tree_handler.py:844
+#, python-format
+msgid "Updated %(count)d"
+msgstr "Friss鱈tve %(count)d"
+
+#: wb_subversion_list_handler.py:429
+#: wb_subversion_list_handler.py:482
+#: wb_subversion_report_updates.py:131
+#: wb_subversion_tree_handler.py:827
+#: wb_subversion_tree_handler.py:843
+#, python-format
+msgid "Update %s..."
+msgstr "Friss鱈tve %s..."
+
+#: wb_subversion_list_handler.py:451
+#: wb_subversion_list_handler.py:504
+#: wb_subversion_report_updates.py:143
+#: wb_subversion_tree_handler.py:876
+#, python-format
+msgid "Updated %(filename)s to revision %(rev)d, no new updates"
+msgstr "Friss鱈tve %(filename)s a rev鱈zi坦ra %(rev)d, nincs 炭jabb v叩ltozat"
+
+#: wb_subversion_list_handler.py:455
+#: wb_subversion_list_handler.py:508
+#: wb_subversion_report_updates.py:147
+#: wb_subversion_tree_handler.py:880
+#, python-format
+msgid "Updated %(filename)s to revision %(rev)d, %(count)d new update"
+msgid_plural "Updated %(filename)s to revision %(rev)d, %(count)d new updates"
+msgstr[0] "Friss鱈tve %(filename)s a rev鱈zi坦ra %(rev)d, %(count)d 炭j v叩ltozat"
+msgstr[1] "Friss鱈tve %(filename)s a rev鱈zi坦ra %(rev)d, %(count)d 炭j v叩ltozatok"
+
+#: wb_subversion_list_handler.py:462
+#: wb_subversion_list_handler.py:515
+#: wb_subversion_tree_handler.py:889
+#, python-format
+msgid "%d file is in conflict"
+msgid_plural "%d files are in conflict"
+msgstr[0] "%d f叩jln叩l konfliktus"
+msgstr[1] "%d f叩jlokn叩l konfliktus"
+
+#: wb_subversion_list_handler.py:471
+#: wb_subversion_tree_handler.py:837
+msgid "Update to revision"
+msgstr "Rev鱈zi坦 friss鱈t辿se"
+
+#: wb_subversion_project_info.py:244
+msgid "Hostname"
+msgstr "Hostn辿v"
+
+#: wb_subversion_project_info.py:245
+msgid "Valid From"
+msgstr "テ詠vテゥnyessテゥg kezdete:"
+
+#: wb_subversion_project_info.py:246
+msgid "Valid Until"
+msgstr "テ詠vテゥnyessテゥg vテゥge:"
+
+#: wb_subversion_project_info.py:247
+msgid "Issuer Name"
+msgstr "Egy 辿rt辿k be鱈r叩sa %s"
+
+#: wb_subversion_project_info.py:248
+msgid "Finger Print"
+msgstr "Ujjlenyomat"
+
+#: wb_subversion_properties_dialog.py:92
+#: wb_subversion_properties_dialog.py:113
+#, python-format
+msgid "Enter a value for %s"
+msgstr "Egy 辿rt辿k be鱈r叩sa %s"
+
+#: wb_subversion_report_branch_changes.py:25
+msgid "Branch changes report"
+msgstr "Branch v叩ltoz叩sok jelent辿s"
+
+#: wb_subversion_report_branch_changes.py:52
+#: wb_subversion_report_lock.py:60
+#: wb_subversion_report_updates.py:63
+msgid "Diff changes against HEAD"
+msgstr "V叩ltoz叩sok 旦sszehasonl鱈t叩sa a HEAD-ben"
+
+#: wb_subversion_report_lock.py:30
+msgid "Repository Lock Report"
+msgstr "T叩rol坦 z叩r叩si besz叩mol坦"
+
+#: wb_subversion_report_lock.py:32
+msgid "Working Copy Lock Report"
+msgstr "Munkap辿ld叩ny z叩r叩s besz叩mol坦"
+
+#: wb_subversion_report_lock.py:70
+#: wb_toolbars.py:125
+msgid "Lock File"
+msgstr "F叩jl z叩r叩sa"
+
+#: wb_subversion_report_lock.py:73
+#: wb_toolbars.py:128
+msgid "Unlock File"
+msgstr "F叩jl nyit叩sa"
+
+#: wb_subversion_report_revision_changes.py:36
+#, python-format
+msgid "Revision changes - r%(rev1)d vs. r%(rev2)d"
+msgstr "Revizi坦 cser辿je - r%(rev1)d 辿s r%(rev2)d k旦z旦tt"
+
+#: wb_subversion_report_revision_changes.py:44
+#, python-format
+msgid "Diff r%(rev1)d vs. r%(rev1)d..."
+msgstr "テ穆szehasonlテュtテ。s r%(rev1)d テゥs r%(rev1)d kテカzテカtt..."
+
+#: wb_subversion_report_revision_changes.py:159
+#, python-format
+msgid "Diff -r%(rev1)d:%(rev2)d %(url)s..."
+msgstr "テ穆szehasonlテュtテ。s -r%(rev1)d:%(rev2)d %(url)s..."
+
+#: wb_subversion_report_updates.py:33
+msgid "Updates Report"
+msgstr "Friss鱈t辿si jelent辿s"
+
+#: wb_subversion_report_updates.py:47
+msgid "Exclude from update"
+msgstr "Kimaradt a frissテュtテゥsbナ鼠"
+
+#: wb_subversion_report_updates.py:48
+msgid "Include in update"
+msgstr "Tartalmazza a friss鱈t辿s"
+
+#: wb_subversion_report_updates.py:286
+msgid " Update "
+msgstr " Friss鱈t辿s"
+
+#: wb_subversion_tree_handler.py:208
+#, python-format
+msgid "Creating branch %s"
+msgstr "Branch k辿sz鱈t辿se %s"
+
+#: wb_subversion_tree_handler.py:212
+#, python-format
+msgid "Creating tag %s"
+msgstr "Tag k辿sz鱈t辿se %s"
+
+#: wb_subversion_tree_handler.py:249
+#, python-format
+msgid "Copied folder %s to the Clipboard"
+msgstr "Dosszi辿 %s m叩sol叩sa a v叩g坦lapra"
+
+#: wb_subversion_tree_handler.py:254
+#, python-format
+msgid "Cut folder %s to the Clipboard"
+msgstr "Dosszi辿 %s kiv叩g叩sa a v叩g坦lapra"
+
+#: wb_subversion_tree_handler.py:262
+msgid "Add Folder"
+msgstr "Dosszi辿 hozz叩ad叩sa"
+
+#: wb_subversion_tree_handler.py:275
+#: wb_subversion_tree_handler.py:289
+#, python-format
+msgid "Checkout %s..."
+msgstr "Ellenナ喪zテゥs %s..."
+
+#: wb_subversion_tree_handler.py:286
+msgid "Checkout to revision"
+msgstr "Revテュziテウ ellenナ喪zテゥse"
+
+#: wb_subversion_tree_handler.py:315
+#, python-format
+msgid "Clean up %s..."
+msgstr "Tiszt鱈t叩s %s..."
+
+#: wb_subversion_tree_handler.py:331
+#, python-format
+msgid "Look for changes to check in %s..."
+msgstr "Cserテゥk ellenナ喪zテゥse itt: %s"
+
+#: wb_subversion_tree_handler.py:374
+msgid "Delete Folder"
+msgstr "Dosszi辿 t旦rl辿se"
+
+#: wb_subversion_tree_handler.py:513
+msgid "Make directory"
+msgstr "K旦nyvt叩r k辿sz鱈t辿se"
+
+#: wb_subversion_tree_handler.py:547
+#, python-format
+msgid "Cannot read template %(filename)s - %(error)s"
+msgstr "Nem olvashat坦 a sablon %(filename)s - %(error)s"
+
+#: wb_subversion_tree_handler.py:559
+#, python-format
+msgid "Cannot create new file %(filename)s - %(error)s"
+msgstr "Nem kテゥszテュthetナ_ テコj fテ。jl %(filename)s - %(error)s"
+
+#: wb_subversion_tree_handler.py:610
+#, python-format
+msgid "Looking for repository locks in %s..."
+msgstr "T叩rol坦 z叩r叩sok n辿z辿se itt %s..."
+
+#: wb_subversion_tree_handler.py:612
+#, python-format
+msgid "Looking for working copy locks in %s..."
+msgstr "Munkap辿ld叩ny z叩r叩sok n辿z辿se itt %s..."
+
+#: wb_subversion_tree_handler.py:636
+msgid "There are no locked files in the repository"
+msgstr "Nincs z叩rt f叩jl a t叩rol坦ban"
+
+#: wb_subversion_tree_handler.py:639
+msgid "There are no locked files in the working copy"
+msgstr "Nincs z叩rt f叩jl a munkap辿ld叩nyban"
+
+#: wb_subversion_tree_handler.py:649
+#, python-format
+msgid "Updates %s..."
+msgstr "Friss鱈t辿s %s..."
+
+#: wb_subversion_tree_handler.py:668
+msgid "All files are up todate"
+msgstr "Minden f叩jl naprak辿sz"
+
+#: wb_subversion_tree_handler.py:684
+#, python-format
+msgid "Branch changes %s..."
+msgstr "Branch cser辿k %s..."
+
+#: wb_subversion_tree_handler.py:774
+#, python-format
+msgid "No files changed yet in branch \"%s\"."
+msgstr "M辿g nincs cser辿lt f叩jl a branchban \"%s\"."
+
+#: wb_subversion_tree_handler.py:786
+msgid "Rename Directory"
+msgstr "K旦nyvt叩r 叩tnevez辿se"
+
+#: wb_subversion_tree_handler.py:814
+msgid "There are no changes to revert"
+msgstr "Nem t旦rt辿ntek cser辿k"
+
+#: wb_subversion_tree_handler.py:886
+msgid "Already up to date"
+msgstr "M叩r naprak辿sz"
+
+#: wb_subversion_tree_handler.py:901
+#, python-format
+msgid "Copied %(from)s to %(to)s"
+msgstr "M叩solva %(from)s innen ide %(to)s"
+
+#: wb_subversion_tree_handler.py:913
+#, python-format
+msgid "Moved %(from)s to %(to)s"
+msgstr "Mozgatva innen %(from)s ide %(to)s"
+
+#: wb_toolbars.py:82
+msgid "Cut Files and Folders"
+msgstr "F叩jl 辿s dosszi辿 kiv叩g叩sa"
+
+#: wb_toolbars.py:85
+msgid "Copy Files and Folders"
+msgstr "F叩jl 辿s dosszi辿 m叩sol叩sa"
+
+#: wb_toolbars.py:88
+msgid "Paste Files and Folders"
+msgstr "F叩jl 辿s dosszi辿 beilleszt辿se"
+
+#: wb_toolbars.py:92
+msgid "Start new command shell"
+msgstr "テ嗚 terminテ。l indテュtテ。sa"
+
+#: wb_toolbars.py:116
+msgid "Add Files and Folders"
+msgstr "F叩jl 辿s dosszi辿 hozz叩ad叩sa"
+
+#: wb_toolbars.py:119
+msgid "Delete selected Files and Folders"
+msgstr "Kiv叩lasztott f叩jlok 辿s dosszi辿k t旦rl辿se"
+
+#: wb_toolbars.py:131
+msgid "Checkin changes"
+msgstr "Cserテゥk ellenナ喪zテゥse"
+
+#: wb_toolbars.py:134
+msgid "Update working copy"
+msgstr "Munkap辿ld叩ny friss鱈t辿se"
+
+#: wb_toolbars.py:137
+msgid "Use recursive (flat) view"
+msgstr "Rekurz鱈v n辿zet haszn叩lata"
+
+#: wb_toolbars.py:141
+msgid "Show only changed files"
+msgstr "Csak a v叩ltozott f叩jlok mutat叩sa"
+
+#: wb_tree_panel.py:244
+msgid "Projects:"
+msgstr "Projekt:"
+
+#: wb_tree_panel.py:406
+#: wb_tree_panel.py:471
+msgid "Refreshing view..."
+msgstr "N辿zet friss鱈t辿se..."
+
+#: wb_tree_panel.py:997
+msgid "&Add Project"
+msgstr "Projekt hozz叩ad叩sa"
+
+
diff -Nru svn-workbench-1.6.2/Source/make_mo_files.py svn-workbench-1.6.6/Source/make_mo_files.py
--- svn-workbench-1.6.2/Source/make_mo_files.py 2009-10-03 17:25:22.000000000 +0900
+++ svn-workbench-1.6.6/Source/make_mo_files.py 2010-08-01 21:39:35.000000000 +0900
@@ -4,7 +4,7 @@
localedir = sys.argv[1]
-all_lang = ['en', 'de']
+all_lang = ['en', 'de', 'hu']
for lang in all_lang:
mo_output_dir = '%s/%s/LC_MESSAGES' % (localedir, lang)
diff -Nru svn-workbench-1.6.2/Source/make_pot_file.py svn-workbench-1.6.6/Source/make_pot_file.py
--- svn-workbench-1.6.2/Source/make_pot_file.py 2009-10-03 17:25:22.000000000 +0900
+++ svn-workbench-1.6.6/Source/make_pot_file.py 2011-11-06 23:19:48.000000000 +0900
@@ -12,7 +12,7 @@
f.write( '%s\n' % py_file )
f.close()
-rc = os.system( 'xgettext '
+cmd = ('xgettext '
'--files-from=wb_files.tmp '
'--default-domain=pysvn_workbench '
'--output=I18N/pysvn_workbench.current.pot '
@@ -25,5 +25,8 @@
'--no-wrap '
'--width=2047 '
'--add-comments=Translat '
- '--language=Python' )
+ '--language=Python')
+
+print 'Info: %s' % (cmd,)
+rc = os.system( cmd )
sys.exit( rc )
diff -Nru svn-workbench-1.6.2/Source/run_wb.cmd svn-workbench-1.6.6/Source/run_wb.cmd
--- svn-workbench-1.6.2/Source/run_wb.cmd 2009-10-03 17:25:22.000000000 +0900
+++ svn-workbench-1.6.6/Source/run_wb.cmd 2012-03-04 05:14:15.000000000 +0900
@@ -1,4 +1,4 @@
setlocal
-set PYTHONPATH=C:\BuildRoot\Win32-MSVC90-1.6.5\py26_pysvn\Source
-python C:\wc\pysvn\trunk\pysvn\WorkBench\Source\wb_main.py %*
+set PYTHONPATH=C:\BuildRoot\Win32-MSVC90-1.7.3\py27_pysvn\Source
+python C:\wc\svn\pysvn\WorkBench\Source\wb_main.py %*
endlocal
diff -Nru svn-workbench-1.6.2/Source/wb-diff.sh svn-workbench-1.6.6/Source/wb-diff.sh
--- svn-workbench-1.6.2/Source/wb-diff.sh 1970-01-01 09:00:00.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb-diff.sh 2011-11-05 22:50:19.000000000 +0900
@@ -0,0 +1,29 @@
+#!/bin/sh
+export PYSVN_WORKBENCH_STDOUT_LOG=$(tty)
+
+SOURCEDIR=$( dirname $0 )
+
+if [ "$PYTHONPATH" = "" ]
+then
+ export PYTHONPATH=${SOURCEDIR}
+else
+ export PYTHONPATH=${SOURCEDIR}:$PYTHONPATH
+fi
+
+PYTHON=${PYTHON:-python}
+BASENAME=$( basename ${PYTHON} )
+SUFFIX=${X#python*}
+DIRNAME=$( dirname ${PYTHON} )
+
+if [ "${DIRNAME}" != "" ]
+then
+ DIRNAME=${DIRNAME}/
+fi
+PYTHONW=${DIRNAME}pythonw${SUFFIX}
+
+if [ -e ${PYTHONW} ]
+then
+ ${PYTHONW} ${SOURCEDIR}/wb_diff_main.py $*
+else
+ ${PYTHON} ${SOURCEDIR}/wb_diff_main.py $*
+fi
diff -Nru svn-workbench-1.6.2/Source/wb.rc.template svn-workbench-1.6.6/Source/wb.rc.template
--- svn-workbench-1.6.2/Source/wb.rc.template 2009-09-26 05:34:18.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb.rc.template 2010-03-21 04:08:11.000000000 +0900
@@ -50,7 +50,7 @@
VALUE "FileDescription", "Work Bench\0"
VALUE "FileVersion", "%(MAJOR)s, %(MINOR)s, %(PATCH)s, %(BUILD)s\0"
VALUE "InternalName", "WorkBench\0"
- VALUE "LegalCopyright", "Copyright ゥ 2003-2007 Barry A. Scott\0"
+ VALUE "LegalCopyright", "Copyright ゥ 2003-2010 Barry A. Scott\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "Workbench.exe\0"
VALUE "PrivateBuild", "\0"
diff -Nru svn-workbench-1.6.2/Source/wb.sh svn-workbench-1.6.6/Source/wb.sh
--- svn-workbench-1.6.2/Source/wb.sh 2006-10-25 06:51:49.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb.sh 2011-11-27 23:20:58.000000000 +0900
@@ -9,7 +9,7 @@
PYTHON=${PYTHON:-python}
BASENAME=$( basename ${PYTHON} )
-SUFFIX=${X#python*}
+SUFFIX=${BASENAME#python*}
DIRNAME=$( dirname ${PYTHON} )
if [ "${DIRNAME}" != "" ]
@@ -18,9 +18,14 @@
fi
PYTHONW=${DIRNAME}pythonw${SUFFIX}
+if [ -e /System/Library/CoreServices/SystemVersion.plist ]
+then
+ ARCH_CMD="arch -i386"
+fi
+
if [ -e ${PYTHONW} ]
then
- ${PYTHONW} wb_main.py $*
+ ${ARCH_CMD} ${PYTHONW} wb_main.py $*
else
- ${PYTHON} wb_main.py $*
+ ${ARCH_CMD} ${PYTHON} wb_main.py $*
fi
diff -Nru svn-workbench-1.6.2/Source/wb_app.py svn-workbench-1.6.6/Source/wb_app.py
--- svn-workbench-1.6.2/Source/wb_app.py 2012-07-25 06:31:59.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_app.py 2012-07-25 06:31:59.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -663,6 +663,8 @@
def emit( self, record ):
try:
msg = self.format(record) + '\n'
+ if type( msg ) == types.UnicodeType:
+ msg = msg.encode( 'utf-8' )
sys.__stdout__.write( msg )
diff -Nru svn-workbench-1.6.2/Source/wb_background_thread.py svn-workbench-1.6.6/Source/wb_background_thread.py
--- svn-workbench-1.6.2/Source/wb_background_thread.py 2006-09-03 03:06:43.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_background_thread.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_bookmarks_dialogs.py svn-workbench-1.6.6/Source/wb_bookmarks_dialogs.py
--- svn-workbench-1.6.2/Source/wb_bookmarks_dialogs.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_bookmarks_dialogs.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2005-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2005-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_clipboard.py svn-workbench-1.6.6/Source/wb_clipboard.py
--- svn-workbench-1.6.2/Source/wb_clipboard.py 2006-01-03 01:06:03.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_clipboard.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_config.py svn-workbench-1.6.6/Source/wb_config.py
--- svn-workbench-1.6.2/Source/wb_config.py 2007-01-29 02:06:09.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_config.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2006-2007 Barry A Scott. All rights reserved.
+ Copyright (c) 2006-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_dialogs.py svn-workbench-1.6.6/Source/wb_dialogs.py
--- svn-workbench-1.6.2/Source/wb_dialogs.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_dialogs.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -14,6 +14,7 @@
import os
import pysvn
import wb_subversion_utils
+import wb_platform_specific
id_log_message_text = wx.NewId()
id_last_log_message = wx.NewId()
@@ -123,7 +124,7 @@
self.last_log_message_text = None
if self.message_filename is not None:
try:
- self.last_log_message_text = file( self.message_filename, 'r' ).read().decode('utf-8').strip()
+ self.last_log_message_text = wb_platform_specific.uOpen( self.message_filename, 'r' ).read().decode('utf-8').strip()
except EnvironmentError:
self.last_log_message_text = ''
@@ -150,7 +151,7 @@
def OnOk( self, event ):
self.EndModal( wx.ID_OK )
try:
- file( self.message_filename, 'w' ).write( self.getLogMessage().encode('utf-8') )
+ wb_platform_specific.uOpen( self.message_filename, 'w' ).write( self.getLogMessage().encode('utf-8') )
except (IOError,OSError):
pass
diff -Nru svn-workbench-1.6.2/Source/wb_diff_difflib.py svn-workbench-1.6.6/Source/wb_diff_difflib.py
--- svn-workbench-1.6.2/Source/wb_diff_difflib.py 2006-01-03 01:06:03.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_diff_difflib.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_diff_frame.py svn-workbench-1.6.6/Source/wb_diff_frame.py
--- svn-workbench-1.6.2/Source/wb_diff_frame.py 2009-10-12 03:44:39.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_diff_frame.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_diff_images.py svn-workbench-1.6.6/Source/wb_diff_images.py
--- svn-workbench-1.6.2/Source/wb_diff_images.py 2006-01-03 01:06:03.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_diff_images.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_diff_main.py svn-workbench-1.6.6/Source/wb_diff_main.py
--- svn-workbench-1.6.2/Source/wb_diff_main.py 2009-10-11 23:04:16.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_diff_main.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2007 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_diff_processor.py svn-workbench-1.6.6/Source/wb_diff_processor.py
--- svn-workbench-1.6.2/Source/wb_diff_processor.py 2006-01-03 01:06:03.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_diff_processor.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_exceptions.py svn-workbench-1.6.6/Source/wb_exceptions.py
--- svn-workbench-1.6.2/Source/wb_exceptions.py 2006-09-03 03:06:43.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_exceptions.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_frame.py svn-workbench-1.6.6/Source/wb_frame.py
--- svn-workbench-1.6.2/Source/wb_frame.py 2009-10-11 23:04:16.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_frame.py 2011-11-27 22:43:10.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -27,6 +27,7 @@
import wb_platform_specific
import wb_bookmarks_dialogs
import wb_toolbars
+import wb_subversion_utils
import wb_config
@@ -118,6 +119,9 @@
self.menu_actions.Append( wb_ids.id_SP_Revert, T_('Revert...'), T_('Revert') )
self.menu_actions.AppendSeparator()
self.menu_actions.Append( wb_ids.id_SP_Cleanup, T_('Clean up'), T_('Clean up working copy') )
+ if wb_subversion_utils.version_info.has_upgrade:
+ self.menu_actions.AppendSeparator()
+ self.menu_actions.Append( wb_ids.id_SP_Upgrade, T_('Upgrade'), T_('Upgrade working copy') )
self.menu_actions.AppendSeparator()
self.menu_actions.Append( wb_ids.id_SP_CreateTag, T_('Create Tag...'), T_('Create Tag') )
self.menu_actions.Append( wb_ids.id_SP_CreateBranch, T_('Create Branch...'), T_('Create Branch') )
@@ -345,6 +349,10 @@
wx.EVT_MENU( self, wb_ids.id_SP_UpdateTo, self.app.eventWrapper( self.OnSpUpdateTo ) )
wx.EVT_UPDATE_UI( self, wb_ids.id_SP_UpdateTo, self.app.eventWrapper( self.OnUpdateUiSpUpdateTo ) )
+ if wb_subversion_utils.version_info.has_upgrade:
+ wx.EVT_MENU( self, wb_ids.id_SP_Upgrade, self.app.eventWrapper( self.OnSpUpgrade ) )
+ wx.EVT_UPDATE_UI( self, wb_ids.id_SP_Upgrade, self.app.eventWrapper( self.OnUpdateUiSpUpgrade ) )
+
wx.EVT_MENU( self, wb_ids.id_SP_Report_Updates, self.app.eventWrapper( self.OnSpReportUpdates ) )
wx.EVT_UPDATE_UI( self, wb_ids.id_SP_Report_Updates, self.app.eventWrapper( self.OnUpdateUiSpReportUpdates ) )
wx.EVT_MENU( self, wb_ids.id_SP_Report_LocksWc, self.app.eventWrapper( self.OnSpReportLocksWc ) )
@@ -462,13 +470,17 @@
ver_str = ('%d.%d.%d-%d\n' %
(wb_version.major, wb_version.minor,
wb_version.patch, wb_version.build))
- str_message = ((T_('Work Bench version: %s') % ver_str) +
- '\n' + wb_source_control_providers.getProviderAboutStrings() +
- '\nwxPython %d.%d.%d.%d %s' % wx.VERSION +
- '\nPython %d.%d.%d %s %d\n' % sys.version_info +
- T_('\nCopyright Barry Scott (c) 2003-2009. All rights reserved')
- )
- wx.LogMessage( str_message )
+ str_message_parts = [T_('Work Bench version: %s') % ver_str
+ ,wb_source_control_providers.getProviderAboutStrings()
+ ,'wxPython %d.%d.%d.%d %s' % wx.VERSION
+ ,'Python %d.%d.%d %s %d\n' % (sys.version_info[0]
+ ,sys.version_info[1]
+ ,sys.version_info[2]
+ ,sys.version_info[3]
+ ,sys.version_info[4])
+
+ ,T_('\nCopyright Barry Scott (c) 2003-2011. All rights reserved')]
+ wx.LogMessage( '\n'.join( str_message_parts ) )
def OnCmdPreferences( self, event ):
pref_dialog = wb_preferences_dialog.PreferencesDialog( self, self.app )
@@ -770,7 +782,8 @@
def OnUpdateUiSpAnnotate( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.versioned and (not self.ui_state_focus.is_folder) )
@@ -780,7 +793,8 @@
def OnUpdateUiSpCheckin( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.need_checkin
@@ -872,7 +886,8 @@
def OnUpdateUiSpDiffWorkHead( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
if self.ui_state_list is self.ui_state_focus:
@@ -888,14 +903,16 @@
def OnUpdateUiSpDiffWorkBranchOriginBase( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_list.versioned and not self.ui_state_list.new_versioned )
def OnUpdateUiSpDiffWorkBranchOriginHead( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_list.versioned and not self.ui_state_list.new_versioned )
@@ -907,7 +924,8 @@
self.getUpdateUiState()
if wb_config.debug_selection_update: print 'ZF: OnUpdateUiSpHistory versioned %r handler %r' % (
self.ui_state_focus.versioned, self.event_handler)
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.versioned and not self.ui_state_focus.new_versioned )
@@ -917,7 +935,8 @@
def OnUpdateUiSpInfo( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.versioned )
@@ -949,7 +968,8 @@
def OnUpdateUiSpProperties( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.versioned )
@@ -1001,7 +1021,8 @@
def OnUpdateUiSpRevert( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
else:
event.Enable( self.ui_state_focus.revertable )
@@ -1019,7 +1040,8 @@
def OnUpdateUiSpUpdate( self, event ):
self.getUpdateUiState()
- if self.ui_state_focus.need_checkout:
+ if( self.ui_state_focus.need_checkout
+ or self.ui_state_focus.need_upgrade ):
event.Enable( False )
elif self.ui_state_focus.is_project_parent:
@@ -1041,6 +1063,16 @@
def OnUpdateUiSpUpdateTo( self, event ):
self.OnUpdateUiSpUpdate(event)
+ def OnSpUpgrade( self, event ):
+ self.clearUpdateUiState()
+ return self.tree_panel.OnSpUpgrade()
+
+ def OnUpdateUiSpUpgrade( self, event ):
+ self.getUpdateUiState()
+
+ # this is a tree only command
+ event.Enable( self.list_panel.list_handler.project_info.need_upgrade )
+
#----------------------------------------
def Sp_Dispatch( self, sp_func_name ):
self.clearUpdateUiState()
@@ -1102,7 +1134,7 @@
self.text_ctrl = StyledLogCtrl( self.app, self )
# Redirect the console IO to this panel
- sys.stdin = file( wb_platform_specific.getNullDevice(), 'r' )
+ sys.stdin = wb_platform_specific.uOpen( wb_platform_specific.getNullDevice(), 'r' )
if self.app.isStdIoRedirect():
sys.stdout = self
sys.stderr = self
diff -Nru svn-workbench-1.6.2/Source/wb_ids.py svn-workbench-1.6.6/Source/wb_ids.py
--- svn-workbench-1.6.2/Source/wb_ids.py 2009-03-08 03:25:46.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_ids.py 2011-11-21 01:52:09.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -75,6 +75,7 @@
id_SP_Unlock = wx.NewId()
id_SP_Update = wx.NewId()
id_SP_UpdateTo = wx.NewId()
+id_SP_Upgrade = wx.NewId()
id_SP_CreateTag = wx.NewId()
id_SP_CreateBranch = wx.NewId()
diff -Nru svn-workbench-1.6.2/Source/wb_list_panel.py svn-workbench-1.6.6/Source/wb_list_panel.py
--- svn-workbench-1.6.2/Source/wb_list_panel.py 2009-03-08 03:25:46.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_list_panel.py 2011-11-21 01:52:09.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_list_panel_common.py svn-workbench-1.6.6/Source/wb_list_panel_common.py
--- svn-workbench-1.6.2/Source/wb_list_panel_common.py 2009-10-12 01:25:29.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_list_panel_common.py 2011-11-21 01:52:09.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -21,6 +21,7 @@
import wb_ids
import wb_shell_commands
import wb_dialogs
+import wb_platform_specific
class ListSortData:
def __init__( self, order=1, field=0 ):
@@ -54,6 +55,7 @@
self.unversioned = False
self.need_checkin = False
self.need_checkout = False
+ self.need_upgrade = False
self.conflict = False
self.file_exists = False
self.is_folder = False
@@ -328,7 +330,7 @@
if self.list_handler.mayOpen( row ):
self.app.selectTreeNode( filename )
- elif not os.path.isdir( filename ):
+ elif not wb_platform_specific.uPathIsdir( filename ):
wb_shell_commands.EditFile( self.app, self.list_handler.getProjectInfo(), filename )
def isTreeHandler( self ):
diff -Nru svn-workbench-1.6.2/Source/wb_main.py svn-workbench-1.6.6/Source/wb_main.py
--- svn-workbench-1.6.2/Source/wb_main.py 2009-10-04 20:50:50.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_main.py 2012-03-04 05:14:15.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2012 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -27,7 +27,7 @@
or (sys.platform == 'darwin' and '--noredirect' not in sys.argv) ):
stdout_filename = os.environ.get( 'PYSVN_WORKBENCH_STDOUT_LOG', '/tmp/workbench.tmp' )
-elif sys.platform.startswith( 'win' ):
+elif sys.platform.startswith( 'win' ) and '--noredirect' not in sys.argv:
stdout_filename = os.path.join( os.environ[ 'TEMP' ], 'workbench.tmp' )
if stdout_filename is not None:
diff -Nru svn-workbench-1.6.2/Source/wb_platform_macosx_specific.py svn-workbench-1.6.6/Source/wb_platform_macosx_specific.py
--- svn-workbench-1.6.2/Source/wb_platform_macosx_specific.py 2009-10-04 20:50:50.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_platform_macosx_specific.py 2011-01-05 20:46:33.000000000 +0900
@@ -1,7 +1,7 @@
'''
====================================================================
- Copyright (c) 2004-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2004-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -13,7 +13,7 @@
'''
import os
-import sys
+import types
def getApplicationDir():
return os.path.join( os.environ['HOME'], 'Library/Preferences/org.tigris.pysvn.Workbench' )
@@ -23,3 +23,48 @@
def getNullDevice():
return '/dev/null'
+
+def uPathExists( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.path.exists( path )
+
+def uPathIsdir( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.path.isdir( path )
+
+def uAccess( path, mode ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.access( path, mode )
+
+def uRemove( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.remove( path )
+
+def uRename( path1, path2 ):
+ if type(path1) == types.UnicodeType:
+ path1 = path1.encode( 'utf-8' )
+
+ if type(path2) == types.UnicodeType:
+ path2 = path2.encode( 'utf-8' )
+
+ return os.rename( path1, path2 )
+
+def uOpen( path, mode ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return open( path, mode )
+
+def uChdir( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.chdir( path )
diff -Nru svn-workbench-1.6.2/Source/wb_platform_specific.py svn-workbench-1.6.6/Source/wb_platform_specific.py
--- svn-workbench-1.6.2/Source/wb_platform_specific.py 2007-05-28 19:37:14.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_platform_specific.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,7 +1,7 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_platform_unix_specific.py svn-workbench-1.6.6/Source/wb_platform_unix_specific.py
--- svn-workbench-1.6.2/Source/wb_platform_unix_specific.py 2007-12-01 16:13:47.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_platform_unix_specific.py 2011-01-05 20:46:33.000000000 +0900
@@ -1,7 +1,7 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -13,6 +13,7 @@
'''
import os
+import types
def getApplicationDir():
return os.path.join( os.environ['HOME'], '.WorkBench' )
@@ -22,3 +23,48 @@
def getNullDevice():
return '/dev/null'
+
+def uPathExists( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.path.exists( path )
+
+def uPathIsdir( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.path.isdir( path )
+
+def uAccess( path, mode ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.access( path, mode )
+
+def uRemove( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.remove( path )
+
+def uRename( path1, path2 ):
+ if type(path1) == types.UnicodeType:
+ path1 = path1.encode( 'utf-8' )
+
+ if type(path2) == types.UnicodeType:
+ path2 = path2.encode( 'utf-8' )
+
+ return os.rename( path1, path2 )
+
+def uOpen( path, mode ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return open( path, mode )
+
+def uChdir( path ):
+ if type(path) == types.UnicodeType:
+ path = path.encode( 'utf-8' )
+
+ return os.chdir( path )
diff -Nru svn-workbench-1.6.2/Source/wb_platform_win32_specific.py svn-workbench-1.6.6/Source/wb_platform_win32_specific.py
--- svn-workbench-1.6.2/Source/wb_platform_win32_specific.py 2007-12-01 16:13:47.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_platform_win32_specific.py 2011-01-05 03:50:40.000000000 +0900
@@ -1,7 +1,7 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -28,3 +28,11 @@
def getNullDevice():
return 'NUL'
+
+uPathExists = os.path.exists
+uPathIsdir = os.path.isdir
+uAccess = os.access
+uRemove = os.remove
+uRename = os.rename
+uOpen = open
+uChdir = os.chdir
diff -Nru svn-workbench-1.6.2/Source/wb_preferences.py svn-workbench-1.6.6/Source/wb_preferences.py
--- svn-workbench-1.6.2/Source/wb_preferences.py 2009-10-11 23:04:16.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_preferences.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,7 +1,7 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -105,14 +105,14 @@
new_name = self.pref_filename + '.tmp'
old_name = self.pref_filename + '.old'
- f = file( new_name, 'w' )
+ f = wb_platform_specific.uOpen( new_name, 'w' )
self.pref_data.write( f )
f.close()
- if os.path.exists( self.pref_filename ):
- if os.path.exists( old_name ): # os.rename does not delete automatically on Windows.
- os.remove( old_name )
- os.rename( self.pref_filename, old_name )
- os.rename( new_name, self.pref_filename )
+ if wb_platform_specific.uPathExists( self.pref_filename ):
+ if wb_platform_specific.uPathExists( old_name ): # os.rename does not delete automatically on Windows.
+ wb_platform_specific.uRemove( old_name )
+ wb_platform_specific.uRename( self.pref_filename, old_name )
+ wb_platform_specific.uRename( new_name, self.pref_filename )
self.app.log.info( T_('Wrote preferences to %s') % self.pref_filename )
@@ -123,7 +123,7 @@
def __init__( self, log, xml_pref_filename, ini_pref_filename ):
self.all_sections = {}
- if os.path.exists( xml_pref_filename ):
+ if wb_platform_specific.uPathExists( xml_pref_filename ):
log.info( T_('Reading preferences from %s') % xml_pref_filename )
self.__readXml( xml_pref_filename )
else:
@@ -132,7 +132,7 @@
def __readXml( self, xml_pref_filename ):
try:
- f = file( xml_pref_filename, 'r' )
+ f = wb_platform_specific.uOpen( xml_pref_filename, 'r' )
text = f.read()
f.close()
diff -Nru svn-workbench-1.6.2/Source/wb_preferences_dialog.py svn-workbench-1.6.6/Source/wb_preferences_dialog.py
--- svn-workbench-1.6.2/Source/wb_preferences_dialog.py 2009-10-03 19:22:02.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_preferences_dialog.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -18,6 +18,7 @@
import wb_dialogs
import wb_tree_panel
import wb_toolbars
+import wb_platform_specific
class PreferencesDialog( wx.Dialog ):
def __init__( self, parent, app ):
@@ -168,14 +169,14 @@
# otherwise it must exist
valid = False
if wx.Platform == '__WXMAC__':
- valid = (os.access( self.text_ctrl_editor.GetValue(), os.X_OK )
- or not os.path.isdir( self.text_ctrl_editor.GetValue() ) )
+ valid = (wb_platform_specific.uAccess( self.text_ctrl_editor.GetValue(), os.X_OK )
+ or not wb_platform_specific.uPathIsdir( self.text_ctrl_editor.GetValue() ) )
elif wx.Platform == '__WXMSW__':
- valid = (os.path.exists( self.text_ctrl_editor.GetValue() )
- or not os.path.isdir( self.text_ctrl_editor.GetValue() ) )
+ valid = (wb_platform_specific.uPathExists( self.text_ctrl_editor.GetValue() )
+ or not wb_platform_specific.uPathIsdir( self.text_ctrl_editor.GetValue() ) )
else:
- valid = (os.access( self.text_ctrl_editor.GetValue(), os.X_OK )
- or not os.path.isdir( self.text_ctrl_editor.GetValue() ) )
+ valid = (wb_platform_specific.uAccess( self.text_ctrl_editor.GetValue(), os.X_OK )
+ or not wb_platform_specific.uPathIsdir( self.text_ctrl_editor.GetValue() ) )
if not valid:
wx.MessageBox(
diff -Nru svn-workbench-1.6.2/Source/wb_project_dialogs.py svn-workbench-1.6.6/Source/wb_project_dialogs.py
--- svn-workbench-1.6.2/Source/wb_project_dialogs.py 2009-09-20 19:51:33.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_project_dialogs.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -12,7 +12,10 @@
'''
import wx
import wx.wizard
+
import wb_source_control_providers
+import wb_platform_specific
+
import pysvn
import os
@@ -143,7 +146,7 @@
wc_path = os.path.expanduser( self.wc_path_ctrl.GetValue().strip() )
url = None
- if os.path.exists( wc_path ):
+ if wb_platform_specific.uPathExists( wc_path ):
try:
info = self.client.info( wc_path )
url = info.url
@@ -508,14 +511,14 @@
state.wc_path = os.path.abspath( os.path.expanduser( self.wc_path_ctrl.GetValue().strip() ) )
state.url_path = self.url_ctrl.GetLabel().strip()
- if not os.path.exists( state.wc_path ):
+ if not wb_platform_specific.uPathExists( state.wc_path ):
wx.MessageBox( T_('Path %s\n'
'Does not exist\n'
'Choose an existing subversion working copy directory')
% state.wc_path, style=wx.OK|wx.ICON_ERROR );
return False
- if not os.path.isdir( state.wc_path ):
+ if not wb_platform_specific.uPathIsdir( state.wc_path ):
wx.MessageBox( T_('Path %s\n'
'Is not a directory\n'
'Choose an existing subversion working copy directory')
@@ -557,7 +560,7 @@
wc_path = os.path.expanduser( wc_path )
url = None
- if os.path.exists( wc_path ):
+ if wb_platform_specific.uPathExists( wc_path ):
try:
info = self.parent.client_pi.client_fg.info( wc_path )
url = info.url
@@ -665,8 +668,8 @@
style=wx.OK|wx.ICON_ERROR );
return False
- if os.path.exists( state.wc_path ):
- if not os.path.isdir( state.wc_path ):
+ if wb_platform_specific.uPathExists( state.wc_path ):
+ if not wb_platform_specific.uPathIsdir( state.wc_path ):
wx.MessageBox( T_('Path %s\n'
'Is not a directory\n'
'Choose a directory that is empty and not in use by subversion')
diff -Nru svn-workbench-1.6.2/Source/wb_read_file.py svn-workbench-1.6.6/Source/wb_read_file.py
--- svn-workbench-1.6.2/Source/wb_read_file.py 2007-04-07 17:51:00.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_read_file.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2005-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2005-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -13,8 +13,10 @@
import locale
import codecs
+import wb_platform_specific
+
def readFileContentsAsUnicode( filename ):
- f = file( filename, 'r' )
+ f = wb_platform_specific.uOpen( filename, 'r' )
contents = f.read()
f.close()
@@ -37,15 +39,22 @@
if( len(contents) > len(codecs.BOM_UTF8)
and contents[0:len(codecs.BOM_UTF8)] == codecs.BOM_UTF8 ):
encoding = 'utf-8'
+
elif( len(contents) > len(codecs.BOM_UTF16_LE)
and contents[0:len(codecs.BOM_UTF16_LE)] in [codecs.BOM_UTF16_LE, codecs.BOM_UTF16_BE]):
encoding = 'utf-16'
+
elif( len(contents) > len(codecs.BOM_UTF32_LE)
and contents[0:len(codecs.BOM_UTF32_LE)] in [codecs.BOM_UTF32_LE, codecs.BOM_UTF32_BE]):
encoding = 'utf-32'
+
else:
encoding = locale.getdefaultlocale()[1]
+ # Mac says mac-roman when utf-8 is what is required
+ if encoding == 'mac-roman':
+ encoding = 'utf-8'
+
if encoding is None:
encoding = 'iso8859-1'
diff -Nru svn-workbench-1.6.2/Source/wb_shell_commands.py svn-workbench-1.6.6/Source/wb_shell_commands.py
--- svn-workbench-1.6.2/Source/wb_shell_commands.py 2006-01-03 01:06:03.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_shell_commands.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_shell_macosx_commands.py svn-workbench-1.6.6/Source/wb_shell_macosx_commands.py
--- svn-workbench-1.6.2/Source/wb_shell_macosx_commands.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_shell_macosx_commands.py 2011-01-05 03:50:40.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -15,6 +15,8 @@
import subprocess
import xml.sax.saxutils
+import wb_platform_specific
+
__sigchld_handler_installed = False
def getTerminalProgramList():
@@ -24,12 +26,12 @@
return ['Finder']
def GuiDiffFiles( app, options ):
- cmd_line = "'%s' %s &" % (app.prefs.getDiffTool().gui_diff_tool, options)
+ cmd_line = u"'%s' %s &" % (app.prefs.getDiffTool().gui_diff_tool, options)
app.log.info( cmd_line )
__run_command_with_output( cmd_line )
def ShellDiffFiles( app, options ):
- cmd_line = "'%s' %s" % (app.prefs.getDiffTool().shell_diff_tool, options)
+ cmd_line = u"'%s' %s" % (app.prefs.getDiffTool().shell_diff_tool, options)
app.log.info( cmd_line )
return __run_command_with_output( cmd_line )
@@ -38,30 +40,31 @@
if p.editor_image:
if p.editor_options:
- command_line = '"%s" %s "%s" &' % \
- (p.editor_image, p.editor_options, filename)
+ command_line = (u'"%s" %s "%s" &' %
+ (p.editor_image, p.editor_options, filename))
else:
- command_line = '"%s" "%s" &' % \
- (p.editor_image, filename)
+ command_line = (u'"%s" "%s" &' %
+ (p.editor_image, filename))
else:
- command_line = '"open" -e "%s" &' % filename
+ command_line = (u'"open" -e "%s" &' %
+ (filename,))
app.log.info( command_line )
cur_dir = os.getcwd()
try:
- os.chdir( project_info.getWorkingDir() )
- os.system( command_line )
+ wb_platform_specific.uChdir( project_info.getWorkingDir() )
+ os.system( command_line.encode( 'utf-8' ) )
finally:
- os.chdir( cur_dir )
+ wb_platform_specific.uChdir( cur_dir )
def ShellOpen( app, project_info, filename ):
app.log.info( T_('Open %s') % filename )
cur_dir = os.getcwd()
try:
- os.chdir( project_info.getWorkingDir() )
- __run_command_with_output( 'open "%s"' % filename )
+ wb_platform_specific.uChdir( project_info.getWorkingDir() )
+ __run_command_with_output( u'open "%s"' % (filename,) )
finally:
- os.chdir( cur_dir )
+ wb_platform_specific.uChdir( cur_dir )
def CommandShell( app, project_info ):
p = app.prefs.getShell()
@@ -83,13 +86,12 @@
title.append( pi.project_name )
pi = pi.parent
- commands = 'cd "%s"' % working_dir
+ commands = u'cd "%s"' % working_dir
if len( p.shell_init_command ) > 0:
- commands = commands + ';. "%s"\n' % p.shell_init_command
+ commands = commands + u';. "%s"\n' % p.shell_init_command
- f = open( shell_script_filename, 'w' )
- f.write( '''
+ contents = u'''
tell application "iTerm"
activate
@@ -116,10 +118,13 @@
end
''' % (' '.join( title ).replace( '"', '\\"' )
- ,commands.replace( '"', '\\"' )) )
+ ,commands.replace( '"', '\\"' ))
+
+ f = wb_platform_specific.uOpen( shell_script_filename, 'w' )
+ f.write( contents.encode( 'utf-8' ) )
f.close()
- command_line = '"osascript" "%s" &' % shell_script_filename
+ command_line = u'"osascript" "%s" &' % shell_script_filename
app.log.info( command_line )
__run_command_with_output( command_line )
@@ -137,13 +142,12 @@
title.append( pi.project_name )
pi = pi.parent
- commands = 'cd "%s"' % working_dir
+ commands = u'cd "%s"' % working_dir
if len( p.shell_init_command ) > 0:
commands = commands + ';. "%s"\n' % p.shell_init_command
- f = open( shell_script_filename, 'w' )
- f.write( '''<?xml version="1.0" encoding="UTF-8"?>
+ contents = u'''<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
@@ -158,16 +162,20 @@
</array>
</dict>
</plist>
-''' % (xml.sax.saxutils.escape( ' '.join( title ) ), xml.sax.saxutils.escape( commands )) )
+''' % (xml.sax.saxutils.escape( ' '.join( title ) )
+ ,xml.sax.saxutils.escape( commands ))
+
+ f = wb_platform_specific.uOpen( shell_script_filename, 'w' )
+ f.write( contents.encode( 'utf-8' ) )
f.close()
- command_line = '"open" "%s" &' % shell_script_filename
+ command_line = u'"open" "%s" &' % shell_script_filename
app.log.info( command_line )
__run_command_with_output( command_line )
def FileBrowser( app, project_info ):
- command_line = 'open -a "Finder" "%s" &' % project_info.getWorkingDir()
+ command_line = u'open -a "Finder" "%s" &' % project_info.getWorkingDir()
app.log.info( command_line )
__run_command_with_output( command_line )
@@ -217,11 +225,11 @@
print '%s, rc=%d' % (err_prefix, rc)
def __run_command_with_output( command_line ):
- err_prefix = 'error running %s' % command_line
+ err_prefix = u'error running %s' % command_line
try:
proc = subprocess.Popen(
- command_line,
+ command_line.encode( 'utf-8' ),
shell=True,
close_fds=True,
stdin=subprocess.PIPE,
diff -Nru svn-workbench-1.6.2/Source/wb_shell_unix_commands.py svn-workbench-1.6.6/Source/wb_shell_unix_commands.py
--- svn-workbench-1.6.2/Source/wb_shell_unix_commands.py 2009-10-11 22:00:29.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_shell_unix_commands.py 2011-01-05 03:50:40.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -13,11 +13,14 @@
import os
import signal
import subprocess
+import types
+
+import wb_platform_specific
__sigchld_handler_installed = False
gui_terminals = ['gnome-terminal', 'konsole', 'xterm', 'xfce4-terminal']
-gui_file_browsers = ['nautilus', 'konqueror', 'thunar']
+gui_file_browsers = ['nautilus', 'konqueror', 'thunar', 'dolphin']
def getTerminalProgramList():
return gui_terminals[:]
@@ -41,20 +44,20 @@
cur_dir = os.getcwd()
try:
- os.chdir( project_info.getWorkingDir() )
+ wb_platform_specific.uChdir( project_info.getWorkingDir() )
__run_command( app, editor_image, editor_args )
finally:
- os.chdir( cur_dir )
+ wb_platform_specific.uChdir( cur_dir )
def ShellOpen( app, project_info, filename ):
app.log.info( T_('Open %s') % filename )
cur_dir = os.getcwd()
try:
- os.chdir( project_info.getWorkingDir() )
- os.system( "gnome-open '%s'" % filename )
+ wb_platform_specific.uChdir( project_info.getWorkingDir() )
+ os.system( "xdg-open '%s'" % filename )
finally:
- os.chdir( cur_dir )
+ wb_platform_specific.uChdir( cur_dir )
def GuiDiffFiles( app, options ):
cmd_line = "'%s' %s &" % (app.prefs.getDiffTool().gui_diff_tool, options)
@@ -79,7 +82,7 @@
title.append( pi.project_name )
pi = pi.parent
- f = open( shell_script_filename, 'w' )
+ f = wb_platform_specific.uOpen( shell_script_filename, 'w' )
f.write( 'export WB_WD="%s"\n' % working_dir )
f.write( 'cd "%s"\n' % working_dir )
@@ -105,10 +108,12 @@
if terminal_program == 'konsole':
__run_command( app, terminal_program,
- ['-T', ' '.join( title ), '--workdir', working_dir, '-e', shell_script_filename] )
+ ['--title', ' '.join( title ), '--workdir', working_dir, '-e', '/bin/sh', shell_script_filename] )
+
elif terminal_program in ('gnome-terminal', 'xfce4-terminal'):
__run_command( app, terminal_program,
['--title', ' '.join( title ), '--working-directory', working_dir, '-x', shell_script_filename] )
+
elif terminal_program == 'xterm':
__run_command( app, terminal_program,
['-T', ' '.join( title ), '-e', shell_script_filename] )
@@ -130,9 +135,10 @@
if not found:
return
- if browser_program == 'konsole':
+ if browser_program == 'konqueror':
__run_command( app, browser_program, ['--mimetype', 'inode/directory', project_info.getWorkingDir()] )
- elif browser_program in ('nautilus', 'thunar'):
+
+ elif browser_program in ('nautilus', 'thunar', 'dolphin'):
__run_command( app, browser_program, [project_info.getWorkingDir()] )
def __run_command( app, cmd, args ):
@@ -158,8 +164,17 @@
signal.signal( signal.SIGCHLD, __sigchld_handler )
__sigchld_handler_installed = True
+ cmd = asUtf8( cmd )
+ args = [asUtf8( arg ) for arg in args]
+
os.spawnvpe( os.P_NOWAIT, cmd, [cmd]+args, env )
+def asUtf8( s ):
+ if type( s ) == types.UnicodeType:
+ return s.encode( 'utf-8' )
+ else:
+ return s
+
def __sigchld_handler( signum, frame ):
try:
while True:
diff -Nru svn-workbench-1.6.2/Source/wb_shell_win32_commands.py svn-workbench-1.6.6/Source/wb_shell_win32_commands.py
--- svn-workbench-1.6.2/Source/wb_shell_win32_commands.py 2009-09-20 19:51:33.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_shell_win32_commands.py 2011-02-28 01:16:53.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -16,6 +16,8 @@
import os
import string
import subprocess
+import wb_platform_specific
+
def getTerminalProgramList():
return ['CMD']
@@ -28,13 +30,14 @@
if p.editor_image:
if p.editor_options:
- command_line = '"%s" %s "%s"' % \
- (p.editor_image, p.editor_options, filename)
+ command_line = (u'"%s" %s "%s"' %
+ (p.editor_image, p.editor_options, filename))
else:
- command_line = '"%s" "%s"' % \
- (p.editor_image, filename)
+ command_line = (u'"%s" "%s"' %
+ (p.editor_image, filename))
else:
- command_line = '"notepad.exe" "%s"' % filename
+ command_line = (u'"notepad.exe" "%s"' %
+ (filename,))
app.log.info( command_line )
CreateProcess( app, command_line, project_info.getWorkingDir() )
@@ -45,7 +48,9 @@
CreateProcess( app, cmd_line, os.path.curdir )
def ShellDiffFiles( app, options ):
- cmd_line = '"%s" %s' % (app.prefs.getDiffTool().shell_diff_tool, options)
+ cmd_line = (u'"%s" %s' %
+ (app.prefs.getDiffTool().shell_diff_tool
+ ,options))
app.log.info( cmd_line )
return __run_command_with_output( cmd_line )
@@ -78,23 +83,28 @@
title.append( pi.project_name )
pi = pi.parent
- f = open( shell_script_filename, 'w' )
- f.write( "@title %s\n" % string.join( title, ' ' ) )
- f.write( "@set PYTHONPATH=\n" )
- f.write( '@cd %s\n' % working_dir )
- f.write( '@echo on\n' )
-
+ cmd_lines = [
+ u"@title %s\n" % (' '.join( title ),),
+ u"@set PYTHONPATH=\n",
+ u'@cd %s\n' % (working_dir,),
+ u'@echo on\n',
+ ]
if len( p.shell_init_command ) > 0:
- f.write( 'call %s\n' % p.shell_init_command )
+ cmd_lines.append( u'call %s\n' % (p.shell_init_command,) )
+
+ f = open( shell_script_filename, 'w' )
+ for line in cmd_lines:
+ f.write( line.encode( 'utf-8' ) )
f.close()
- command_line = '"%s" /k %s' % (os.environ['ComSpec'], shell_script_filename)
+ command_line = u'"%s" /k %s' % (os.environ['ComSpec'], shell_script_filename)
app.log.info( command_line )
CreateProcess( app, command_line, working_dir )
def FileBrowser( app, project_info ):
- command_line = 'explorer.exe /e,%s' % project_info.getWorkingDir()
+ command_line = (u'explorer.exe /e,%s' %
+ (project_info.getWorkingDir(),))
app.log.info( command_line )
CreateProcess( app, command_line, project_info.getWorkingDir() )
@@ -125,7 +135,7 @@
,'reason': detail} )
def ensureDirectory( app, current_dir ):
- if not os.path.exists( current_dir ):
+ if not wb_platform_specific.uPathExists( current_dir ):
try:
os.makedirs( current_dir )
app.log.info( T_('Created directory %s') % current_dir )
@@ -136,7 +146,7 @@
,'error': e} )
return 0
- elif not os.path.isdir( current_dir ):
+ elif not wb_platform_specific.uPathIsdir( current_dir ):
app.log.error( T_('%s is not a directory') % current_dir )
return 0
diff -Nru svn-workbench-1.6.2/Source/wb_show_diff_frame.py svn-workbench-1.6.6/Source/wb_show_diff_frame.py
--- svn-workbench-1.6.2/Source/wb_show_diff_frame.py 2009-10-12 01:36:44.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_show_diff_frame.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -23,6 +23,10 @@
# fix up line endings CRLF to LF and CR to LF
text = raw_text.replace( '\r\n', '\n' ).replace( '\r', '\n' )
+ try:
+ text = text.decode( 'utf-8' )
+ except ValueError:
+ pass
diff_prefs = app.prefs.getDiffWindow()
diff -Nru svn-workbench-1.6.2/Source/wb_source_control_providers.py svn-workbench-1.6.6/Source/wb_source_control_providers.py
--- svn-workbench-1.6.2/Source/wb_source_control_providers.py 2009-03-08 01:14:14.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_source_control_providers.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_annotate.py svn-workbench-1.6.6/Source/wb_subversion_annotate.py
--- svn-workbench-1.6.2/Source/wb_subversion_annotate.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_annotate.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_checkin.py svn-workbench-1.6.6/Source/wb_subversion_checkin.py
--- svn-workbench-1.6.2/Source/wb_subversion_checkin.py 2009-10-03 17:21:08.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_checkin.py 2011-11-21 01:52:09.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2006-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2006-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -30,7 +30,7 @@
class CheckinFrame(wx.Frame):
def __init__( self, app, project_info, all_files ):
- wx.Frame.__init__( self, None, -1, T_('Check in for %s') % project_info.wc_path, size=(700,500) )
+ wx.Frame.__init__( self, None, -1, T_('Check in for %s') % project_info.wc_path, size=(1000,500) )
self.app = app
@@ -110,7 +110,7 @@
self.last_log_message_text = None
try:
- f = file( self.message_filename, 'r' )
+ f = wb_platform_specific.uOpen( self.message_filename, 'r' )
self.last_log_message_text = f.read().decode('utf-8').strip()
f.close()
except EnvironmentError:
@@ -232,7 +232,7 @@
message = self.log_message_ctrl.GetValue().encode('utf-8')
try:
- f = file( self.message_filename, 'w' )
+ f = wb_platform_specific.uOpen( self.message_filename, 'w' )
f.write( message )
f.close()
except EnvironmentError:
@@ -329,7 +329,10 @@
self.all_excluded_files = {}
self.__parent = parent
-
+
+ def overrideColumnInfo( self ):
+ self.column_info.setColumnWidth( 'Name', self.column_info.getColumnWidth( 'Name' ) + 20 )
+
def getContextMenu( self ):
menu_template = [
('', wb_ids.id_File_Edit, T_('Edit') )
@@ -398,7 +401,7 @@
# Set the project files to be this new list
self.project_info.all_files = all_files
-
+
class CheckinProjectInfo:
def __init__( self, project_info, all_files ):
self.all_files = all_files
@@ -407,6 +410,7 @@
self.url = project_info.url
self.wc_path = project_info.wc_path
self.need_checkout = False
+ self.need_upgrade = False
self.client_fg = project_info.client_fg
self.client_bg = project_info.client_bg
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_diff.py svn-workbench-1.6.6/Source/wb_subversion_diff.py
--- svn-workbench-1.6.2/Source/wb_subversion_diff.py 2009-04-13 19:35:09.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_diff.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2007 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -20,6 +20,7 @@
import wb_show_diff_frame
import wb_read_file
import wb_diff_frame
+import wb_platform_specific
debug_diff = False
@@ -93,18 +94,18 @@
for path_info in (old_path_info, new_path_info):
if( path_info.revision is None
or path_info.revision.kind == pysvn.opt_revision_kind.working ):
- if not os.path.exists( path_info.path ):
+ if not wb_platform_specific.uPathExists( path_info.path ):
app.log_error( '"%s" does not exist.' % path_info.path )
fd, path_info.path = tempfile.mkstemp( suffix=os.path.basename( path_info.path ) )
os.close( fd )
# keep track of the temp file
app.all_temp_files.append( path_info.path )
- if os.path.isdir( path_info.path ):
+ if wb_platform_specific.uPathIsdir( path_info.path ):
app.log_error( '"%s" refers to a directory.' % path_info.path )
return
- if not os.access( path_info.path, os.R_OK ):
+ if not wb_platform_specific.uAccess( path_info.path, os.R_OK ):
app.log_error( '"%s" cannot be read.' % path_info.path )
return
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_history.py svn-workbench-1.6.6/Source/wb_subversion_history.py
--- svn-workbench-1.6.2/Source/wb_subversion_history.py 2009-09-20 19:51:33.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_history.py 2011-01-05 03:50:40.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -17,6 +17,7 @@
import os
import time
import types
+import urllib
import pysvn
@@ -53,7 +54,10 @@
self.author = author
self.date = date
self.label = label
- self.message = message
+ try:
+ self.message = message.decode( 'utf-8' )
+ except ValueError:
+ self.message = message
self.changed_paths = changed_paths
self.changed_paths.sort( self.by_changed_path )
@@ -70,14 +74,22 @@
if filter_field == T_('Author'):
return filter_text.lower() in self.author.lower()
+
elif filter_field == T_('Comment'):
return filter_text.lower() in self.message.lower()
+
elif filter_field == T_('Path'):
for changed_path in self.changed_paths:
- if filter_text.lower() in changed_path.path.lower():
+ try:
+ c_p_p = changed_path.path.decode('utf-8')
+ except ValueError:
+ c_p_p = changed_path.path
+
+ if filter_text.lower() in c_p_p.lower():
return True
return False
+
else:
assert( False )
return False
@@ -101,7 +113,8 @@
if len( all_log_entries ) == 0:
return info.URL, all_history_entries
- repos_path = info.URL[len(info.repos_root_URL):]
+ repos_path = urllib.unquote( info.URL[len(info.repos_root_URL):].encode( 'utf-8' ) )
+
for log in all_log_entries:
# author is optional
if 'author' not in log:
@@ -110,7 +123,7 @@
all_history_entries.append(
LogEntry(
log.revision.number,
- info.repos_root_URL+repos_path,
+ info.URL,
log.author,
log.date,
'',
@@ -119,7 +132,11 @@
for changed_path in log.changed_paths:
if changed_path.action in ['A','M']:
- if repos_path == changed_path.path:
+ if changed_path.path is not None:
+ c_p_p = changed_path.path.decode( 'utf-8' )
+ else:
+ c_p_p = None
+ if repos_path == c_p_p:
if changed_path.copyfrom_path is not None:
repos_path = changed_path.copyfrom_path
break
@@ -484,7 +501,7 @@
# Arrange the panels with the splitter windows
self.splitter.AppendWindow( self.panel_history, 250 )
self.splitter.AppendWindow( self.panel_comment, 100 )
- self.splitter.AppendWindow( self.panel_changed_paths, 150 )
+ self.splitter.AppendWindow( self.panel_changed_paths, 200 )
self.selected_revisions = {}
@@ -508,7 +525,7 @@
char_width = 9
self.list_ctrl.SetColumnWidth( self.col_revision, 7*char_width )
self.list_ctrl.SetColumnWidth( self.col_author, 14*char_width )
- self.list_ctrl.SetColumnWidth( self.col_date, 15*char_width )
+ self.list_ctrl.SetColumnWidth( self.col_date, 18*char_width )
self.list_ctrl.SetColumnWidth( self.col_label, 12*char_width )
self.list_ctrl.SetColumnWidth( self.col_message, 40*char_width )
@@ -525,9 +542,9 @@
char_width = 9
self.paths_ctrl.SetColumnWidth( self.col_action, 7*char_width )
- self.paths_ctrl.SetColumnWidth( self.col_path, 40*char_width )
+ self.paths_ctrl.SetColumnWidth( self.col_path, 60*char_width )
self.paths_ctrl.SetColumnWidth( self.col_copyfrom_revision, 6*char_width )
- self.paths_ctrl.SetColumnWidth( self.col_copyfrom_path, 40*char_width )
+ self.paths_ctrl.SetColumnWidth( self.col_copyfrom_path, 60*char_width )
self.initButtons( self.v_sizer_history )
@@ -686,7 +703,7 @@
self.paths_ctrl.InsertStringItem( index,
action_map.get( info.action, info.action ) )
self.paths_ctrl.SetStringItem( index, self.col_path,
- info.path )
+ info.path.decode( 'utf-8' ) )
if info.copyfrom_path is not None:
self.paths_ctrl.SetStringItem( index, self.col_copyfrom_revision,
str( info.copyfrom_revision.number ) )
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_info_dialog.py svn-workbench-1.6.6/Source/wb_subversion_info_dialog.py
--- svn-workbench-1.6.2/Source/wb_subversion_info_dialog.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_info_dialog.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2007 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_list_handler.py svn-workbench-1.6.6/Source/wb_subversion_list_handler.py
--- svn-workbench-1.6.2/Source/wb_subversion_list_handler.py 2009-09-20 19:51:33.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_list_handler.py 2011-11-21 01:52:09.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -25,6 +25,7 @@
import wb_clipboard
import wb_diff_frame
import wb_dialogs
+import wb_platform_specific
class SubversionListHandler(wb_subversion_list_handler_common.SubversionListHandlerCommon):
def __init__( self, app, list_panel, project_info ):
@@ -34,9 +35,14 @@
return '<SubversionListHandler %r>' % self.project_info
def getContextMenu( self ):
- if self.project_info.need_checkout:
+ if self.project_info.need_upgrade:
+ menu_template = \
+ [('', wb_ids.id_SP_Upgrade, T_('Upgrade') )]
+
+ elif self.project_info.need_checkout:
menu_template = \
[('', wb_ids.id_SP_Checkout, T_('Checkout') )]
+
else:
menu_template = \
[('', wb_ids.id_File_Edit, T_('Edit') )]
@@ -117,7 +123,7 @@
all_status = []
try:
for filename in paste_data.getAllFilenames():
- if os.path.isdir( filename ):
+ if wb_platform_specific.uPathIsdir( filename ):
dir_status = self.project_info.client_bg.status( os.path.dirname( filename ), recurse=False )
all_status.extend( [s for s in dir_status if s.path == filename] )
else:
@@ -149,7 +155,7 @@
else:
rename_title = T_('Rename')
- while os.path.exists( new_filename ):
+ while wb_platform_specific.uPathExists( new_filename ):
new_name, force = self.app.renameFile( rename_title, os.path.basename( old_filename ), None )
if new_name is None:
return
@@ -168,7 +174,7 @@
try:
if paste_data.isCopy():
- if os.path.isdir( old_filename ):
+ if wb_platform_specific.uPathIsdir( old_filename ):
if is_controlled:
self.project_info.client_bg.copy( old_filename, new_filename )
else:
@@ -179,11 +185,11 @@
ok = True
else:
- if os.path.isdir( old_filename ):
+ if wb_platform_specific.uPathIsdir( old_filename ):
if is_controlled:
self.project_info.client_bg.move( old_filename, new_filename, force=force )
else:
- os.rename( old_filename, new_filename )
+ wb_platform_specific.uRename( old_filename, new_filename )
else:
text_status = self.getTextStatus( status )
prop_status = self.getPropStatus( status )
@@ -249,7 +255,7 @@
if is_controlled:
if text_status == pysvn.wc_status_kind.added:
self.project_info.client_fg.revert( filename )
- os.remove( filename )
+ wb_platform_specific.uRemove( filename )
elif( text_status == pysvn.wc_status_kind.modified
or prop_status == pysvn.wc_status_kind.modified ):
@@ -260,7 +266,7 @@
self.project_info.client_fg.remove( filename )
else:
- os.remove( filename )
+ wb_platform_specific.uRemove( filename )
except pysvn.ClientError, e:
self.app.log_client_error( e )
@@ -301,7 +307,7 @@
def __copyFile( self, old_filename, new_full_filename, is_controlled, text_status, prop_status ):
if not is_controlled:
raise EnvironmentError( 'TBD - copy file' )
- os.rename( old_filename, new_full_filename )
+ wb_platform_specific.uRename( old_filename, new_full_filename )
return
if( text_status == pysvn.wc_status_kind.normal
@@ -312,7 +318,7 @@
def __moveFile( self, old_filename, new_full_filename, is_controlled, text_status, prop_status ):
if not is_controlled:
- os.rename( old_filename, new_full_filename )
+ wb_platform_specific.uRename( old_filename, new_full_filename )
return
if text_status == pysvn.wc_status_kind.added:
@@ -323,7 +329,7 @@
print( T_('Rename %(from)s %(to)s') %
{'from': old_filename
,'to': new_full_filename} )
- os.rename( old_filename, new_full_filename )
+ wb_platform_specific.uRename( old_filename, new_full_filename )
self.project_info.client_fg.add( new_full_filename )
# all_prop_lists is empty if there are no properties set
@@ -339,7 +345,7 @@
for tmp_name_index in range( 100 ):
tmp_filename = os.path.join( os.path.dirname( old_filename ),
'%s.%d.tmp' % (new_full_filename, tmp_name_index) )
- if not os.path.exists( tmp_filename ):
+ if not wb_platform_specific.uPathExists( tmp_filename ):
new_full_tmp_filename = tmp_filename
break
@@ -353,15 +359,15 @@
print( T_('Rename %(from)s %(to)s') %
{'from': old_filename
,'to': new_full_tmp_filename} )
- os.rename( old_filename, new_full_tmp_filename )
+ wb_platform_specific.uRename( old_filename, new_full_tmp_filename )
self.project_info.client_fg.revert( old_filename )
self.project_info.client_fg.move( old_filename, new_full_filename )
- os.remove( new_full_filename )
+ wb_platform_specific.uRemove( new_full_filename )
print( T_('Rename %(from)s %(to)s') %
{'from': new_full_tmp_filename
,'to': new_full_tmp_filename} )
- os.rename( new_full_tmp_filename, new_full_filename )
+ wb_platform_specific.uRename( new_full_tmp_filename, new_full_filename )
if len(all_props) > 0:
_, prop_dict = all_props[0]
@@ -460,8 +466,11 @@
if self.project_info.notification_of_files_in_conflict > 0:
wx.MessageBox( S_("%d file is in conflict",
- "%d files are in conflict", self.project_info.notification_of_files_in_conflict) % self.project_info.notification_of_files_in_conflict,
- T_("Warning"), style=wx.OK|wx.ICON_EXCLAMATION )
+ "%d files are in conflict",
+ self.project_info.notification_of_files_in_conflict) %
+ self.project_info.notification_of_files_in_conflict,
+ T_("Warning"),
+ style=wx.OK|wx.ICON_EXCLAMATION )
self.app.clearProgress()
self.app.setAction( T_('Ready') )
@@ -513,8 +522,11 @@
if self.project_info.notification_of_files_in_conflict > 0:
wx.MessageBox( S_("%d file is in conflict",
- "%d files are in conflict", self.project_info.notification_of_files_in_conflict) % self.project_info.notification_of_files_in_conflict,
- T_("Warning"), style=wx.OK|wx.ICON_EXCLAMATION )
+ "%d files are in conflict",
+ self.project_info.notification_of_files_in_conflict) %
+ self.project_info.notification_of_files_in_conflict,
+ T_("Warning"),
+ style=wx.OK|wx.ICON_EXCLAMATION )
self.app.clearProgress()
self.app.setAction( T_('Ready') )
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_list_handler_common.py svn-workbench-1.6.6/Source/wb_subversion_list_handler_common.py
--- svn-workbench-1.6.2/Source/wb_subversion_list_handler_common.py 2009-10-03 19:22:02.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_list_handler_common.py 2011-11-21 01:52:09.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -26,6 +26,7 @@
import wb_subversion_properties_dialog
import wb_subversion_diff
import wb_config
+import wb_platform_specific
col_labels = [
('Name', U_('Name'), 25, 10, 100, wx.LIST_FORMAT_LEFT),
@@ -106,6 +107,15 @@
for index, name in enumerate( self.column_order ):
self.column_info_by_name[ name ].column = index
+ def getColumnWidth( self, column_name ):
+ return self.column_info_by_name[ column_name ].width
+
+ def setColumnWidth( self, column_name, width ):
+ info = self.column_info_by_name[ column_name ]
+ width = max( info.min_width, width )
+ width = min( info.max_width, width )
+ info.width = width
+
def getColumnOrder( self ):
return self.column_order
@@ -200,6 +210,10 @@
def setupColumnInfo( self ):
self.column_info.setFromPreferenceData( self.app.prefs.getView() )
+ self.overrideColumnInfo()
+
+ def overrideColumnInfo( self ):
+ pass
def setupColumns( self ):
self.setupColumnInfo()
@@ -228,8 +242,9 @@
self.list_panel.updateHeader( self.project_info.url, self.project_info.wc_path )
- # nothing doing if the wc does not exist
- if self.project_info.need_checkout:
+ # nothing doing if the wc does not exist or needs upgrade
+ if( self.project_info.need_checkout
+ or self.project_info.need_upgrade ):
# empty the list
g.DeleteAllItems()
@@ -283,7 +298,8 @@
def sortList( self, sort_data ):
self.app.log.debug('sortList' )
- if self.project_info.need_checkout:
+ if( self.project_info.need_checkout
+ or self.project_info.need_upgrade ):
# nothing to sort
return
@@ -354,6 +370,12 @@
def OnGetItemText( self, index, col ):
column = self.column_info.getNameByColumn( col )
+ if self.project_info.need_upgrade:
+ if column == self.col_name:
+ return T_('Use the Upgrade command to convert the working copy to the required format')
+ else:
+ return ''
+
if self.project_info.need_checkout:
if column == self.col_name:
if self.isProjectParent():
@@ -404,7 +426,8 @@
return value
def OnGetItemAttr( self, index ):
- if self.project_info.need_checkout:
+ if( self.project_info.need_checkout
+ or self.project_info.need_upgrade ):
colour = wb_config.colour_status_need_checkout
else:
colour = self.statusColour( self.all_files[ index ] )
@@ -417,7 +440,8 @@
return self.all_item_attr[ colour ]
def isItemImageFolder(self, item):
- if self.project_info.need_checkout:
+ if( self.project_info.need_checkout
+ or self.project_info.need_upgrade ):
return True
elif self.GetItemIsDir( item ):
@@ -429,14 +453,14 @@
def GetItemIsDir(self, item):
status = self.all_files[ item ]
if status.entry is None:
- is_dir = os.path.isdir( status.path )
+ is_dir = wb_platform_specific.uPathIsdir( status.path )
else:
is_dir = status.entry.kind == pysvn.node_kind.dir
return is_dir
def __get_NameColumn( self, status, prefix_len ):
if status.entry is None:
- is_dir = os.path.isdir( status.path )
+ is_dir = wb_platform_specific.uPathIsdir( status.path )
else:
is_dir = status.entry.kind == pysvn.node_kind.dir
if is_dir:
@@ -493,7 +517,7 @@
return wb_subversion_utils.fmtDateTime( status.entry.commit_time )
def __get_LockCommentColumn( self, status ):
- if status.repos_lock is not None:
+ if status.repos_lock is not None and status.repos_lock.comment is not None:
comment = status.repos_lock.comment.replace( '\n', ' ' )
elif status.entry is not None and status.entry.lock_comment is not None:
comment = status.entry.lock_comment.replace( '\n', ' ' )
@@ -516,6 +540,10 @@
state = wb_list_panel_common.ListItemState()
+ if self.project_info.need_upgrade:
+ state.need_upgrade = True
+ return state
+
if self.project_info.need_checkout:
state.need_checkout = True
state.ui_project_parent = True
@@ -535,10 +563,10 @@
for row in all_rows:
filename = self.all_files[ row ].path
- if not os.path.exists( filename ):
+ if not wb_platform_specific.uPathExists( filename ):
state.file_exists = False
- if os.path.isdir( filename ):
+ if wb_platform_specific.uPathIsdir( filename ):
state.modified = False
state.conflict = False
state.file_exists = False
@@ -603,7 +631,7 @@
def mayOpen( self, row_or_status ):
status = self.getStatusFromRowOrStatus( row_or_status )
if status.entry is None:
- return not os.path.isdir( self.getFilename( row_or_status ) )
+ return not wb_platform_specific.uPathIsdir( self.getFilename( row_or_status ) )
else:
return status.entry.kind == pysvn.node_kind.dir
@@ -974,7 +1002,7 @@
prop_dict = {}
else:
_, prop_dict = prop_list[0]
- if os.path.isdir( filename ):
+ if wb_platform_specific.uPathIsdir( filename ):
dialog = wb_subversion_properties_dialog.DirPropertiesDialog( self.app,
self.list_panel.list_ctrl,
filename,
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_project_info.py svn-workbench-1.6.6/Source/wb_subversion_project_info.py
--- svn-workbench-1.6.2/Source/wb_subversion_project_info.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_project_info.py 2012-03-04 05:14:15.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2007 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2012 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -29,6 +29,8 @@
import wb_subversion_tree_handler
import wb_subversion_list_handler
import wb_subversion_utils
+import wb_platform_specific
+import wb_subversion_utils
_fast_proplist = True
@@ -48,6 +50,7 @@
self.all_tree_files_status = []
self.need_checkout = True
+ self.need_upgrade = False
self.need_properties = False
self.files_properties = {}
@@ -179,8 +182,13 @@
self.notification_of_files_in_conflict += 1
# print anything that gets through the filter
- msg = '%s %s\n' % (action_letter, arg_dict['path'])
- self.app.foregroundProcess( sys.stdout.write, (msg,) )
+ try:
+ path = arg_dict['path'].decode( 'utf-8' )
+ except ValueError:
+ path = arg_dict['path']
+
+ msg = u'%s %s\n' % (action_letter, path)
+ self.app.foregroundProcess( sys.stdout.write, (msg.encode( 'utf-8' ),) )
def readPreferences( self, get_option ):
wb_source_control_providers.ProjectInfo.readPreferences( self, get_option )
@@ -261,15 +269,26 @@
self.dir_status = None
self.need_checkout = True
- if not os.path.exists( self.wc_path ):
+ if not wb_platform_specific.uPathExists( self.wc_path ):
return
p = self.app.prefs.getView()
+
try:
+ self.need_upgrade = False
entry = self.client_fg.info( self.wc_path )
+
except pysvn.ClientError, e:
+ if wb_subversion_utils.version_info.has_upgrade:
+ # is it the 'Working copy XXX is too old' error?
+ if e.args[1][0][1] == pysvn.svn_err.wc_upgrade_required:
+ self.need_checkout = False
+ self.need_upgrade = True
+ return
+
# is it the 'is not a working copy' error?
if e.args[1][0][1] == pysvn.svn_err.wc_not_directory:
+ # need_checkout
return
print 'Error: %s' % e.args[0]
@@ -282,12 +301,14 @@
self.all_files_status = self.client_fg.status( self.wc_path, recurse=p.view_recursive, ignore=False )
+
self.need_checkout = False
# sort list
self.all_files_status.sort( wb_subversion_utils.by_path )
+
# remember dir_status before filtering
- if len(self.all_files_status) > 0 and self.all_files_status[0].path == self.wc_path:
+ if len(self.all_files_status) > 0 and os.path.normcase( self.all_files_status[0].path ) == os.path.normcase( self.wc_path ):
self.dir_status = self.all_files_status[0]
del self.all_files_status[0]
@@ -372,7 +393,7 @@
return self.dir_status
def __proplist( self, path ):
- if os.path.isdir( path ):
+ if wb_platform_specific.uPathIsdir( path ):
prop_file = os.path.join( path, '.svn', 'dir-props' )
base_prop_file = os.path.join( path, '.svn', 'dir-prop-base' )
else:
@@ -382,10 +403,10 @@
result = {}
try:
- f = file( prop_file )
+ f = wb_platform_specific.uOpen( prop_file )
except EnvironmentError:
try:
- f = file( base_prop_file )
+ f = wb_platform_specific.uOpen( base_prop_file )
except EnvironmentError:
return result
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_properties_dialog.py svn-workbench-1.6.6/Source/wb_subversion_properties_dialog.py
--- svn-workbench-1.6.2/Source/wb_subversion_properties_dialog.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_properties_dialog.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_provider.py svn-workbench-1.6.6/Source/wb_subversion_provider.py
--- svn-workbench-1.6.2/Source/wb_subversion_provider.py 2006-01-03 01:06:03.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_provider.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2006 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_report_branch_changes.py svn-workbench-1.6.6/Source/wb_subversion_report_branch_changes.py
--- svn-workbench-1.6.2/Source/wb_subversion_report_branch_changes.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_report_branch_changes.py 2011-11-21 01:52:09.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2006-2007 Barry A Scott. All rights reserved.
+ Copyright (c) 2006-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -18,7 +18,6 @@
import wb_list_panel_common
import wb_subversion_utils
import wb_subversion_list_handler_common
-import wb_platform_specific
class ReportBranchChangesFrame(wx.Frame):
def __init__( self, app, project_info, all_files ):
@@ -177,6 +176,7 @@
self.url = project_info.url
self.wc_path = project_info.wc_path
self.need_checkout = False
+ self.need_upgrade = False
self.client_fg = project_info.client_fg
self.client_bg = project_info.client_bg
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_report_lock.py svn-workbench-1.6.6/Source/wb_subversion_report_lock.py
--- svn-workbench-1.6.2/Source/wb_subversion_report_lock.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_report_lock.py 2011-11-21 01:52:09.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2006-2007 Barry A Scott. All rights reserved.
+ Copyright (c) 2006-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -16,13 +16,13 @@
import time
import pysvn
+import wb_config
import wb_ids
import wb_images
import wb_exceptions
import wb_list_panel_common
import wb_subversion_utils
import wb_subversion_list_handler_common
-import wb_platform_specific
class ReportLockFrame(wx.Frame):
def __init__( self, app, project_info, all_files, show_repos_locks=False ):
@@ -220,6 +220,7 @@
self.url = project_info.url
self.wc_path = project_info.wc_path
self.need_checkout = False
+ self.need_upgrade = False
self.client_fg = project_info.client_fg
self.client_bg = project_info.client_bg
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_report_revision_changes.py svn-workbench-1.6.6/Source/wb_subversion_report_revision_changes.py
--- svn-workbench-1.6.2/Source/wb_subversion_report_revision_changes.py 2009-10-03 17:21:08.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_report_revision_changes.py 2011-11-21 01:52:09.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2009-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -23,7 +23,6 @@
import wb_subversion_diff
import wb_subversion_utils
import wb_subversion_list_handler_common
-import wb_platform_specific
import wb_subversion_annotate
import wb_subversion_info_dialog
import wb_subversion_history
@@ -294,6 +293,7 @@
self.url = project_info.url
self.wc_path = project_info.wc_path
self.need_checkout = False
+ self.need_upgrade = False
self.client_fg = project_info.client_fg
self.client_bg = project_info.client_bg
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_report_updates.py svn-workbench-1.6.6/Source/wb_subversion_report_updates.py
--- svn-workbench-1.6.2/Source/wb_subversion_report_updates.py 2009-09-20 19:51:33.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_report_updates.py 2011-11-21 01:52:09.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2006-2007 Barry A Scott. All rights reserved.
+ Copyright (c) 2006-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -23,7 +23,6 @@
import wb_list_panel_common
import wb_subversion_utils
import wb_subversion_list_handler_common
-import wb_platform_specific
id_exclude = wx.NewId()
id_include = wx.NewId()
@@ -254,6 +253,7 @@
self.url = project_info.url
self.wc_path = project_info.wc_path
self.need_checkout = False
+ self.need_upgrade = False
self.client_fg = project_info.client_fg
self.client_bg = project_info.client_bg
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_tree_handler.py svn-workbench-1.6.6/Source/wb_subversion_tree_handler.py
--- svn-workbench-1.6.2/Source/wb_subversion_tree_handler.py 2009-09-20 19:51:33.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_tree_handler.py 2012-03-03 23:31:36.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -33,6 +33,7 @@
import wb_clipboard
import wb_dialogs
import wb_config
+import wb_platform_specific
class SubversionProject(wb_tree_panel.TreeProjectItem):
def __init__( self, app, project_info ):
@@ -52,7 +53,7 @@
dir_status = self.project_info.getDirStatus()
if dir_status is None:
# no status available - make a guess
- if not os.path.exists( self.project_info.wc_path ):
+ if not wb_platform_specific.uPathExists( self.project_info.wc_path ):
# nothing there
return False
else:
@@ -61,7 +62,7 @@
for file in self.project_info.getTreeFilesStatus():
if( (file.entry is not None and file.entry.kind == pysvn.node_kind.dir)
- or (file.entry is None and os.path.isdir( file.path )) ):
+ or (file.entry is None and wb_platform_specific.uPathIsdir( file.path )) ):
return True
return False
@@ -71,7 +72,7 @@
for file in self.project_info.getTreeFilesStatus():
- if( (file.entry is None and os.path.isdir( file.path ))
+ if( (file.entry is None and wb_platform_specific.uPathIsdir( file.path ))
or (file.entry is not None and file.entry.kind == pysvn.node_kind.dir) ):
pi = wb_subversion_project_info.ProjectInfo( self.app, self.project_info )
name = os.path.basename( file.path )
@@ -92,17 +93,17 @@
dir_status = self.project_info.getDirStatus()
if dir_status is None:
# no status available - make a guess
- if not os.path.exists( self.project_info.wc_path ):
+ if not wb_platform_specific.uPathExists( self.project_info.wc_path ):
# nothing there
return wb_config.colour_status_need_checkout
- elif not os.path.exists( os.path.join( self.project_info.wc_path, '.svn' ) ):
+ elif not wb_platform_specific.uPathExists( os.path.join( self.project_info.wc_path, '.svn' ) ):
# not versioned
return wb_config.colour_status_unversioned
else:
# versioned and present
return wb_config.colour_status_normal
- elif not os.path.exists( dir_status.path ):
+ elif not wb_platform_specific.uPathExists( dir_status.path ):
# nothing there
return wb_config.colour_status_need_checkout
elif dir_status.text_status in [pysvn.wc_status_kind.unversioned, pysvn.wc_status_kind.ignored]:
@@ -126,6 +127,7 @@
state.unversioned = False
state.need_checkin = False
state.need_checkout = True
+ state.need_upgrade = False
state.conflict = False
state.file_exists = False
state.revertable = False
@@ -137,10 +139,11 @@
state.unversioned = True
state.need_checkin = True
state.need_checkout = False
+ state.need_upgrade = False
state.conflict = True
state.file_exists = True
- if not os.path.exists( dir_status.path ):
+ if not wb_platform_specific.uPathExists( dir_status.path ):
state.file_exists = False
text_status = dir_status.text_status
@@ -539,7 +542,7 @@
and dialog.getTemplateFilename() is not None ):
try:
template_filename = os.path.join( template_dir, dialog.getTemplateFilename() )
- t = file( template_filename, 'r' )
+ t = wb_platform_specific.uOpen( template_filename, 'r' )
template_contents = t.read()
t.close()
@@ -551,7 +554,7 @@
try:
new_filename = os.path.join( self.project_info.wc_path, dialog.getNewFilename() )
- f = file( new_filename, 'w' )
+ f = wb_platform_specific.uOpen( new_filename, 'w' )
f.write( template_contents )
f.close()
@@ -799,7 +802,7 @@
self.app.log_client_error( e )
else:
try:
- os.rename( old_filename, new_full_filename )
+ wb_platform_specific.uRename( old_filename, new_full_filename )
except (OSError,IOError), e:
self.app.log.error( str(e) )
@@ -887,11 +890,26 @@
if self.project_info.notification_of_files_in_conflict > 0:
wx.MessageBox( S_("%d file is in conflict",
- "%d files are in conflict", self.project_info.notification_of_files_in_conflict) % self.project_info.notification_of_files_in_conflict,
+ "%d files are in conflict",
+ self.project_info.notification_of_files_in_conflict) %
+ self.project_info.notification_of_files_in_conflict,
T_("Warning"), style=wx.OK|wx.ICON_EXCLAMATION )
self.app.clearProgress()
self.app.setAction( T_('Ready') )
+ self.app.refreshFrame()
+
+ def Cmd_Dir_Upgrade( self ):
+ self.app.setAction( T_('Upgrade %s...') % self.project_info.wc_path )
+
+ try:
+ self.project_info.client_fg.upgrade( self.project_info.wc_path )
+
+ except pysvn.ClientError, e:
+ self.app.log_client_error( e )
+
+ self.app.clearProgress()
+ self.app.setAction( T_('Ready') )
self.app.refreshFrame()
def Cmd_Dir_Copy( self, all_filenames ):
diff -Nru svn-workbench-1.6.2/Source/wb_subversion_utils.py svn-workbench-1.6.6/Source/wb_subversion_utils.py
--- svn-workbench-1.6.2/Source/wb_subversion_utils.py 2009-09-14 01:02:30.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_subversion_utils.py 2011-11-21 07:37:53.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -25,6 +25,8 @@
self.notify_action_has_failed_lock = hasattr( pysvn.wc_notify_action, 'failed_lock' )
self.has_depth = hasattr( pysvn, 'depth' )
self.notify_action_has_property_events = hasattr( pysvn.wc_notify_action, 'property_added' )
+ self.notify_action_has_upgrade_events = hasattr( pysvn.wc_notify_action, 'upgraded_path' )
+ self.has_upgrade = self.notify_action_has_upgrade_events
version_info = svn_version_info()
@@ -150,6 +152,33 @@
wc_notify_action_map[ pysvn.wc_notify_action.tree_conflict ] = 'tree_conflict'
wc_notify_action_map[ pysvn.wc_notify_action.failed_external ] = 'failed_external'
+if version_info.notify_action_has_upgrade_events:
+ wc_notify_action_map[ pysvn.wc_notify_action.upgraded_path ] = 'upgraded_path'
+ wc_notify_action_map[ pysvn.wc_notify_action.update_started ] = "update_started"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_skip_obstruction ] = "update_skip_obstruction"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_skip_working_only ] = "update_skip_working_only"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_external_removed ] = "update_external_removed"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_shadowed_add ] = "update_shadowed_add"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_shadowed_update ] = "update_shadowed_update"
+ wc_notify_action_map[ pysvn.wc_notify_action.update_shadowed_delete ] = "update_shadowed_delete"
+ wc_notify_action_map[ pysvn.wc_notify_action.merge_record_info ] = "merge_record_info"
+ wc_notify_action_map[ pysvn.wc_notify_action.upgraded_path ] = "upgraded_path"
+ wc_notify_action_map[ pysvn.wc_notify_action.merge_record_info_begin ] = "merge_record_info_begin"
+ wc_notify_action_map[ pysvn.wc_notify_action.merge_elide_info ] = "merge_elide_info"
+ wc_notify_action_map[ pysvn.wc_notify_action.patch ] = "patch"
+ wc_notify_action_map[ pysvn.wc_notify_action.patch_applied_hunk ] = "patch_applied_hunk"
+ wc_notify_action_map[ pysvn.wc_notify_action.patch_rejected_hunk ] = "patch_rejected_hunk"
+ wc_notify_action_map[ pysvn.wc_notify_action.patch_hunk_already_applied ] = "patch_hunk_already_applied"
+ wc_notify_action_map[ pysvn.wc_notify_action.commit_copied ] = "commit_copied"
+ wc_notify_action_map[ pysvn.wc_notify_action.commit_copied_replaced ] = "commit_copied_replaced"
+ wc_notify_action_map[ pysvn.wc_notify_action.url_redirect ] = "url_redirect"
+ wc_notify_action_map[ pysvn.wc_notify_action.path_nonexistent ] = "path_nonexistent"
+ wc_notify_action_map[ pysvn.wc_notify_action.exclude ] = "exclude"
+ wc_notify_action_map[ pysvn.wc_notify_action.failed_conflict ] = "failed_conflict"
+ wc_notify_action_map[ pysvn.wc_notify_action.failed_missing ] = "failed_missing"
+ wc_notify_action_map[ pysvn.wc_notify_action.failed_out_of_date ] = "failed_out_of_date"
+ wc_notify_action_map[ pysvn.wc_notify_action.failed_no_parent ] = "failed_no_parent"
+
wc_notify_type_map = {
pysvn.wc_notify_action.add: 'A',
pysvn.wc_notify_action.commit_added: 'C',
@@ -191,6 +220,32 @@
wc_notify_type_map[ pysvn.wc_notify_action.tree_conflict ] = None
wc_notify_type_map[ pysvn.wc_notify_action.failed_external ] = None
+if version_info.notify_action_has_upgrade_events:
+ wc_notify_type_map[ pysvn.wc_notify_action.upgraded_path ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_started ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_skip_obstruction ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_skip_working_only ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_external_removed ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_shadowed_add ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_shadowed_update ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.update_shadowed_delete ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.merge_record_info ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.upgraded_path ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.merge_record_info_begin ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.merge_elide_info ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.patch ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.patch_applied_hunk ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.patch_rejected_hunk ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.patch_hunk_already_applied ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.commit_copied ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.commit_copied_replaced ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.url_redirect ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.path_nonexistent ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.exclude ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.failed_conflict ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.failed_missing ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.failed_out_of_date ] = None
+ wc_notify_type_map[ pysvn.wc_notify_action.failed_no_parent ] = None
#
# format the concise status from file
diff -Nru svn-workbench-1.6.2/Source/wb_toolbars.py svn-workbench-1.6.6/Source/wb_toolbars.py
--- svn-workbench-1.6.2/Source/wb_toolbars.py 2009-09-20 18:59:25.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_toolbars.py 2010-12-31 02:50:13.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2009-2010 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
diff -Nru svn-workbench-1.6.2/Source/wb_tree_panel.py svn-workbench-1.6.6/Source/wb_tree_panel.py
--- svn-workbench-1.6.2/Source/wb_tree_panel.py 2012-07-25 06:31:59.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_tree_panel.py 2012-07-25 06:31:59.000000000 +0900
@@ -1,6 +1,6 @@
'''
====================================================================
- Copyright (c) 2003-2009 Barry A Scott. All rights reserved.
+ Copyright (c) 2003-2011 Barry A Scott. All rights reserved.
This software is licensed as described in the file LICENSE.txt,
which you should have received as part of this distribution.
@@ -35,6 +35,7 @@
self.unversioned = False
self.need_checkin = False
self.need_checkout = False
+ self.need_upgrade = False
self.conflict = False
self.file_exists = False
self.is_folder = True
@@ -127,13 +128,11 @@
dc.Clear()
w, h = self.GetSize()
if self.FindFocus() == self.tree_ctrl:
- print 'tree focus'
dc.SetPen( wx.Pen( "red", 1 ) )
dc.DrawRectangle( 0, 0, w, h )
else:
dc.SetPen( wx.Pen( "green", 1 ) )
dc.DrawRectangle( 0, 0, w, h )
- print 'tree unfocus'
event.Skip()
def initFrame( self ):
@@ -266,6 +265,7 @@
if first_item:
self.tree_ctrl.SelectItem( first_item )
+ # QQQ: EnsureVisible causes an assert in wxPython 2.8.12.1 on Mac OS X
self.tree_ctrl.EnsureVisible( first_item )
def updateTreeSelectedItem( self ):
@@ -318,12 +318,14 @@
child_item, cookie = self.tree_ctrl.GetFirstChild( this_item )
while child_item:
child_handler = self.tree_ctrl.GetPyData( child_item )
+ # Since WX 2.8.11.1 need to call updateStatus() here - guess that a callback sequence changed
+ child_handler.updateStatus()
self.tree_ctrl.SetItemHasChildren( child_item, child_handler.mayExpand() )
self.tree_ctrl.SetItemTextColour( child_item, child_handler.getTreeNodeColour() )
child_item, cookie = self.tree_ctrl.GetNextChild( this_item, cookie )
- # set the has children state
+ # set the has-children state
self.tree_ctrl.SetItemHasChildren( this_item, len(project_info_list) > 0 )
def gotoBookmark( self, bookmark_name ):
@@ -768,6 +770,9 @@
def OnSpUpdateTo( self ):
return self.Sp_Dispatch( 'Cmd_Dir_UpdateTo' )
+ def OnSpUpgrade( self ):
+ return self.Sp_Dispatch( 'Cmd_Dir_Upgrade' )
+
#----------------------------------------
def OnSpCopy( self, filename_list ):
return self.Sp_DispatchDrop( 'Cmd_Dir_Copy', filename_list )
diff -Nru svn-workbench-1.6.2/Source/wb_version.py svn-workbench-1.6.6/Source/wb_version.py
--- svn-workbench-1.6.2/Source/wb_version.py 2010-01-04 00:53:16.000000000 +0900
+++ svn-workbench-1.6.6/Source/wb_version.py 2012-03-04 06:15:22.000000000 +0900
@@ -13,5 +13,5 @@
'''
major = 1
minor = 6
-patch = 2
-build = 1283
+patch = 6
+build = 1465
diff -Nru svn-workbench-1.6.2/Source/win32.mak svn-workbench-1.6.6/Source/win32.mak
--- svn-workbench-1.6.2/Source/win32.mak 2009-10-03 17:25:22.000000000 +0900
+++ svn-workbench-1.6.6/Source/win32.mak 2011-11-06 23:19:48.000000000 +0900
@@ -79,10 +79,6 @@
wb_images.py: make_wb_images.py $(IMAGES)
$(PYTHON) -u make_wb_images.py wb_images.py $(IMAGES)
-PYCHECKER_OPTIONS=--no-shadowbuiltin
-
-check: checkstop
-
#
# Make the run script
#
@@ -103,5 +99,4 @@
if exist locale rmdir /s /q locale
if exist I18N\pysvn_workbench.current.pot del I18N\pysvn_workbench.current.pot
-!include <pychecker.mak>
!include <meinc_installer.mak>
diff -Nru svn-workbench-1.6.2/debian/changelog svn-workbench-1.6.6/debian/changelog
--- svn-workbench-1.6.2/debian/changelog 2012-07-25 06:31:59.000000000 +0900
+++ svn-workbench-1.6.6/debian/changelog 2012-07-25 06:31:59.000000000 +0900
@@ -1,3 +1,13 @@
+svn-workbench (1.6.6-1) UNRELEASED; urgency=low
+
+ * QA upload.
+ * New upstream release
+ - support subversion1.7
+ * debian/watch
+ - exec uupdate automatically
+
+ -- Hideki Yamane <henrich@debian.org> Wed, 25 Jul 2012 05:16:20 +0900
+
svn-workbench (1.6.2-2) unstable; urgency=low
* Orphan the package.
diff -Nru svn-workbench-1.6.2/debian/watch svn-workbench-1.6.6/debian/watch
--- svn-workbench-1.6.2/debian/watch 2012-07-25 06:31:59.000000000 +0900
+++ svn-workbench-1.6.6/debian/watch 2012-07-25 06:31:59.000000000 +0900
@@ -1,2 +1,2 @@
version=3
-http://pysvn.tigris.org/project_downloads.html .*/WorkBench-(.*)\.tar\.gz
+http://pysvn.tigris.org/project_downloads.html .*/WorkBench-(.*)\.tar\.gz debian uupdate
Reply to: