Propagate shared asset folder from Makefile

and fix error in automatic search of asset folder.
This commit is contained in:
Olaf Schulz 2017-11-12 17:53:23 +01:00
parent f1719e90fe
commit 40bc020add
2 changed files with 23 additions and 16 deletions

View File

@ -109,8 +109,10 @@ info:
" Use 'BUILD_TYPE=[release|debug] make' to switch build type\n\n" \
gen_version:
@echo "namespace NeoLayoutViewer{\n public const string GIT_COMMIT_VERSION " \
"= \"$(GIT_COMMIT_VERSION)\";\n}" \
@echo "namespace NeoLayoutViewer{\n" \
"public const string GIT_COMMIT_VERSION = \"$(GIT_COMMIT_VERSION)\";\n" \
"public const string SHARED_ASSETS_PATH = \"$(DATADIR)/$(APPNAME)/assets\";\n" \
"}" \
> src/version.vala
$(BINDIR):
@ -125,7 +127,7 @@ bulid_release: gen_version
$(VALAC) $(VAPIDIR) $(VALAC_RELEASE_OPTS) $(SRC) -o $(BINDIR)/$(BINNAME) $(PKGS) $(CC_INCLUDES)
install:
test ! -f $(BINDIR)/$(BINNAME) || make all
test -f $(BINDIR)/$(BINNAME) || make all
install -d $(EXEC_PREFIX)/bin
install -D -m 0755 $(BINDIR)/$(BINNAME) $(EXEC_PREFIX)/bin
$(foreach ASSET_FILE,$(ASSET_FILES), install -D -m 0644 $(ASSET_FILE) $(DATADIR)/$(APPNAME)/$(ASSET_FILE) ; )

View File

@ -39,7 +39,7 @@ namespace NeoLayoutViewer{
string[] paths = {
GLib.Environment.get_user_config_dir(),
GLib.Environment.get_home_dir(),
GLib.Environment.get_current_dir()
GLib.Environment.get_current_dir(),
};
configm = new ConfigManager(paths,"neo_layout_viewer.conf");
@ -47,7 +47,7 @@ namespace NeoLayoutViewer{
// Try to find asset folder (images)
string asset_folder = search_asset_folder( configm.getConfig().get("asset_folder") );
if( asset_folder == null ){
stdout.printf("Application start failed. Asset folder was not found.\n");
stdout.printf(@"Application start failed because asset folder was not found.\nTry to set path manually in the config file '$(configm.used_config_path)'\n");
stdout.flush();
return 0;
}
@ -137,21 +137,26 @@ Tastenkombinationen:
*/
private static string? search_asset_folder(string path){
const string filename = "/icons/Neo-Icon.png";
const string subpath = "NeoLayoutViewer/assets";
var file = File.new_for_path (path+filename);
if( file.query_exists(null)) return path;
// Check '../assets'
var path1 = "../" + path;
var file1 = File.new_for_path (path1+filename);
if( file1.query_exists(null)) return path1;
string[] paths = {
path, // path from config file
"./assets",
"../assets",
SHARED_ASSETS_PATH, // path given by Makefile
};
foreach( var p in paths ){
debug(@"Search assets in $(p)\n");
var file = File.new_for_path (p+filename);
if( file.query_exists(null)) return p;
}
//string[] datadirs = GLib.Environment.get_system_data_dirs();
var datadirs = GLib.Environment.get_system_data_dirs();
foreach( var s in datadirs ){
var path2 = s+subpath;
var file2 = File.new_for_path (path2+filename);
if( file2.query_exists(null)) return path2;
var env_path = s + "/NeoLayoutViewer/assets";
debug(@"Search assets in $(env_path)\n");
var file2 = File.new_for_path (env_path+filename);
if( file2.query_exists(null)) return env_path;
}
return null;