From 9ef72eaa168ca047f91f1dce2d98ef2c243b31c2 Mon Sep 17 00:00:00 2001 From: Ira Rice Date: Tue, 27 Jan 2009 15:10:02 -0700 Subject: Removed the fairly useless buttonbox class, as well as removing the recorder's dependence upon it. This class should get a bit more work done to it to simplify it further, but right now, it preserves all of the same functionality. Signed-off-by: Ira Rice --- aethyra.cbp | 6 +-- po/POTFILES.in | 1 + src/Makefile.am | 6 +-- src/gui/buttonbox.cpp | 43 ------------------- src/gui/buttonbox.h | 69 ------------------------------ src/gui/chat.cpp | 6 +-- src/gui/recorder.cpp | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/gui/recorder.h | 88 ++++++++++++++++++++++++++++++++++++++ src/recorder.cpp | 114 ------------------------------------------------- src/recorder.h | 48 --------------------- 10 files changed, 212 insertions(+), 285 deletions(-) delete mode 100644 src/gui/buttonbox.cpp delete mode 100644 src/gui/buttonbox.h create mode 100644 src/gui/recorder.cpp create mode 100644 src/gui/recorder.h delete mode 100644 src/recorder.cpp delete mode 100644 src/recorder.h diff --git a/aethyra.cbp b/aethyra.cbp index ebda9029..2ee2501b 100644 --- a/aethyra.cbp +++ b/aethyra.cbp @@ -119,8 +119,6 @@ - - @@ -206,6 +204,8 @@ + + @@ -358,8 +358,6 @@ - - diff --git a/po/POTFILES.in b/po/POTFILES.in index f338e665..9df309d3 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -24,6 +24,7 @@ src/gui/npcstringdialog.cpp src/gui/npc_text.cpp src/gui/ok_dialog.cpp src/gui/popupmenu.cpp +src/gui/recorder.h src/gui/register.cpp src/gui/sell.cpp src/gui/setup_audio.cpp diff --git a/src/Makefile.am b/src/Makefile.am index 8f76b06a..aebfdc41 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -15,8 +15,6 @@ aethyra_SOURCES = gui/widgets/dropdown.cpp \ gui/browserbox.h \ gui/button.cpp \ gui/button.h \ - gui/buttonbox.cpp \ - gui/buttonbox.h \ gui/buy.cpp \ gui/buy.h \ gui/buysell.cpp \ @@ -102,6 +100,8 @@ aethyra_SOURCES = gui/widgets/dropdown.cpp \ gui/progressbar.h \ gui/radiobutton.cpp \ gui/radiobutton.h \ + gui/recorder.cpp \ + gui/recorder.h \ gui/register.cpp \ gui/register.h \ gui/scrollarea.cpp \ @@ -326,8 +326,6 @@ aethyra_SOURCES = gui/widgets/dropdown.cpp \ position.cpp \ position.h \ properties.h \ - recorder.cpp \ - recorder.h \ serverinfo.h \ shopitem.cpp \ shopitem.h \ diff --git a/src/gui/buttonbox.cpp b/src/gui/buttonbox.cpp deleted file mode 100644 index d29f3c58..00000000 --- a/src/gui/buttonbox.cpp +++ /dev/null @@ -1,43 +0,0 @@ -/* - * The Mana World - * Copyright 2004 The Mana World Development Team - * - * This file is part of The Mana World. - * - * The Mana World is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * The Mana World is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with The Mana World; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "button.h" -#include "buttonbox.h" - -ButtonBox::ButtonBox(const std::string &title, const std::string &buttonTxt, - ButtonBoxListener *listener) : - Window(title), - mListener(listener) -{ - Button *button = new Button(buttonTxt, "activate", this); - setContentSize(button->getWidth() + 10, - button->getHeight() + 10); - button->setPosition(5, 5); - add(button); -} - -void ButtonBox::action(const gcn::ActionEvent &event) -{ - if (event.getId() == "activate") - { - mListener->buttonBoxRespond(); - } -} diff --git a/src/gui/buttonbox.h b/src/gui/buttonbox.h deleted file mode 100644 index 6d0e46b6..00000000 --- a/src/gui/buttonbox.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * The Mana World - * Copyright 2004 The Mana World Development Team - * - * This file is part of The Mana World. - * - * The Mana World is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * The Mana World is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with The Mana World; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef BUTTONBOX_H -#define BUTTONBOX_H - -#include - -#include - -#include "window.h" - -#include "../guichanfwd.h" - -class ButtonBoxListener -{ - public: - - /* - * function that ButtonBox calls when the button has been pressed - */ - virtual void buttonBoxRespond() = 0; -}; - -class ButtonBox : public Window, public gcn::ActionListener -{ - public: - - /* - * Constructor - * - * @param title is the text that appears at the top of the box - * @param buttonTxt is the text that appears on the button - * @param listener points to the class that should respond to the - * button press - */ - ButtonBox(const std::string &title, const std::string &buttonTxt, - ButtonBoxListener *listener); - - /* - * called when the button is pressed - * - * @param event is the event that is generated - */ - void action(const gcn::ActionEvent &event); - - private: - - ButtonBoxListener *mListener; -}; -#endif diff --git a/src/gui/chat.cpp b/src/gui/chat.cpp index 1a3cb2a4..068fad08 100644 --- a/src/gui/chat.cpp +++ b/src/gui/chat.cpp @@ -28,6 +28,7 @@ #include "chat.h" #include "chatinput.h" #include "itemlinkhandler.h" +#include "recorder.h" #include "scrollarea.h" #include "sdlinput.h" #include "windowcontainer.h" @@ -40,7 +41,6 @@ #include "../game.h" #include "../localplayer.h" #include "../party.h" -#include "../recorder.h" #include "../net/messageout.h" #include "../net/protocol.h" @@ -477,7 +477,7 @@ void ChatWindow::chatSend(const std::string &nick, std::string msg) else if (command == "whisper" || command == "msg" || command == "w") whisper(nick, msg); else if (command == "record") - mRecorder->respond(msg); + mRecorder->changeStatus(msg); else if (command == "toggle") { if (msg == "") @@ -850,7 +850,7 @@ void ChatWindow::help(const std::string & msg1, const std::string & msg2) } else if (msg1 == "record") { - mRecorder->help(msg2); + mRecorder->help2(); } else if (msg1 == "toggle") { diff --git a/src/gui/recorder.cpp b/src/gui/recorder.cpp new file mode 100644 index 00000000..da67875b --- /dev/null +++ b/src/gui/recorder.cpp @@ -0,0 +1,116 @@ +/* + * The Mana World + * Copyright 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * The Mana World is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * The Mana World is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with The Mana World; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include "button.h" +#include "chat.h" +#include "recorder.h" + +#include "../utils/trim.h" + +Recorder::Recorder(ChatWindow *chat, const std::string &title, + const std::string &buttonTxt) : + Window(title) +{ + mChat = chat; + Button *button = new Button(buttonTxt, "activate", this); + setContentSize(button->getWidth() + 10, button->getHeight() + 10); + button->setPosition(5, 5); + add(button); +} + +void Recorder::record(const std::string &msg) +{ + if (mStream.is_open()) + { + mStream << msg << std::endl; + } +} + +void Recorder::changeStatus(const std::string &msg) +{ + std::string msgCopy = msg; + trim(msgCopy); + + if (msgCopy == "") + { + if (mStream.is_open()) + { + mStream.close(); + setVisible(false); + + /* + * Message should go after mStream is closed so that it isn't + * recorded. + */ + mChat->chatLog("Finishing recording.", BY_SERVER); + } + else + { + mChat->chatLog("Not currently recording.", BY_SERVER); + } + } + else if (mStream.is_open()) + { + mChat->chatLog("Already recording.", BY_SERVER); + } + else + { + /* + * Message should go before mStream is opened so that it isn't + * recorded. + */ + mChat->chatLog("Starting to record...", BY_SERVER); + std::string file = std::string(PHYSFS_getUserDir()) + "/.aethyra/" + msgCopy; + + mStream.open(file.c_str(), std::ios_base::trunc); + + if (mStream.is_open()) + setVisible(true); + else + mChat->chatLog("Failed to start recording.", BY_SERVER); + } +} + +void Recorder::help() const +{ + mChat->chatLog("/record : Start recording the chat.", BY_SERVER); +} + +void Recorder::help2() const +{ + mChat->chatLog("Command: /record ", BY_SERVER); + mChat->chatLog("This command starts recording the chat log to the file " + ".", BY_SERVER); + mChat->chatLog("Command: /record", BY_SERVER); + mChat->chatLog("This command finishes a recording session.", BY_SERVER); +} + +void Recorder::action(const gcn::ActionEvent &event) +{ + if (event.getId() == "activate") + changeStatus(""); +} + +Recorder::~Recorder() +{ +} diff --git a/src/gui/recorder.h b/src/gui/recorder.h new file mode 100644 index 00000000..6f917c25 --- /dev/null +++ b/src/gui/recorder.h @@ -0,0 +1,88 @@ +/* + * Aethyra + * Copyright (C) 2008 Aethyra Development Team + * + * This file is part of Aethyra. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef RECORD_H +#define RECORD_H + +#include +#include + +#include + +#include "window.h" + +#include "../guichanfwd.h" + +#include "../utils/gettext.h" + +class ChatWindow; + +class Recorder : public Window, public gcn::ActionListener +{ + public: + Recorder(ChatWindow *chat, const std::string &title = _("Recording..."), + const std::string &buttonTxt = _("Stop recording")); + + virtual ~Recorder(); + + /* + * Outputs the message to the recorder file + * + * @param msg the line to write to the recorded file. + */ + void record(const std::string &msg); + + /* + * Outputs the message to the recorder file + * + * @param msg the line to write to the recorded file. + */ + void changeStatus(const std::string &msg); + + /* + * Displays a help message on how to use this class in the chat window. + */ + void help() const; + + /* + * Displays an extended help message on how to use this class in the + * chat window. + */ + void help2() const; + + /* + * Whether or not the recorder is in use. + */ + bool isRecording() {return (bool) mStream.is_open();} + + /* + * called when the button is pressed + * + * @param event is the event that is generated + */ + void action(const gcn::ActionEvent &event); + + private: + ChatWindow *mChat; + + std::ofstream mStream; +}; +#endif diff --git a/src/recorder.cpp b/src/recorder.cpp deleted file mode 100644 index 57f030b2..00000000 --- a/src/recorder.cpp +++ /dev/null @@ -1,114 +0,0 @@ -/* - * The Mana World - * Copyright 2004 The Mana World Development Team - * - * This file is part of The Mana World. - * - * The Mana World is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * The Mana World is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with The Mana World; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include - -#include "recorder.h" - -#include "gui/buttonbox.h" -#include "gui/chat.h" - -#include "utils/trim.h" - -Recorder::Recorder(ChatWindow *chat) : mChat(chat) -{ - mButtonBox = new ButtonBox("Recording...", "Stop recording", this); - mButtonBox->setY(20); -} - -void Recorder::record(const std::string &msg) -{ - if (mStream.is_open()) - { - mStream << msg << std::endl; - } -} - -void Recorder::respond(const std::string &msg) -{ - std::string msgCopy = msg; - trim(msgCopy); - if (msgCopy == "") - { - if (mStream.is_open()) - { - mStream.close(); - mButtonBox->setVisible(false); - /* - * Message should go after mStream is closed so that it isn't - * recorded. - */ - mChat->chatLog("Finishing recording.", BY_SERVER); - } - else - { - mChat->chatLog("Not currently recording.", BY_SERVER); - } - return; - } - if (mStream.is_open()) - { - mChat->chatLog("Already recording.", BY_SERVER); - } - else - { - /* - * Message should go before mStream is opened so that it isn't - * recorded. - */ - mChat->chatLog("Starting to record...", BY_SERVER); - std::string file = std::string(PHYSFS_getUserDir()) + "/.aethyra/" + msgCopy; - - mStream.open(file.c_str(), std::ios_base::trunc); - if (mStream.is_open()) - { - mButtonBox->setVisible(true); - } - else - { - mChat->chatLog("Failed to start recording.", BY_SERVER); - } - } -} - -void Recorder::help() const -{ - mChat->chatLog("/record : Start recording the chat.", BY_SERVER); -} - -void Recorder::help(const std::string &args) const -{ - mChat->chatLog("Command: /record ", BY_SERVER); - mChat->chatLog("This command starts recording the chat log to the file " - ".", BY_SERVER); - mChat->chatLog("Command: /record", BY_SERVER); - mChat->chatLog("This command finishes a recording session.", BY_SERVER); -} - -void Recorder::buttonBoxRespond() -{ - respond(""); -} - -Recorder::~Recorder() -{ - delete mButtonBox; -} diff --git a/src/recorder.h b/src/recorder.h deleted file mode 100644 index 4a220166..00000000 --- a/src/recorder.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Aethyra - * Copyright (C) 2008 Aethyra Development Team - * - * This file is part of Aethyra. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef RECORD_H -#define RECORD_H - -#include -#include - -#include "gui/buttonbox.h" - -class ChatWindow; - -class Recorder : public ButtonBoxListener -{ - private: - ChatWindow *mChat; - std::ofstream mStream; - ButtonBox *mButtonBox; - public: - Recorder(ChatWindow *chat); - void record(const std::string &msg); - void respond(const std::string &msg); - void help() const; - void help(const std::string &args) const; - void buttonBoxRespond(); - bool isRecording() {return (bool) mStream.is_open();} - virtual ~Recorder(); -}; -#endif -- cgit v1.2.3-70-g09d2