source: trunk/wx/xmission.cc @ 2435

Last change on this file since 2435 was 2435, checked in by charles, 15 years ago

finish changing from xpm to png

  • Property svn:executable set to *
File size: 5.5 KB
Line 
1#include <iostream>
2#include <wx/aboutdlg.h>
3#include <wx/artprov.h>
4#include <wx/defs.h>
5#include <wx/config.h>
6#include <wx/toolbar.h>
7#include <wx/wx.h>
8extern "C" {
9  #include <libtransmission/transmission.h>
10}
11
12class MyApp : public wxApp
13{
14    virtual bool OnInit();
15};
16
17IMPLEMENT_APP(MyApp)
18
19tr_handle_t * handle = NULL;
20
21class MyFrame : public wxFrame
22{
23public:
24    MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size);
25    virtual ~MyFrame();
26    void OnQuit(wxCommandEvent& event);
27    void OnAbout(wxCommandEvent& event);
28    void OnOpen(wxCommandEvent& event);
29
30protected:
31    wxConfig * myConfig;
32};
33
34enum
35{
36    ID_START,
37    ID_STOP,
38    ID_REMOVE,
39    ID_QUIT,
40    ID_TORRENT_INFO,
41    ID_EDIT_PREFS,
42    ID_SHOW_DEBUG_WINDOW,
43    ID_ABOUT,
44    N_IDS
45};
46
47void MyFrame :: OnOpen( wxCommandEvent& event )
48{
49    const wxString key = _T("LastDirectory");
50    wxString directory;
51    myConfig->Read( key, &directory );
52    wxFileDialog * w = new wxFileDialog( this, _T("message"),
53                                         directory,
54                                         _T(""), /* default file */
55                                         _T("Torrent files|*.torrent"),
56                                         wxOPEN|wxMULTIPLE );
57
58    if( w->ShowModal() == wxID_OK )
59    {
60        wxArrayString paths;
61        w->GetPaths( paths );
62        size_t nPaths = paths.GetCount();
63        for( size_t i=0; i<nPaths; ++i )
64        {
65            const wxString& w = paths[i];
66            std::cerr << w.ToAscii() << std::endl;
67        }
68        myConfig->Write( key, w->GetDirectory() );
69    }
70
71    delete w;
72}
73
74
75bool MyApp::OnInit()
76{
77    handle = tr_init( "wx" );
78
79    MyFrame * frame = new MyFrame( _T("Xmission"),
80                                   wxPoint(50,50),
81                                   wxSize(450,350));
82
83    frame->Connect( wxID_OPEN, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) &MyFrame::OnOpen );
84    frame->Connect( wxID_EXIT, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) &MyFrame::OnQuit );
85    frame->Connect( wxID_ABOUT, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) &MyFrame::OnAbout );
86
87    frame->Show( true );
88    SetTopWindow( frame );
89    return true;
90}
91
92/***
93****
94***/
95
96MyFrame::~MyFrame()
97{
98    delete myConfig;
99}
100
101MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size):
102    wxFrame((wxFrame*)NULL,-1,title,pos,size),
103    myConfig( new wxConfig( _T("xmission") ) )
104{
105    wxImage::AddHandler( new wxPNGHandler );
106    wxImage transmission_logo ( _T("images/transmission.png"), wxBITMAP_TYPE_PNG );
107    wxIcon ico;
108    ico.CopyFromBitmap( wxBitmap( transmission_logo ) );
109    SetIcon( ico );
110
111    /**
112    ***  Menu
113    **/
114
115    wxMenuBar *menuBar = new wxMenuBar;
116
117    wxMenu * m = new wxMenu;
118    m->Append( wxID_OPEN, _T("&Open") );
119    m->Append( ID_START, _T("&Start") );
120    m->Append( wxID_STOP, _T("Sto&p") ) ;
121    m->Append( wxID_REFRESH, _T("Re&check") );
122    m->Append( wxID_REMOVE, _T("&Remove") );
123    m->AppendSeparator();
124    m->Append( wxID_NEW, _T("Create &New Torrent") );
125    m->AppendSeparator();
126    m->Append( wxID_CLOSE, _T("&Close") );
127    m->Append( wxID_EXIT, _T("&Exit") );
128    menuBar->Append( m, _T("&File") );
129
130    m = new wxMenu;
131    m->Append( ID_TORRENT_INFO, _T("Torrent &Info") );
132    m->Append( wxID_PREFERENCES, _T("Edit &Preferences") );
133    menuBar->Append( m, _T("&Edit") );
134
135    m = new wxMenu;
136    m->Append( ID_SHOW_DEBUG_WINDOW, _T("Show &Debug Window") );
137    m->AppendSeparator();
138    m->Append( wxID_ABOUT, _T("&About Xmission") );
139    menuBar->Append( m, _T("&Help") );
140
141    SetMenuBar(menuBar);
142
143    /**
144    ***  Toolbar
145    **/
146
147    wxImage open_image( _T("images/fileopen.png"),        wxBITMAP_TYPE_PNG );
148    wxImage exec_image( _T("images/exec.png"),            wxBITMAP_TYPE_PNG );
149    wxImage stop_image( _T("images/stop.png"),            wxBITMAP_TYPE_PNG );
150    wxImage drop_image( _T("images/gtk-remove.png"),      wxBITMAP_TYPE_PNG );
151    wxImage info_image( _T("images/gtk-properties.png"),  wxBITMAP_TYPE_PNG );
152
153    wxToolBar* toolbar = CreateToolBar( wxNO_BORDER | wxTB_HORIZONTAL | wxTB_FLAT | wxTB_TEXT );
154    toolbar->SetToolBitmapSize( wxSize( 16, 16 ) );
155    toolbar->AddTool( wxID_OPEN,   _T("Open"), open_image );
156    toolbar->AddTool( ID_START,    _T("Start"), exec_image );
157    toolbar->AddTool( wxID_STOP,   _T("Stop"), stop_image );
158    toolbar->AddTool( wxID_REMOVE, _T("Remove"), drop_image );
159    toolbar->AddSeparator();
160    toolbar->AddTool( ID_TORRENT_INFO, _("Torrent Info"), info_image );
161    toolbar->Realize();
162
163    /**
164    ***  Status Bar
165    **/
166
167    CreateStatusBar();
168    SetStatusText(_T("Welcome to Xmission!"));
169}
170
171void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
172{
173    Close(TRUE);
174}
175
176void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
177{
178    wxImage transmission_logo ( _T("images/transmission.png"), wxBITMAP_TYPE_PNG );
179    wxIcon ico;
180    ico.CopyFromBitmap( wxBitmap( transmission_logo ) );
181
182    wxAboutDialogInfo info;
183    info.SetName(_T("Xmission"));
184    info.SetVersion(_T(LONG_VERSION_STRING));
185    info.SetCopyright(_T("Copyright 2005-2007 The Transmission Project"));
186    info.SetDescription(_T("A fast, lightweight bittorrent client"));
187    info.SetWebSite( _T( "http://transmission.m0k.org/" ) );
188    info.SetIcon( ico );
189    info.AddDeveloper( "Josh Elsasser (Back-end; GTK+)" );
190    info.AddDeveloper ("Charles Kerr (Back-end, GTK+, wxWidgets)");
191    info.AddDeveloper( "Mitchell Livingston (Back-end; OS X)" );
192    info.AddDeveloper( "Eric Petit (Back-end; OS X)" );
193    info.AddDeveloper( "Bryan Varner (BeOS)" );
194    wxAboutBox( info );
195}
Note: See TracBrowser for help on using the repository browser.