void DumpGtkWidget(Gtk.Widget widget, int indent = 0) { string spacer = new string (' ', indent); Console.WriteLine($"{spacer} {widget.Accessible.Name} - {widget.GetType ()}"); if (widget.GetType() == typeof(Gtk.Label)) { var label = (Gtk.Label)widget; Console.WriteLine($"{spacer} {label.Text}"); } else if (widget.GetType() == typeof(Gtk.Button)) { var button = (Gtk.Button)widget; Console.WriteLine($"{spacer} {button.Label}"); } var container = widget as Gtk.Container; if (container != null) { var children = container.Children; Console.WriteLine($"{spacer} Number of children: {children.Length}"); foreach (var child in children) { DumpGtkWidget(child, indent + 3); } } }
private void AddToTable(uint row, uint col, Gtk.Widget control, uint colSpan = 1) { var box = new Gtk.EventBox(); var al = new Gtk.Alignment(0, 0, control.GetType() == typeof(Gtk.Entry) ? 1 : 0, 1); al.SetPadding(0, 0, 5, 5); al.Add(control); box.Add(al); if (row % 2 == 1) { box.ModifyBg(Gtk.StateType.Normal, _altRowColor); } tblContainer.Attach(box, col, col + colSpan, row, row + 1, Gtk.AttachOptions.Fill, Gtk.AttachOptions.Fill, 0, 0); }
void SendKeyEvent(Gtk.Widget target, uint keyval, Gdk.ModifierType state, Gdk.EventType eventType, string subWindow) { Gdk.KeymapKey[] keyms = Gdk.Keymap.Default.GetEntriesForKeyval(keyval); if (keyms.Length == 0) { throw new Exception("Keyval not found"); } Gdk.Window win; if (subWindow == null) { win = target.GdkWindow; } else { win = (Gdk.Window)GetValue(target, target.GetType(), subWindow); } NativeEventKeyStruct nativeEvent = new NativeEventKeyStruct(); nativeEvent.type = eventType; nativeEvent.send_event = 1; nativeEvent.window = win.Handle; nativeEvent.state = (uint)state; nativeEvent.keyval = keyval; nativeEvent.group = (byte)keyms[0].Group; nativeEvent.hardware_keycode = (ushort)keyms[0].Keycode; nativeEvent.length = 0; nativeEvent.time = Gtk.Global.CurrentEventTime; IntPtr ptr = GLib.Marshaller.StructureToPtrAlloc(nativeEvent); try { Gdk.EventKey evnt = new Gdk.EventKey(ptr); Gdk.EventHelper.Put(evnt); } finally { Marshal.FreeHGlobal(ptr); } }
public TemplatesMenu(Gtk.Widget widget, Gtk.Menu menu, Wrappers.Node grp, bool recursive, WrapperFilter filter) { d_menu = menu; d_filter = filter; d_recursive = recursive; d_map = new Dictionary <Wrappers.Wrapper, MenuInfo>(); d_group = grp; d_map[grp] = new MenuInfo(null, d_menu); d_widget = widget; if (d_widget != null) { d_menuProperty = d_widget.GetType().GetProperty("Menu"); } Traverse(grp, d_menu); if (d_menuProperty != null) { grp.ChildRemoved += delegate { if (d_menu.Children.Length == 0) { d_menuProperty.SetValue(d_widget, null, null); grp.ChildAdded += HideShowMenu; } }; if (d_menu.Children.Length > 0) { d_menuProperty.SetValue(d_widget, d_menu, null); } else { grp.ChildAdded += HideShowMenu; } } }
/// <summary> /// Disconnects everything inside specified widget /// </summary> /// <param name="aWidget"> /// Widget to be disconnected <see cref="Gtk.Widget"/> /// </param> public static void Disconnect(Gtk.Widget aWidget) { if (aWidget == null) { return; } if (System.Data.Bindings.TypeValidator.IsCompatible(aWidget.GetType(), typeof(Gtk.Container)) == true) { foreach (Gtk.Widget wdg in (aWidget as Gtk.Container).Children) { Disconnect(wdg); } } if ((aWidget is System.Data.Bindings.IDisconnectable) == true) { (aWidget as System.Data.Bindings.IDisconnectable).Disconnect(); } else if ((aWidget is System.Data.Bindings.IChangeableControl) == true) { (aWidget as System.Data.Bindings.IChangeableControl).Adaptor.Disconnect(); } }
public static void InitializeComponent(Gtk.Widget widget) { var type = widget.GetType(); var name = type.FullName + ".xaml"; using (var stream = type.Assembly.GetManifestResourceStream(name)) { var xr = new XamlXmlReader( stream, new XamlXmlReaderSettings { LocalAssembly = type.Assembly, }); var xw = new XamlObjectWriter( xr.SchemaContext, new XamlObjectWriterSettings { RootObjectInstance = widget }); XamlServices.Transform(xr, xw); } }
public CueSheetsSource() : base(AddinManager.CurrentLocalizer.GetString("CueSheets"), AddinManager.CurrentLocalizer.GetString("CueSheets"), //"cuesheets", sort_order) //, //"hod-cuesheets-2013-01-06") { Hyena.Log.Information("CueSheetsSouce init"); DbConnection = ServiceManager.DbConnection; TM_Provider = DatabaseTrackInfo.Provider; _track_info_db = new CS_TrackInfoDb(DbConnection); _sheet = new CueSheet(); _sheets = new CueSheetCollection(); _view = new CueSheetsView(this); Properties.Set <ISourceContents> ("Nereid.SourceContents", _view); Properties.SetString("Icon.Name", "cueplay"); Hyena.Log.Information("CueSheets source has been instantiated."); Properties.Set <string> ("SearchEntryDescription", Catalog.GetString("Search albums and tracks")); try { Properties.SetString("GtkActionPath", "/CueSheetsPopup"); _actions = new CS_Actions(this); Hyena.Log.Information(_actions.ToString()); } catch (System.Exception ex) { Hyena.Log.Information(ex.ToString()); } InterfaceActionService action_service = ServiceManager.Get <InterfaceActionService> (); try { _track_search = new Gtk.CheckButton("Search Tracks"); _track_search.Clicked += delegate(object sender, EventArgs args) { this.DoFilter(); }; Gtk.Toolbar header_toolbar = (Gtk.Toolbar)action_service.UIManager.GetWidget("/HeaderToolbar"); int i, N, k; for (i = 0, k = -1, N = header_toolbar.NItems; i < N; i++) { Gtk.Widget w = header_toolbar.GetNthItem(i).Child; if (w != null) { if (w.GetType() == typeof(Banshee.Gui.Widgets.ConnectedVolumeButton)) { k = i; } } } if (k >= 0) { Hyena.Log.Information("Toolitem itm"); Gtk.ToolItem itm = new Gtk.ToolItem(); Hyena.Log.Information("Add cbk"); itm.Add(_track_search); Hyena.Log.Information("Insert cbk"); header_toolbar.Insert(itm, k); itm.Show(); } } catch (System.Exception ex) { Hyena.Log.Error(ex.ToString()); } Gtk.Menu viewMenu = (action_service.UIManager.GetWidget("/MainMenu/ViewMenu") as Gtk.MenuItem).Submenu as Gtk.Menu; _menuItem = new Gtk.MenuItem(Catalog.GetString("_Change Album View")); _menuItem.Activated += delegate { _view.ToggleGrid(); }; viewMenu.Insert(_menuItem, 2); _sep = new Gtk.SeparatorMenuItem(); viewMenu.Insert(_sep, 3); }