cginternals / libzeug Goto Github PK
View Code? Open in Web Editor NEWdeprecated: C++ sanctuary for small but powerful and frequently required, stand alone features.
License: MIT License
deprecated: C++ sanctuary for small but powerful and frequently required, stand alone features.
License: MIT License
the following issues are tested only on a windows machine:
some extensions
(,,) * x
etc.The user doesn't need to know if he wants one or more trees from a file.
The annotations member in AbstractProperty
aren't currently used at all.
They could be used for tooltips
I want to serialize a property group to an intermediate ini object and manipulate it before writing it to a file.
I want to deserialize a file to an ini object and manipulate it before parsing it as a property group.
Use case:
I have several different types of proerty trees and want to encode in the ini file what type of tree it is.
Currently this is only possible with a lot of warnings and a 2-pass parsing.
On Windows the native file dialog isn't used.
This could be used to display a unit of measurement or a currency symbol.
The PropertyBrowser on Windows 8.1 using HiDPI settings looks too small.
Make tab key skip empty PropertyGroup
row when in edit mode
see here
I suggest an enum and attribute SchedulePolicy
for AbstractStage
with the values ON_DEMAND
(process only when the output is invalid) and ALWAYS
(process every round).
Add methods for custom row coloring to the PropertyBrowser
Property<std::vector<?>>
rows should be expandable to seperate rows for each value, which can be edited with spinboxes
Add a bool state to cache if the pipeline is ordered, invalidate it on dependency changes, and order them lazily in execute
Hello!
How can I catch exceptions which result from invalid javascript given to scriptzeug? As long as the javascript code is syntactically correct, I can add a try-catch-block on script side. But if it is not syntactically correct, this doesn't work.
In pure v8, a v8::TryCatch construct is provided (https://developers.google.com/v8/embed#exceptions). How do I accomplish something similar with scriptzeug? A simple c++ try-catch-block won't do the trick.
Thanks!
mProperty.hpp:116:9: Fehler: »class std::mapstd::basic_string<char, NormalMode, std::lessstd::basic_string, std::allocator<std::pair<const std::basic_string, NormalMode> > >« hat kein Element namens »emplace«
Seems like this is not yet supported gcc 4.7 (see http://stackoverflow.com/questions/15812276/stdset-has-no-member-emplace)
AFAIR, we decided on gcc 4.7 compatibility once. That should be respected (I will open an own issue for that).
It seems that compiler requirements (e.g., gcc 4.7 -> gcc 4.8) are updated "on the fly", when someone wants to use a cool new feature that wasn't supported before, without discussing that first. And the change is not even communicated. This is not OK, because unfortunately, sometimes one cannot just upgrade the compiler (e.g., we sometimes have to deploy prototypes for other systems, e.g. in a cooperation, and those systems often run old software).
We shouldn't require the newest compiler. The project should be buildable and deployable on "fairly new" systems, so I think, gcc 4.7 would still be a good choice.
Change the project structure as follows:
e.g. currently you need 3 clicks to change the value of a checkbox
nothing should happen
Make Color
, ColorEditor
and PropertyDeserializer
aware of short hex notation (e.g. #FFF
)
Make PropertyModel
emit dataChanged
signal when properties have changed by subscribing to their signals
Because a PropertyGroup
owns the properties it manages, properties shouldn't be allocated on stack.
Possible solutions:
PropertyGroup
a friend and let them only be created by a PropertyGroup
On OS X it is quite convenient to install v8 using brew. The compiled and installed version of v8 is 3.21.17. To comply with this version (especially when using OS X) some changes in the API of v8 require changes in Scriptzeug as well.
When you create a Property with an object pointer and two method pointers, which aren't declared in the same class (e.g. in a base class), the automatical type deduction fails.
So instead of
Property<int>("value", object, &Class::getter, &Class::setter)
you have to write Property<int, Class>("value", object, &Class::getter, &Class::setter)
Add a simple QColor
/Color
converter because this is done frequently.
When called from a thread, the application crashes at registerObject()
The non-existence of the property in PropertyGroup::value(const std::string &)
isn't handled
Currently, a property is oblivious to direct changes of its data store, i.e. when the value is updated through other means besides calling the setter.
In that case it might be useful to call a dataChanged method (or similar) on property telling it to update the GUI.
faulting commit: 102d51d
Error:
3>main.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) const reflectionzeug::StringProperty::`vbtable'" (__imp_??_8StringProperty@reflectionzeug@@7B@)
Wild guess: MSVC emits the vbtable together with constructor, but since the commit removed all non-templated constructors that never happens.
Two solutions seem to work:
Applies to StringProperty and FilePathProperty
CMake Error at packages/pack-libzeug.cmake:81 (string):
string sub-command REGEX, mode REPLACE needs at least 6 arguments total to
command.
Call Stack (most recent call first):
packages/CMakeLists.txt:9 (include)
Because of propertyzeugs mainly template-driven designs most of its implementation is in headers. This is why I would like to add a private namespace (as in glm) for classes and utility methods that are not intended to be used by the user.
Create a place to bundle regex values (color hex code, array list, bool values) which should be used in serializer and editors
As already implemented for integral and floating point types, create interface classes also for the other basic types, e.g., strings and colors. That way, one can implement a new property type, e.g., a QColor, using that interface, and the GUI will be able to show the already implemented color dialog. Currently, one would also have to subclass the editor factory and re-implement the color editor, because this only works with 'Color'. This change would make the property system much more flexible to work with classes that are not directly supported, but have similar functionality.
on gcc 4.7.3, all examples with brace initialization fail with the following error message:
/workspace/hpi/projects/libzeug/source/examples/properties/main.cpp:66:64: Fehler: keine passende Funktion für Aufruf von »reflectionzeug::PropertyGroup::addProperty(const char [6], )«
/workspace/hpi/projects/libzeug/source/examples/properties/main.cpp:66:64: Anmerkung: Kandidaten sind:
In file included from /workspace/hpi/projects/libzeug/source/examples/properties/main.cpp:6:0:
/workspace/hpi/projects/libzeug/source/reflectionzeug/include/reflectionzeug/PropertyGroup.h:33:22: Anmerkung: template reflectionzeug::Property* reflectionzeug::PropertyGroup::addProperty(const string&, const Type&)
/workspace/hpi/projects/libzeug/source/reflectionzeug/include/reflectionzeug/PropertyGroup.h:33:22: Anmerkung: Herleitung/Ersetzung von Templateargument gescheitert:
/workspace/hpi/projects/libzeug/source/examples/properties/main.cpp:66:64: Anmerkung: »{1, 2, 3}« (Typ »«) kann nicht in den Typ »const std::array<int, 3ul>&« umgewandelt werden
[...]
Currently the step is always 1, even if i have a double spin box in the range 0-1
Add a precision option to Property
Especially in the property deserializer, but in general too.
As a user of a library, I want to customize which outputs I show on the console and which not. Libraries should not directly generate output, instead error callbacks should be provided, so that the user can either ignore them or send them to the console if he wishes to.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.