// ------------------------------------------------------------------------
 public:
     // Pure Virtuals
-    virtual int GetValue() const { return 0; }
-    virtual void SetValue(int value) { }
+    virtual int GetValue() const;
+    virtual void SetValue(int value);
 
     // retrieve/change the range
-    virtual void SetRange(int maxValue) { }
-    int GetRange(void) const { return 0; }
+    virtual void SetRange(int maxValue);
+    int GetRange(void) const;
 };
 
 #endif // __WX_COCOA_GAUGE_H__
 
         return false;
     SetNSView([[NSProgressIndicator alloc] initWithFrame: MakeDefaultNSRect(size)]);
     [m_cocoaNSView release];
+
+    [(NSProgressIndicator*)m_cocoaNSView setMaxValue:range];
+    [(NSProgressIndicator*)m_cocoaNSView setIndeterminate:NO];
+
     if(m_parent)
         m_parent->CocoaAddChild(this);
     SetInitialFrameRect(pos,size);
 {
 }
 
+int wxGauge::GetValue() const
+{
+    return [(NSProgressIndicator*)m_cocoaNSView doubleValue];
+}
+
+void wxGauge::SetValue(int value)
+{
+    [(NSProgressIndicator*)m_cocoaNSView setDoubleValue:value];
+}
+
+int wxGauge::GetRange() const
+{
+    return [(NSProgressIndicator*)m_cocoaNSView maxValue];
+}
+
+void wxGauge::SetRange(int maxValue)
+{
+    [(NSProgressIndicator*)m_cocoaNSView setMinValue:0.0];
+    [(NSProgressIndicator*)m_cocoaNSView setMaxValue:maxValue];
+}
+
 #endif // wxUSE_GAUGE