# HG changeset patch # User viric@mandarina # Date 1207165667 -7200 # Node ID 97dd4d2c08b616bbc85be239130deaa660e551d1 Initial base with a PageList widget. diff -r 000000000000 -r 97dd4d2c08b6 CMakeLists.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CMakeLists.txt Wed Apr 02 21:47:47 2008 +0200 @@ -0,0 +1,14 @@ +PROJECT(djvumaker) + +FIND_PACKAGE(wxWidgets) + +IF (wxWidgets_FOUND) + INCLUDE(${wxWidgets_USE_FILE}) +ENDIF (wxWidgets_FOUND) + + +ADD_EXECUTABLE(djvumaker + main.cpp + MainWindow.cpp + PageList.cpp) +TARGET_LINK_LIBRARIES(djvumaker ${wxWidgets_LIBRARIES}) diff -r 000000000000 -r 97dd4d2c08b6 MainWindow.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MainWindow.cpp Wed Apr 02 21:47:47 2008 +0200 @@ -0,0 +1,57 @@ +#include +#include "MainWindow.hpp" +#include "PageList.hpp" + +BEGIN_EVENT_TABLE(MainWindow, wxFrame) + EVT_MENU(wxID_OPEN, MainWindow::on_open) + EVT_MENU(wxID_CLOSE, MainWindow::on_quit) +END_EVENT_TABLE() + +MainWindow::MainWindow() + :wxFrame(0, wxID_ANY, _("wxDjvuMaker"), wxDefaultPosition, + wxSize(200,200)) +{ + create_menus(); + + wxBoxSizer *s = new wxBoxSizer(wxVERTICAL); + + _pagelist = new PageList(this); + + s->Add(_pagelist); +} + + +void +MainWindow::create_menus() +{ + _menubar = new wxMenuBar(); + _menufile = new wxMenu(); + + _menufile->Append(wxID_OPEN, _("&Open")); + _menufile->Append(wxID_CLOSE, _("&Quit")); + + _menubar->Append(_menufile, _("&File")); + + SetMenuBar(_menubar); +} + +void +MainWindow::on_open(wxCommandEvent &event) +{ + wxFileDialog fd(this, _("Add pages"), wxT(""), + wxT(""), wxT("*.jpg"), wxFD_OPEN | wxFD_MULTIPLE | wxFD_FILE_MUST_EXIST + | wxFD_PREVIEW); + + if (fd.ShowModal() == wxID_OK) + { + wxArrayString files; + fd.GetFilenames(files); + _pagelist->add_files(files); + } +} + +void +MainWindow::on_quit(wxCommandEvent &event) +{ + Close(); +} diff -r 000000000000 -r 97dd4d2c08b6 MainWindow.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MainWindow.hpp Wed Apr 02 21:47:47 2008 +0200 @@ -0,0 +1,23 @@ +#include + +class PageList; + +class MainWindow : public wxFrame +{ +public: + MainWindow(); + + +private: + void create_menus(); + + void on_open(wxCommandEvent &event); + void on_quit(wxCommandEvent &event); + + wxMenuBar *_menubar; + wxMenu *_menufile; + + PageList *_pagelist; + + DECLARE_EVENT_TABLE() +}; diff -r 000000000000 -r 97dd4d2c08b6 PageList.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PageList.cpp Wed Apr 02 21:47:47 2008 +0200 @@ -0,0 +1,59 @@ +#include + +#include "PageList.hpp" + +BEGIN_EVENT_TABLE(PageList, wxListCtrl) + EVT_CONTEXT_MENU(PageList::on_context_menu) +END_EVENT_TABLE() + + +PageList::PageList(wxWindow *parent) + :wxListCtrl(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, + wxLC_REPORT) +{ + InsertColumn(0, _("File")); + InsertColumn(1, _("Crop area")); + InsertColumn(2, _("Binarizer")); + InsertColumn(3, _("Packing")); +} + +void +PageList::add_files(const wxArrayString &filenames) +{ + for(unsigned int i=0; i < filenames.GetCount(); ++i) + { + wxListItem item; + item.SetText(filenames[i]); + item.SetColumn(0); + long pos = InsertItem(item); + /* Test */ + SetItem(pos, 1, wxT("test")); + } + SetColumnWidth(0, wxLIST_AUTOSIZE); +} + +void +PageList::on_context_menu(wxContextMenuEvent &event) +{ + wxString title; + + /* Try to guess what we should apply actions to. */ + if (GetSelectedItemCount() == 0) + { + return; + } + else if (GetSelectedItemCount() == 1) + { + title = GetItemText(GetNextItem(-1, wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED)); + } + else + { + title = _("Selection"); + } + wxMenu *menu = new wxMenu(title); + + menu->Append(wxID_CLOSE, wxT("Hello")); + + PopupMenu(menu); +} diff -r 000000000000 -r 97dd4d2c08b6 PageList.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PageList.hpp Wed Apr 02 21:47:47 2008 +0200 @@ -0,0 +1,14 @@ +#include + +class PageList : public wxListCtrl +{ +public: + PageList(wxWindow *parent); + + void add_files(const wxArrayString &filenames); + void on_context_menu(wxContextMenuEvent &event); + +private: + + DECLARE_EVENT_TABLE() +}; diff -r 000000000000 -r 97dd4d2c08b6 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Apr 02 21:47:47 2008 +0200 @@ -0,0 +1,19 @@ +#include + +#include "MainWindow.hpp" + +class MyApp : public wxApp +{ + public: + virtual bool OnInit(); +}; + +IMPLEMENT_APP(MyApp) + +bool MyApp::OnInit() +{ + MainWindow *mw = new MainWindow(); + mw->Show(); + + return true; +}