Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CMake/config.h.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#ifndef _CONFIG_H_
#define _CONFIG_H_

#cmakedefine HAVE_LIBGPS

#endif // _CONFIG_H_
36 changes: 36 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
cmake_minimum_required(VERSION 3.10)

project(florb)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(OpenGL_GL_PREFERENCE GLVND)

include(FindPkgConfig)

find_package(Boost REQUIRED COMPONENTS system filesystem thread)
find_package(CURL REQUIRED)
find_package(FLTK REQUIRED)
find_package(Gettext REQUIRED)
find_package(Intl REQUIRED)
find_package(TinyXML2)
if (TinyXML2_FOUND)
set(TinyXML2_LIBRARIES tinyxml2::tinyxml2)
else (Tinyxml2_FOUND)
pkg_check_modules(TinyXML2 REQUIRED tinyxml2)
endif (NOT TinyXML2_FOUND)
find_package(yaml-cpp REQUIRED)

# optional packages
find_package(libgps)
if (libgps_FOUND)
set(HAVE_LIBGPS 1)
else (libgps_FOUND)
pkg_check_modules(libgps libgps)
if (libgps_FOUND)
set(HAVE_LIBGPS 1)
endif (libgps_FOUND)
endif (libgps_FOUND)

add_subdirectory(src)
100 changes: 100 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DLOCALEDIR=\\\"${CMAKE_INSTALL_PREFIX}/share/local\\\"")

configure_file(${CMAKE_SOURCE_DIR}/CMake/config.h.in
${CMAKE_CURRENT_BINARY_DIR}/config.h)

add_custom_target(version ALL)

add_custom_command(TARGET version
PRE_BUILD
COMMAND ${CMAKE_SOURCE_DIR}/src/mkversionhpp.sh
COMMENT "Generating version.hpp")

set(Ui_FLUID
fluid/dlg_bulkdl.fl
fluid/dlg_editselection.fl
fluid/dlg_eleprofile.fl
fluid/dlg_garmindl.fl
fluid/dlg_garminul.fl
fluid/dlg_search.fl
fluid/dlg_settings.fl
fluid/dlg_tileserver.fl
fluid/dlg_txtdisp.fl
fluid/dlg_ui.fl)

set(Ui_SOURCES
dlg_bulkdl_ex.cpp
dlg_editselection_ex.cpp
dlg_eleprofile_ex.cpp
dlg_garmindl_ex.cpp
dlg_garminul_ex.cpp
dlg_search_ex.cpp
dlg_settings_ex.cpp
dlg_tileserver_ex.cpp
dlg_txtdisp_ex.cpp
dlg_ui_ex.cpp)

set(Ui_INCLUDE_DIRS
${PROJECT_SOURCE_DIR}/src
${Boost_INCLUDE_DIRS}
${CURL_INCLUDE_DIRS}
${FLTK_INCLUDE_DIRS}
${Intl_INCLUDE_DIRS}
${TinyXML2_INCLUDE_DIRS})

fltk_wrap_ui(Ui ${Ui_FLUID})
add_library(Ui ${Ui_SOURCES} ${Ui_FLTK_UI_SRCS})
add_dependencies(Ui version)
target_include_directories(Ui PUBLIC ${Ui_INCLUDE_DIRS})

set(florb_SOURCES
areaselectlayer.cpp
cache.cpp
downloader.cpp
event.cpp
gfx.cpp
gpsdclient.cpp
gpsdlayer.cpp
layer.cpp
markerlayer.cpp
osmlayer.cpp
scalelayer.cpp
settings.cpp
shell.cpp
tracklayer.cpp
unit.cpp
utils.cpp
viewport.cpp
wgt_eleprofile.cpp
wgt_map.cpp)

set(florb_INCLUDE_DIRS
${Boost_INCLUDE_DIRS}
${CURL_INCLUDE_DIRS}
${FLTK_INCLUDE_DIRS}
${Intl_INCLUDE_DIRS}
${TinyXML2_INCLUDE_DIRS})

add_executable(florb ${florb_SOURCES})
add_dependencies(florb Ui version)

target_include_directories(florb PUBLIC ${florb_INCLUDE_DIRS})

target_link_directories(florb PRIVATE
${Boost_LIBRARY_DIRS}
${CURL_LIBRARY_DIRS})

target_link_libraries(florb PRIVATE Ui)
target_link_libraries(florb PRIVATE ${FLTK_LIBRARIES})
target_link_libraries(florb PRIVATE ${Boost_LIBRARIES})
target_link_libraries(florb PRIVATE ${TinyXML2_LIBRARIES})
target_link_libraries(florb PRIVATE yaml-cpp)
target_link_libraries(florb PRIVATE ${CURL_LIBRARIES})
target_link_libraries(florb PRIVATE ${Intl_LIBRARIES})
target_link_libraries(florb PRIVATE ${libgps_LIBRARIES})

add_subdirectory(i18n)

install(TARGETS florb DESTINATION bin)
19 changes: 8 additions & 11 deletions src/OMakefile
Original file line number Diff line number Diff line change
Expand Up @@ -59,18 +59,15 @@ OBJS_CPP = $(rootname $(find . -name *.cpp))
OBJS_RES = $(rootname $(find . -name *.res))
OBJS = $(set $(OBJS_FLUID) $(OBJS_CPP) $(OBJS_RES))

# Find all translations
TRANSLATIONS =
foreach(d => ..., $(find ./i18n/ -regex [a-z]{2\,2}_[A-Z]{2\,2}))
value $(d)
TRANSLATIONS[] += de_DE

# (Re-)generate version string (version.hpp) from repository information if present
version.hpp: :exists: ../.git/HEAD :exists: ../.git/index gittags.txt :value: $(shell ./gittags.sh) version.txt ./mkversionhpp.sh
./mkversionhpp.sh

# Rule for generating CPP code from fluid sources
%.cpp: %.fl
fluid -c -o $@ -h $(replacesuffixes .cpp, .hpp, $@) $<
fluid -c -o $@ -h $(replacesuffixes .cpp, .h, $@) $<

# Rule for generating binary resources
%.o: %.res
Expand All @@ -97,7 +94,7 @@ install:
#install ../LICENSE.txt $(RESOURCEDIR)
foreach(t => ..., $(basename $(TRANSLATIONS)))
mkdir -p $(LOCALEDIR)/$(t)/LC_MESSAGES/
install ./i18n/$(t)/florb.mo $(LOCALEDIR)/$(t)/LC_MESSAGES/
install ./i18n/$(t).mo $(LOCALEDIR)/$(t)/LC_MESSAGES/

# clean target
clean:
Expand All @@ -110,12 +107,12 @@ i18nupdate:
txt2po -P -i $(t) -o $(t).pot
msgcat -o i18n/all.pot $(addsuffix .res.pot, $(OBJS_RES)) i18n/$(PROGRAM).pot
foreach(t => ..., $(basename $(TRANSLATIONS)))
if $(file-exists ./i18n/$(t)/$(PROGRAM).po)
msgmerge -U ./i18n/$(t)/$(PROGRAM).po i18n/all.pot
if $(file-exists ./i18n/$(t).po)
msgmerge -U ./i18n/$(t).po i18n/all.pot
else
msginit --no-translator -l $(t).utf8 -o ./i18n/$(t)/$(PROGRAM).po -i i18n/all.pot
msginit --no-translator -l $(t).utf8 -o ./i18n/$(t).po -i i18n/all.pot

# compile translations
i18ncompile:
foreach(t => ..., $(basename $(TRANSLATIONS)))
msgfmt -c -o ./i18n/$(t)/florb.mo ./i18n/$(t)/$(PROGRAM).po
msgfmt -c -o ./i18n/$(t).mo ./i18n/$(t).po
2 changes: 1 addition & 1 deletion src/dlg_bulkdl_ex.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#include <algorithm>
#include "settings.hpp"
#include "utils.hpp"
#include "fluid/dlg_bulkdl.hpp"
#include "dlg_bulkdl.h"

void dlg_bulkdl::create_ex()
{
Expand Down
2 changes: 1 addition & 1 deletion src/dlg_editselection_ex.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include <FL/fl_ask.H>
#include "settings.hpp"
#include "unit.hpp"
#include "fluid/dlg_editselection.hpp"
#include "dlg_editselection.h"

void dlg_editselection::create_ex()
{
Expand Down
2 changes: 1 addition & 1 deletion src/dlg_eleprofile_ex.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#include "utils.hpp"
#include "unit.hpp"
#include "fluid/dlg_eleprofile.hpp"
#include "dlg_eleprofile.h"

void dlg_eleprofile::create_ex()
{
Expand Down
2 changes: 1 addition & 1 deletion src/dlg_garmindl_ex.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#include <iostream>
#include "utils.hpp"
#include "shell.hpp"
#include "fluid/dlg_garmindl.hpp"
#include "dlg_garmindl.h"

void dlg_garmindl::create_ex()
{
Expand Down
2 changes: 1 addition & 1 deletion src/dlg_garminul_ex.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#include <iostream>
#include "utils.hpp"
#include "shell.hpp"
#include "fluid/dlg_garminul.hpp"
#include "dlg_garminul.h"

void dlg_garminul::create_ex()
{
Expand Down
2 changes: 1 addition & 1 deletion src/dlg_search_ex.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#include <clocale>
#include <limits>
#include "utils.hpp"
#include "fluid/dlg_search.hpp"
#include "dlg_search.h"

void dlg_search::create_ex()
{
Expand Down
14 changes: 11 additions & 3 deletions src/dlg_settings_ex.cpp
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
#include "config.h"

#include <sstream>
#include <iostream>
#include <FL/Fl_Color_Chooser.H>
#include <FL/Fl_File_Chooser.H>
#include "settings.hpp"
#include "utils.hpp"
#include "unit.hpp"
#include "fluid/dlg_settings.hpp"
#include "fluid/dlg_tileserver.hpp"
#include "dlg_settings.h"
#include "dlg_tileserver.h"

void dlg_settings::create_ex()
{
Expand Down Expand Up @@ -231,7 +233,13 @@ void dlg_settings::tab_gpsd_setup_ex()
m_input_server->value(m_cfggpsd.host().c_str());
m_input_port->value(m_cfggpsd.port().c_str());

bool en = m_cfggpsd.enabled();
bool en;
#ifdef HAVE_LIBGPS
en = m_cfggpsd.enabled();
#else // ! HAVE_LIBGPS
en = false;
m_chkbtn_enable->deactivate();
#endif // HAVE_LIBGPS

if (en)
{
Expand Down
2 changes: 1 addition & 1 deletion src/dlg_tileserver_ex.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#include "settings.hpp"
#include "utils.hpp"
#include "fluid/dlg_tileserver.hpp"
#include "dlg_tileserver.h"
#include <FL/fl_ask.H>

void dlg_tileserver::create_ex()
Expand Down
2 changes: 1 addition & 1 deletion src/dlg_txtdisp_ex.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#include <iostream>
#include <fstream>
#include "utils.hpp"
#include "fluid/dlg_txtdisp.hpp"
#include "dlg_txtdisp.h"

void dlg_txtdisp::create_ex()
{
Expand Down
6 changes: 5 additions & 1 deletion src/dlg_ui_ex.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#include "gpsdclient.hpp"
#include "utils.hpp"
#include "unit.hpp"
#include "fluid/dlg_ui.hpp"
#include "dlg_ui.h"
#include "version.hpp"

extern "C"
Expand Down Expand Up @@ -186,6 +186,10 @@ void dlg_ui::create_ex(void)
m_menuitem_gpsd_gotocursor->label(_("Go to cursor"));
m_menuitem_gpsd_recordtrack->label(_("Record track"));
m_menuitem_gpsd_lockcursor->label(_("Lock to cursor"));
#ifndef HAVE_LIBGPS
m_menuitem_gpsd->deactivate();
m_btn_recordtrack->deactivate();
#endif // HAVE_LIBGPS
// Help
m_menuitem_help->label(_("Help"));
m_menuitem_help_about->label(_("About"));
Expand Down
20 changes: 10 additions & 10 deletions src/fluid/dlg_ui.fl
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ decl {\#include <signal.h>} {private global
decl {\#include <curl/curl.h>} {private global
}

decl {\#include "dlg_ui.hpp"} {private global
decl {\#include "dlg_ui.h"} {private global
}

decl {\#include "wgt_map.hpp"} {public global
Expand All @@ -20,28 +20,28 @@ decl {\#include "wgt_map.hpp"} {public global
decl {\#include "event.hpp"} {public global
}

decl {\#include "dlg_search.hpp"} {public global
decl {\#include "dlg_search.h"} {public global
}

decl {\#include "dlg_garminul.hpp"} {public global
decl {\#include "dlg_garminul.h"} {public global
}

decl {\#include "dlg_garmindl.hpp"} {public global
decl {\#include "dlg_garmindl.h"} {public global
}

decl {\#include "dlg_editselection.hpp"} {public global
decl {\#include "dlg_editselection.h"} {public global
}

decl {\#include "dlg_settings.hpp"} {public global
decl {\#include "dlg_settings.h"} {public global
}

decl {\#include "dlg_txtdisp.hpp"} {public global
decl {\#include "dlg_txtdisp.h"} {public global
}

decl {\#include "dlg_bulkdl.hpp"} {public global
decl {\#include "dlg_bulkdl.h"} {public global
}

decl {\#include "dlg_eleprofile.hpp"} {public global
decl {\#include "dlg_eleprofile.h"} {public global
}

decl {int main_ex(int argc, char* argv[]);} {private global
Expand Down Expand Up @@ -396,7 +396,7 @@ ui->cb_choice_overlay_ex(widget);} {}
Fl_Button m_btn_recordtrack {
user_data this
callback cb_btn_recordtrack
private tooltip {Record track} image {../res/audio-input-microphone.png} xywh {229 29 25 25} type Toggle box NO_BOX down_box THIN_DOWN_BOX
private tooltip {Record track} image {../res/audio-input-microphone.png} deimage {../res/audio-input-microphone-ina.png} xywh {229 29 25 25} type Toggle box NO_BOX down_box THIN_DOWN_BOX
}
Fl_Box {} {
private xywh {254 29 5 25} box FLAT_BOX
Expand Down
Loading