diff --git a/SConstruct b/SConstruct index 16fda2d2f..dba344dc0 100644 --- a/SConstruct +++ b/SConstruct @@ -28,11 +28,11 @@ # Read more about the SCons build system at: http://www.scons.org -# SCons plugins and extension modules -#------------------------------------------------ +# NOTE: Lumiera SCons extension modules and plugins +#-------------------------------------------------- import sys sys.path.append('./admin/scons') -#------------------------------------------------ +#-------------------------------------------------- import Setup diff --git a/admin/scons/Buildhelper.py b/admin/scons/Buildhelper.py index 2c54a2f50..78733e246 100644 --- a/admin/scons/Buildhelper.py +++ b/admin/scons/Buildhelper.py @@ -63,8 +63,7 @@ def scanSubtree(roots, patterns=SRCPATTERNS): """ for root in globRootdirs(roots): for (d,_,files) in os.walk(root): - if d.startswith('./'): - d = d[2:] + d = stripPrefix(d, './') for p in patterns: for f in fnmatch.filter(files, p): yield os.path.join(d,f) @@ -136,15 +135,20 @@ def getDirname (d, basePrefix=None): d,_ = os.path.split(d) if basePrefix: basePrefix = os.path.realpath(basePrefix) - name = str(d) - if str(d).startswith(basePrefix): - name = name[len(basePrefix):] + name = stripPrefix(str(d), basePrefix) else: _, name = os.path.split(d) return name +def stripPrefix(path, prefix): + if path.startswith(prefix): + path = path[len(prefix):] + return path + + + def createPlugins(env, directory, **kw): """ investigate the given source directory to identify all contained source trees. @return: a list of build nodes defining a plugin for each of these source trees. diff --git a/admin/scons/LumieraEnvironment.py b/admin/scons/LumieraEnvironment.py index e59edddd0..e7c29629a 100644 --- a/admin/scons/LumieraEnvironment.py +++ b/admin/scons/LumieraEnvironment.py @@ -157,7 +157,7 @@ def register_LumieraResourceBuilder(env): return (generateTargets, source) def IconResource(env, source): - """Copy icon pixmap to corresponding icon dir. """ + """ copy icon pixmap to corresponding icon dir. """ subdir = getDirname(str(source)) toBuild = env.path.buildIcon+subdir toInstall = env.path.installIcon+subdir @@ -165,9 +165,11 @@ def register_LumieraResourceBuilder(env): return env.Install(toBuild, source) def GuiResource(env, source): - subdir = getDirname(str(source)) - toBuild = env.path.buildUIRes+subdir - toInstall = env.path.installUIRes+subdir + """ pick up giben source resource and install + them (flat) into the configured target + """ + toBuild = env.path.buildUIRes + toInstall = env.path.installUIRes env.Install (toInstall, source) return env.Install(toBuild, source) diff --git a/admin/scons/Setup.py b/admin/scons/Setup.py index 3e0b15727..510e6b852 100644 --- a/admin/scons/Setup.py +++ b/admin/scons/Setup.py @@ -40,9 +40,9 @@ CUSTOPTFILE = 'custom-options' buildExe = '#$TARGDIR' buildLib = '#$TARGDIR/modules' buildPlug = '#$TARGDIR/modules' -buildIcon = '#$TARGDIR/gui/icons' -buildUIRes = '#$TARGDIR/' -buildConf = '#$TARGDIR/config' +buildIcon = '#$TARGDIR/gui/icons' # for IconResource() and IconRender() +buildUIRes = '#$TARGDIR/gui/' # for GuiResource() +buildConf = '#$TARGDIR/config' # for ConfigData() installExe = '#$DESTDIR/lib/lumiera' installLib = '#$DESTDIR/lib/lumiera/modules' installPlug = '#$DESTDIR/lib/lumiera/modules' diff --git a/data/config/setup.ini b/data/config/setup.ini index bffb29e92..17befa9a2 100644 --- a/data/config/setup.ini +++ b/data/config/setup.ini @@ -20,5 +20,5 @@ copyright = 2007 - 2015 [Gui] #stylesheet = lumiera.css stylesheet = lumiera-light-theme-complement.css -iconpath = $ORIGIN/../../share/lumiera/icons:$ORIGIN/gui/icons:~/.lumiera/icons -resourcepath = $ORIGIN/../../share/lumiera/gui:$ORIGIN/gui +iconpath = $ORIGIN/../../share/lumiera/icons:$ORIGIN/gui/icons +resourcepath = $ORIGIN/../../share/lumiera:$ORIGIN/gui diff --git a/src/SConscript b/src/SConscript index c79759161..747817521 100644 --- a/src/SConscript +++ b/src/SConscript @@ -16,11 +16,12 @@ lApp = env.SharedLibrary('lumieracommon', srcSubtree('common'), addLibs=lLib, lVault = env.SharedLibrary('lumieravault', srcSubtree('vault'), addLibs=lLib+lApp, install=True) lSteam = env.SharedLibrary('lumierasteam', srcSubtree('steam'), addLibs=lLib+lApp+lVault,install=True) -core = lSteam+lVault+lApp+lLib # in reverse dependency order -support_lib = lLib -app_lib = lApp+support_lib -vault_lib = lVault+app_lib -core_lib = core + # in reverse dependency order +core = lSteam+lVault+lApp+lLib # used to build the core application +app_lib = lApp+lLib # use to link against the platform +core_lib = core # use to link against the core application +vault_lib = lVault+app_lib # use to link against the low-level backend +support_lib = lLib # use to link against the support lib only lumiera = ( env.Program('lumiera', ['lumiera/main.cpp'] + core, install=True) + config @@ -40,9 +41,11 @@ envGtk = env.Clone() envGtk.mergeConf(['gtkmm-3.0','sigc++-2.0','gthread-2.0','cairomm-1.0','gdl','xv','x11','xext','sm']) guimodule = envGtk.LumieraPlugin('gtk_gui', srcSubtree('stage') + core, install=True) +resources = ( [env.GuiResource(f) for f in scanSubtree('stage', ['*.css'])] # note: collected into one target dir + ) gui = ( guimodule + + resources + icons - + [env.GuiResource(f) for f in env.Glob('stage/*.css')] ) diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index 3f2a48a80..6e4ef6083 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -79,8 +79,8 @@ - - + + @@ -91,7 +91,7 @@ - + @@ -116,7 +116,7 @@ - + @@ -134,13 +134,14 @@ - + + - + @@ -159,10 +160,11 @@ Ganz anders Model::Tangible: dieses registriert sich bei der Konstruktion

-
+ +
- + @@ -175,7 +177,8 @@ aber so herum macht es mehr Sinn

-
+ +
@@ -199,7 +202,7 @@ - + @@ -228,7 +231,8 @@ BusTerm, das damit Nachrichten an den Nexus schicken kann.

-
+ +
@@ -239,10 +243,10 @@ - - + + - + @@ -255,7 +259,7 @@ - + @@ -268,9 +272,10 @@ Wartet nur noch auf proof-of-concept (DemoGuiRoundtrip)

-
+ + - + @@ -283,7 +288,8 @@ aber nur via einfacher "uplink"-Verbindung

-
+ +
@@ -363,11 +369,11 @@ - + - + @@ -386,7 +392,8 @@ Term-Signal nicht ausgesendet würde.

-
+ +
@@ -399,9 +406,9 @@ - + - + @@ -419,6 +426,11 @@ + + + + + @@ -454,7 +466,7 @@ - + @@ -473,9 +485,10 @@ Anmerkung: ein "frestehendes" BusTerm ist valide und zugelassen, es hat halt nur eine uplink-Connection.

-
+ +
- + @@ -488,7 +501,8 @@ es muß dazu auch jede Menge Methoden implementieren.

-
+ +
@@ -598,7 +612,7 @@ - + @@ -617,7 +631,8 @@ Ein zu früher bzw. zu später Aufruf "fällt einfach hinten runter"

-
+ +
@@ -649,7 +664,7 @@
- + @@ -686,7 +701,8 @@ dann kann der Shutdown-Prozeß den Start des GUI überholen.

-
+ +
@@ -3918,7 +3934,7 @@
- + @@ -3931,7 +3947,8 @@ indem wir ein GTK-Signal erzeugen, das das Hauptfenster schließt

-
+ + @@ -4014,7 +4031,7 @@
- + @@ -5378,7 +5395,7 @@ - + @@ -5408,13 +5425,14 @@ - + + - + @@ -5441,7 +5459,8 @@ - + + @@ -5456,7 +5475,7 @@ - + @@ -5466,7 +5485,8 @@ vorbereitete Grundstrukturen für immer wiederkehrende Setups

-
+ + @@ -5661,7 +5681,7 @@ - + @@ -5674,7 +5694,8 @@ Im Zweifelsfall den GTK+ Inspector verwenden!

-
+ +
@@ -5693,7 +5714,7 @@
- + @@ -5703,7 +5724,8 @@ CSS genügt

-
+ +
@@ -5716,7 +5738,7 @@ - + @@ -5751,7 +5773,8 @@ }

-
+ +
@@ -5825,7 +5848,7 @@
- + @@ -5838,10 +5861,11 @@ daß die alte, obsolete Timeline zurückgebaut ist

-
+ +
- + @@ -5857,7 +5881,8 @@ bevor die Notification-Facade geöffnet werden konnte

-
+ +
@@ -5909,7 +5934,7 @@ - + @@ -5940,7 +5965,8 @@ Allerdings habe ich an der Stelle immer noch GTK-Assertions

-
+ +
@@ -5988,7 +6014,7 @@ - + @@ -6016,7 +6042,8 @@ ist, daß Gio::Application sofort auch gleich eine dBus-Verbindung hochfährt.

-
+ +
@@ -16629,7 +16656,7 @@ - + @@ -16645,7 +16672,8 @@ und daher auf "inaktiv" geschaltet ist.

-
+ +
@@ -17035,7 +17063,7 @@ - + @@ -17045,7 +17073,8 @@ ...denn das ist das vereinfachte Setup für "einfache" Applikationen

-
+ +
@@ -17421,7 +17450,7 @@ - + @@ -17431,9 +17460,10 @@ das Diff wird auf den Platzhalter angewendet

-
+ +
- + @@ -17446,7 +17476,8 @@ dann muß dieses automatisch deregistriert werden

-
+ +
@@ -17619,7 +17650,7 @@ - + @@ -17629,9 +17660,10 @@ d.h. das Widget unternimmt selber nichts, und überläßt GTK die Größenbestimmung

-
+ +
- + @@ -17644,9 +17676,10 @@ Und sonst wird er Körper/Hintergrund ausgedehnt

-
+ +
- + @@ -17682,7 +17715,8 @@ Sehr wichtig für die Anzeige von langen Clips und Effekten.

-
+ + @@ -17931,7 +17965,7 @@ - + @@ -17947,7 +17981,8 @@ Details im  TiddlyWiki....

-
+ +
@@ -18155,7 +18190,7 @@ - + @@ -18165,7 +18200,8 @@ ...für die dritte Lösung, die Repräsentation bereits in der Session

-
+ +
@@ -18253,7 +18289,7 @@ - + @@ -18269,9 +18305,10 @@ Implementiert würde sie vom jeweiligen Widget

-
+ +
- + @@ -18299,9 +18336,10 @@ Der Dekorator würde also auf dem TreeMutator sitzen...

-
+ +
- + @@ -18320,9 +18358,10 @@ Daher gibt es die matchSrc-Operation. Effektiv wird die aber nur bei einem Delete aufgerufen...

-
+ +
- + @@ -18343,7 +18382,8 @@ - + + @@ -18421,7 +18461,7 @@ - + @@ -18431,7 +18471,8 @@ d.h. eine LUID

-
+ +
@@ -18464,7 +18505,7 @@ - + @@ -18477,7 +18518,8 @@ Irgend eine BareEntryID genügt

-
+ +
@@ -18488,7 +18530,7 @@ - + @@ -18504,7 +18546,8 @@ Daher sollte eine inkompatible Strukturänderung überhaupt nicht auftreten können

-
+ +
@@ -18546,7 +18589,7 @@ - + @@ -18556,13 +18599,14 @@ ...abstraktes Interface

-
+ + - + @@ -18578,7 +18622,8 @@ um die Bindung herzustellen

-
+ +
@@ -18589,7 +18634,7 @@ - + @@ -18608,7 +18653,8 @@ und erwarten abweichend vom Standard ein vollständiges Skelett im INS-Verb

-
+ + @@ -19318,7 +19364,7 @@ - + @@ -19331,7 +19377,8 @@ so z.B. sein Placement, welches teilweise als Properties des Track abgebildet wird.

-
+ +
@@ -19396,7 +19443,7 @@ - + @@ -19406,7 +19453,8 @@ ...in dem der Timeline body-canvas nämlich liegt

-
+ +
@@ -19503,7 +19551,7 @@ - + @@ -19513,7 +19561,8 @@ ...sie verwenden dann ein LabelWidget zur Darstellung

-
+ +
@@ -19559,7 +19608,7 @@ - + @@ -19569,7 +19618,8 @@ ERR: nexus.hpp:189: worker_3: ~Nexus: Some UI components are still connected to the backbone.

-
+ +
@@ -19634,7 +19684,7 @@ - + @@ -19650,7 +19700,8 @@ Verwende das als Leitgedanke, um das Layout zu entwickeln

-
+ + @@ -20211,6 +20262,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ demnach würde startup sauber beendet, +

+

+ und unmittelbar danach würder der UI-Thread einen +

+

+ emergency-Shutdown initiieren +

+ + +
+ +
+ + + +
+
+
@@ -21007,7 +21112,7 @@ - + @@ -21025,10 +21130,11 @@ - + + - + @@ -21043,7 +21149,8 @@ - + + @@ -21057,7 +21164,7 @@ - + @@ -21082,7 +21189,8 @@ - + + @@ -21224,7 +21332,7 @@ - + @@ -21237,7 +21345,8 @@ where 1 tick unit depends on the current zoom level

-
+ +
@@ -21245,7 +21354,7 @@
- + @@ -21260,12 +21369,13 @@ - + + - + @@ -21287,7 +21397,8 @@ Theoretisch könnte eine Skala auf einer Seite oder auf beiden Seiten limitiert sein....?

-
+ + @@ -21355,7 +21466,7 @@ - + @@ -21374,7 +21485,8 @@ analog zu gui::model::Tangible

-
+ +
@@ -21756,7 +21868,7 @@ - + @@ -21775,7 +21887,8 @@ erfordert bereits Kenntnis der Innereien

-
+ +
@@ -28848,7 +28961,7 @@ - + @@ -28861,11 +28974,12 @@ Implementierung der real-world-Variante fehlt!

-
+ + - + @@ -28881,7 +28995,8 @@ wie Session- und State-Managment, Commands etc.

-
+ +
@@ -34176,7 +34291,7 @@
- + @@ -34197,7 +34312,8 @@ - + + @@ -36549,7 +36665,7 @@ - + @@ -36562,7 +36678,8 @@ Visitor ist entweder void, oder bool

-
+ +
@@ -36572,7 +36689,7 @@ - + @@ -36691,7 +36808,7 @@ - + @@ -36722,7 +36839,8 @@ Denn letzteres ist bei uns eine Grundannahme. Es gibt keine ungefähren Diffs!

-
+ +
@@ -39726,7 +39844,7 @@ - + @@ -39742,14 +39860,15 @@ Ganz prominent fehlt hier also z.B: MIDI

-
+ +
- + @@ -39762,7 +39881,8 @@ die Aufgrund von Klassifikationen automatisch bereits existieren

-
+ +
@@ -40648,7 +40768,7 @@ - + @@ -40658,7 +40778,8 @@ ...also abzüglich Dekoration und Margin

-
+ +
@@ -40667,7 +40788,7 @@ - + @@ -40680,7 +40801,8 @@ sofern das Widget mit entsprechendem Modus eingefügt wurde

-
+ +
@@ -40713,7 +40835,7 @@ - + @@ -40726,7 +40848,8 @@ context->add_class("ohMy");

-
+ + @@ -40805,7 +40928,7 @@ - + @@ -40821,7 +40944,8 @@ oder ist es eine Vererbungs-Hierarchie, wie sie für das CSS-Styling benötigt wird?

-
+ +
@@ -40842,7 +40966,7 @@ - + @@ -40866,7 +40990,8 @@ - + + @@ -41325,7 +41450,7 @@ - + @@ -41338,9 +41463,10 @@ aber macht in etwa die gleichen Operationen

-
+ +
- + @@ -41359,7 +41485,8 @@ Gtk-Main verwendet inzwischen den gleichen Mechanismus

-
+ +
@@ -41644,7 +41771,7 @@
- + @@ -41657,7 +41784,8 @@ ggfs. neu gemapped und invalidiert wird, woraufhin es neu gezeichnet wird

-
+ +
@@ -41689,7 +41817,7 @@ - + @@ -41702,7 +41830,8 @@ Siehe Beschreibung im Beispiel/Tutorial

-
+ +
@@ -41711,7 +41840,7 @@
- + @@ -41724,7 +41853,8 @@ Im Besonderen kann man sich an Signale anderer Widgets anhängen

-
+ + @@ -42079,7 +42209,7 @@ - + @@ -42095,7 +42225,8 @@ und auch ein Signal für Parse-Fehler anschließt

-
+ +
@@ -42122,7 +42253,7 @@ - + @@ -42140,7 +42271,8 @@ Beachte: der Text-Cursor (Marker "insert") hat right gravity

-
+ +
@@ -42215,7 +42347,7 @@ - + @@ -42237,7 +42369,8 @@ The grip is implemented as a GdlDockItemGrip

-
+ +
@@ -42318,7 +42451,7 @@

- + @@ -42328,9 +42461,10 @@ kann eines der Templates im Zyklus vorrübergehend als "incomplete" gelten.

-
+ +
- + @@ -42352,7 +42486,8 @@ Konsequenz: man wählt dann z.B. eine subtil falsche Spezialisierung.

-
+ +
@@ -42378,7 +42513,7 @@ - + @@ -42406,13 +42541,14 @@ selber aus einem statischen Initialisierungs-Kontext heraus erfolgt.

-
+ +
- + @@ -42608,7 +42744,8 @@   }

-
+ +
@@ -42850,7 +42987,7 @@ - + @@ -42875,9 +43012,10 @@ Query<RES>::resolveBy

-
+ +
- + @@ -42912,14 +43050,15 @@ sonst kommt Doxygen durcheinander

-
+ +
- + @@ -42941,7 +43080,8 @@ wird hier kein Link erzeugt

-
+ +
@@ -42957,7 +43097,7 @@ - + @@ -42973,7 +43113,8 @@ Die Icon-Größen ergeben sich aus den Boxes auf 'plate'

-
+ +
@@ -42988,7 +43129,7 @@ - + @@ -42998,7 +43139,8 @@ ...im Besonderen die guten Diagramme für Pulse, ALSA und Jack

-
+ +
@@ -43123,7 +43265,7 @@
- + @@ -43146,10 +43288,11 @@ "-Wl,-rpath-link=target/modules"

-
+ +
- + @@ -43159,14 +43302,15 @@ laufen wieder alle

-
+ + - + @@ -43176,7 +43320,8 @@ test.sh Zeile 138

-
+ +
@@ -43220,7 +43365,7 @@ - + @@ -43230,12 +43375,13 @@ und wir verbringen unsere Zeit mit contention

-
+ +
- + @@ -43245,7 +43391,8 @@ ist klar, hab ich gebrochen

-
+ + @@ -43261,7 +43408,7 @@ - + @@ -43274,7 +43421,8 @@ Vorher hatte ich erste Kollisionen nach 25000 Nummern

-
+ +
@@ -43313,7 +43461,7 @@
- + @@ -43326,7 +43474,8 @@ Aug 10 04:51:39 flaucher kernel: traps: test-suite[8249] trap int3 ip:7ffff7deb241 sp:7fffffffe5c8 error:0

-
+ + @@ -43383,7 +43532,7 @@ - + @@ -43393,7 +43542,8 @@ bison dejagnu flex gobjc libncurses5-dev libreadline-dev liblzma-dev libbabeltrace-dev libbabeltrace-ctf-dev python3-dev

-
+ +
@@ -43409,7 +43559,7 @@ - + @@ -43443,7 +43593,8 @@ au weia LEUTE!

-
+ +
@@ -43467,7 +43618,7 @@
- + @@ -43483,10 +43634,11 @@ und tatsächlich: das ist daneben, GCC hat Recht!

-
+ +
- + @@ -43496,7 +43648,8 @@ aktualisieren und neu bauen

-
+ +
@@ -43516,7 +43669,7 @@ - + @@ -43526,7 +43679,8 @@ wähle Kompatibiltät genau so, daß Ubuntu-Trusty noch unterstützt wird.

-
+ + @@ -43558,9 +43712,162 @@
+ + + + + + + + + + + + + + + +

+ env.GuiResource(f) for f in env.Glob('stage/*.css') +

+ + +
+
+
+ + + + + + + + + + +

+ wenn ich doch mal noch komplexere Bäume transportieren muß +

+ + +
+
+ + + + + + +

+ ich mag code-nahe Resourcen lieber beim Code selber +

+ + +
+ +
+
+ + + + + + + + + + + +

+ aber bei der Implementierung hab' ich dann Pragmatismus walten lassen +

+
    +
  • +  Stichwort: getDirname() +
  • +
  • + effektiv ist das nur eine Ebene tief gestaffelt +
  • +
  • + alles darunter wäre in ein Verzeichnis gekippt worden +
  • +
+ + +
+ +
+
+ + + + + + +

+ +

+

+ weil dann die Builder-Funktion die Quelle nicht mehr findet :-P +

+

+ Dann +

+ + +
+
+ + + +
+ + + + + + + + +

+ nämlich im src/SConscript, wenn es um das GUI geht +

+ + +
+ +
+ + + + + + +

+ und sie war ohnehin schon so geschrieben worden, daß das Endresultat irgendwie paßt +

+ + +
+ +
+ + + + + + + + + + + + +
+
- + @@ -43573,9 +43880,10 @@ Ich meine also: zu Beginn vom Build sollte das Buildsystem einmal eine Infozeile ausgeben

-
+ +
- + @@ -43585,7 +43893,8 @@ ...denn die stören jeweils beim erzeugen eines Hotfix/Patch im Paketbau per dpkg --commit

-
+ +
@@ -43630,7 +43939,7 @@
- + @@ -44019,7 +44328,7 @@ - + @@ -44035,7 +44344,8 @@ bestehen, aber irgendwann müssen wir das schon glattziehen

-
+ +
@@ -44057,8 +44367,8 @@
- - + + @@ -44073,7 +44383,7 @@ - + @@ -44083,7 +44393,8 @@ seit gcc-4.8 ist kein static_assert mehr in der STDlib

-
+ +
@@ -44123,9 +44434,10 @@ - - - + + + + @@ -44171,10 +44483,11 @@ END

-
+ + - + @@ -44184,11 +44497,12 @@ for I in `seq 1 50`; do target/test-suite CallQueue_test; done

-
+ +
- + @@ -44204,7 +44518,8 @@ und eine Doxygen-Seite im Browser geladen

-
+ +
@@ -44225,7 +44540,7 @@ - + @@ -44235,7 +44550,8 @@ weil sich die Threads gegenseitig ihre Counter inkrementieren.

-
+ +
@@ -44247,7 +44563,7 @@ - + @@ -44260,12 +44576,46 @@ verwenden globale Variable oder überhaupt keine Objektfelder

-
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +