Hi all, > I am looking into the development of xournal for some time and got a > bit confused. There is a C++ branch which seems to get some but not much work > at the moment. > There is a SVN and a GIT. In the GIT there seems to be a GTK3 branch. > Some Github forks exists as well.
There are basically two different things: xournal, and xournal++ (xournalpp). Xournal was written in C using GTK2. Its code base is stable, but is not evolving very fast anymore. The official repository is on sourceforge.net, both as CVS and GIT, accessible from http://sourceforge.net/projects/xournal/ The GIT repository read-only access is git://git.code.sf.net/p/xournal/code xournal-code The current codebase differs from the official release 0.4.7 by minor updates -- mostly adding a couple of translations, and minor bugfixes or fixes to the build system. Because there are a number of patches waiting to be triaged, and because I'm pretty uptight about evolving the "official" codebase, various power users have created their own git repositories -- the most relevant one here is probably Daniel German's on github. Daniel recently undertook a rewrite of xournal to use GTK3 + goocanvas instead of GTK2 + gnomecanvas, which are no longer well supported. The key reason to migrate, besides general modernism, might be Windows 8.1, which appears to have poor GTK2 support according to some user reports. I have not tested Daniel's code recently, but understand that by now it basically works and just needs maybe a bit more testing for stability etc. Feature-wise (from the user's viewpoint), I believe most of the github repositories, Daniel's included, are very close to 0.4.7 + various patches available on sourceforge. However, the passage to GTK3 + goocanvas is obviously a big architecture upgrade. On the other hand, Andreas Butti undertook a rewrite from scratch in C++, called xournal++ (or xournalpp). The official repository is the SVN at http://sourceforge.net/projects/xournal/ Because the codebase is completely different and various extra features were planned from the start, and because things evolved differently, this has a slightly different user interface and set of visible features. At some point I was confident that xournal++ was evolving fast enough to put xournal out to retirement soon; unfortunately Andreas had to take an extended break from working on it soon afterwards, which leaves xournal++ in a state where it's not clearly better than xournal yet (particularly from a reliability viewpoint). > I couldn't figure out what is the actual up-to-date repro resp. from > where to start. > Should one wait for the GTK3 port? > Is there any future for the C++ branch? Questions, questions. If you want code that's stable and 99.9999% reliable, start from the official repo (C and GTK2). If you want to start from what this code might become someday, it's quite possible that Daniel's GTK3 port will become the way of the future, but that's far from clear yet. (Also, given my pace, it'll take forever to merge things into the official repo unless I suddenly get a burst of energy; of course it could be that I'll just give up and ask Daniel to take over). Xournal++ will certainly remain something separate; if Andreas manages to complete it, it might be the other branches that won't have any future. > Furthermore, I have a bit trouble to start reading the code. Is there > any developer manual? Filestructure, coding style, etc.? For the main branch, Daniel once told me something along the lines of "it shows that there was a single author". I think that was not meant as a compliment concerning the coding style and readability :| Xournal++ ought to be easier to read since Andreas is at least a properly trained software person, while I'm just an amateur. > Actually, I want to add a presentation mode to xournal. That is > (ordered by piority): > > a) An extra window which mirrors the content of the actual drawing > area (to be placed on the video projector screen) Seems definitely possible but non-trivial. You'd need either to maintain two gnomecanvases by duplicating a lot of the code to handle both windows, or something else. However, if I may suggest, the reason why I've resisted such suggestions in the past -- besides the inadequacy of the libgnomecanvas architecture, which would force a lot of code duplication or other inelegant things -- is that ideally it would be either the X server (via xrandr configuration) that takes care of the boring task of mirroring a portion of the primary display into an external display, or the window manager (of course, one with features, i.e. not gnome-shell) or some add-on generic software that mirrors part of a given window onto another display via window capture. Or if you don't want to be generic, at least some add-on into the GTK API to make such things easier. That seems smarter than inserting such a functionality into every single piece of software that one might ever want to use to give presentations. > b) Make xournal aware of LaTeX beamer, which creates frames and > slides... a frame can consists of several slides to mimic the effect > of animations (add text and images part by part to the same frame). > Thus, a PDF which contains only a single frame might consist of > several pages. It would make sense, that Xournal keeps all kind of > annotation until the next frame. Well, for that you first need to make PDF files aware of LaTeX beamer, so good luck. The PDF file produced by latex/beamer, as far as I know, just duplicates the pages for a frame, and it's not easy at all for an external PDF reader/viewer application to figure out which pages of the PDF file correspond to a same logical Beamer frame. In addition, Xournal's awareness of the structure of the PDF file is quite limited -- it parses some of it to get pages, sizes, etc., and the "Export to PDF" code goes fishing around in resource directories a little bit, but the heavy lifting is all left to the Poppler library and xournal doesn't know all that much. That's indeed too bad, because xournal has mechanisms e.g. layers etc. that would come in handy in a beamer or similar context, but PDF doesn't have such layers as far as I know (or they're not in use). > d) Create a pane on the main window to see the next slide (and/or frame) Where would you put that pane? I just can't visualize it. Or maybe you want a side bar showing the whole list of page previews, as in e.g. evince and adobe reader -- in fact it's been a feature request, and I think xournal++ has it. This wouldn't be all that hard to impement. > e) Display presentation time (either way, just a clock, time in > minutes or time left) Why not an external application for this? > c) Switch state of the presentation window into black, white or freeze > (keep the slide to allow the presenter to search through the > presentation and after the right frame/slide is found unfreeze and the > presentation window will be updated) Meeh? Oh, got it. Well, should be easy enough once you have a presentation window. But those could be features of the separate generic software I advocate creating to make any application presentation-able. > d) set and jump to bookmarks easily I believe there's a patch for this somewhere on sourceforge.net but I haven't tested it. Once you decide how you're going to store the bookmarks and handle them in the user interface, the back-end code is very easy -- it's mostly user interface work. So: in my opinion some of these things are interesting, but I'd suggest looking into implementing features (a), (e), and (c') (external presentation window different from main document window, ability to display a timer, and to freeze the external presentation) as a separate piece of software that could cooperate with either xournal or a whole range of other applications. Beamer awareness is, as far as I know, impossible for an application that works at the PDF level. (Of course one could try to write code that attempts to parse the latex source. Ugh -- lots of work and probably not reliable.) Best, Denis -- Denis Auroux aur...@math.berkeley.edu University of California, Berkeley Tel: 510-642-4367 Department of Mathematics Fax: 510-642-8204 817 Evans Hall # 3840 Berkeley, CA 94720-3840 ------------------------------------------------------------------------------ DreamFactory - Open Source REST & JSON Services for HTML5 & Native Apps OAuth, Users, Roles, SQL, NoSQL, BLOB Storage and External API Access Free app hosting. Or install the open source package on any LAMP server. Sign up and see examples for AngularJS, jQuery, Sencha Touch and Native! http://pubads.g.doubleclick.net/gampad/clk?id=63469471&iu=/4140/ostg.clktrk _______________________________________________ Xournal-devel mailing list Xournal-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/xournal-devel