1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
/*
* Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
*
* 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; version 2 of the
* License.
*
* 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., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
#pragma once
#include "wbpublic_public_interface.h"
#include "mforms/box.h"
#include "mforms/form.h"
#include "mforms/tabview.h"
#include "mforms/label.h"
#include "mforms/button.h"
#include "mforms/jsonview.h"
namespace bec {
class GRTManager;
};
class BinaryDataEditor;
class WBPUBLICBACKEND_PUBLIC_FUNC BinaryDataViewer : public mforms::Box
{
public:
BinaryDataViewer(BinaryDataEditor *owner);
virtual void data_changed() = 0;
protected:
BinaryDataEditor *_owner;
};
class WBPUBLICBACKEND_PUBLIC_FUNC BinaryDataEditor : public mforms::Form
{
public:
BinaryDataEditor(bec::GRTManager *grtm, const char *data, size_t length, bool read_only=true);
BinaryDataEditor(bec::GRTManager *grtm, const char *data, size_t length, const std::string &text_encoding, const std::string &data_type, bool read_only=true);
virtual ~BinaryDataEditor();
const char* data() const { return _data; }
size_t length() const { return _length; }
// when user clicks Save
boost::signals2::signal<void ()> signal_saved;
public:
void add_viewer(BinaryDataViewer *viewer, const std::string &title);
void add_json_viewer(bool read_only, const std::string &text_encoding, const std::string &title);
void assign_data(const char *data, size_t length, bool steal_pointer=false);
void notify_edit();
bool read_only() { return _read_only; }
bool isJson() { return _type == "JSON"; }
protected:
bec::GRTManager *_grtm;
char *_data;
size_t _length;
std::string _type;
std::vector<BinaryDataViewer*> _viewers;
std::set<BinaryDataViewer*> _pendingUpdates;
bool _updating;
mforms::Box _box;
mforms::Box _hbox;
mforms::TabView _tab_view;
mforms::Label _length_text;
mforms::Button _save;
mforms::Button _close;
mforms::Button _export;
mforms::Button _import;
bool _read_only;
void setup();
void save();
void tab_changed();
void import_value();
void export_value();
};
|