1. 17 Nov, 2013 1 commit
    • Artur Grunau's avatar
      Implement a dependency system for CAMPVis modules · e1551c26
      Artur Grunau authored
      There used to be no way to specify what other modules each module
      required in order to work. This led to either compilation or linker
      errors that were often not easy to understand.
      
      Introduce a new module-level CMake variable, ThisModDependencies, that a
      module can set in its CMake file to indicate what other modules need to
      be enabled for it to compile and work properly. If defined,
      ThisModDependencies should be a list of strings — the names of required
      modules.
      
      Once all available modules have been analysed, the collected dependency
      information is used to activate (if necessary) the dependencies of every
      enabled module. Transitive and circular dependencies are already
      supported in this initial version of our module dependency system.
      
      Unfortunately, when a module gets enabled in the CMake GUI, its
      dependencies are only resolved once the Configure button is clicked and
      CMake runs again. This is a limitation of CMake in that all
      configuration happens offline and it's not possible to react to value
      changes immediately.
      
      References #144
      e1551c26
  2. 08 Nov, 2013 1 commit
  3. 02 Nov, 2013 5 commits
    • Artur Grunau's avatar
      MdiDockableWindow: new MDI helper class · 6d4262de
      Artur Grunau authored
      MdiDockableWindow has been extracted from MdiDockArea to simplify and
      better structure our MDI implementation. The new class takes care of
      creating all necessary representations (docked and floating window) of
      widgets added to MdiDockArea and seamlessly switching between them in
      response to the user's actions (window dragging, key presses, etc).
      
      MdiDockableWindow improves our MDI implementation in two ways:
      - MdiFloatingWindow and MdiDockedWindow instances shouldn't be
        interacted with directly; they're created and disposed of as needed,
        and therefore can't be used as a handle to access and modify an MDI
        window's state; MdiDockableWindow, in contrast, fits this role
        perfectly; it manages both representations of an MDI window, and as
        a result stays around as long as at least one of them is needed
      - managing state transitions of many sub-windows directly in MdiDockArea
        was becoming clumsy as signal mapping and dynamic properties were
        required; having a s...
      6d4262de
    • Artur Grunau's avatar
      Properly hide docked MDI subwindows that got closed · 8126df4d
      Artur Grunau authored
      Closing a docked MDI subwindow caused it to disappear if the MDI area
      was in SubWindowView mode, but its inactive tab could still be seen in
      TabbedView mode.
      
      If a docked MDI subwindow gets closed, hide it by removing it from the
      MDI area.
      8126df4d
    • Artur Grunau's avatar
      Add a "Tools" submenu to the main menu · dd068eea
      Artur Grunau authored
      The "Tools" submenu lists all standard docked tools offered by the
      application (i.e. "Pipeline tree", "Pipeline properties", and "Log
      viewer"), and lets the user toggle their visibility.
      dd068eea
    • Artur Grunau's avatar
      Initial implementation of a main menu · c8ef752b
      Artur Grunau authored
      This commit adds a simple main menu to the application. For the time being
      it only has 2 submenus, "File" and "Visualizations". The latter is created
      by MdiDockArea and lets users manage the visibility and placement of
      canvas windows.
      c8ef752b
    • Artur Grunau's avatar
      348c710e
  4. 29 Oct, 2013 3 commits
  5. 28 Oct, 2013 3 commits
  6. 26 Oct, 2013 1 commit
    • Artur Grunau's avatar
      Fix a double free in LogHighlighter's destructor · 88d2e9a1
      Artur Grunau authored
      In its destructor, LogHighlighter first of all deleted its filter regex
      explicitly, and then called `setFilterRegExp(0)`, triggering a second —
      this time somewhat implicit — delete. If the filter regex pointer was
      not NULL, this caused the application to crash due to a double-free.
      
      Fix this error by not invoking `setFilterRegExp` in LogHighlighter's
      destructor; the explicit delete performs the same cleanup as
      `setFilterRegExp` anyways.
      88d2e9a1
  7. 25 Oct, 2013 1 commit
  8. 16 Oct, 2013 4 commits
  9. 15 Oct, 2013 13 commits
  10. 14 Oct, 2013 4 commits
  11. 13 Oct, 2013 4 commits
    • Artur Grunau's avatar
      QtCanvas: don't change canvas' visibility in init() · e2830976
      Artur Grunau authored
      Previously, QtCanvas' init() would call show() on its underlying widget
      and cause it to appear as a top-level window for a split second, before
      the canvas was docked. To avoid this flicker, show() is now only called
      on the canvas after it's been added to the MDI area.
      e2830976
    • Artur Grunau's avatar
      Fix bugs with the positioning of MDI windows · 1071efae
      Artur Grunau authored
      Previously, when an MDI window was being dragged very fast and its state
      changed from docked to floating (or vice versa), it wouldn't be placed
      under the cursor, but instead some way behind it (with regards to the
      drag direction). This happened because we decided where to place the
      window's based on its last position in its previous state. Now we use
      the cursor's position to calculate the window's new position, which
      fixes the problem.
      1071efae
    • Artur Grunau's avatar
      Refactor PipelineMdiSubWindow and rename it MdiDockedWindow · e3289b08
      Artur Grunau authored
      PipelineMdiSubWindow has been renamed MdiDockedWindow, and
      refactored to make it easier to use it with arbitrary widgets.
      e3289b08
    • Artur Grunau's avatar
      Store MDI-related classes under gui/mdi · 06a76302
      Artur Grunau authored
      To better group MDI-related classes, all of them have been moved to the
      ´gui/mdi´ directory.
      06a76302