Skip to content

Commit

Permalink
Merge pull request #87 from gircore/Fix_84
Browse files Browse the repository at this point in the history
Enable DBus sample
  • Loading branch information
badcel authored Oct 28, 2020
2 parents bd6a187 + 3a043a7 commit 43e1ceb
Show file tree
Hide file tree
Showing 7 changed files with 50 additions and 33 deletions.
2 changes: 1 addition & 1 deletion Generator/Templates/Shared/enum_member.sbntxt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{{ $1.name | fix_identifier }} = {{$1.value}},
{{ $1.name | fix_identifier | make_pascal_case}} = {{$1.value}},
6 changes: 3 additions & 3 deletions Libs/GLib/Classes/VariantType.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ public partial class VariantType : IDisposable
{
#region Static Member

//public static VariantType String = new VariantType("s");
//public static VariantType Variant = new VariantType("v");
public static readonly VariantType String = new VariantType("s");
public static readonly VariantType Variant = new VariantType("v");

#endregion

Expand Down Expand Up @@ -49,4 +49,4 @@ public void Dispose()

#endregion
}
}
}
8 changes: 4 additions & 4 deletions Libs/GObject/Classes/Signal.cs
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ public static Signal Register(string name, SignalFlags flags, Type returnType, p
/// <returns>
/// An instance of <see cref="Signal"/> which describes the registered signal.
/// </returns>
public static Signal Register(string name, SignalFlags flags = SignalFlags.run_last)
public static Signal Register(string name, SignalFlags flags = SignalFlags.RunLast)
{
return new Signal(name, flags, Type.None, Array.Empty<Type>());
}
Expand All @@ -136,7 +136,7 @@ public static Signal Register(string name, SignalFlags flags = SignalFlags.run_l
public static Signal Wrap(string name)
{
// Here only the signal name is relevant, other parameters are not used.
return new Signal(name, SignalFlags.run_last, Type.None, Array.Empty<Type>());
return new Signal(name, SignalFlags.RunLast, Type.None, Array.Empty<Type>());
}

/// <summary>
Expand Down Expand Up @@ -233,7 +233,7 @@ internal Signal(string name, SignalFlags flags, Type returnType, Type[] paramTyp
public new static Signal<TSender, TSignalArgs> Wrap(string name)
{
// Here only the signal name is relevant, other parameters are not used.
return new Signal<TSender, TSignalArgs>(name, SignalFlags.run_last, Type.None, Array.Empty<Type>());
return new Signal<TSender, TSignalArgs>(name, SignalFlags.RunLast, Type.None, Array.Empty<Type>());
}

/// <summary>
Expand Down Expand Up @@ -317,7 +317,7 @@ internal Signal(string name, SignalFlags flags, Type returnType, Type[] paramTyp
public new static Signal<TSender> Wrap(string name)
{
// Here only the signal name is relevant, other parameters are not used.
return new Signal<TSender>(name, SignalFlags.run_last, Type.None, Array.Empty<Type>());
return new Signal<TSender>(name, SignalFlags.RunLast, Type.None, Array.Empty<Type>());
}

/// <summary>
Expand Down
21 changes: 18 additions & 3 deletions Libs/Gio/Classes/DBusConnection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ namespace Gio
{
public partial class DBusConnection
{
#region Methods
#region Static methods

public static DBusConnection Get(BusType busType)
{
IntPtr handle = Global.bus_get_sync(busType, IntPtr.Zero, out IntPtr error);
Expand All @@ -17,6 +18,10 @@ public static DBusConnection Get(BusType busType)

return new DBusConnection(handle);
}

#endregion

#region Methods

public Task<Variant> CallAsync(string busName, string objectPath, string interfaceName, string methodName,
Variant? parameters = null)
Expand All @@ -32,11 +37,21 @@ void Callback(IntPtr sourceObject, IntPtr res, IntPtr userData)
}

IntPtr @params = parameters?.Handle ?? IntPtr.Zero;
Native.call(Handle, busName, objectPath, interfaceName, methodName, @params, IntPtr.Zero, DBusCallFlags.none, -1, IntPtr.Zero, Callback, IntPtr.Zero);
Native.call(Handle, busName, objectPath, interfaceName, methodName, @params, IntPtr.Zero, DBusCallFlags.None, -1, IntPtr.Zero, Callback, IntPtr.Zero);

return tcs.Task;
}

public Variant Call(string busName, string objectPath, string interfaceName, string methodName, Variant? parameters = null)
{
IntPtr @params = parameters?.Handle ?? IntPtr.Zero;
IntPtr ret = Native.call_sync(Handle, busName, objectPath, interfaceName, methodName, @params, IntPtr.Zero, DBusCallFlags.None, 9999, IntPtr.Zero, out IntPtr error);

HandleError(error);

return new Variant(ret);
}

#endregion
}
}
}
8 changes: 3 additions & 5 deletions Samples/DBus/Program.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
using System;

namespace Samples
namespace Samples
{
class Program
internal static class Program
{
static void Main(string[] args)
private static void Main(string[] args)
{
Sample.DBus.ShowApplicationsAsync();
Sample.DBus.SendNotification();
Expand Down
24 changes: 11 additions & 13 deletions Samples/DBus/SendNotification.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,28 @@

namespace Sample
{
public partial class DBus
public static partial class DBus
{
public static void SendNotification()
{
/*TODO: FIX
Console.WriteLine("Press enter to send notification...");
Console.ReadLine();

//Notification spec: https://developer.gnome.org/notification-spec/

var bus = Connection.Get(BusType.Session);
var bus = DBusConnection.Get(BusType.Session);
using var parameters = new Variant(
new Variant("AppName"),
new Variant(0u),
new Variant(""), //Icon
new Variant("Summary"),
new Variant("Body"),
new Variant(new string[0]),
Variant.Create("AppName"),
Variant.Create(0u),
Variant.Create(""), //Icon
Variant.Create("Summary"),
Variant.Create("Body"),
Variant.Create(new string[0]),
Variant.CreateEmptyDictionary(VariantType.String, VariantType.Variant),//hints
new Variant(999)
Variant.Create(999)
);

using var ret2 = bus.Call("org.freedesktop.Notifications", "/org/freedesktop/Notifications", "org.freedesktop.Notifications", "Notify", parameters);
*/
using Variant ret = bus.Call("org.freedesktop.Notifications", "/org/freedesktop/Notifications", "org.freedesktop.Notifications", "Notify", parameters);
}
}
}
}
14 changes: 10 additions & 4 deletions Samples/DBus/ShowApplicationsAsync.cs
Original file line number Diff line number Diff line change
@@ -1,19 +1,25 @@
using Gio;
using System;
using GLib;

namespace Sample
{
public partial class DBus
public static partial class DBus
{
public static async void ShowApplicationsAsync()
{
Console.WriteLine("Press enter to show applications...");
Console.ReadLine();

var bus = DBusConnection.Get(BusType.session);
using var ret = await bus.CallAsync("org.gnome.Panel", "/org/gnome/Shell", "org.gnome.Shell", "ShowApplications");
var bus = DBusConnection.Get(BusType.Session);
using Variant ret = await bus.CallAsync(
busName: "org.gnome.Panel",
objectPath: "/org/gnome/Shell",
interfaceName: "org.gnome.Shell",
methodName: "ShowApplications"
);

Console.WriteLine(ret.Print(true));
}
}
}
}

0 comments on commit 43e1ceb

Please sign in to comment.