Howto build a viewer to compare differences using tiles?

Stef Bon stefbon at gmail.com
Wed Jul 15 09:52:37 PDT 2015


Hi,

I'm building backup/version system, using sqlite, btrfs and FUSE for
the user. It's comparable to snapper, but that's more a tool to
backup/snapshot the system. Fuse-backup is a tool for the user, he/she
can assign a directory to backup easily, and view versions of files
with a simple mouseclick.

I've got theidea to build plugins for Dolphin (KDE filemanager) to
view previous version of files.

It works like:

(earlier I've assigned the directory ~/Projects/fuse/fuse-backup to backup):

the contents of the backup is:

[sbon at ws-001 fuse-backup]$ ls -al
total 30
drwxr-xr-x 55 sbon  1000 4096 Jun 26 10:36 .
drwxr-xr-x  4 sbon  1000 4096 Jun 26 10:36 ..
drwxr-xr-x  2 sbon  1000    3 Jan  7  2013 AUTHORS
drwxr-xr-x  2 sbon  1000    4 Jan 19 20:40 README
drwxr-xr-x  2 sbon users   12 Jul 13 22:46 backup-stat.c
drwxr-xr-x  2 sbon users    8 Jun 20 14:12 backup-stat.h
drwxr-xr-x  2 sbon users    8 Jun 23 21:14 backupjobs-base.c
drwxr-xr-x  2 sbon users    8 Jun 23 21:14 backupjobs-base.h
drwxr-xr-x  2 sbon users    4 Jun  1 09:20 backupjobs-fsevent.c
drwxr-xr-x  2 sbon users    4 Feb  5 10:47 backupjobs-fsevent.h
drwxr-xr-x  2 sbon users    8 Jun 28 17:56 backupjobs-util.c
drwxr-xr-x  2 sbon users    6 Jun 22 10:06 backupjobs-util.h
drwxr-xr-x  2 sbon users   30 Jul 15 15:30 backupjobs.c
drwxr-xr-x  2 sbon  1000    5 Mar 25 18:28 backupjobs.c.keep
drwxr-xr-x  2 sbon users    7 Jun 22 13:39 backupjobs.h
drwxr-xr-x  2 sbon users    4 Apr 18 09:34 backupsync.c
drwxr-xr-x  2 sbon users    4 Feb  1 23:58 backupsync.h
drwxr-xr-x  2 sbon users    4 Jun 27 21:37 config.h
drwxr-xr-x  2 sbon users    4 Jun 27 21:36 config.h.in
drwxr-xr-x  2 sbon users    4 May 31 15:43 createsnapshot.c
drwxr-xr-x  2 sbon users    4 May 31 15:43 createsnapshot.h
drwxr-xr-x  2 sbon users    5 Jul 15 13:21 db-common-base.h
drwxr-xr-x  2 sbon users   10 Jun 28 19:48 db-common.c
drwxr-xr-x  2 sbon users   14 Jul 15 13:21 db-common.h
drwxr-xr-x  2 sbon users    8 Jun 25 22:53 db-rescan.c
drwxr-xr-x  2 sbon users    5 Jun 22 00:00 db-rescan.h
drwxr-xr-x  2 sbon users    7 Jul 14 13:51 db-utils.c
drwxr-xr-x  2 sbon users    7 Jul 13 23:02 db-utils.h
drwxr-xr-x  2 sbon users    6 Jul 12 19:09 directory-management.c
drwxr-xr-x  2 sbon users    7 Jul 12 22:43 directory-management.h
drwxr-xr-x  2 sbon users    5 Jul 12 19:12 entry-management.c
drwxr-xr-x  2 sbon users    8 Jul 15 12:57 entry-management.h
.... much more files ...

I've configured this backup to only backup c and c++ sources, c
ansdc++ headers, and the authors, readme and authors files. Every file
is presented as directory in the FUSE fs, to make it possible to view
the versions:

the versions of backupjobs.c are:

[sbon at ws-001 fuse-backup]$ ls -al backupjobs.c
total 198
drwxr-xr-x  2 sbon users    30 Jul 15 15:30 .
drwxr-xr-x 55 sbon  1000  4096 Jun 26 10:36 ..
-rw-r--r--  1 sbon  1000 41001 Jun  6 17:56 201506061950
-rw-r--r--  1 sbon  1000 43533 Jun  7 00:35 201506062017
-rw-r--r--  1 sbon  1000 43564 Jun  7 23:08 201506071026
-rw-r--r--  1 sbon  1000 47499 Jun  8 23:57 201506081008
-rw-r--r--  1 sbon  1000 49310 Jun 10 09:12 201506082357
-rw-r--r--  1 sbon  1000 49979 Jun 10 14:48 201506101436
-rw-r--r--  1 sbon  1000 49782 Jun 10 21:17 201506101513
-rw-r--r--  1 sbon  1000 49840 Jun 10 21:35 201506102128
-rw-r--r--  1 sbon  1000 49881 Jun 10 21:42 201506102136
-rw-r--r--  1 sbon  1000 50013 Jun 10 22:22 201506102144
-rw-r--r--  1 sbon  1000 50115 Jun 11 08:10 201506102340
-rw-r--r--  1 sbon  1000 50125 Jun 11 08:15 201506110811
-rw-r--r--  1 sbon  1000 50294 Jun 11 08:34 201506110831
-rw-r--r--  1 sbon  1000 50293 Jun 11 22:41 201506112137
-rw-r--r--  1 sbon  1000 50513 Jun 13 09:55 201506121910
-rw-r--r--  1 sbon  1000 50992 Jun 18 08:49 201506180840
-rw-r--r--  1 sbon  1000 51031 Jun 19 09:17 201506190924
-rw-r--r--  1 sbon  1000 50726 Jun 23 17:59 201506231806
-rw-r--r--  1 sbon  1000 51508 Jun 23 23:47 201506231809
-rw-r--r--  1 sbon  1000 53071 Jun 25 22:55 201506250722
-rw-r--r--  1 sbon  1000 53262 Jun 25 23:40 201506252325
-rw-r--r--  1 sbon  1000 53262 Jun 25 23:40 201506271414
-rw-r--r--  1 sbon  1000 53782 Jun 27 14:29 201506271433
-rw-r--r--  1 sbon users 53782 Jun 27 14:29 201506271447
-rw-r--r--  1 sbon users 55605 Jun 28 20:11 201506281251
-rw-r--r--  1 sbon users 55605 Jun 28 22:05 201506282104
-rw-r--r--  1 sbon users 55625 Jun 29 09:12 201506282339
-rw-r--r--  1 sbon users 56443 Jun 30 18:03 201506300924
-rw-r--r--  1 sbon users 56333 Jun 30 18:12 201506301810
-rw-r--r--  1 sbon users 56793 Jul 13 23:15 201507111959

There are 30 versions, the name is evident. When a session of user
starts, fuse-backup synchronizes the directory with a subvolume, and
creates a snapshot when there are changes.

Now I've spoken with Michael Meeks in Den Hage begin May at the
OpenSuse conference. I asked him howto build a tool to view the
differences between versions. He suggested me to look at the
libreofficekit, and especially the lokdocview, to view pages as tiles.

Now can someone describe globally howto write an app using qt 5,
showing the pages as tiles, the page of the current version left and
the previous version right?

Stef


More information about the LibreOffice mailing list