Commit graph

2171 commits

Author SHA1 Message Date
Thiago Macieira
c5d244eeea Add support for Qt resources in Subsurface
Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
17ea074dc0 Prettify the msgfmt and linking arguments
Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
f94b6bbefd Make the "silent mode" compilation be optional only.
If you run
   make V=1

Then we'll output the full command-line. It's useful for debugging
problems with the build.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
ce3f073d42 Generate the C++ dependencies at configure-time
We use the -MG preprocessor option to the compiler to ask it to check
all #includes and tell us what's missing. Then our own rules will
generate the moc and uic files that the .cpp #include.

Unfortunately, our rules make uic generate output in qt-ui/ for
qt-ui/*.ui, while the compiler generates rules for no directory. We
need to fake it by forcing the generation.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
a0b523a5af Get the list of dependency includes from the SOURCES list
Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
d773c02bf3 Add a SOURCES variable to the Makefile, replacing OBJS
Instead of listing objects, let's list sources. This matches also what
qmake and most other buildsystems do. The notable exception is the
kernel.

The reason that listing the sources will be interesting is because I'm
about to add rules to create the dependency files.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
c8b360c3b5 Add a HEADERS variable to the Makefile
Similar to the qmake variable of the same name, this lists (at least)
the headers that may need moc to be run on. Adding more headers is not
a problem.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
b1c9ed76dc Cache the Qt tools detected (and detect RCC)
Since we're caching the include flags and linker flags, we should also
cache the exact helper binaries we're running. This avoids getting
errors because the environment changed.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
c11ce7e157 Introduce a cache of the configuration
You may have noticed that running make is a little slow. Every time
that it is loaded, it will try to detect everything again. So,
instead, save the output and reload it the next time.

This is implemented by adding a rule that (re-)creates the
config.cache file, which is included by make. If the file doesn't
exist yet, make will first run the rule which creates it, then reload
itself.

You can also cause it to reconfigure by running "make configure".

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
d47b904580 Trim Makefile, Configure.mk and Rules.mk
Configure.mk contains the detection rules, whereas Rules.mk contains
the rules to actually build Subsurface. This simplifies Makefile
greatly, which is the file that should be actually modified during
regular updates to the codebase.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
f6d133f387 Create Rules.mk and Configure.mk by copying the Makefile
This is to help Git know that the two files are the same content as
the Makefile. The next commit will trim the files to what they need to
be.
2013-04-23 00:06:32 -07:00
Thiago Macieira
ddbb942d0f Reorder the Makefile
Create three sections:
 1) the detection rules
 2) the main rules, what we usually edit
 3) the build rules, which we usually don't change

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
77ebc2f4c8 Move the MSGOBJS variable definition a little further down
Move it closer to the actual rules. This is not a variable that we'll
usually modify.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
50420d48d9 Remove the unused OSSUPPORT_CFLAGS variable
Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:32 -07:00
Thiago Macieira
83309d9369 Move the list of objects a little further up
This also implies we don't need the OSSUPPORT variable anymore. We
simply add to OBJS.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:31 -07:00
Thiago Macieira
e9ec2dcc45 Split the SQLite3, libzip, libxslt and osmgpsmap detection from use
Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:31 -07:00
Thiago Macieira
d326a91c86 Move some of the checks a little bit up
Signed-off-by: Thiago Macieira <thiago@macieira.org>
2013-04-23 00:06:31 -07:00
Tomaz Canabrava
9ffb707d9d Initial version of the Star Picker Widget.
A very simple to use widget:
StarWidget *stars = new StarWidget( windowParent);
stars->setMaximumStars(10);
stars->setCurrentStars( rand()%10);
stars->show();
connect(stars, SIGNAL(valueChanged(int)), someObj, SLOT(starsChangedValue(int)));

It currently uses a 'star.svg' file on the same folder as the binary.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-22 16:09:21 -07:00
Tomaz Canabrava
a0280ae7d2 Move model related code from MainWindow and adjustments.
Moves the DiveTrip model related code to models.h

The DiveTripModel was implemented in three parts:

 DiveTripModel.h
 DiveTripModel.cpp
 MainWindow.cpp (the code to populate the model)

This patch changes the DiveTripModel from it's original
implementation to the file models.h, wich should store
all models (Dirk requested the Qt developers to not create
2 files per class, but instead to use a file for functionality,
and data-models are one functionality.)

Besides that, this code cleans up a bit the style:
removed operator<< for .push_back, const references where they apply,
moved the internal DiveItem class to the .cpp since it should be visible
only to the DiveTripModel class, and redesigned the current interface of
the model to be identical of the GTK one (used the UTF8-star and 2
subscribed, for instance).

Amit (the creator of the original code) should comment here if it's ok
with my changes.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-22 09:42:13 -07:00
Dirk Hohndel
5da11cbc6a Fix crash with some setups
Initialize Qt earlier, before Gtk gets its hands on argc / argv.

Suggested-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-22 06:45:57 -07:00
Dirk Hohndel
26076610e5 Use helper function to get dive date string
Correct order of arguments in the DiveItem constructor call.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-18 13:23:46 -07:00
Dirk Hohndel
75765be14c Move creation of dive and dive trip date string into helper functions
This allows this code to easily be shared by Gtk and Qt UI.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-18 13:18:09 -07:00
Amit Chaudhuri
1a15462073 Use get_dive to populate divelistview with dives
Add dives from dive_table to the model/view using the functions provided
to extract the dives.

We do not yet handle trips.

Formatting of date/time, depth and duration need attention.

Relies on earlier patch to delay Qt ui construction.

We should look at the signals we publish to link to other widgets etc..

[Dirk Hohndel: use for_each_dive -- clean up some white space]

Signed-off-by: Amit Chaudhuri <amit.k.chaudhuri@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-18 12:38:52 -07:00
Amit Chaudhuri
073be111f4 Delay Qt ui construction
The Qt ui will need to read the dive_table to populate widgets with
dives. Gtk functionality in init_ui is required to parse the dives.
Split init_ui to allow parsing to proceed and complete before Qt ui
mainwindow constructor is called.

Play with qDebug()'s printf style (Thiago!)

Signed-off-by: Amit Chaudhuri <amit.k.chaudhuri@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-18 12:31:15 -07:00
Tomaz Canabrava
115ee47bfc Added the code that will load and populate the Tank Info
Added the code that will load and populate the Tank Info
ComboBox that`s used by the user to select the Cylinder
description.

Code curerntly implements more than the GTK version since
the GTK version of it was a plain-list, this one is a
table based model that can be used in ListViews ( like
we use now in the ComboBox ) but also in TableViews
( if there`s a need in the future to see everything
that`s catalogued in the Tank Info struct. )

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-15 17:34:44 -07:00
Dirk Hohndel
db180bf46e Remove second dive_trip_list definition and douplicate helper function
dive_trip_list is simply a global variable, declared in dive.h.

The clear_trip_indexes() helper is purely logic and was moved to
divetrip.c - but then not deleted in divetrip-gtk.c

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-15 07:12:44 -07:00
Dirk Hohndel
944d286132 Separate Gtk related code from core logic: statistics
Fairly straight forward, so far just one tiny bit of code restructuring,
everything else separated cleanly.

Added statistics-gtk.c and statistics.h

This should make no difference to functionality.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-14 20:25:34 -07:00
Dirk Hohndel
4c73c70ecb Separate Gtk related code from core logic: info
Surprisingly straight forward, just a couple of places where we really mix
significant logic with UI code (for example setting the window title).

I had to move amount_selected from display-gtk.h to display.h - I guess
the number of dives that are selected is UI independent. But I wonder if
we still will track this as a global variable in a Qt UI (since the Gtk
selection logic is the main reason this existed in the first place).

Added a new info.h files for the necessary declarations.

This should make no difference to functionality.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-14 11:39:29 -07:00
Dirk Hohndel
983e5f6356 Merge branch 'fixCppStyleToC' of https://github.com/tcanabrava/subsurface into Qt 2013-04-14 07:02:06 -07:00
Dirk Hohndel
d8e11439ad Undoing the last Qtr_ hack
The Qtr_ hack isn't needed as in commit 720fc15b2dcd ("Introduce
QApplication") had already made sure that we are using gettext.

I didn't revert the two commits as I wanted to keep the added header
comments and fix the tooling in the Makefile as well.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-14 06:58:56 -07:00
Tomaz Canabrava
f913eacbd9 Fixed the C++ code Style to conform the C style that was previously agreed upon.
Removed the use of operator<<() in a bunch of lines to do direct calls
this way the code will not scare non-c++ hearted people. :)
s

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
2013-04-14 10:56:51 -03:00
Dirk Hohndel
fc0e307f00 Add common.h file
Oops

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-14 06:21:32 -07:00
Dirk Hohndel
f5c958ad73 Add Qtr_ macros that uses gettext in a tr() compatible manner
This should wrap gettext nicely and replace the "_()" macros we use in C
code.

Also added comments to the top of all the new files.

Suggested-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-13 20:44:02 -07:00
Thiago Macieira
14e133321f Remove the mandatory -fPIC from CXXFLAGS
This isn't necessary. There's code below adding -fPIE when necessary
only.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-13 19:38:09 -07:00
Tomaz Canabrava
92397a2bad Started the real code on the Qt Interface.
1 - Open File already open files, it tries to not break the Gtk version,
    but some methods on the GTK version still need to be called inside Qt
    because the code is too tight-coupled.

2 - Close file already close files, same comments for the open file dialog
    applies here.

3 - The code for adding new cylinders in the cylinder dialog is done,
    already works and it's integrated with the system.  There's a need to
    implement the edit and delete now, but it will be easyer since I'm
    starting to not get lost on the code.

4 - Some functions that were used to convert unities have been moved to
    convert.h ( can be changed later, put there because it's easyer to
    find something that converts in a convert.h =p ) because they were
    static functions that operated in the GTK version but I need those
    functions in the Qt version too.

[Dirk Hohndel: lots and lots of whitespace and coding style changes]

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-13 14:08:16 -07:00
Amit Chaudhuri
76f71b4ca0 Add dive list view to main window
Add files for dive list model/view implementation. Replace TableView
with the custom list view.  Amendments to makefile to match.

Note: we don't yet handle trips and may want to add additional columns
to describe the dive.

A single, dummy dive is added to show how this works (get root; item is
child of root). Purely to illustrate - needs proper integration etc.

Amend member names for dive list view components

Various naming changes to conform to coding style. Required changes to
members (remove prefix) and methods (avoid clash with members).

Clean up indentation (swap spaces for tabs). Code for model/view was
written with a different editor which had different settings :-/

[Dirk Hohndel: minor whitespace cleanup]

Signed-off-by: Amit Chaudhuri <amit.k.chaudhuri@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-12 12:54:08 -07:00
Alberto Mardegan
9dbda9f62a Update .gitignore
Ignore some moc/uic-generated files.

Signed-off-by: Alberto Mardegan <mardy@users.sourceforge.net>
2013-04-10 19:02:06 +04:00
Alberto Mardegan
ec8c2b9368 MainWindow: remove useless include
This was accidentally reintroduced by a previous commit, and was causing
a moc warning.

Signed-off-by: Alberto Mardegan <mardy@users.sourceforge.net>
2013-04-10 19:00:20 +04:00
Amit Chaudhuri
6e02e9d5b7 Add logic to switch views
Rename the 3 main widgets in the Qt mainwindow.

Wire view menu options to the setVisible methods of same.

Signed-off-by: Amit Chaudhuri <amit.k.chaudhuri@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-10 07:35:07 -07:00
Henrik Brautaset Aronsen
55106a7583 Avoid C++ style streams
As Thiago wrote: qDebug("actionNew") also works.  The current policy is to avoid
C++ style source code as much as possible.

Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-10 07:31:14 -07:00
Amit Chaudhuri
1182c98997 Add stub slots for all menu items
Naming of QActions was inconsistent wrt abbreviations - fixed.

Add stub slots for each action relying on connect by name.

Add qDebug() message to allow people to check that menu items fire
slots; not really necessary but may provide some reassurance as we build
familiarity with Qt.

Some changes to display text for menu items (e.g. Tree becomes View
All).

Signed-off-by: Amit Chaudhuri <amit.k.chaudhuri@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-09 22:49:13 -07:00
Alberto Mardegan
99153de715 Makefile: detect which files need moc and uic
Add some magic rules to detect which files need to be processed by the
moc or uic tools, as well as a way to manually specify exceptions.

Signed-off-by: Alberto Mardegan <mardy@users.sourceforge.net>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-09 19:54:41 -07:00
Dirk Hohndel
80c8d08d8b Make Qt branch cross-build for Windows
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-09 07:01:20 -07:00
Amit Chaudhuri
a94e09ad5c Add a slot to mainwindow but amend to use Q_SLOTS
For some reason, 'private slots:' causes a build error but private
Q_SLOTS: works.

The error was that 'slots' did not name a type and it appeared to be
insensitive to whether the Makefile rule for .moc was in its current
place or preceeded the rule for .cpp.

Add a slot using the connectByName idiom e.g. actionNew connects to slot
on_actionNew_triggered(). Use qDebug to show this fires if the menu
option is selected.

Above to demonstrate how to begin to link menu to code paths.

Signed-off-by: Amit Chaudhuri <amit.k.chaudhuri@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-09 06:50:42 -07:00
Amit Chaudhuri
e865aed478 Change tab widget names.
Names for individual tab widgets were not specific and caused warnings
from UIC. Rename the individual widgets to reflect purpose.

[Dirk Hohndel: removed some of the hunks that appeared to be unintentional
               changes not mentioned in the commit log]

Signed-off-by: Amit Chaudhuri <amit.k.chaudhuri@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-08 12:58:06 -07:00
Dirk Hohndel
d3c0a90e34 Remove the toplevel ui directory
This is fron Alberto's first stab at MainWindow, but Tomaz is doing all
this work in the qt-ui directory now...

Reported-by: Pierre-Yves Chibon <pingou@pingoured.fr>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-08 09:36:38 -07:00
Dirk Hohndel
459dc08c32 Forgot to add planner-gtk.c
Oops

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-07 20:33:48 -07:00
Dirk Hohndel
4cf244e228 Fix some of the gcc-4.8 warnings
Most of the warnings are IMHO false positives:
e.g.: an enum variable is initialized in a switch statement that has a case for
      each possible enum value - yet gcc 4.8 warns that it could be used
      uninitialized;
or:   two variables are initialized together in the code - second one of them
      is previously initialized to -1 at declaration time, both are initialized
      in an if (second one == -1) clause - so they are guaranteed to both be
      initialized...
I did not "fix" those as the code is actually correct.

But there are three spots where it catches things that could indeed go wrong
(with odd input data in one of them).

This commit also adds a check to only call g_type_init() for older versions of
glib as in newer ones it is deprecated.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-07 20:25:14 -07:00
Dirk Hohndel
1d02ba12a3 Separate Gtk related code from core logic: planner
Relatively straight forward, just a handful of places where we call
show_error() (a UI function) from the logic code. In the process I noticed
a few places where error returns weren't dealt with correctly.

Added a new planner.h files for the necessary declarations.

This should make no difference to functionality.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-07 20:22:41 -07:00
Tomaz Canabrava
ba712c3b54 Start creating the Qt UI
This is based on several commits from Tomaz - mingled together and mildly
extended by Dirk (mostly Makefile hacking).

All Qt UI related stuff should eventually move into the qt-ui directory.
So the Makefile rules for moc and uic have been adjusted accordingly.

The MainWindow class has been moved into its own file in qt-ui (but just
with a placeholder, the existing class has simply been ifdef'ed out in
qt-gui.cpp for the moment).

We still have a couple of Qt things in qt-gui.cpp in the main directory...
all this needs to move into the qt-ui directory and be built with separate
.h files. Right now we have the one-off Makefile rule to create the
qt-gui.moc file from the qt-gui.cpp file.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-04-07 15:59:33 -07:00