Commit graph

2723 commits

Author SHA1 Message Date
e02a9d213d enable special unit-tests to link against the gui 2014-10-18 04:27:07 +02:00
b6d131bc35 Start remoulding the Timeline display: mark deprecation (#955)
Mark parts of the timeline state handling which will certainly
not be retained: any part where the GUI widgets "hold" some kind
of model. GUI widgets shall be *mapped upon* a model representation
and *wired* with callbacks.

Especially I am suspicious when GUI presentation code "reaches into"
any kind of model data structure to find out something. It should
be the other way round (dont call us, we call you)
2014-10-17 03:01:11 +02:00
994a0e718b WIP mark the point where we lost the draw() callback during GTK3-transition
actually we should make our timeline a real custom widget,
and do it according to the letter. I.e. really implement
all those callbacks which are recommended, but no other
callbacks.

This has the additional benefit of being able to retrieve
the drawing style in the official way, and define our own
CSS classes, which can be styled by the user in a systematic way.
2014-10-14 04:20:15 +02:00
819a81d86d Suppress GUI shutdown crashes(#937, #172)
This is not really a solution, but kind of narrowes down the problem.
Our GUI uses an obsolete C-ish approach at releasing resources at
several points. This is probably a left-over from earlier days.

Especially since we started out with libGDL without C++ wrappers.
And at that time, we didn't use smart-pointers, as we should do,
but we tried to do things manually, which is an approach which never
works in an event driven and condition based environment. Goto fail.


Here I just commented out the manual clean-up code from several dtors.
The real solution would be not to allocate these resources through
the raw C calls at first place, but rather use the mm-wrappers
and leave it to them to unwind at the right moment.

TODO:

- scan the GUI code for *every* instance where we still muck around with gobjects
  and either replace that by a mm-wrapper, or wrap it in a smart handle.
- make sure that *all* dtors are either empty, or really airtight and EX_FREE
2014-10-14 04:17:56 +02:00
964a372d67 Fix re-entrance in Application shutdown(#954)
doh...
this happens when you draft some quite intricate logic and then
get sidelined with other tasks for several years. Mind me, I didn't
even recall that I had treated this whole issue and created
a clean-up thread.

A full fledged implementation would have a real lifecycle and
thus detect the re-entrance; but since none of the components
to be managed by the OutputDirector is even remotely planned
or even coded, the functions were just drafted as stubs.

Which caused us happily to create yet another clean-up thread
whenever the subsystem-runner signalled "please shut down".
2014-10-14 04:10:54 +02:00
4ef4f2bdc5 Protect against re-entrance(#954)
This is a safety guard and should never be activated.
2014-10-14 03:46:12 +02:00
afaad7044c Identified possible GUI shutdown crasher. To be investigated
Our GUI shutdown logic looks rather confused. Why the hell do
some widgets "unregister" themselves in a dtor. This should never
be necessary. Maybe it's a leftover from C-style programming
and obsolete now, after the switch to GDLmm
2014-10-13 02:44:15 +02:00
1596f83266 subsystem-runner: signal should not be kalled "kill"
...since it doesn't kill, rather ask to terminate.
2014-10-13 02:21:14 +02:00
5b6ebeaa5f stylesheet: finish definition of a base style
- text entry colours
- hover / mouse over
- disabled entries
- ensure consistent menu styling
2014-10-09 03:44:02 +02:00
5fdee24bf5 stylesheet: default borders and entry appearance
the problem seems to be the interplay with the installed user
theme; what looks well with one theme is messed up with another
one, quite insidious.

Attempt to settle down on a set of default definitions
for borders and element background colors, which make the
Lumiera Gui "dark" but still respect the user's theme
for geometry and widget style
2014-10-08 05:16:43 +02:00
51b81640eb first round of style porting: basic background colours 2014-10-07 04:56:05 +02:00
1c01192872 load a CSS style sheet and install it globally
verified: basically works
todo: better handling of parse errors.
Currently this is treated as an unexpected exception and just
terminates the whole application, without any suitable diagnostics.
This makes working on the stylesheet somewhat brittle. GTK-3 actually
offers a signal to be invoked in case of CSS parsing errors

(see #953)
2014-10-07 03:13:58 +02:00
f5a995514f publish the new GTK-3 style under a GPL 2+ or CC-By-SA dual license 2014-10-07 01:19:50 +02:00
38bc139778 GTK-stylesheet: change name to gtk-lumiera.css
the mechanism for configuring and locating this file is just fine
and can be retained. Of course, the content of the stylesheet
remains to be ported
2014-10-07 00:59:03 +02:00
8a817f1ab7 Make Video Widget NOP; GDK Drawing no longer supported (#950)
Comment out the active part of the GdkDisplayer implementation,
but retain the class, to make compilation pass.

With the Switch to GTK-3, only Cairo drawing is supported.
We need a new solution for video display...
2014-10-05 09:32:06 +02:00
Michael Fisher
ea8358c661 is_visible to get_visible (gtkmm3) 2014-10-05 08:40:55 +02:00
Michael Fisher
ac3ef9f469 Project: join GTK-3 and GDLmm port 2014-10-05 08:38:38 +02:00
Michael Fisher
c63e7f9b6e Adapt Pannel Button
Panel Button implementing the MenuButton::get() API
to retrieve MenuItems.

Fixed broken Panel Menu's 'Lock' ability due to GTK move
2014-10-05 08:16:59 +02:00
Michael Fisher
a86f3bf497 Adding support to append Separator Items for MenuButton
Updated PanelBar to use this API
2014-10-05 08:16:59 +02:00
Michael Fisher
00f29ea3d5 Aggressive code pruning in the ButtonBar.
Again, default event handlers appear to be working better
than the previous overrides. Subject to re-implementation
2014-10-05 08:16:59 +02:00
Michael Fisher
cf3a0b49ce Commenting test code 2014-10-05 08:16:59 +02:00
Michael Fisher
0315931eba Upgrade the MenuBar
Implement new MenuBar::append API (partial).
Also adding if 0's and Gtk3 FIXME annotations
2014-10-05 08:16:59 +02:00
Michael Fisher
0c03e01ce6 Updating MenuButton to use Gtk::UIManager for menu creation 2014-10-05 08:16:59 +02:00
Michael Fisher
ed86ab0807 Aggressive code pruning.
Note: Default event handlers for Gtk::Box appear to be working better
than our previous overrides. Subject to re-implementation
2014-10-05 07:49:57 +02:00
Michael Fisher
53124624f0 PanelBar Gtk3 maybe update. GtkRequisition related 2014-10-05 07:49:57 +02:00
Michael Fisher
a629d8a9f1 Button Bar Gtk3 fixes (round 1). 2014-10-05 07:49:57 +02:00
Michael Fisher
f365791047 Annotating for removal. No Gtk3 support 2014-10-05 07:49:57 +02:00
Michael Fisher
7e6eff9e6a gtk3: timeline widget uses 'get_visible' instead of 'is_visible' 2014-10-05 07:49:57 +02:00
Michael Fisher
b1293b130f Updating legacy functions to GTK-3
Updating legacy Gtkmm 'set_flags(Gtk::NO_WINDOW)' calls
to use set_has_window(bool) in timeline custom widgets
2014-10-05 07:49:57 +02:00
Michael Fisher
c64de14fbf Changes to allow the gtk3 GUI to at least build.
Lots off commented out blocks of code
but most issues are related to simple function name changes,
set/get_flags calls, anything that has to do with a Gtk::Style...

Plan of attack from here is to go one-by one of each commented-out or code and update to gtk3 specs.
2014-10-05 07:49:57 +02:00
Michael Fisher
af5a44997b Project: switch GUI environment to GTK-3 / gtkmm-3.0 2014-10-05 07:49:53 +02:00
Michael Fisher
fd95c74bb8 Assertion to investigate GLib warnings
trying to track down where these messages

  GLib-GObject-CRITICAL **: g_object_unref: assertion G_IS_OBJECT (object) failed

are coming from.  These appear when iconifying panels.
2014-10-05 05:34:25 +02:00
Michael Fisher
708c977d57 Remove unused GDL headers 2014-10-05 05:34:19 +02:00
Michael R. Fisher
13a27a8fd8 Comment problematic code 2014-10-05 04:37:34 +02:00
Michael R. Fisher
d42d917b4c House Cleaning 2014-10-05 04:37:34 +02:00
Michael R. Fisher
2d8805c554 Gdlmm port nuances. Signals/Containers etc... 2014-10-05 04:37:34 +02:00
Michael R. Fisher
68c6cef003 Individual Panels initial Gdlmm port 2014-10-05 04:37:34 +02:00
Michael R. Fisher
eb4cdcd975 Panel Manager ported to Gdlmm-1.0 2014-10-05 04:37:30 +02:00
30686fdf82 fix argument passing for MultiFact(#388)
as always, it turned out that the alledged "compiler bug"
rather was my own sloppyness: I forgot properly to undo a change
I made while fighting with compilation problems: the wrapper in
the factory didn't use std::forward, resulting in a plain flat
slicing copy. This, rightfully, triggered the assertion in the
session query resolver (since a sliced Goal can not be dynamic cast
to a specific Query subclass).
2014-09-23 03:37:28 +02:00
059dbd8c75 fix and finish the diagnostics helper
there was still a subtle bug in this helper.
testing your own test fixture is sometimes a good idea ;-)
2014-09-23 03:37:28 +02:00
4145452397 factor out a diagnostics helper for variadic templates
a nice offspring of this investigation
2014-09-22 03:37:07 +02:00
9dfd3fc981 phase out some use of auto_ptr
TODO: the toolfactory needs a redesign anyway,
this was just placeholder code added in a very early
state of the Lumiera project. We have way better memory
managing facilities at hand now
2014-09-15 02:03:10 +02:00
d064623bab Reworked MultiFact(#388): switch in the new implementation 2014-09-14 23:58:05 +02:00
9a5d9873c8 WIP: prepare switch to the reworked MultiFac implementation #388 2014-09-14 22:38:58 +02:00
591e6d9775 MultiFact: implement the last and most complex usage case
the use of a custom finisihing functor, which is applied
to any generated product. This can be used for registration,
memory management or similar framework aspects
2014-09-14 22:25:12 +02:00
932d49fd95 MultiFact: how I learned to love the Bomb
C++11 is just incredibly cool. It is so easy to
support a flexible yet specific set of arguments
2014-09-14 02:06:58 +02:00
372edbfc85 MultiFact: implement second use case (smart pointers) 2014-09-14 00:36:36 +02:00
0ff5c50030 MultiFact: implement simple usage pattern. NOTE: breaks CLang 3.0
Implement the first simple usage scenario for the
unified MultiFact template, using variadic templates.

NOTE:
 - the obvious solution based on std::forward
   triggers strange behaviour in GCC-4.7
 - the inline lambda in the test case traps the
   CLang-3.0 parster with a segfault. Horay!
2014-09-13 02:50:14 +02:00
a1bb9178f5 Ticket #388: start investigation of MultiFact design
needs overhaul, since current design leads to problems
with GCC 4.8 onwards (and is messed up anyway)
2014-09-11 00:10:59 +02:00
b2b75fbe43 attempt to make factory invocation more evident in the code
...but the whole design looks still overengineered. See #388

- should get rid of the explicit specialisation
- always use a function signature and thus have arguments?
- why inheriting from the wrapper?
2014-09-08 03:37:41 +02:00