コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
ファイル: OptionsWidget.cs プロジェクト: adamhill/XamlStyler
        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);
        }
コード例 #3
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);
            }
        }
コード例 #4
0
        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;
                }
            }
        }
コード例 #5
0
        /// <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();
            }
        }
コード例 #6
0
        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);
            }
        }
コード例 #7
0
        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);
        }