# HG changeset patch # User domruf # Date 1508965051 -7200 # Node ID ceaa65df5addf451dbc790eb8200b33d361009f3 # Parent b66e4d720198303af5801870116413a502ed711b diff: use fontello icon-diff-* names in generated html This way we need less style code ... but generate slightly bigger html. Also move the style code to kallithea-diff.less and remove the now obsolete comment. diff -r b66e4d720198 -r ceaa65df5add kallithea/lib/diffs.py --- a/kallithea/lib/diffs.py Wed Oct 25 23:16:34 2017 +0200 +++ b/kallithea/lib/diffs.py Wed Oct 25 22:57:31 2017 +0200 @@ -327,49 +327,49 @@ } if head['deleted_file_mode']: - op = 'D' + op = 'removed' stats['binary'] = True stats['ops'][DEL_FILENODE] = 'deleted file' elif head['new_file_mode']: - op = 'A' + op = 'added' stats['binary'] = True stats['ops'][NEW_FILENODE] = 'new file %s' % head['new_file_mode'] else: # modify operation, can be cp, rename, chmod # CHMOD if head['new_mode'] and head['old_mode']: - op = 'M' + op = 'modified' stats['binary'] = True stats['ops'][CHMOD_FILENODE] = ('modified file chmod %s => %s' % (head['old_mode'], head['new_mode'])) # RENAME if (head['rename_from'] and head['rename_to'] and head['rename_from'] != head['rename_to']): - op = 'R' + op = 'renamed' stats['binary'] = True stats['ops'][RENAMED_FILENODE] = ('file renamed from %s to %s' % (head['rename_from'], head['rename_to'])) # COPY if head.get('copy_from') and head.get('copy_to'): - op = 'M' + op = 'modified' stats['binary'] = True stats['ops'][COPIED_FILENODE] = ('file copied from %s to %s' % (head['copy_from'], head['copy_to'])) # FALL BACK: detect missed old style add or remove if op is None: if not head['a_file'] and head['b_file']: - op = 'A' + op = 'added' stats['binary'] = True stats['ops'][NEW_FILENODE] = 'new file' elif head['a_file'] and not head['b_file']: - op = 'D' + op = 'removed' stats['binary'] = True stats['ops'][DEL_FILENODE] = 'deleted file' # it's not ADD not DELETE if op is None: - op = 'M' + op = 'modified' stats['binary'] = True stats['ops'][MOD_FILENODE] = 'modified file' @@ -380,7 +380,7 @@ stats['added'] = added stats['deleted'] = deleted # explicit mark that it's a modified file - if op == 'M': + if op == 'modified': stats['ops'][MOD_FILENODE] = 'modified file' else: # Git binary patch (or empty diff) # Git binary patch @@ -388,7 +388,7 @@ stats['ops'][BIN_FILENODE] = 'binary diff not shown' chunks = [] - if op == 'D' and chunks: + if op == 'removed' and chunks: # a way of seeing deleted content could perhaps be nice - but # not with the current UI chunks = [] diff -r b66e4d720198 -r ceaa65df5add kallithea/public/css/contextbar.css --- a/kallithea/public/css/contextbar.css Wed Oct 25 23:16:34 2017 +0200 +++ b/kallithea/public/css/contextbar.css Wed Oct 25 22:57:31 2017 +0200 @@ -11,29 +11,6 @@ /* background-color: red; /* for debugging */ } /* Note: class 'icon-empty' or 'icon-gravatar' can be used to get icon styling without an actual glyph */ -/* css classes for diff file status ... it'd be nice if css had a way to - inherit from another class but alas, we must make sure this content is the - same from the icon font file */ -.icon-diff-M:before { - font-family: 'kallithea'; - content: '\22a1'; - color: #d0b44c; -} -.icon-diff-D:before { - font-family: 'kallithea'; - content: '\229f'; - color: #bd2c00; -} -.icon-diff-A:before { - font-family: 'kallithea'; - content: '\229e'; - color: #6cc644; -} -.icon-diff-R:before { - font-family: 'kallithea'; - content: '\e81f'; - color: #677a85; -} nav.navbar #quick a, #content #context-bar, #content #context-bar a { diff -r b66e4d720198 -r ceaa65df5add kallithea/public/css/style.css --- a/kallithea/public/css/style.css Wed Oct 25 23:16:34 2017 +0200 +++ b/kallithea/public/css/style.css Wed Oct 25 22:57:31 2017 +0200 @@ -1989,26 +1989,23 @@ .cs_files .changes .bin.bin5 { background-color: #6D99FF; } -.cs_files .cs_added, -.cs_files .cs_A { +.cs_files .cs_added { height: 16px; margin-top: 7px; text-align: left; } .cs_files .cs_changed, -.cs_files .cs_M { +.cs_files .cs_modified { height: 16px; margin-top: 7px; text-align: left; } -.cs_files .cs_removed, -.cs_files .cs_D { +.cs_files .cs_removed { height: 16px; margin-top: 7px; text-align: left; } -.cs_files .cs_renamed, -.cs_files .cs_R { +.cs_files .cs_renamed { height: 16px; margin-top: 7px; text-align: left; @@ -2174,6 +2171,19 @@ .add-bubble div:hover { transform: scale(1.2, 1.2); } +/* file diff icons */ +.icon-diff-modified:before { + color: #d0b44c; +} +.icon-diff-removed:before { + color: #bd2c00; +} +.icon-diff-added:before { + color: #6cc644; +} +.icon-diff-renamed:before { + color: #677a85; +} /* show some context of link targets - but only works when the link target can be extended with any visual difference */ div.comment:target:before { diff -r b66e4d720198 -r ceaa65df5add kallithea/public/less/kallithea-diff.less --- a/kallithea/public/less/kallithea-diff.less Wed Oct 25 23:16:34 2017 +0200 +++ b/kallithea/public/less/kallithea-diff.less Wed Oct 25 22:57:31 2017 +0200 @@ -54,26 +54,23 @@ .cs_files .changes .bin.bin5 { background-color: #6D99FF; } -.cs_files .cs_added, -.cs_files .cs_A { +.cs_files .cs_added { height: 16px; margin-top: 7px; text-align: left; } .cs_files .cs_changed, -.cs_files .cs_M { +.cs_files .cs_modified { height: 16px; margin-top: 7px; text-align: left; } -.cs_files .cs_removed, -.cs_files .cs_D { +.cs_files .cs_removed { height: 16px; margin-top: 7px; text-align: left; } -.cs_files .cs_renamed, -.cs_files .cs_R { +.cs_files .cs_renamed { height: 16px; margin-top: 7px; text-align: left; @@ -239,3 +236,17 @@ .add-bubble div:hover { transform: scale(1.2, 1.2); } + +/* file diff icons */ +.icon-diff-modified:before { + color: #d0b44c; +} +.icon-diff-removed:before { + color: #bd2c00; +} +.icon-diff-added:before { + color: #6cc644; +} +.icon-diff-renamed:before { + color: #677a85; +} diff -r b66e4d720198 -r ceaa65df5add kallithea/tests/functional/test_compare_local.py --- a/kallithea/tests/functional/test_compare_local.py Wed Oct 25 23:16:34 2017 +0200 +++ b/kallithea/tests/functional/test_compare_local.py Wed Oct 25 22:57:31 2017 +0200 @@ -31,48 +31,48 @@ ## files diff response.mustcontain( ''' - + docs/api/utils/index.rst ''') response.mustcontain( ''' - + test_and_report.sh''') response.mustcontain( ''' - + .hgignore''') response.mustcontain( ''' - + .hgtags''') response.mustcontain( ''' - + docs/api/index.rst''') response.mustcontain( ''' - + vcs/__init__.py''') response.mustcontain( ''' - + vcs/backends/hg.py''') response.mustcontain( ''' - + vcs/utils/__init__.py''') response.mustcontain( ''' - + vcs/utils/annotate.py''') response.mustcontain( ''' - + vcs/utils/diffs.py''') response.mustcontain( ''' - + vcs/utils/lazy.py''') def test_compare_tag_git(self): diff -r b66e4d720198 -r ceaa65df5add kallithea/tests/models/test_diff_parsers.py --- a/kallithea/tests/models/test_diff_parsers.py Wed Oct 25 23:16:34 2017 +0200 +++ b/kallithea/tests/models/test_diff_parsers.py Wed Oct 25 22:57:31 2017 +0200 @@ -8,7 +8,7 @@ DIFF_FIXTURES = { 'hg_diff_add_single_binary_file.diff': [ - ('US Warszawa.jpg', 'A', + ('US Warszawa.jpg', 'added', {'added': 0, 'deleted': 0, 'binary': True, @@ -16,7 +16,7 @@ BIN_FILENODE: 'binary diff not shown'}}), ], 'hg_diff_mod_single_binary_file.diff': [ - ('US Warszawa.jpg', 'M', + ('US Warszawa.jpg', 'modified', {'added': 0, 'deleted': 0, 'binary': True, @@ -25,7 +25,7 @@ ], 'hg_diff_mod_single_file_and_rename_and_chmod.diff': [ - ('README', 'R', + ('README', 'renamed', {'added': 3, 'deleted': 0, 'binary': False, @@ -33,14 +33,14 @@ CHMOD_FILENODE: 'modified file chmod 100755 => 100644'}}), ], 'hg_diff_mod_file_and_rename.diff': [ - ('README.rst', 'R', + ('README.rst', 'renamed', {'added': 3, 'deleted': 0, 'binary': False, 'ops': {RENAMED_FILENODE: 'file renamed from README to README.rst'}}), ], 'hg_diff_del_single_binary_file.diff': [ - ('US Warszawa.jpg', 'D', + ('US Warszawa.jpg', 'removed', {'added': 0, 'deleted': 0, 'binary': True, @@ -48,7 +48,7 @@ BIN_FILENODE: 'binary diff not shown'}}), ], 'hg_diff_chmod_and_mod_single_binary_file.diff': [ - ('gravatar.png', 'M', + ('gravatar.png', 'modified', {'added': 0, 'deleted': 0, 'binary': True, @@ -56,21 +56,21 @@ BIN_FILENODE: 'binary diff not shown'}}), ], 'hg_diff_chmod.diff': [ - ('file', 'M', + ('file', 'modified', {'added': 0, 'deleted': 0, 'binary': True, 'ops': {CHMOD_FILENODE: 'modified file chmod 100755 => 100644'}}), ], 'hg_diff_rename_file.diff': [ - ('file_renamed', 'R', + ('file_renamed', 'renamed', {'added': 0, 'deleted': 0, 'binary': True, 'ops': {RENAMED_FILENODE: 'file renamed from file to file_renamed'}}), ], 'hg_diff_rename_and_chmod_file.diff': [ - ('README', 'R', + ('README', 'renamed', {'added': 0, 'deleted': 0, 'binary': True, @@ -78,64 +78,64 @@ RENAMED_FILENODE: 'file renamed from README.rst to README'}}), ], 'hg_diff_binary_and_normal.diff': [ - ('img/baseline-10px.png', 'A', + ('img/baseline-10px.png', 'added', {'added': 0, 'deleted': 0, 'binary': True, 'ops': {NEW_FILENODE: 'new file 100644', BIN_FILENODE: 'binary diff not shown'}}), - ('img/baseline-20px.png', 'D', + ('img/baseline-20px.png', 'removed', {'added': 0, 'deleted': 0, 'binary': True, 'ops': {DEL_FILENODE: 'deleted file', BIN_FILENODE: 'binary diff not shown'}}), - ('index.html', 'M', + ('index.html', 'modified', {'added': 3, 'deleted': 2, 'binary': False, 'ops': {MOD_FILENODE: 'modified file'}}), - ('js/global.js', 'D', + ('js/global.js', 'removed', {'added': 0, 'deleted': 75, 'binary': False, 'ops': {DEL_FILENODE: 'deleted file'}}), - ('js/jquery/hashgrid.js', 'A', + ('js/jquery/hashgrid.js', 'added', {'added': 340, 'deleted': 0, 'binary': False, 'ops': {NEW_FILENODE: 'new file 100755'}}), - ('less/docs.less', 'M', + ('less/docs.less', 'modified', {'added': 34, 'deleted': 0, 'binary': False, 'ops': {MOD_FILENODE: 'modified file'}}), - ('less/scaffolding.less', 'M', + ('less/scaffolding.less', 'modified', {'added': 1, 'deleted': 3, 'binary': False, 'ops': {MOD_FILENODE: 'modified file'}}), - ('readme.markdown', 'M', + ('readme.markdown', 'modified', {'added': 1, 'deleted': 10, 'binary': False, 'ops': {MOD_FILENODE: 'modified file'}}), ], 'git_diff_chmod.diff': [ - ('work-horus.xls', 'M', + ('work-horus.xls', 'modified', {'added': 0, 'deleted': 0, 'binary': True, 'ops': {CHMOD_FILENODE: 'modified file chmod 100644 => 100755'}}) ], 'git_diff_rename_file.diff': [ - ('file.xls', 'R', + ('file.xls', 'renamed', {'added': 0, 'deleted': 0, 'binary': True, 'ops': {RENAMED_FILENODE: 'file renamed from work-horus.xls to file.xls'}}), ('files/var/www/favicon.ico/DEFAULT', - 'R', + 'renamed', {'added': 0, 'binary': True, 'deleted': 0, @@ -143,7 +143,7 @@ 6: 'modified file chmod 100644 => 100755'}}) ], 'git_diff_mod_single_binary_file.diff': [ - ('US Warszawa.jpg', 'M', + ('US Warszawa.jpg', 'modified', {'added': 0, 'deleted': 0, 'binary': True, @@ -151,78 +151,78 @@ BIN_FILENODE: 'binary diff not shown'}}) ], 'git_diff_binary_and_normal.diff': [ - ('img/baseline-10px.png', 'A', + ('img/baseline-10px.png', 'added', {'added': 0, 'deleted': 0, 'binary': True, 'ops': {NEW_FILENODE: 'new file 100644', BIN_FILENODE: 'binary diff not shown'}}), - ('img/baseline-20px.png', 'D', + ('img/baseline-20px.png', 'removed', {'added': 0, 'deleted': 0, 'binary': True, 'ops': {DEL_FILENODE: 'deleted file', BIN_FILENODE: 'binary diff not shown'}}), - ('index.html', 'M', + ('index.html', 'modified', {'added': 3, 'deleted': 2, 'binary': False, 'ops': {MOD_FILENODE: 'modified file'}}), - ('js/global.js', 'D', + ('js/global.js', 'removed', {'added': 0, 'deleted': 75, 'binary': False, 'ops': {DEL_FILENODE: 'deleted file'}}), - ('js/jquery/hashgrid.js', 'A', + ('js/jquery/hashgrid.js', 'added', {'added': 340, 'deleted': 0, 'binary': False, 'ops': {NEW_FILENODE: 'new file 100755'}}), - ('less/docs.less', 'M', + ('less/docs.less', 'modified', {'added': 34, 'deleted': 0, 'binary': False, 'ops': {MOD_FILENODE: 'modified file'}}), - ('less/scaffolding.less', 'M', + ('less/scaffolding.less', 'modified', {'added': 1, 'deleted': 3, 'binary': False, 'ops': {MOD_FILENODE: 'modified file'}}), - ('readme.markdown', 'M', + ('readme.markdown', 'modified', {'added': 1, 'deleted': 10, 'binary': False, 'ops': {MOD_FILENODE: 'modified file'}}), ], 'diff_with_diff_data.diff': [ - ('vcs/backends/base.py', 'M', + ('vcs/backends/base.py', 'modified', {'added': 18, 'deleted': 2, 'binary': False, 'ops': {MOD_FILENODE: 'modified file'}}), - ('vcs/backends/git/repository.py', 'M', + ('vcs/backends/git/repository.py', 'modified', {'added': 46, 'deleted': 15, 'binary': False, 'ops': {MOD_FILENODE: 'modified file'}}), - ('vcs/backends/hg.py', 'M', + ('vcs/backends/hg.py', 'modified', {'added': 22, 'deleted': 3, 'binary': False, 'ops': {MOD_FILENODE: 'modified file'}}), - ('vcs/tests/test_git.py', 'M', + ('vcs/tests/test_git.py', 'modified', {'added': 5, 'deleted': 5, 'binary': False, 'ops': {MOD_FILENODE: 'modified file'}}), - ('vcs/tests/test_repository.py', 'M', + ('vcs/tests/test_repository.py', 'modified', {'added': 174, 'deleted': 2, 'binary': False, 'ops': {MOD_FILENODE: 'modified file'}}), ], 'git_diff_modify_binary_file.diff': [ - ('file.name', 'M', + ('file.name', 'modified', {'added': 0, 'deleted': 0, 'binary': True, @@ -230,14 +230,14 @@ BIN_FILENODE: 'binary diff not shown'}}) ], 'hg_diff_copy_file.diff': [ - ('file2', 'M', + ('file2', 'modified', {'added': 0, 'deleted': 0, 'binary': True, 'ops': {COPIED_FILENODE: 'file copied from file1 to file2'}}), ], 'hg_diff_copy_and_modify_file.diff': [ - ('file3', 'M', + ('file3', 'modified', {'added': 1, 'deleted': 0, 'binary': False, @@ -245,7 +245,7 @@ MOD_FILENODE: 'modified file'}}), ], 'hg_diff_copy_and_chmod_file.diff': [ - ('file4', 'M', + ('file4', 'modified', {'added': 0, 'deleted': 0, 'binary': True, @@ -253,7 +253,7 @@ CHMOD_FILENODE: 'modified file chmod 100644 => 100755'}}), ], 'hg_diff_copy_chmod_and_edit_file.diff': [ - ('file5', 'M', + ('file5', 'modified', {'added': 2, 'deleted': 1, 'binary': False, @@ -262,7 +262,7 @@ MOD_FILENODE: 'modified file'}}), ], 'hg_diff_rename_space_cr.diff': [ - ('oh yes', 'R', + ('oh yes', 'renamed', {'added': 3, 'deleted': 2, 'binary': False,