#!/usr/bin/env python
Import('mgui_env', 'user_options_dict')

lib_mgui_env = mgui_env.Clone()
bin_mgui_env = mgui_env.Clone()

lib_path  = user_options_dict['LIB_BUILD_DIR']
bin_path  = user_options_dict['BIN_BUILD_DIR']

######
# lib
lib_src_files = [
                 'dialog.cpp',
                 'dvdimport.cpp',
                 'execution.cpp',
                 'ffviewer.cpp',
                 'img-factory.cpp',
                 'img_utils.cpp',
                 'mcommon_vis.cpp',
                 'menu-rgn.cpp',
                 'mux.cpp',
                 'prefs.cpp',
                 'redivide.cpp',
                 'stream_utils.cpp',
                 'theme.cpp',
                 'timer.cpp',
                 'win_utils.cpp',

                 # author
                 'author/burn.cpp',
                 'author/execute.cpp',
                 'author/gb_devices.c',
                 'author/indicator.cpp',
                 'author/output.cpp',
                 'author/render.cpp',
                 'author/script.cpp',

                 # editor
                 'editor/actions.cpp',
                 'editor/bind.cpp',
                 'editor/kit.cpp',
                 'editor/region.cpp',
                 'editor/render.cpp',
                 'editor/select.cpp',
                 'editor/text.cpp',
                 'editor/tool.cpp',
                 'editor/toolbar.cpp',
                 'editor/txtool.cpp',

                 # project
                 'project/add.cpp',
                 'project/browser.cpp',
                 'project/mconstructor.cpp',
                 'project/mb-actions.cpp',
                 'project/media-browser.cpp',
                 'project/menu-actions.cpp',
                 'project/menu-browser.cpp',
                 'project/menu-render.cpp',
                 'project/serialize.cpp',
                 'project/thumbnail.cpp',
                 'project/video.cpp',

                 # render
                 'render/common.cpp',
                 'render/rgba.cpp',

                 # sdk
                 'sdk/browser.cpp',
                 'sdk/dndtreeview.cc',
                 'sdk/entry.cpp',
                 'sdk/gnc-gtk-utils.c',
                 #'sdk/magick_pixbuf.cpp',
                 'sdk/cairo_utils.cpp',
                 'sdk/clearlooks.cpp',
                 'sdk/menu.cpp',
                 'sdk/player_utils.cpp',
                 'sdk/textview.cpp',
                 'sdk/widget.cpp',
                 'sdk/window.cpp',
                 #'sdk/libgnome/gnome-exec.c',
                 'sdk/libgnome/gnome-util.c',

                 # timeline
                 'timeline/layout.cpp',
                 'timeline/layout-draw.cpp',
                 'timeline/monitor.cpp',
                 'timeline/mviewer.cpp',
                 'timeline/select.cpp',
                 'timeline/service.cpp',
                ]
user_options_dict['AddSourcesForXgettext'](lib_src_files)

# Precompiled header install
# :ATTENTION: if you use precompiled header in another project then point it out in
# SetPCH() function' argument 'additional_envs', like bin_mgui_env here!
user_options_dict['SetPCH'](lib_mgui_env, '_pc_.h', [bin_mgui_env])

lib_mgui_objs = lib_mgui_env.StaticObject(lib_src_files)
# build binaries directly, without slow-building static libraries
Export('lib_mgui_objs')
#mgui_lib_name = 'MdEditor'
#lib_mgui_env.Library( target = lib_path+'/'+mgui_lib_name, source = lib_mgui_objs )

######
# bin

bin_mgui_env.Prepend( LIBS = ['MdBase', 'MdDemuxer', 'MdLib'] )
def MGuiProgram(target, source):
    return bin_mgui_env.Program(target=target, source=source+lib_mgui_objs)

# MViewer
viewer_bin = MGuiProgram(bin_path + '/mviewer', ['timeline/mviewer-main.cpp'])

#
# Bombono DVD
#
bombono_bin = MGuiProgram(target = bin_path + '/bombono-dvd', source = ['project/mconstructor-main.cpp'])
bin_mgui_env.Install(user_options_dict['BIN_PREFIX'], bombono_bin) # + viewer_bin)

# .desktop ...
dest_prefix = user_options_dict['DEST_PREFIX']
import os
def MakeDest(tail):
    return os.path.join(dest_prefix, tail)

def AliasInstall(dst_fpath, src_fpath, install_as):
    """ install_as=False => to directory dst_fpath """
    dst_fpath = MakeDest(dst_fpath)
    if install_as:
        tgt = mgui_env.InstallAs(dst_fpath, src_fpath)
    else:
        tgt = mgui_env.Install(dst_fpath, src_fpath)
    mgui_env.Alias('install', tgt)

AliasInstall("share/applications", 'bombono-dvd.desktop', False)
AliasInstall("share/mime/packages", 'bombono.xml', False)
AliasInstall("share/pixmaps/bombono-dvd.png", '#resources/bmd-icons/bombono-dvd_32px.png', True)

for i in [16, 32, 48, 64, 128]:
    AliasInstall("share/icons/hicolor/%(i)sx%(i)s/apps/bombono-dvd.png" % locals(),
        '#resources/bmd-icons/bombono-dvd_%(i)spx.png' % locals(), True)

from BuildVars import IsBuildOrRunTests
# we like tests
if IsBuildOrRunTests():
    MGuiProgram('tests/test_bmd', ['tests/test_bmd.cpp'])

    SConscript(['tests/SConscript'])

