[haiku-commits] haiku: hrev45515 - in src/apps/debugger: user_interface/gui/team_window user_interface/gui/model settings/generic user_interface/gui/util

  • From: anevilyak@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 17 Apr 2013 03:20:11 +0200 (CEST)

hrev45515 adds 4 changesets to branch 'master'
old head: af84ce79da03c13c332dba559d7c54f565e17f4a
new head: 1b74b08f755ecb9b477b4cbbf264ccd0156746ad
overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=1b74b08+%5Eaf84ce7

----------------------------------------------------------------------------

2b9c68a: Fix broken save/restore of split view settings.

ba2c3d5: Extend Settings to allow value restoration via message.

c819aef: Add renderer settings to VariablesViewNodeInfo.

1b74b08: Save/restore renderer settings in view state.

                                      [ Rene Gollent <anevilyak@xxxxxxxxx> ]

----------------------------------------------------------------------------

6 files changed, 76 insertions(+), 6 deletions(-)
src/apps/debugger/settings/generic/Settings.cpp  | 19 ++++++++++
src/apps/debugger/settings/generic/Settings.h    |  3 ++
.../gui/model/VariablesViewState.cpp             | 14 ++++++--
.../gui/model/VariablesViewState.h               |  7 ++++
.../gui/team_window/VariablesView.cpp            | 37 ++++++++++++++++++--
.../user_interface/gui/util/GuiSettingsUtils.cpp |  2 +-

############################################################################

Commit:      2b9c68af5d1844d4f2fa33b1df28ed3d9d044e73
URL:         http://cgit.haiku-os.org/haiku/commit/?id=2b9c68a
Author:      Rene Gollent <anevilyak@xxxxxxxxx>
Date:        Tue Apr 16 21:56:45 2013 UTC

Fix broken save/restore of split view settings.

----------------------------------------------------------------------------

diff --git a/src/apps/debugger/user_interface/gui/util/GuiSettingsUtils.cpp 
b/src/apps/debugger/user_interface/gui/util/GuiSettingsUtils.cpp
index 0528efb..6731a69 100644
--- a/src/apps/debugger/user_interface/gui/util/GuiSettingsUtils.cpp
+++ b/src/apps/debugger/user_interface/gui/util/GuiSettingsUtils.cpp
@@ -20,7 +20,7 @@ GuiSettingsUtils::ArchiveSplitView(BMessage& settings, 
BSplitView* view)
                if (settings.AddFloat("weight", view->ItemWeight(i)) != B_OK)
                        return B_NO_MEMORY;
 
-               if (settings.AddFloat("collapsed", view->IsItemCollapsed(i)) != 
B_OK)
+               if (settings.AddBool("collapsed", view->IsItemCollapsed(i)) != 
B_OK)
                        return B_NO_MEMORY;
        }
 

############################################################################

Commit:      ba2c3d57f627328969d3507c55beb64909a50991
URL:         http://cgit.haiku-os.org/haiku/commit/?id=ba2c3d5
Author:      Rene Gollent <anevilyak@xxxxxxxxx>
Date:        Wed Apr 17 01:17:44 2013 UTC

Extend Settings to allow value restoration via message.

----------------------------------------------------------------------------

diff --git a/src/apps/debugger/settings/generic/Settings.cpp 
b/src/apps/debugger/settings/generic/Settings.cpp
index 686b729..dfc176d 100644
--- a/src/apps/debugger/settings/generic/Settings.cpp
+++ b/src/apps/debugger/settings/generic/Settings.cpp
@@ -1,4 +1,5 @@
 /*
+ * Copyright 2013, Rene Gollent, rene@xxxxxxxxxxx.
  * Copyright 2009, Ingo Weinhold, ingo_weinhold@xxxxxx.
  * Distributed under the terms of the MIT License.
  */
@@ -81,6 +82,24 @@ Settings::SetValue(Setting* setting, const BVariant& value)
 }
 
 
+bool
+Settings::RestoreValues(const BMessage& message)
+{
+       AutoLocker<BLocker> locker(fLock);
+
+       for (int32 i = 0; i < fDescription->CountSettings(); i++) {
+               Setting* setting = fDescription->SettingAt(i);
+               BVariant value;
+               if (value.SetFromMessage(message, setting->ID()) == B_OK) {
+                       if (!SetValue(setting, value))
+                               return false;
+               }
+       }
+
+       return true;
+}
+
+
 SettingsOption*
 Settings::OptionValue(OptionsSetting* setting) const
 {
diff --git a/src/apps/debugger/settings/generic/Settings.h 
b/src/apps/debugger/settings/generic/Settings.h
index 5862fa3..b921702 100644
--- a/src/apps/debugger/settings/generic/Settings.h
+++ b/src/apps/debugger/settings/generic/Settings.h
@@ -1,4 +1,5 @@
 /*
+ * Copyright 2013, Rene Gollent, rene@xxxxxxxxxxx.
  * Copyright 2009, Ingo Weinhold, ingo_weinhold@xxxxxx.
  * Distributed under the terms of the MIT License.
  */
@@ -40,6 +41,8 @@ public:
                        bool                            SetValue(Setting* 
setting,
                                                                        const 
BVariant& value);
 
+                       bool                            RestoreValues(const 
BMessage& message);
+
                        bool                            BoolValue(BoolSetting* 
setting) const
                                                                        { 
return Value(setting).ToBool(); }
                        SettingsOption*         OptionValue(OptionsSetting* 
setting) const;

############################################################################

Commit:      c819aef9a1f669032786bcfa1e9d694856fc39bf
URL:         http://cgit.haiku-os.org/haiku/commit/?id=c819aef
Author:      Rene Gollent <anevilyak@xxxxxxxxx>
Date:        Wed Apr 17 01:18:35 2013 UTC

Add renderer settings to VariablesViewNodeInfo.

----------------------------------------------------------------------------

diff --git a/src/apps/debugger/user_interface/gui/model/VariablesViewState.cpp 
b/src/apps/debugger/user_interface/gui/model/VariablesViewState.cpp
index 87e0280..99dc79d 100644
--- a/src/apps/debugger/user_interface/gui/model/VariablesViewState.cpp
+++ b/src/apps/debugger/user_interface/gui/model/VariablesViewState.cpp
@@ -21,7 +21,8 @@
 VariablesViewNodeInfo::VariablesViewNodeInfo()
        :
        fNodeExpanded(false),
-       fCastedType(NULL)
+       fCastedType(NULL),
+       fRendererSettings()
 {
 }
 
@@ -29,7 +30,8 @@ VariablesViewNodeInfo::VariablesViewNodeInfo()
 VariablesViewNodeInfo::VariablesViewNodeInfo(const VariablesViewNodeInfo& 
other)
        :
        fNodeExpanded(other.fNodeExpanded),
-       fCastedType(other.fCastedType)
+       fCastedType(other.fCastedType),
+       fRendererSettings(other.fRendererSettings)
 {
        if (fCastedType != NULL)
                fCastedType->AcquireReference();
@@ -48,6 +50,7 @@ VariablesViewNodeInfo::operator=(const VariablesViewNodeInfo& 
other)
 {
        fNodeExpanded = other.fNodeExpanded;
        SetCastedType(other.fCastedType);
+       fRendererSettings = other.fRendererSettings;
 
        return *this;
 }
@@ -72,6 +75,13 @@ VariablesViewNodeInfo::SetCastedType(Type* type)
 }
 
 
+void
+VariablesViewNodeInfo::SetRendererSettings(const BMessage& settings)
+{
+       fRendererSettings = settings;
+}
+
+
 // #pragma mark - Key
 
 
diff --git a/src/apps/debugger/user_interface/gui/model/VariablesViewState.h 
b/src/apps/debugger/user_interface/gui/model/VariablesViewState.h
index 5705d7f..95b5f29 100644
--- a/src/apps/debugger/user_interface/gui/model/VariablesViewState.h
+++ b/src/apps/debugger/user_interface/gui/model/VariablesViewState.h
@@ -7,6 +7,7 @@
 #define VARIABLES_VIEW_STATE_H
 
 
+#include <Message.h>
 #include <Referenceable.h>
 #include <util/OpenHashTable.h>
 
@@ -35,9 +36,15 @@ public:
                                                                        { 
return fCastedType; }
                        void                            SetCastedType(Type* 
type);
 
+                       const BMessage&         GetRendererSettings() const
+                                                                       { 
return fRendererSettings; }
+
+                       void                            
SetRendererSettings(const BMessage& settings);
+
 private:
                        bool                            fNodeExpanded;
                        Type*                           fCastedType;
+                       BMessage                        fRendererSettings;
 };
 
 

############################################################################

Revision:    hrev45515
Commit:      1b74b08f755ecb9b477b4cbbf264ccd0156746ad
URL:         http://cgit.haiku-os.org/haiku/commit/?id=1b74b08
Author:      Rene Gollent <anevilyak@xxxxxxxxx>
Date:        Wed Apr 17 01:19:20 2013 UTC

Save/restore renderer settings in view state.

----------------------------------------------------------------------------

diff --git a/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp 
b/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp
index 023be3b..fbae043 100644
--- a/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp
+++ b/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp
@@ -109,10 +109,11 @@ public:
                fValue(NULL),
                fValueHandler(NULL),
                fTableCellRenderer(NULL),
+               fLastRendererSettings(),
+               fCastedType(NULL),
                fComponentPath(NULL),
                fIsPresentationNode(isPresentationNode),
-               fHidden(false),
-               fCastedType(NULL)
+               fHidden(false)
        {
                fNodeChild->AcquireReference();
        }
@@ -214,6 +215,16 @@ public:
                        fCastedType->AcquireReference();
        }
 
+       const BMessage& GetLastRendererSettings() const
+       {
+               return fLastRendererSettings;
+       }
+
+       void SetLastRendererSettings(const BMessage& settings)
+       {
+               fLastRendererSettings = settings;
+       }
+
        TypeComponentPath* GetPath() const
        {
                return fComponentPath;
@@ -324,11 +335,12 @@ private:
        Value*                                  fValue;
        ValueHandler*                   fValueHandler;
        TableCellValueRenderer* fTableCellRenderer;
+       BMessage                                fLastRendererSettings;
+       Type*                                   fCastedType;
        ChildList                               fChildren;
        TypeComponentPath*              fComponentPath;
        bool                                    fIsPresentationNode;
        bool                                    fHidden;
-       Type*                                   fCastedType;
 
 public:
        ModelNode*                      fNext;
@@ -1075,6 +1087,14 @@ 
VariablesView::VariableTableModel::ValueNodeValueChanged(ValueNode* valueNode)
        modelNode->SetValueHandler(valueHandler);
        modelNode->SetTableCellRenderer(renderer);
 
+       // we have to restore renderer settings here since until this point
+       // we don't yet know what renderer is in use.
+       if (renderer != NULL) {
+               Settings* settings = renderer->GetSettings();
+               if (settings != NULL)
+                       
settings->RestoreValues(modelNode->GetLastRendererSettings());
+       }
+
        // notify table model listeners
        NotifyNodeChanged(modelNode);
 }
@@ -1987,6 +2007,12 @@ 
VariablesView::_AddViewStateDescendentNodeInfos(VariablesViewState* viewState,
                VariablesViewNodeInfo nodeInfo;
                nodeInfo.SetNodeExpanded(fVariableTable->IsNodeExpanded(path));
                nodeInfo.SetCastedType(node->GetCastedType());
+               TableCellValueRenderer* renderer = node->TableCellRenderer();
+               if (renderer != NULL) {
+                       Settings* settings = renderer->GetSettings();
+                       if (settings != NULL)
+                               
nodeInfo.SetRendererSettings(settings->Message());
+               }
 
                status_t error = 
viewState->SetNodeInfo(node->GetVariable()->ID(),
                        node->GetPath(), nodeInfo);
@@ -2033,6 +2059,11 @@ 
VariablesView::_ApplyViewStateDescendentNodeInfos(VariablesViewState* viewState,
                                }
                        }
 
+                       // we don't have a renderer yet so we can't apply the 
settings
+                       // at this stage. Store them on the model node so we 
can lazily
+                       // apply them once the value is retrieved.
+                       
node->SetLastRendererSettings(nodeInfo->GetRendererSettings());
+
                        fVariableTable->SetNodeExpanded(path, 
nodeInfo->IsNodeExpanded());
 
                        // recurse


Other related posts:

  • » [haiku-commits] haiku: hrev45515 - in src/apps/debugger: user_interface/gui/team_window user_interface/gui/model settings/generic user_interface/gui/util - anevilyak