Commit Graph

21 Commits

Author SHA1 Message Date
Xavi Artigas 3f42180611 efl-mono: Treat Warnings as Errors
Now that there are 0 documentation warnings, let's make sure we stay this way.
2019-07-09 10:40:21 +02:00
Jaehyun Cho a55777c925 efl_mono: generate efl_canvas_text.eo.cs
To use canvas text in efl csharp bindings, it is permitted to generate
efl_canvas_text.eo.cs.
2019-05-17 19:54:48 +09:00
Jaehyun Cho 9d28d91626 efl_mono: generate efl_canvas_vg_object.eo.cs by meson
This commit is the same as 0e8f289d7d
but this commit is for meson.

To use vector graphics in efl csharp bindings, it is permitted to
generate efl_canvas_vg_object.eo.cs.

Other efl_canvas_vg .eo.cs files have already been generated because the
file names were changed from efl_vg to efl_canvas_vg.
2019-05-13 13:30:14 +09:00
Jaehyun Cho ecce35c555 efl_mono: move libeflcustomexportsmono.so to lib with versions by meson
meson generates libeflcustomexportsmono.so to lib/efl-mono-1/ directory
unlike other so files.
Moreover, the so file does not have versions in the file name unlike
other so files.

Like other so files, libeflcustomexportsmono.so is moved to lib
directory with versions in the file name.
2019-05-13 13:30:08 +09:00
Xavi Artigas 04a41a3712 mono-docs: Allow embedding external examples
Summary:
New option added to eolian_gen: -e <dir>
This specifies a directory to search for examples. If a file is found with the
same name as an EFL C# class (e.g. Efl.Ui.Button.cs) or as an EFL C# method or
property (e.g. Efl.IText.Text.cs, Efl.IText.SetText.cs) its full
contents will be embedded in the documentation for that class or method within
<example> and <code> tags. This is, in turn, is parsed by DocFX and shown
in Example boxes in the generated pages.
If an example file is not found, no examples are embedded for that object.
If -e is not used, no examples are embedded for any object.

New option added to meson: mono-examples-dir to point to the examples directory.
This directory is then passed to eolian_mono through -e.
Do not use it (or define it to nothing) to disable example embedding.

No performance drop has been observed because of these extra tests.

Right now examples can only be given for base classes, not for derived ones
(i.e. Efl.IText.Text but not Efl.Ui.Button.Text). This will be addressed in a
later commit.

Feature
Depends on D8587

Test Plan:
Create an examples folder and put some files in it:
```
mkdir /tmp/examples
echo 'var button = new Efl.Ui.Button();' > /tmp/examples/Efl.Ui.Button.cs
echo 'button.AutoRepeatEnabled = true;' > /tmp/examples/Efl.Ui.IAutorepeat.AutorepeatEnabled.cs
echo 'button.SetAutoRepeatEnabled(true);' > /tmp/examples/Efl.Ui.IAutorepeat.SetAutorepeatEnabled.cs
```
Configure meson to embed examples and build:
```
meson configure -Dmono-examples-dir=/tmp/examples
ninja
```
Examine the generated efl_ui_button.eo.cs file to see embedded <example> tags,
or run DocFX and bask in the glory of documentation pages with examples:
```
cd doc/docfx
./gendoc.sh
```

Reviewers: lauromoura, felipealmeida, vitor.sousa, zmike, bu5hm4n

Reviewed By: vitor.sousa

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8592
2019-04-11 10:39:09 +02:00
Vitor Sousa 1c22a3d819 efl-csharp: fix resource deallocation causing errors everywhere
Summary:
This commit mainly fixes errors caused by deallocating resources in the garbage
collector thread. Using `ecore_main_loop_thread_safe_call_async` to queue
resource deallocation in the main thread seems to solve it.

Also, some `efl_ref` calls are added in places they were missing, mainly
objects that unref in the destructor thus taking ownership if efl_ref is not
called.

Also fix improper resource deallocation in tests that were causing it to crash,
enabling it to call Efl.All.Shutdown again. This allocation and the deallocation
process was moved from the Eo class constructor to static class methods that are
called in the test 'set up' and 'tear down' methods.

Queuing resource deallocation in the main thread make it mandatory that tests
call `Efl.App.AppMain.Iterate()` if they want to check proper resource
deallocation (like TestFunctionPointers.set_callback_inherited_called_from_c).

Extras:
Remove duplicated declaration of 'eflcustomexportsmono' in meson in order to fix
some linking problems.

Remove some unused code around deallocation functions that had to be reworked.

Object allocation is now supplied with the call site information it expects
(file name and line for _efl_add_start).

Depends on D8550

Test Plan: meson test

Reviewers: felipealmeida, lauromoura, cedric, segfaultxavi

Reviewed By: lauromoura

Subscribers: segfaultxavi

Tags: #efl_language_bindings, #do_not_merge

Differential Revision: https://phab.enlightenment.org/D8431
2019-04-05 19:58:19 -03:00
Lauro Moura 0860c4f1d7 csharp: Remove missing doc warning by filling them.
Summary:
Added basic documentation for things that were missing.

Some other files are silent due to a pragma disabling CS1591. They
should be handled later.

Also, removed `Efl.Io.Positioner` from the blacklist as it is referenced
from the `Efl.Io.Reader.eos` event documentation.

Reviewers: segfaultxavi

Reviewed By: segfaultxavi

Subscribers: felipealmeida, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8370
2019-03-20 11:35:58 +01:00
Lauro Moura 9c99397cda meson: Enable generation of C# docs.
Summary:
In order to correctly install the xml file alongside the dll, a install
script is used to work around meson's limitation of tracking files
generated by library() other than the dll.

Fixes T7722

Reviewers: segfaultxavi, bu5hm4n

Reviewed By: segfaultxavi, bu5hm4n

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7722

Differential Revision: https://phab.enlightenment.org/D8331
2019-03-15 10:44:06 +01:00
Lauro Moura f29ceef500 efl-csharp: Respect beta for classes and other stuff.
Summary:
In order to work around an issue with Efl.App, which is stable but
inherits from Efl.Core.Command_Line, @beta interfaces/mixins in the
inheritance chain are simply skipped.

Also changed the class used int test for inheritance from C#

Efl.Loop is stable but internally it uses a @beta class as argument to
its Register() method in the constructor. When instantiating a
user-defined C# subclass, the binding calls the C# override in the
NativeInherit class and the marshalling fails as no code is generated
for the beta class.

Also moved Efl.Part test to a beta class. Efl.Part is still beta.

Regarding parts, they are skipped if its class is @beta too.

Also rejected all elm_* files in elm public eo files. They should get
back in as they are converted to Efl.Ui.* api. An exception is
elm_interface_scrollable.eo, as efl_ui_panel depends on it.

Fixes T7730

Test Plan: Run tests

Reviewers: vitor.sousa, segfaultxavi, felipealmeida, cedric, bu5hm4n, zmike

Reviewed By: vitor.sousa

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7730

Differential Revision: https://phab.enlightenment.org/D8268
2019-03-11 16:08:04 -03:00
Mike Blumenkrantz 3a1c4229f4 elm_glview: remove all legacy usage from eo files
this takes the current generated output from eolian for legacy code in
efl and adds it to the tree, then removes legacy references from the
corresponding eo files. in the case where the entire eo file was for
a legacy object, that eo file has been removed from the tree

ref T7724

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D8173
2019-03-07 14:15:24 -08:00
Lauro Moura c67f199b2f efl-csharp: Respect beta in constructor parameters.
Summary:
Fixes compilation after Efl.Ui.Win parameter changes.

Also removed an unused var and now we pass the beta option to the eolian
mono invocation for the tests.

Fixes T7723

Reviewers: segfaultxavi, felipealmeida, vitor.sousa

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7723

Differential Revision: https://phab.enlightenment.org/D8150
2019-03-07 13:03:33 +01:00
Lauro Moura 595c863fed efl_csharp: Use cs_args instead of runtime_Assemblies
This will erase the need of the `runtime_assemblies` kw_arg, allowing ot
use a single invocation without warnings about unsupported parameters.

Reviewed-by: Marcel Hollerbach <marcel-hollerbach@t-online.de>
Differential Revision: https://phab.enlightenment.org/D8092
2019-03-06 19:05:50 +01:00
Felipe Magno de Almeida f392c5a436 efl-mono: Add support for dotnet core
Summary:
This commits adds dotnet as a supported C# platform for EFL# bindings.

Due to differences between Mono and Dotnet regarding DllImport, the
bindings now are using an imperative approach to load the function
pointers through the NativeModule and FunctionWrapper classes. These
classes handle the dlopen/LoadLibrary and dlsym/GetProcAddress calls.

Also, the previous caching of non-owned strings returned to native code
was removed until further memory checks.

We also had to create workaround for bool and chars in Structs for C#
marshaling. Going through System.Byte instead and Marshaling manually
to their respective types.

In order to actually build efl_mono.dll with dotnet right now,
issue #4782 from Meson should be fixed to make it properly detect and
used the Dotnet compiler. Also use "-Ddotnet=true" when running meson.

Fixes T7394

Reviewers: felipealmeida, vitor.sousa, bu5hm4n

Reviewed By: vitor.sousa

Subscribers: cedric

Tags: #efl

Maniphest Tasks: T7394

Differential Revision: https://phab.enlightenment.org/D8069
2019-03-01 23:58:56 -03:00
Lauro Moura dd89eb2fd1 efl-mono: Add support for Efl.Class
Efl.Class (in practice, the return from the *_class_get() functions) can
be used as argument to functions, like in Efl.Object.provider_find and
Efl.Ui.Widget_Factory.item_class(get/set).

This commits adds support by representing Efl.Class instances
as System.Type in the C# API, allowing someone to do things like:

`factory.ItemClass == typeof(MyFramework.MyButton)`

It also supports user-defined classes that inherit from efl classes.
2019-03-01 23:04:08 -03:00
Lauro Moura 401f695644 efl-csharp: Remove legacy Evas bindings.
Summary: Pave the way to correct beta classes handling.

Reviewers: vitor.sousa, segfaultxavi, bu5hm4n

Reviewed By: vitor.sousa, bu5hm4n

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8004
2019-02-25 19:21:04 -03:00
Daniel Kolesa 0976e9adf3 elementary: internalize elm_combobox, expose legacy only
This is bad eo API, and won't remain like that, so completely
remove it from being managed by Eolian.
2019-01-17 15:54:24 +01:00
Lauro Moura 586bc5207e efl-mono: Enable selecting to build @beta items
Summary:
For autotools, use --enable-csharp-beta to enable the generation of beta
methods and properties, for meson use -Dmono-beta=true.

By default, no beta method or property is generated.

Reviewers: woohyun, segfaultxavi, bu5hm4n, lauromoura

Reviewed By: woohyun

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7637
2019-01-17 21:45:49 +09:00
Felipe Magno de Almeida a8e23cc400 efl-mono: Add efl_mono.dll.config file to run tests from within tree
Required by some distros like Arch.

Reviewed-by: Marcel Hollerbach <marcel-hollerbach@t-online.de>
Reviewed-by: Felipe Magno de Almeida <felipe@expertisesolutions.com.br>
Differential Revision: https://phab.enlightenment.org/D7527
2019-01-04 12:07:03 +01:00
Carsten Haitzler 91990b7cf8 meson - fix pc file versions that were missing mirco version 2018-12-27 11:54:30 +00:00
Marcel Hollerbach 852dd60cdb meson: do not add cs as required compiler
Summary: its only required when having mono

Reviewers: q66, netstar, jeyzu

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7213
2018-10-25 23:40:31 +02:00
Marcel Hollerbach 6f9761ff54 meson: time for the c-sharp build
The tests are added and build. For running C# code please see the wiki.

you can enable -Dmono=true

Differential Revision: https://phab.enlightenment.org/D7203
2018-10-24 12:05:58 +02:00