Webdar 1.0.0
Web user interface to libdar
html_compression_params.hpp
1/*********************************************************************/
2// webdar - a web server and interface program to libdar
3// Copyright (C) 2013-2025 Denis Corbin
4//
5// This file is part of Webdar
6//
7// Webdar is free software: you can redistribute it and/or modify
8// it under the terms of the GNU General Public License as published by
9// the Free Software Foundation, either version 3 of the License, or
10// (at your option) any later version.
11//
12// Webdar is distributed in the hope that it will be useful,
13// but WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15// GNU General Public License for more details.
16//
17// You should have received a copy of the GNU General Public License
18// along with Webdar. If not, see <http://www.gnu.org/licenses/>
19//
20//----
21// to contact the author: dar.linux@free.fr
22/*********************************************************************/
23
24#ifndef HTML_COMPRESSION_PARAMS_HPP
25#define HTML_COMPRESSION_PARAMS_HPP
26
27 // C system header files
28#include "my_config.h"
29extern "C"
30{
31
32}
33
34 // C++ system header files
35#include <dar/libdar.hpp>
36
37 // webdar headers
38#include "body_builder.hpp"
39#include "actor.hpp"
40#include "events.hpp"
41#include "html_form.hpp"
42#include "html_form_fieldset.hpp"
43#include "html_form_select.hpp"
44#include "html_compression.hpp"
45#include "html_form_input.hpp"
46#include "html_form_input_unit.hpp"
47#include "webdar_tools.hpp"
48#include "jsoner.hpp"
49
51
53 public actor,
54 public events,
55 public jsoner
56
57{
58public:
59 // change event
60 static const std::string changed;
61
62 html_compression_params(bool show_resave,
63 bool show_min_size,
64 bool show_keep_compressed);
66 html_compression_params(html_compression_params && ref) noexcept = delete;
67 html_compression_params & operator = (const html_compression_params & ref) = delete;
68 html_compression_params & operator = (html_compression_params && ref) noexcept = delete;
69 ~html_compression_params() = default;
70
71 void set_compression_algo(libdar::compression val) { compression.set_value(val); };
72 void set_compression_level(int val) { compression_level.set_value_as_int(val); };
73 void set_min_compression_size(const libdar::infinint & val) { min_compr_size.set_value_as_infinint(val); };
74 void set_compression_block(const libdar::infinint & val) { compression_block.set_value_as_infinint(val); };
75 void set_keep_compressed(bool val) { keep_compressed.set_value_as_bool(val); };
76
77 libdar::compression get_compression_algo() const { return compression.get_value(); };
78 libdar::U_I get_compression_level() const { return compression_level.get_value_as_int(); };
79 libdar::infinint get_min_compression_size() const { return min_compr_size.get_value_as_infinint(); };
80 libdar::infinint get_compression_block() const { return compression_block.get_value_as_infinint(); };
81 bool get_resave_uncompressed() const { return never_resave_uncompressed.get_value_as_bool(); };
82 libdar::U_I get_num_threads() const { return compr_threads.get_value_as_int(); };
83 bool get_keep_compressed() const { return keep_compressed.get_value_as_bool(); };
84
86 virtual void load_json(const json & source) override;
87
89 virtual json save_json() const override;
90
92 virtual void clear_json() override;
93
95 virtual void on_event(const std::string & event_name) override;
96
99
101 virtual void bind_to_anchor(const std::string & val) override { form_compr.bind_to_anchor(val); };
102
103protected:
104
106 virtual std::string inherited_get_body_part(const chemin & path,
107 const request & req) override;
108
110 virtual void css_classes_have_changed() override;
111
113 virtual void new_css_library_available() override;
114
115private:
116 bool x_show_resave;
117 bool x_show_min_size;
118 bool ignore_events;
119
120 html_form form_compr;
121 html_form_fieldset compr_fs;
122 html_compression compression;
123 html_form_input compression_level;
124 html_form_input_unit min_compr_size;
125 html_form_input_unit compression_block;
126 html_form_input never_resave_uncompressed;
127 html_form_input compr_threads;
128 html_form_input keep_compressed;
129
130 static constexpr const unsigned int default_level = 9;
131 static constexpr const unsigned int default_min_compr_size = 100;
132 static constexpr const unsigned int default_compression_block = 240*1024;
133 static constexpr const bool default_never_resave_uncompressed = false;
134 static constexpr const unsigned int default_compr_threads = 4;
135 static constexpr const bool default_keep_compressed = false;
136
137 static constexpr const unsigned int format_version = 1;
138 static constexpr const char* myclass_id = "html_compression_params";
139
140 static constexpr const char* jlabel_algo = "compr-algo";
141 static constexpr const char* jlabel_level = "compr-level";
142 static constexpr const char* jlabel_min_compr_sz = "min-compr-size";
143 static constexpr const char* jlabel_compr_block = "compr-block";
144 static constexpr const char* jlabel_never_resave_uncompr = "never-resave-uncompr";
145 static constexpr const char* jlabel_compr_threads = "compr-threads";
146 static constexpr const char* jlabel_keep_compr = "keep-compressed";
147};
148
149#endif
class of object that are pointed/triggered to by others
Definition: actor.hpp:55
class body_builder is the root class of object generating HTML body
Definition: body_builder.hpp:99
class chemin definition
Definition: chemin.hpp:51
class events
Definition: events.hpp:52
html component used for the user to define a compression algorithm
Definition: html_compression_params.hpp:57
virtual void new_css_library_available() override
inherited from body_builder
Definition: html_compression_params.cpp:329
virtual void css_classes_have_changed() override
inherited from body_builder
Definition: html_compression_params.cpp:318
void set_to_webdar_defaults()
set the object to webdar defaults
Definition: html_compression_params.cpp:301
virtual std::string inherited_get_body_part(const chemin &path, const request &req) override
inherited from body_builder
Definition: html_compression_params.cpp:312
virtual void load_json(const json &source) override
inherited from jsoner
Definition: html_compression_params.cpp:119
virtual json save_json() const override
inherited from jsoner
Definition: html_compression_params.cpp:174
virtual void clear_json() override
inherited from jsoner
Definition: html_compression_params.cpp:200
virtual void bind_to_anchor(const std::string &val) override
inherited from body_builder
Definition: html_compression_params.hpp:101
virtual void on_event(const std::string &event_name) override
inherited from actor
Definition: html_compression_params.cpp:216
html components to let the user define the compression algorithm
Definition: html_compression.hpp:45
class html_form_fieldset implements HTML fieldset feature
Definition: html_form_fieldset.hpp:51
class html_form_input_unit implements HTML input::number feature with added unit box
Definition: html_form_input_unit.hpp:51
class html_form_input implements HTML input feature
Definition: html_form_input.hpp:57
class html_form implements HTML form feature
Definition: html_form.hpp:51
virtual void bind_to_anchor(const std::string &value) override
inherited from body_builder
Definition: html_form.hpp:83
class jsoner
Definition: jsoner.hpp:73
class holding fields of an HTTP request (method, URI, header, cookies, and so on)
Definition: request.hpp:45
defines the event class
defines jsoner class and class exception_json