1# Copyright (C) 2009, 2012 Piotr Piastucki <the_leech@users.berlios.de> 2# Copyright (C) 2012 Kai Willadsen <kai.willadsen@gmail.com> 3# 4# This program is free software: you can redistribute it and/or modify 5# it under the terms of the GNU General Public License as published by 6# the Free Software Foundation, either version 2 of the License, or (at 7# your option) any later version. 8# 9# This program is distributed in the hope that it will be useful, but 10# WITHOUT ANY WARRANTY; without even the implied warranty of 11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12# General Public License for more details. 13# 14# You should have received a copy of the GNU General Public License 15# along with this program. If not, see <http://www.gnu.org/licenses/>. 16 17from meld.conf import _ 18from meld.filediff import FileDiff 19from meld.matchers import merge 20from meld.recent import RecentType 21 22 23class FileMerge(FileDiff): 24 25 differ = merge.AutoMergeDiffer 26 27 def _connect_buffer_handlers(self): 28 super()._connect_buffer_handlers() 29 self.textview[0].set_editable(0) 30 self.textview[2].set_editable(0) 31 32 def get_comparison(self): 33 comp = super().get_comparison() 34 return RecentType.Merge, comp[1] 35 36 def _merge_files(self): 37 yield _("[%s] Merging files") % self.label_text 38 merger = merge.Merger() 39 step = merger.initialize(self.buffer_filtered, self.buffer_texts) 40 while next(step) is None: 41 yield 1 42 for merged_text in merger.merge_3_files(): 43 yield 1 44 self.linediffer.unresolved = merger.unresolved 45 self.textbuffer[1].set_text(merged_text) 46 self.recompute_label() 47