merge after integrating the GUI draft; now using multiple build environments and check via pkg-config
This commit is contained in:
parent
50f8be0e16
commit
7a6b987a50
5 changed files with 334 additions and 24 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -5,7 +5,7 @@
|
|||
*.os
|
||||
*.gch
|
||||
,valgrind.log*
|
||||
Buildhelper.pyc
|
||||
admin/scons/*.pyc
|
||||
optcache
|
||||
Makefile.in
|
||||
build/*
|
||||
|
|
|
|||
86
SConstruct
86
SConstruct
|
|
@ -26,6 +26,8 @@ sys.path.append("./admin/scons")
|
|||
|
||||
import os
|
||||
from Buildhelper import *
|
||||
from LumieraEnvironment import *
|
||||
|
||||
|
||||
#-----------------------------------Configuration
|
||||
OPTIONSCACHEFILE = 'optcache'
|
||||
|
|
@ -33,6 +35,7 @@ CUSTOPTIONSFILE = 'custom-options'
|
|||
SRCDIR = 'src'
|
||||
BINDIR = 'bin'
|
||||
TESTDIR = 'tests'
|
||||
ICONDIR = 'icons'
|
||||
VERSION = '0.1+pre.01'
|
||||
#-----------------------------------Configuration
|
||||
|
||||
|
|
@ -53,13 +56,13 @@ def setupBasicEnvironment():
|
|||
EnsureSConsVersion(0,96,90)
|
||||
|
||||
opts = defineCmdlineOptions()
|
||||
|
||||
env = Environment(options=opts)
|
||||
|
||||
env = LumieraEnvironment(options=opts)
|
||||
|
||||
env.Append ( CCCOM=' -std=gnu99') # workaround for a bug: CCCOM currently doesn't honor CFLAGS, only CCFLAGS
|
||||
env.Replace( VERSION=VERSION
|
||||
, SRCDIR=SRCDIR
|
||||
, BINDIR=BINDIR
|
||||
, ICONDIR=ICONDIR
|
||||
, CPPPATH=["#"+SRCDIR] # used to find includes, "#" means always absolute to build-root
|
||||
, CPPDEFINES=['-DLUMIERA_VERSION='+VERSION ] # note: it's a list to append further defines
|
||||
, CCFLAGS='-Wall ' # -fdiagnostics-show-option
|
||||
|
|
@ -74,7 +77,7 @@ def setupBasicEnvironment():
|
|||
appendVal(env,'ARCHFLAGS', 'CCFLAGS') # for both C and C++
|
||||
appendVal(env,'OPTIMIZE', 'CCFLAGS', val=' -O3')
|
||||
appendVal(env,'DEBUG', 'CCFLAGS', val=' -ggdb')
|
||||
|
||||
|
||||
prepareOptionsHelp(opts,env)
|
||||
opts.Save(OPTIONSCACHEFILE, env)
|
||||
return env
|
||||
|
|
@ -127,7 +130,7 @@ def defineCmdlineOptions():
|
|||
,PathOption('SRCTAR', 'Create source tarball prior to compiling', '..', PathOption.PathAccept)
|
||||
,PathOption('DOCTAR', 'Create tarball with dev documentaionl', '..', PathOption.PathAccept)
|
||||
)
|
||||
|
||||
|
||||
return opts
|
||||
|
||||
|
||||
|
|
@ -161,38 +164,42 @@ def configurePlatform(env):
|
|||
setup platform specific options.
|
||||
Abort build in case of failure.
|
||||
"""
|
||||
conf = Configure(env)
|
||||
# run all configuration checks in the current env
|
||||
conf = env.Configure()
|
||||
# run all configuration checks in the given env
|
||||
|
||||
# Perform checks for prerequisites --------------------------------------------
|
||||
if not conf.TryAction('pkg-config --version > $TARGET')[0]:
|
||||
print 'We need pkg-config for including library configurations, exiting.'
|
||||
Exit(1)
|
||||
|
||||
# Checks for prerequisites ------------
|
||||
if not conf.CheckLibWithHeader('m', 'math.h','C'):
|
||||
print 'Did not find math.h / libm, exiting.'
|
||||
Exit(1)
|
||||
|
||||
|
||||
if not conf.CheckLibWithHeader('dl', 'dlfcn.h', 'C'):
|
||||
print 'Functions for runtime dynamic loading not available, exiting.'
|
||||
Exit(1)
|
||||
|
||||
|
||||
if not conf.CheckLibWithHeader('nobugmt', 'nobug.h', 'C'):
|
||||
print 'Did not find NoBug [http://www.pipapo.org/pipawiki/NoBug], exiting.'
|
||||
Exit(1)
|
||||
|
||||
|
||||
if not conf.CheckLibWithHeader('pthread', 'pthread.h', 'C'):
|
||||
print 'Did not find the pthread lib or pthread.h, exiting.'
|
||||
else:
|
||||
conf.env.Append(CPPFLAGS = ' -DHAVE_PTHREAD')
|
||||
conf.env.Append(CCFLAGS = ' -pthread')
|
||||
|
||||
|
||||
if conf.CheckCHeader('execinfo.h'):
|
||||
conf.env.Append(CPPFLAGS = ' -DHAS_EXECINFO_H')
|
||||
|
||||
|
||||
if conf.CheckCHeader('valgrind/valgrind.h'):
|
||||
conf.env.Append(CPPFLAGS = ' -DHAS_VALGRIND_VALGIND_H')
|
||||
|
||||
if not conf.CheckCXXHeader('tr1/memory'):
|
||||
print 'We rely on the std::tr1 proposed standard extension for shared_ptr.'
|
||||
Exit(1)
|
||||
|
||||
|
||||
if not conf.CheckCXXHeader('boost/config.hpp'):
|
||||
print 'We need the C++ boost-lib.'
|
||||
Exit(1)
|
||||
|
|
@ -206,8 +213,36 @@ def configurePlatform(env):
|
|||
if not conf.CheckLibWithHeader('boost_regex-mt','boost/regex.hpp','C++'):
|
||||
print 'We need the boost regular expression lib (incl. binary lib for linking).'
|
||||
Exit(1)
|
||||
|
||||
|
||||
|
||||
# if not conf.CheckLibWithHeader('gavl', ['gavlconfig.h', 'gavl/gavl.h'], 'C'):
|
||||
|
||||
if not conf.CheckPkgConfig('gavl', 1.0):
|
||||
print 'Did not find Gmerlin Audio Video Lib [http://gmerlin.sourceforge.net/gavl.html], exiting.'
|
||||
Exit(1)
|
||||
else:
|
||||
conf.env.mergeConf('gavl')
|
||||
|
||||
if not conf.CheckPkgConfig('gtkmm-2.4', 2.8):
|
||||
print 'Unable to configure GTK--, exiting.'
|
||||
Exit(1)
|
||||
|
||||
if not conf.CheckPkgConfig('cairomm-1.0', 0.6):
|
||||
print 'Unable to configure Cairo--, exiting.'
|
||||
Exit(1)
|
||||
|
||||
if not conf.CheckPkgConfig('gdl-1.0', '0.6.1'):
|
||||
print 'Unable to configure the GNOME DevTool Library, exiting.'
|
||||
Exit(1)
|
||||
|
||||
if not conf.CheckPkgConfig('xv'): Exit(1)
|
||||
# if not conf.CheckPkgConfig('xext'): Exit(1)
|
||||
# if not conf.CheckPkgConfig('sm'): Exit(1)
|
||||
#
|
||||
# obviously not needed?
|
||||
|
||||
print "** Gathered Library Info: %s" % conf.env.libInfo.keys()
|
||||
|
||||
|
||||
# create new env containing the finished configuration
|
||||
return conf.Finish()
|
||||
|
||||
|
|
@ -221,7 +256,7 @@ def definePackagingTargets(env, artifacts):
|
|||
artifacts['src.tar'] = t
|
||||
env.Alias('src.tar', t)
|
||||
env.Alias('tar', t)
|
||||
|
||||
|
||||
t = Tarball(env,location='$DOCTAR',suffix='-doc',dirs='admin doc wiki uml tests')
|
||||
artifacts['doc.tar'] = t
|
||||
env.Alias('doc.tar', t)
|
||||
|
|
@ -240,7 +275,7 @@ def defineBuildTargets(env, artifacts):
|
|||
objlib = ( srcSubtree(env,'$SRCDIR/common')
|
||||
+ srcSubtree(env,'$SRCDIR/lib')
|
||||
)
|
||||
plugobj = srcSubtree(env,'$SRCDIR/plugin', isShared=True)
|
||||
objplug = srcSubtree(env,'$SRCDIR/plugin', isShared=True)
|
||||
core = ( env.StaticLibrary('$BINDIR/lumiback.la', objback)
|
||||
+ env.StaticLibrary('$BINDIR/lumiproc.la', objproc)
|
||||
+ env.StaticLibrary('$BINDIR/lumi.la', objlib)
|
||||
|
|
@ -253,7 +288,16 @@ def defineBuildTargets(env, artifacts):
|
|||
env.Depends(objlib, precomp)
|
||||
|
||||
artifacts['lumiera'] = env.Program('$BINDIR/lumiera', ['$SRCDIR/main.cpp']+ core )
|
||||
artifacts['plugins'] = env.SharedLibrary('$BINDIR/lumiera-plugin', plugobj)
|
||||
artifacts['plugins'] = env.SharedLibrary('$BINDIR/lumiera-plugin', objplug)
|
||||
|
||||
# the Lumiera GTK GUI
|
||||
envgtk = env.Clone().mergeConf(['gtkmm-2.4','cairomm-1.0','gdl-1.0','xv','xext','sm'])
|
||||
objgui = srcSubtree(envgtk,'$SRCDIR/gui')
|
||||
|
||||
artifacts['lumigui'] = ( envgtk.Program('$BINDIR/lumigui', objgui + core)
|
||||
+ env.Install('$BINDIR', env.Glob('$ICONDIR/*.png'))
|
||||
+ env.Install('$BINDIR', env.Glob('$SRCDIR/gui/*.rc'))
|
||||
)
|
||||
|
||||
# call subdir SConscript(s) for independent components
|
||||
SConscript(dirs=[SRCDIR+'/tool'], exports='env artifacts core')
|
||||
|
|
@ -269,13 +313,13 @@ def definePostBuildTargets(env, artifacts):
|
|||
il = env.Alias('install-lib', '$DESTDIR/lib')
|
||||
env.Alias('install', [ib, il])
|
||||
|
||||
build = env.Alias('build', artifacts['lumiera']+artifacts['plugins']+artifacts['tools'])
|
||||
build = env.Alias('build', artifacts['lumiera']+artifacts['lumigui']+artifacts['plugins']+artifacts['tools'])
|
||||
allbu = env.Alias('allbuild', build+artifacts['testsuite'])
|
||||
env.Default('build')
|
||||
# additional files to be cleaned when cleaning 'build'
|
||||
env.Clean ('build', [ 'scache.conf', '.sconf_temp', '.sconsign.dblite', 'config.log' ])
|
||||
env.Clean ('build', [ '$SRCDIR/pre.gch' ])
|
||||
|
||||
|
||||
# Doxygen documentation
|
||||
# Note: at the moment we only depend on Doxyfile
|
||||
# obviousely, we should depend on all sourcefiles
|
||||
|
|
|
|||
|
|
@ -90,6 +90,18 @@ def globRootdirs(roots):
|
|||
|
||||
|
||||
|
||||
def filterNodes(nlist, removeName=None):
|
||||
""" filter out scons build nodes using the given criteria.
|
||||
removeName: if set, remove all nodes with this srcname
|
||||
"""
|
||||
if removeName:
|
||||
predicate = lambda n : not fnmatch.fnmatch(os.path.basename(str(n[0])), removeName)
|
||||
else:
|
||||
predicate = lambda n : True;
|
||||
|
||||
return filter(predicate, nlist)
|
||||
|
||||
|
||||
def RegisterPrecompiledHeader_Builder(env):
|
||||
""" Registeres an Custom Builder for generating a precompiled Header.
|
||||
Note you should define a dependency to the PCH file
|
||||
|
|
@ -111,7 +123,7 @@ def RegisterPrecompiledHeader_Builder(env):
|
|||
|
||||
def Tarball(env,location,dirs,suffix=''):
|
||||
""" Custom Command: create Tarball of some subdirs
|
||||
location: where to create the tar (optionally incl. filename.tar.gz)
|
||||
location: where to create the tar (may optionally include filename.tar.gz)
|
||||
suffix: (optional) suffix to include in the tar name
|
||||
dirs: directories to include in the tar
|
||||
|
||||
|
|
@ -132,7 +144,7 @@ def Tarball(env,location,dirs,suffix=''):
|
|||
|
||||
|
||||
def createTarball(target,source,env):
|
||||
""" helper, builds the tar using the python2.3 tarfil lib.
|
||||
""" helper, builds the tar using the python2.3 tarfile lib.
|
||||
This allows us to prefix all paths, thus moving the tree
|
||||
into a virtual subdirectory containing the Version number,
|
||||
as needed by common packaging systems.
|
||||
|
|
|
|||
97
admin/scons/LumieraEnvironment.py
Normal file
97
admin/scons/LumieraEnvironment.py
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
# -*- python -*-
|
||||
##
|
||||
## LumieraEnvironment.py - custom SCons Environment
|
||||
##
|
||||
|
||||
# Copyright (C) Lumiera.org
|
||||
# 2008, Hermann Vosseler <Ichthyostega@web.de>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 2 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
#####################################################################
|
||||
|
||||
|
||||
from SCons.SConf import SConf
|
||||
from SCons.Environment import Environment
|
||||
|
||||
from Buildhelper import *
|
||||
|
||||
|
||||
|
||||
class LumieraEnvironment(Environment):
|
||||
""" Custom SCons build environment for Lumiera
|
||||
This allows us to carry structured config data without
|
||||
using global vars. Idea inspired by Ardour.
|
||||
"""
|
||||
def __init__(self,*args,**kw):
|
||||
Environment.__init__ (self,*args,**kw)
|
||||
self.libInfo = {}
|
||||
|
||||
def Configure (self, *args, **kw):
|
||||
kw['env'] = self
|
||||
return apply(LumieraConfigContext, args, kw)
|
||||
|
||||
def mergeConf (self,other):
|
||||
""" extract the library/compiler flags from other Environment.
|
||||
Optionally accepts a list or just sting(s) representing keys
|
||||
in our own libInfo Dictionary
|
||||
"""
|
||||
if isinstance(other, list):
|
||||
for elm in other:
|
||||
self.mergeConf(elm)
|
||||
elif isinstance(other, str):
|
||||
if other in self.libInfo:
|
||||
self.mergeConf(self.libInfo[other])
|
||||
else:
|
||||
self.Append (LIBS = other.get ('LIBS',[]))
|
||||
self.Append (LIBPATH = other.get ('LIBPATH', []))
|
||||
self.Append (CPPPATH = other.get('CPPPATH', []))
|
||||
self.Append (LINKFLAGS = other.get('LINKFLAGS', []))
|
||||
|
||||
return self
|
||||
|
||||
|
||||
def addLibInfo (self, libID, minVersion=0):
|
||||
""" use pkg-config to create an Environment describing the lib.
|
||||
Don't add this defs to the current Environment, rather store
|
||||
them in the libInfo Dictionary.
|
||||
"""
|
||||
minVersion = str(minVersion)
|
||||
if 0 != os.system('pkg-config --print-errors --exists "%s >= %s"' % (libID,minVersion)):
|
||||
print "Problems configuring the Library %s (>= %s)" % (libID,minVersion)
|
||||
return False
|
||||
|
||||
self.libInfo[libID] = libInfo = LumieraEnvironment()
|
||||
libInfo.ParseConfig ('pkg-config --cflags --libs '+ libID )
|
||||
return libInfo
|
||||
|
||||
def Glob (self, pattern):
|
||||
""" temporary workaround; newer versions of SCons provide this as a global function
|
||||
"""
|
||||
pattern = self.subst(pattern)
|
||||
return glob.glob(pattern)
|
||||
|
||||
|
||||
class LumieraConfigContext(SConf):
|
||||
""" Extends the SCons Configure context with some convenience methods
|
||||
"""
|
||||
def __init__(self, *args,**kw):
|
||||
SConf.__init__(self,*args,**kw)
|
||||
|
||||
def CheckPkgConfig (self, libID, minVersion=0):
|
||||
print "Checking for library configuration: %s " % libID
|
||||
# self.Message(self,"Checking for library configuration: %s " % libID)
|
||||
return self.env.addLibInfo (libID, minVersion)
|
||||
|
||||
|
||||
157
src/gui/lumiera_ui.rc
Normal file
157
src/gui/lumiera_ui.rc
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
#
|
||||
# This is the GTK style file for Lumiera
|
||||
#
|
||||
#
|
||||
|
||||
#---------- Styles for Standard Widgets ----------#
|
||||
|
||||
style "medium_text"
|
||||
{
|
||||
font_name = "sans 10"
|
||||
}
|
||||
|
||||
style "medium_bold_entry" = "medium_text"
|
||||
{
|
||||
fg[NORMAL] = { 0.70, 0.70, 0.70 }
|
||||
fg[ACTIVE] = { 0.70, 0.70, 0.70 }
|
||||
|
||||
bg[NORMAL] = { 0.35, 0.35, 0.40 }
|
||||
|
||||
base[NORMAL] = { 0, 0, 0 }
|
||||
base[ACTIVE] = { 0, 0, 0 }
|
||||
base[SELECTED] = { 0, 0, 0 }
|
||||
}
|
||||
|
||||
style "default_base" = "medium_text"
|
||||
{
|
||||
GtkWidget::cursor_color = {1.0, 1.0, 1.0 }
|
||||
GtkButton::default_border = { 0, 0, 0, 0 }
|
||||
GtkButton::default_outside_border = { 0, 0, 0, 0 }
|
||||
GtkTreeView::vertical-padding = 0
|
||||
GtkTreeView::horizontal-padding = 0
|
||||
GtkTreeView::even-row-color = { 0, 0, 0 }
|
||||
GtkTreeView::odd-row-color = { 0, 0, 0 }
|
||||
|
||||
fg[NORMAL] = { 0.80, 0.80, 0.80 }
|
||||
fg[ACTIVE] = { 0.80, 0.80, 0.80 }
|
||||
fg[PRELIGHT] = { 1.0, 1.0, 1.0 }
|
||||
fg[INSENSITIVE] = { 0.80, 0.80, 0.80 }
|
||||
fg[SELECTED] = { 0.80, 0.80, 0.80 }
|
||||
|
||||
bg[NORMAL] = { 0.35, 0.35, 0.40 }
|
||||
bg[ACTIVE] = { 0.35, 0.35, 0.40 }
|
||||
bg[PRELIGHT] = "#565690"
|
||||
bg[INSENSITIVE] = { 0.10, 0.10, 0.10 }
|
||||
bg[SELECTED] = { 0, 0.40, 0.60 }
|
||||
|
||||
text[NORMAL] = { 0.80, 0.80, 0.80 }
|
||||
text[ACTIVE] = { 0.80, 0.80, 0.80 }
|
||||
text[PRELIGHT] = { 0.80, 0.80, 0.80 }
|
||||
text[INSENSITIVE] = { 0.80, 0.80, 0.80}
|
||||
text[SELECTED] = { 1.0, 1.0, 1.0 }
|
||||
|
||||
base[ACTIVE] = "#272a2f"
|
||||
base[NORMAL] = "#1a1e20"
|
||||
base[PRELIGHT] = { 0.20, 0.20, 0.20 }
|
||||
base[INSENSITIVE] = "#4c5159"
|
||||
base[SELECTED] = { 0.25, 0.25, 0.25 }
|
||||
|
||||
engine "clearlooks"
|
||||
{
|
||||
menubarstyle = 2 # 0 = flat, 1 = sunken, 2 = flat gradient
|
||||
# menuitemstyle = 1 # 0 = flat, 1 = 3d-ish (gradient), 2 = 3d-ish (button)
|
||||
# listviewitemstyle = 1 # 0 = flat, 1 = 3d-ish (gradient)
|
||||
# progressbarstyle = 1 # 0 = candy bar, 1 = fancy candy bar, 2 = flat
|
||||
}
|
||||
}
|
||||
|
||||
style "default_buttons_menus"
|
||||
{
|
||||
font_name = "sans 10"
|
||||
fg[ACTIVE] = { 1.0, 1.0, 1.0 }
|
||||
|
||||
bg[NORMAL] = { 0.30, 0.30, 0.35 }
|
||||
bg[ACTIVE] = "#565690"
|
||||
bg[PRELIGHT] = { 0.15, 0.15, 0.20 }
|
||||
bg[INSENSITIVE] = { 0.15, 0.15, 0.20 }
|
||||
bg[SELECTED] = { 0.15, 0.15, 0.20 }
|
||||
}
|
||||
|
||||
style "lumiera_adjusters" = "default_buttons_menus"
|
||||
{
|
||||
fg[NORMAL] = { 0.80, 0.80, 0.80 }
|
||||
fg[ACTIVE] = { 0.80, 0.80, 0.80 }
|
||||
fg[PRELIGHT] = { 1.0, 1.0, 1.0 }
|
||||
fg[INSENSITIVE] = { 0.80, 0.80, 0.80 }
|
||||
fg[SELECTED] = { 0.80, 0.80, 0.80 }
|
||||
|
||||
bg[NORMAL] = { 0.35, 0.35, 0.40 }
|
||||
bg[ACTIVE] = { 0.35, 0.35, 0.40 }
|
||||
bg[PRELIGHT] = "#565690"
|
||||
bg[INSENSITIVE] = { 0.10, 0.10, 0.10 }
|
||||
bg[SELECTED] = { 0, 0.40, 0.60 }
|
||||
}
|
||||
|
||||
style "lumiera_progressbars" = "default_buttons_menus"
|
||||
{
|
||||
bg[NORMAL] = { 0, 0, 0 }
|
||||
bg[PRELIGHT] = { 0.00, 0.36, 0.40 }
|
||||
}
|
||||
|
||||
style "lumiera_button" = "default_buttons_menus"
|
||||
{
|
||||
xthickness = 1
|
||||
ythickness = 1
|
||||
}
|
||||
|
||||
style "tearoff_arrow" = "medium_bold_entry"
|
||||
{
|
||||
fg[NORMAL] = { 0.80, 0.80, 0.80 }
|
||||
fg[PRELIGHT] = { 0.80, 0.80, 0.80 }
|
||||
bg[NORMAL] = { 0.80, 0.80, 0.80 }
|
||||
bg[PRELIGHT] = { 0.80, 0.80, 0.80 }
|
||||
}
|
||||
|
||||
class "GtkWidget" style:highest "default_base"
|
||||
class "GtkScrollbar" style:highest "lumiera_adjusters"
|
||||
class "GtkLabel" style:highest "default_buttons_menus"
|
||||
class "GtkButton" style:highest "lumiera_button"
|
||||
class "GtkArrow" style:highest "tearoff_arrow"
|
||||
class "GtkProgressBar" style:highest "lumiera_progressbars"
|
||||
|
||||
#---------- Styles for Lumiera Widgets ----------#
|
||||
|
||||
style "timeline_body"
|
||||
{
|
||||
gtkmm__CustomObject_TimelineBody::background = "#7E838B"
|
||||
}
|
||||
|
||||
style "timeline_ruler" = "default_base"
|
||||
{
|
||||
font_name = "sans 8"
|
||||
gtkmm__CustomObject_TimelineRuler::height = 18
|
||||
gtkmm__CustomObject_TimelineRuler::major_tick_height = 18
|
||||
gtkmm__CustomObject_TimelineRuler::minor_long_tick_height = 6
|
||||
gtkmm__CustomObject_TimelineRuler::minor_short_tick_height = 3
|
||||
gtkmm__CustomObject_TimelineRuler::annotation_horz_margin = 3
|
||||
gtkmm__CustomObject_TimelineRuler::annotation_vert_margin = 0
|
||||
gtkmm__CustomObject_TimelineRuler::min_division_width = 100
|
||||
gtkmm__CustomObject_TimelineRuler::mouse_chevron_size = 5
|
||||
}
|
||||
|
||||
style "timeline_header_base" = "default_base"
|
||||
{
|
||||
# fg[NORMAL] = { 0.77, 0.77, 0.72 }
|
||||
# bg[NORMAL] = { 0.18, 0.19, 0.22 }
|
||||
# bg[ACTIVE] = { 0.20, 0.20, 0.20 }
|
||||
# bg[PRELIGHT] = { 0.20, 0.20, 0.20 }
|
||||
# bg[INSENSITIVE] = { 0.20, 0.20, 0.20 }
|
||||
# bg[SELECTED] = { 0.20, 0.20, 0.20 }
|
||||
}
|
||||
|
||||
class "gtkmm__CustomObject_TimelineBody" style:highest "timeline_body"
|
||||
class "gtkmm__CustomObject_TimelineRuler" style:highest "timeline_ruler"
|
||||
|
||||
widget "*TimelineHeaderBaseUnselected" style:highest "timeline_header_base"
|
||||
|
||||
|
||||
Loading…
Reference in a new issue