1 /////////////////////////////////////////////////////////////////////////////
2 // Name: SlideDlg.cpp
3 // Purpose: Slide properties dialog
4 // Author: Alex Thuering
5 // Created: 23.12.2013
6 // RCS-ID: $Id: SlideDlg.cpp,v 1.2 2014/01/01 19:47:06 ntalex Exp $
7 // Copyright: (c) Alex Thuering
8 // Licence: GPL
9 /////////////////////////////////////////////////////////////////////////////
10 #include "SlideDlg.h"
11 #include "../wxVillaLib/utils.h"
12 #include <wx/file.h>
13
14 //(*InternalHeaders(SlideDlg)
15 #include <wx/intl.h>
16 #include <wx/button.h>
17 #include <wx/string.h>
18 //*)
19
20 #include "../wxVillaLib/rc/loading.png.h"
21 #define TRANSITIONS_DIR wxFindDataDirectory(_T("transitions"))
22
23 //(*IdInit(SlideDlg)
24 const long SlideDlg::ID_FILENAME_TEXT = wxNewId();
25 const long SlideDlg::ID_THUMBNAILS = wxNewId();
26 //*)
27
BEGIN_EVENT_TABLE(SlideDlg,wxDialog)28 BEGIN_EVENT_TABLE(SlideDlg, wxDialog)
29 //(*EventTable(SlideDlg)
30 //*)
31 EVT_BUTTON(wxID_OK, SlideDlg::OnOkBt)
32 END_EVENT_TABLE()
33
34 SlideDlg::SlideDlg(wxWindow* parent, Slide* slide, int defaultTranstion) {
35 m_slide = slide;
36
37 //(*Initialize(SlideDlg)
38 wxBoxSizer* boxSizer1;
39 wxStdDialogButtonSizer* stdDialogButtonSizer;
40 wxStaticText* staticText1;
41 wxStaticBoxSizer* StaticBoxSizer1;
42 wxBoxSizer* mainSizer;
43
44 Create(parent, wxID_ANY, _("Slide properties"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER, _T("wxID_ANY"));
45 SetClientSize(wxSize(500,380));
46 mainSizer = new wxBoxSizer(wxVERTICAL);
47 boxSizer1 = new wxBoxSizer(wxHORIZONTAL);
48 staticText1 = new wxStaticText(this, wxID_ANY, _("File name:"), wxDefaultPosition, wxDefaultSize, 0, _T("wxID_ANY"));
49 boxSizer1->Add(staticText1, 0, wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 2);
50 m_fileNameText = new wxStaticText(this, ID_FILENAME_TEXT, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, _T("ID_FILENAME_TEXT"));
51 boxSizer1->Add(m_fileNameText, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
52 mainSizer->Add(boxSizer1, 0, wxTOP|wxLEFT|wxRIGHT|wxEXPAND, 5);
53 StaticBoxSizer1 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Transition:"));
54 m_thumbnails = new wxThumbnails(this,ID_THUMBNAILS);
55 StaticBoxSizer1->Add(m_thumbnails, 1, wxLEFT|wxRIGHT|wxEXPAND, 0);
56 mainSizer->Add(StaticBoxSizer1, 1, wxALL|wxEXPAND, 5);
57 stdDialogButtonSizer = new wxStdDialogButtonSizer();
58 stdDialogButtonSizer->AddButton(new wxButton(this, wxID_OK, wxEmptyString));
59 stdDialogButtonSizer->AddButton(new wxButton(this, wxID_CANCEL, wxEmptyString));
60 stdDialogButtonSizer->Realize();
61 mainSizer->Add(stdDialogButtonSizer, 0, wxALL|wxEXPAND, 5);
62 SetSizer(mainSizer);
63 SetSizer(mainSizer);
64 Layout();
65 Center();
66 //*)
67 stdDialogButtonSizer->GetAffirmativeButton()->SetDefault();
68
69 m_fileNameText->SetLabel(m_slide->GetFilename());m_thumbnails->Clear();
70 wxArrayString labels;
71 Slideshow::GetTransitions(m_transitions, labels);
72 labels[0] = _("Default") + wxString(wxT(" (")) + labels[defaultTranstion] + wxT(")");
73 m_transitions[0] = wxT("");
74 int sel = 0;
75 for (unsigned int i = 0; i < m_transitions.GetCount(); i++) {
76 if (m_transitions[i] == m_slide->GetTransition()) {
77 sel = i;
78 }
79 wxImage img = getTransitionImage(m_transitions[i == 0 ? defaultTranstion : i]);
80 wxThumb* thumb = new wxThumb(img, labels[i], m_transitions[i]);
81 m_thumbnails->InsertItem(thumb);
82 }
83
84 if (m_thumbnails->GetItemCount() > 0)
85 m_thumbnails->SetSelected(sel);
86 m_thumbnails->Update();
87 m_thumbnails->SetFocus();
88 }
89
~SlideDlg()90 SlideDlg::~SlideDlg() {
91 //(*Destroy(SlideDlg)
92 //*)
93 }
94
getTransitionImage(const wxString & transition)95 wxImage SlideDlg::getTransitionImage(const wxString& transition) {
96 wxString imgFile;
97 if (transition.length() == 0 || transition == wxT("none")) {
98 imgFile = TRANSITIONS_DIR + wxT("none.png");
99 } else if (transition == wxT("random")) {
100 imgFile = TRANSITIONS_DIR + wxT("random.png");
101 } else {
102 imgFile = TRANSITIONS_DIR + transition.BeforeLast(wxT('.')) + wxT(".png");
103 }
104
105 wxImage img;
106 if (wxFile::Exists(imgFile)) {
107 img.LoadFile(imgFile);
108 } else {
109 img = wxBITMAP_FROM_MEMORY(loading).ConvertToImage();
110 }
111 return img;
112 }
113
OnOkBt(wxCommandEvent & event)114 void SlideDlg::OnOkBt(wxCommandEvent& event) {
115 m_slide->SetTransition(m_transitions[m_thumbnails->GetSelected() >= 0 ? m_thumbnails->GetSelected() : 0]);
116 this->EndModal(wxID_OK);
117 }
118
119