1 /*- 2 * Copyright (c) 2014-2018 Carsten Sonne Larsen <cs@innolan.net> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 15 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 16 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 18 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 19 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 20 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 21 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 * 25 * Project homepage: 26 * https://amath.innolan.net 27 * 28 */ 29 30 #ifndef AMATH_HAIKU_CONSOLE_WINDOW_H 31 #define AMATH_HAIKU_CONSOLE_WINDOW_H 32 33 #include "amath.h" 34 #include "amathc.h" 35 #include "console.h" 36 #include "lib/aengine.h" 37 38 #if defined(HAIKU) 39 40 #if __GNUC__ == 2 41 #pragma GCC diagnostic ignored "-Wno-multichar" 42 #endif 43 44 #include <Window.h> 45 #include <Entry.h> 46 #include <FilePanel.h> 47 #include <MenuBar.h> 48 #include <String.h> 49 #include <TextView.h> 50 51 class HaikuTextView; 52 53 class HaikuWindow : public ConsoleBase, public BWindow 54 { 55 public: 56 HaikuWindow(const char *prompt, CharValidator *validator); 57 virtual ~HaikuWindow(void); 58 virtual void MessageReceived(BMessage* msg); 59 virtual void FrameResized(float w, float h); 60 virtual void UpdateTextRect(void); 61 virtual bool QuitRequested(void); 62 virtual void Start(void); 63 virtual void Exit(void); 64 virtual void Clear(void); 65 virtual void ShowAbout(void); 66 virtual void ShowLicense(void); 67 virtual void ShowVersion(void); 68 virtual void WriteString(const char *string); 69 void Execute(void); 70 71 protected: 72 virtual void StartMessage(void); 73 74 private: 75 HaikuTextView *textView; 76 }; 77 78 class HaikuTextView : public BTextView 79 { 80 public: 81 HaikuTextView( 82 HaikuWindow *window, 83 BRect frame, 84 const char *name, 85 BRect textRect, 86 const BFont *initialFont, 87 const rgb_color *initialColor); 88 virtual ~HaikuTextView(void); 89 virtual void KeyDown(const char *bytes, int32 numBytes); 90 91 private: 92 HaikuWindow *window; 93 }; 94 95 #endif 96 #endif 97