]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/utils/wxrcedit/pe_adv.cpp
wxGTK keyboard handling now behaves (mostly) like wxMSW
[wxWidgets.git] / contrib / utils / wxrcedit / pe_adv.cpp
index 415ea6e5c18f398aaf850874f18fe71727a9860c..4f74f4094f9af11c656582bf9eab72cc278530a4 100644 (file)
@@ -18,7 +18,7 @@
 #endif
 
 #include "wx/wx.h"
-#include "wx/xml/xml.h"
+#include "wx/xrc/xml.h"
 #include "wx/tokenzr.h"
 #include "wx/wx.h"
 #include "wx/dialog.h"
@@ -96,7 +96,11 @@ void PropEditCtrlChoice::WriteValue()
 
 void PropEditCtrlChoice::OnChoice(wxCommandEvent& event)
 {
-    if (CanSave()) WriteValue();
+    if (CanSave()) 
+    {
+        WriteValue();
+        EditorFrame::Get()->NotifyChanged(CHANGED_PROPS);    
+    }
 }
 
 
@@ -109,7 +113,7 @@ void PropEditCtrlColor::OnDetails()
     wxString txt = m_TextCtrl->GetValue();
     long unsigned tmp;
     
-    if (txt.Length() == 7 && txt[0] == _T('#') &&
+    if (txt.Length() == 7 && txt[0u] == _T('#') &&
         wxSscanf(txt.c_str(), _T("#%lX"), &tmp) == 1)
         clr = wxColour((tmp & 0xFF0000) >> 16, 
                        (tmp & 0x00FF00) >> 8, 
@@ -161,6 +165,7 @@ void PropEditCtrlFlags::OnDetails()
 
     dlg.SetSizer(sz);
     dlg.SetAutoLayout(TRUE);
+    dlg.Layout();
     
     for (i = 0; i < arr.GetCount(); i++)
         lbox->Append(arr[i]);
@@ -193,3 +198,66 @@ void PropEditCtrlFlags::OnDetails()
 }
 
 
+
+
+
+
+
+
+wxString PropEditCtrlFile::GetFileTypes()
+{
+    return m_PropInfo->MoreInfo;
+}
+
+
+
+void PropEditCtrlFile::OnDetails()
+{
+    wxString txt = m_TextCtrl->GetValue();
+    txt = wxPathOnly(EditorFrame::Get()->GetFileName()) + _T("/") + txt;
+    wxString name = wxFileSelector(_("Choose file"), 
+                                   wxPathOnly(txt),
+                                   wxFileNameFromPath(txt),
+                                   _T(""),
+                                   GetFileTypes(),
+                                   wxOPEN | wxFILE_MUST_EXIST);
+    if (!name) return;
+    
+    // compute relative path:
+    wxArrayString axrc, afile;
+    wxStringTokenizer tkn;
+    tkn.SetString(name, _T("/\\"));
+    while (tkn.HasMoreTokens()) afile.Add(tkn.GetNextToken());
+    tkn.SetString(EditorFrame::Get()->GetFileName(), _T("/\\"));
+    while (tkn.HasMoreTokens()) axrc.Add(tkn.GetNextToken());
+    
+    if (afile.GetCount() == 0 || axrc.GetCount() == 0)
+        txt = name;
+    else
+    {
+        while (axrc[0] == afile[0])
+        {
+            afile.Remove(0u);
+            axrc.Remove(0u);
+        }
+        size_t i;
+        txt.Empty();
+        for (i = 0; i < axrc.GetCount()-1/*w/o filename*/; i++) txt << _T("../");
+        for (i = 0; i < afile.GetCount(); i++) txt << afile[i] << _T("/");
+        txt.RemoveLast();
+    }
+
+    m_TextCtrl->SetValue(txt);
+    WriteValue();
+}
+
+
+
+wxString PropEditCtrlImageFile::GetFileTypes()
+{
+    return _("GIF files (*.gif)|*.gif|"
+             "JPEG files (*.jpg)|*.jpg|"
+             "PNG files (*.png)|*.png|"
+             "BMP files (*.bmp)|*.bmp|"
+             "All files (*)|*");
+}