예제 #1
0
        public GameObject InstantiateMenuItemGO(Transform parent, MenuItemId menuItem, int index)
        {
            string     menuName = string.Format(@"Menu/Menu_{0}_{1}", menuItem.GetHashCode(), index);
            GameObject prefab   = LoadPrefabResource(menuName);

            if (prefab == null)
            {
                return(null);
            }

            GameObject obj = GameObject.Instantiate(prefab);

            obj.transform.parent = parent;

            obj.transform.localPosition = new Vector3(-1.2f, 0, -0.8f);
            obj.transform.localRotation = Quaternion.Euler(270, 90, 90);
            obj.transform.localScale    = new Vector3(0.1f, 0.1f, 0.1f);

            var renderer = obj.GetComponentInChildren <MeshRenderer>();

            renderer.sharedMaterial = MaterialDefault;
            var clr = renderer.sharedMaterial.color;

            renderer.sharedMaterial.color = new Color(clr.r, clr.g, clr.b, 1.0f);

            return(obj);
        }
예제 #2
0
        void UpdateRoutesButton()
        {
            var menu = new Menu();

            foreach (var route in ViewModel.RoutesOnDay)
            {
                var carrierInfo = string.Format("№{0} - {1}", route.Id, route.Driver.ShortName);
                if (route.GeographicGroups.Any())
                {
                    carrierInfo = string.Concat(carrierInfo, " (", route.GeographicGroups.FirstOrDefault().Name, ')');
                }
                carrierInfo = string.Concat(
                    carrierInfo,
                    string.Format("; {0} кг; {1} куб.м.", route.Car?.MaxWeight, route.Car?.MaxVolume)
                    );
                var item = new MenuItemId <RouteList>(carrierInfo)
                {
                    ID = route
                };
                item.Activated += AddToRLItem_Activated;
                menu.Append(item);
            }
            menu.ShowAll();
            menuAddToRL.Menu = menu;
        }
예제 #3
0
        protected void SetMenu(int index, MenuItemId menuItemId, bool enabled, Func <StateOperationResult> action)
        {
            if (index < 0 || index >= 4)
            {
                return;
            }

            this.MenuItemIds[index]     = menuItemId;
            this.MenuActions[index]     = action;
            this.MenuItemEnabled[index] = enabled;
        }
예제 #4
0
        protected override bool OnButtonReleaseEvent(Gdk.EventButton evnt)
        {
            if (QSMain.User.Permissions["worker"])
            {
                return(false);
            }

            if (evnt.Button == 3)
            {
                Gtk.Menu jBox = new Gtk.Menu();
                MenuItem MenuItem1;
                MenuItemId <OrderTypeClass> MenuItem2;

                if (ParentCalendar == null)
                {
                    return(false);
                }

                if (ParentCalendar.OrdersTypes == null || ParentCalendar.OrdersTypes.Count == 0)
                {
                    throw new InvalidOperationException("Типы заказов для календаря не установлены.");
                }
                else if (ParentCalendar.OrdersTypes.Count == 1 && TypeItemButton == TypeItemOrButton.Order)
                {
                    MenuItem2    = new MenuItemId <OrderTypeClass>("Новый заказ");
                    MenuItem2.ID = ParentCalendar.OrdersTypes.First();
                    MenuItem2.ButtonPressEvent += OnButtonPopupAddWithType;
                    jBox.Add(MenuItem2);
                }
                else if (TypeItemButton == TypeItemOrButton.Order)
                {
                    MenuItem1         = new MenuItem("Новый заказ");
                    MenuItem1.Submenu = GetNewOrderTypesMenu();
                    jBox.Add(MenuItem1);
                }

                if (TypeItemButton == TypeItemOrButton.Order)
                {
                    MenuItem1           = new MenuItem("Перенести");
                    MenuItem1.Sensitive = calendarItem != null;
                    MenuItem1.Submenu   = GetOrderWeekMoveMenu();
                    jBox.Add(MenuItem1);
                }

                MenuItem1            = new MenuItem("Удалить");
                MenuItem1.Sensitive  = calendarItem != null;
                MenuItem1.Activated += OnButtonPopupDelete;
                jBox.Add(MenuItem1);
                jBox.ShowAll();
                jBox.Popup();
            }

            return(base.OnButtonReleaseEvent(evnt));
        }
예제 #5
0
        public UIMenuItem PlaceMenuItem(MenuItemId menuItemId, FDPosition position, FDPosition showUpPosition, bool enabled, bool selected)
        {
            GameObject obj = new GameObject();

            obj.transform.parent = fieldObjectsRoot;

            var menuItem = obj.AddComponent <UIMenuItem>();

            menuItem.Initialize(this, menuItemId, position, showUpPosition, enabled, selected);

            cancellableObjects.Add(obj);

            return(menuItem);
        }
예제 #6
0
        private Gtk.Menu GetNewOrderTypesMenu()
        {
            Gtk.Menu jBox2 = new Gtk.Menu();
            MenuItemId <OrderTypeClass> MenuItem2;

            foreach (var type in ParentCalendar.OrdersTypes)
            {
                MenuItem2    = new MenuItemId <OrderTypeClass>(type.Name);
                MenuItem2.ID = type;
                MenuItem2.ButtonPressEvent += OnButtonPopupAddWithType;
                jBox2.Add(MenuItem2);
            }
            return(jBox2);
        }
예제 #7
0
        void TreeviewRows_ButtonReleaseEvent(object o, ButtonReleaseEventArgs args)
        {
            if (args.Event.Button != 3 || ViewModel.CurrentStep != 2)
            {
                return;
            }
            var menu     = new Menu();
            var selected = treeviewRows.GetSelectedObject <ISheetRow>();
            var item     = new MenuItemId <ISheetRow>(selected.UserSkipped ? "Загружать" : "Не загружать");

            item.ID         = selected;
            item.Activated += Item_Activated;
            menu.Add(item);
            menu.ShowAll();
            menu.Popup();
        }
예제 #8
0
 public static Gtk.Menu GetPopupMenu(Order[] selected)
 {
     Menu popupMenu = new Gtk.Menu();
     MenuItemId<Order[]> menuItemYandex = new MenuItemId<Order[]>("Открыть на Yandex картах(координаты)");
     menuItemYandex.Activated += MenuItemYandex_Activated;
     menuItemYandex.ID = selected;
     popupMenu.Add(menuItemYandex);
     MenuItemId<Order[]> menuItemYandexAddress = new MenuItemId<Order[]>("Открыть на Yandex картах(адрес)");
     menuItemYandexAddress.Activated += MenuItemYandexAddress_Activated;
     menuItemYandexAddress.ID = selected;
     popupMenu.Add(menuItemYandexAddress);
     MenuItemId<Order[]> menuItemOSM = new MenuItemId<Order[]>("Открыть на карте OSM");
     menuItemOSM.Activated += MenuItemOSM_Activated;
     menuItemOSM.ID = selected;
     popupMenu.Add(menuItemOSM);
     return popupMenu;
 }
예제 #9
0
        void YtreeItems_ButtonReleaseEvent(object o, ButtonReleaseEventArgs args)
        {
            if (args.Event.Button == 3)
            {
                var selected = table.GetSelectedObjects <TransferItem>().FirstOrDefault();
                if (selected == null)
                {
                    return;
                }

                var menu = new Menu();
                var item = new MenuItemId <TransferItem>("Открыть номенклатуру");
                item.ID         = selected;
                item.Sensitive  = selected.Nomenclature != null;
                item.Activated += Item_Activated;
                menu.Add(item);
                menu.ShowAll();
                menu.Popup();
            }
        }
예제 #10
0
        public static Gtk.Menu GetPopupMenu(Order[] selected)
        {
            Menu popupMenu = new Gtk.Menu();
            MenuItemId <Order[]> menuItemYandex = new MenuItemId <Order[]>("Открыть на Yandex картах(координаты)");

            menuItemYandex.Activated += MenuItemYandex_Activated;
            menuItemYandex.ID         = selected;
            popupMenu.Add(menuItemYandex);
            MenuItemId <Order[]> menuItemYandexAddress = new MenuItemId <Order[]>("Открыть на Yandex картах(адрес)");

            menuItemYandexAddress.Activated += MenuItemYandexAddress_Activated;
            menuItemYandexAddress.ID         = selected;
            popupMenu.Add(menuItemYandexAddress);
            MenuItemId <Order[]> menuItemOSM = new MenuItemId <Order[]>("Открыть на карте OSM");

            menuItemOSM.Activated += MenuItemOSM_Activated;
            menuItemOSM.ID         = selected;
            popupMenu.Add(menuItemOSM);
            return(popupMenu);
        }
예제 #11
0
        void IViewModel.OnMenuItemClicked(ViewItem viewItem, MenuItemId menuItemId)
        {
            switch (menuItemId)
            {
            case MenuItemId.Visible:
                ToggleVisibleProperty(viewItem);
                break;

            case MenuItemId.Pinned:
                TogglePinnedProperty(viewItem);
                break;

            case MenuItemId.VisibleOnTimeline:
                ToggleVisibleOnTimelineProperty(viewItem);
                break;

            case MenuItemId.Delete:
                Delete(viewItem);
                break;
            }
        }
예제 #12
0
        public override void Start(IGameInterface gameInterface)
        {
            if (pack == null)
            {
                return;
            }

            menuItems = new UIMenuItem[4];
            FDPosition pos = pack.Position;

            FDPosition[] positions = new FDPosition[4]
            {
                FDPosition.At(pos.X - 1, pos.Y),
                FDPosition.At(pos.X, pos.Y - 1),
                FDPosition.At(pos.X + 1, pos.Y),
                FDPosition.At(pos.X, pos.Y + 1)
            };

            bool hasSelected = false;

            for (int i = 0; i < 4; i++)
            {
                MenuItemId itemId     = pack.MenuItems[i];
                bool       enabled    = pack.Enabled[i];
                bool       isSelected = false;
                if (enabled && !hasSelected)
                {
                    isSelected  = true;
                    hasSelected = true;
                }

                // Place the Menu on map
                menuItems[i] = gameInterface.PlaceMenuItem(itemId, positions[i], pos, enabled, isSelected);
            }

            for (int i = 0; i < 4; i++)
            {
                menuItems[i].RelatedMenuItems = menuItems;
            }
        }
예제 #13
0
        private int HookProc(int code, IntPtr wParam, ref KeyboardLLHookStruct lParam)
        {
            if (code == HC_ACTION)
            {
                if (wParam.ToInt32() == WM_KEYDOWN || wParam.ToInt32() == WM_SYSKEYDOWN)
                {
                    foreach (var item in _menuItems)
                    {
                        var key1 = true;
                        var key2 = true;

                        if (item.Key1 != VirtualKeyModifier.None)
                        {
                            var key1State = GetAsyncKeyState((int)item.Key1) & 0x8000;
                            key1 = Convert.ToBoolean(key1State);
                        }

                        if (item.Key2 != VirtualKeyModifier.None)
                        {
                            var key2State = GetAsyncKeyState((int)item.Key2) & 0x8000;
                            key2 = Convert.ToBoolean(key2State);
                        }

                        if (key1 && key2 && lParam.vkCode == (int)item.Key3)
                        {
                            var handler = Hooked;
                            if (handler != null)
                            {
                                var menuItemId = MenuItemId.GetId(item.Name);
                                var eventArgs  = new HotKeyEventArgs(menuItemId);
                                handler.BeginInvoke(this, eventArgs, null, null);
                                break;
                            }
                        }
                    }
                }
            }

            return(CallNextHookEx(_hookHandle, code, wParam, ref lParam));
        }
예제 #14
0
        public void UpdateMenu()
        {
            logger.Info("Создаем меню новостей..");
            var newsMenu = new Menu();
            MenuItemId <SyndicationItem> newsItem;

            foreach (var news in viewModel.News)
            {
                Label itemLabel = new Label();
                itemLabel.Markup = ItemFormat(news.Item.Title.Text, news.Read);
                newsItem         = new MenuItemId <SyndicationItem>();
                newsItem.Add(itemLabel);
                newsItem.ID            = news.Item;
                newsItem.TooltipMarkup = String.Format("<b>{0:D}</b> {1}", news.Item.PublishDate, news.Item.Summary.Text);
                newsItem.Activated    += OnNewsActivated;
                newsMenu.Append(newsItem);
            }
            this.Submenu = newsMenu;
            UpdateIcon();
            newsMenu.ShowAll();
            logger.Info("Ок");
        }
예제 #15
0
        void YtreeItems_ButtonReleaseEvent(object o, ButtonReleaseEventArgs args)
        {
            if (args.Event.Button != 3)
            {
                return;
            }
            var menu     = new Menu();
            var selected = ytreeviewItems.GetSelectedObjects <IssuanceSheetItem>();
            var item     = new MenuItemId <IssuanceSheetItem[]>("Открыть номенклатуру");

            item.ID = selected;
            if (selected == null)
            {
                item.Sensitive = false;
            }
            else
            {
                item.Activated += Item_Activated;
            }
            menu.Add(item);
            menu.ShowAll();
            menu.Popup();
        }
예제 #16
0
        private Gtk.Menu GetOrderWeekMoveMenu()
        {
            Gtk.Menu         jBox2 = new Gtk.Menu();
            MenuItemId <int> MenuItem2;

            for (int weeks = 5; weeks >= -5; weeks--)
            {
                if (weeks == 0)
                {
                    jBox2.Add(new SeparatorMenuItem());
                }
                else
                {
                    string text = RusNumber.FormatCase(Math.Abs(weeks), "на {0} неделю", "на {0} недели", "на {0} недель")
                                  + (weeks > 0 ? " вперед" : " назад");

                    MenuItem2    = new MenuItemId <int>(text);
                    MenuItem2.ID = weeks;
                    MenuItem2.ButtonPressEvent += OnButtonPopupMoveWeeks;
                    jBox2.Add(MenuItem2);
                }
            }
            return(jBox2);
        }
예제 #17
0
        public void Initialize(IGameInterface gameInterface, MenuItemId menuItemId, FDPosition position, FDPosition showUpPosition, bool enabled, bool selected)
        {
            this.gameInterface = gameInterface;

            this.gameObject.name = string.Format(@"menuitem_{0}", menuItemId.GetHashCode());

            this.gameObject.transform.localPosition = FieldTransform.GetGroundPixelPosition(showUpPosition);
            Vector3     menuLocalPosition = FieldTransform.GetGroundPixelPosition(position);
            MenuSliding sliding           = this.gameObject.AddComponent <MenuSliding>();

            sliding.Initialize(menuLocalPosition);

            this.isEnabled  = enabled;
            this.isSelected = selected;
            this.position   = position;

            this.menuItemId = menuItemId;


            var box = this.gameObject.AddComponent <BoxCollider>();

            box.size   = new Vector3(2.4f, 0.2f, 2.4f);
            box.center = new Vector3(0f, 0.2f, 0f);
        }
예제 #18
0
        public static Menu GenerateMenuFromEnum <TEnum>(EventHandler activateHandler)
        {
            var enumType = typeof(TEnum);

            if (enumType == null)
            {
                return(null);
            }

            if (enumType.IsEnum == false)
            {
                throw new NotSupportedException(string.Format("enumType only supports enum types, specified was {0}", enumType));
            }

            var menu = new Menu();

            foreach (FieldInfo info in enumType.GetFields())
            {
                if (info.Name.Equals("value__"))
                {
                    continue;
                }
                var item = new MenuItemId <TEnum>(info.GetEnumTitle());
                var hint = info.GetFieldDescription();

                if (!String.IsNullOrWhiteSpace(hint))
                {
                    item.TooltipText = hint;
                }
                item.Activated += activateHandler;
                item.ID         = (TEnum)info.GetValue(null);
                menu.Add(item);
            }
            menu.ShowAll();
            return(menu);
        }
예제 #19
0
        private void ThreadWorks()
        {
            logger.Info("Поток: Получаем ленты новостей.");
            SyndicationFeed mainFeed = new SyndicationFeed();

            foreach (var feed in MainNewsFeed.NewsFeeds)
            {
                if (!feed.Active)
                {
                    continue;
                }
                SyndicationFeed syndicationFeed;
                try
                {
                    using (XmlReader reader = XmlReader.Create(feed.FeedUri.AbsoluteUri))
                    {
                        syndicationFeed = SyndicationFeed.Load(reader);
                    }
                    syndicationFeed.Id = feed.Id;
                    syndicationFeed.Items.ToList().ForEach(i => i.SourceFeed = syndicationFeed);
                }
                catch (Exception ex)
                {
                    logger.Warn(ex, "Не удалось прочитать feed");
                    continue;
                }
                SyndicationFeed tempFeed = new SyndicationFeed(
                    mainFeed.Items.Union(syndicationFeed.Items).OrderByDescending(u => u.PublishDate));

                mainFeed = tempFeed;
            }
            logger.Info("Создаем меню новостей..");
            Application.Invoke(delegate {
                logger.Info("Запуск операций в основном потоке..");
                UnreadNewsCount = 0;
                var newsMenu    = new Menu();
                MenuItemId <SyndicationItem> newsItem;
                foreach (var news in mainFeed.Items)
                {
                    Label itemLabel = new Label();
                    if (MainNewsFeed.ItemIsRead(news))
                    {
                        itemLabel.Text = news.Title.Text;
                    }
                    else
                    {
                        itemLabel.Markup = String.Format("<b>{0}</b>", news.Title.Text);
                        UnreadNewsCount++;
                    }
                    newsItem = new MenuItemId <SyndicationItem> ();
                    newsItem.Add(itemLabel);
                    newsItem.ID            = news;
                    newsItem.TooltipMarkup = String.Format("<b>{0:D}</b> {1}", news.PublishDate, news.Summary.Text);
                    newsItem.Activated    += OnNewsActivated;
                    newsMenu.Append(newsItem);
                }
                this.Submenu = newsMenu;
                UpdateIcon();
                newsMenu.ShowAll();
                MainNewsFeed.SaveFirstRead();
                logger.Info("Ок");
            });
        }
예제 #20
0
        private void FillGridViewHotKeys(DataGridView gridView, IList <Settings.MenuItem> items, LanguageSettings languageSettings)
        {
            gridView.Tag = items;
            foreach (var item in items)
            {
                if (item.Type == MenuItemType.Item)
                {
                    var index = gridView.Rows.Add();
                    var row   = gridView.Rows[index];
                    var id    = MenuItemId.GetId(item.Name);
                    var title = GetTransparencyTitle(id, languageSettings);
                    title              = title != null ? title : languageSettings.GetValue(item.Name);
                    row.Tag            = item;
                    row.Cells[0].Value = title;
                    row.Cells[1].Value = item == null ? "" : item.ToString();
                    ((DataGridViewCheckBoxCell)row.Cells[2]).Value       = item.Show;
                    ((DataGridViewCheckBoxCell)row.Cells[2]).ToolTipText = languageSettings.GetValue("clm_hotkeys_show_tooltip");
                }

                if (item.Type == MenuItemType.Separator)
                {
                    var index = gridView.Rows.Add();
                    var row   = gridView.Rows[index];
                    var title = languageSettings.GetValue("separator");
                    row.Tag            = item;
                    row.Cells[0].Value = title;
                    row.Cells[1].Value = item == null ? "" : item.ToString();
                    ((DataGridViewCheckBoxCell)row.Cells[2]).Value       = item.Show;
                    ((DataGridViewCheckBoxCell)row.Cells[2]).ToolTipText = languageSettings.GetValue("clm_hotkeys_show_tooltip");
                }

                if (item.Type == MenuItemType.Group)
                {
                    var index = gridView.Rows.Add();
                    var row   = gridView.Rows[index];
                    row.Tag            = item;
                    row.Cells[0].Value = languageSettings.GetValue(item.Name);
                    row.ReadOnly       = true;
                    ((DataGridViewCheckBoxCell)row.Cells[2]).Value        = item.Show;
                    ((DataGridViewCheckBoxCell)row.Cells[2]).ToolTipText  = languageSettings.GetValue("clm_hotkeys_show_tooltip");
                    ((DataGridViewDisableButtonCell)row.Cells[3]).Enabled = false;

                    foreach (var subItem in item.Items)
                    {
                        if (subItem.Type == MenuItemType.Item)
                        {
                            var subItemIndex = gridView.Rows.Add();
                            var subItemRow   = gridView.Rows[subItemIndex];
                            var id           = MenuItemId.GetId(subItem.Name);
                            var title        = GetTransparencyTitle(id, languageSettings);
                            title                     = title != null ? title : languageSettings.GetValue(subItem.Name);
                            subItemRow.Tag            = subItem;
                            subItemRow.Cells[0].Value = title;
                            subItemRow.Cells[1].Value = subItem == null ? "" : subItem.ToString();
                            ((DataGridViewCheckBoxCell)subItemRow.Cells[2]).Value       = subItem.Show;
                            ((DataGridViewCheckBoxCell)subItemRow.Cells[2]).ToolTipText = languageSettings.GetValue("clm_hotkeys_show_tooltip");
                            var padding = subItemRow.Cells[0].Style.Padding;
                            subItemRow.Cells[0].Style.Padding = new Padding(20, padding.Top, padding.Right, padding.Bottom);
                        }

                        if (subItem.Type == MenuItemType.Separator)
                        {
                            var subItemIndex = gridView.Rows.Add();
                            var subItemRow   = gridView.Rows[subItemIndex];
                            var title        = languageSettings.GetValue("separator");
                            subItemRow.Tag            = subItem;
                            subItemRow.Cells[0].Value = title;
                            subItemRow.Cells[1].Value = subItem == null ? "" : subItem.ToString();
                            ((DataGridViewCheckBoxCell)subItemRow.Cells[2]).Value       = subItem.Show;
                            ((DataGridViewCheckBoxCell)subItemRow.Cells[2]).ToolTipText = languageSettings.GetValue("clm_hotkeys_show_tooltip");
                            var padding = subItemRow.Cells[0].Style.Padding;
                            subItemRow.Cells[0].Style.Padding = new Padding(20, padding.Top, padding.Right, padding.Bottom);
                        }
                    }
                }
            }
        }
예제 #21
0
        protected void OnButtonPopupAddWithType(object sender, ButtonPressEventArgs Arg)
        {
            MenuItemId <OrderTypeClass> item = (MenuItemId <OrderTypeClass>)sender;

            OnNewOrderClicked(item.ID);
        }
예제 #22
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

#if WIN32
            if (Environment.Is64BitOperatingSystem)
            {
                var resourceName  = "SmartSystemMenu.SmartSystemMenu64.exe";
                var fileName      = "SmartSystemMenu64.exe";
                var directoryName = Path.GetDirectoryName(AssemblyUtils.AssemblyLocation);
                var filePath      = Path.Combine(directoryName, fileName);
                try
                {
                    if (!File.Exists(filePath))
                    {
                        AssemblyUtils.ExtractFileFromAssembly(resourceName, filePath);
                    }
                    _64BitProcess = Process.Start(filePath);
                }
                catch
                {
                    string message = string.Format("Failed to load {0} process!", fileName);
                    MessageBox.Show(message, AssemblyUtils.AssemblyTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Close();
                    return;
                }
            }

            if (_settings.ShowSystemTrayIcon)
            {
                _systemTrayMenu = new SystemTrayMenu(_settings.Language);
                _systemTrayMenu.MenuItemAutoStartClick += MenuItemAutoStartClick;
                _systemTrayMenu.MenuItemSettingsClick  += MenuItemSettingsClick;
                _systemTrayMenu.MenuItemAboutClick     += MenuItemAboutClick;
                _systemTrayMenu.MenuItemExitClick      += MenuItemExitClick;
                _systemTrayMenu.Create();
                _systemTrayMenu.CheckMenuItemAutoStart(AutoStarter.IsAutoStartByRegisterEnabled(AssemblyUtils.AssemblyProductName, AssemblyUtils.AssemblyLocation));
            }

            var moduleName = Process.GetCurrentProcess().MainModule.ModuleName;

            _hotKeyHook         = new HotKeyHook();
            _hotKeyHook.Hooked += HotKeyHooked;
            if (_settings.MenuItems.Items.Flatten(x => x.Items).Any(x => x.Type == MenuItemType.Item && x.Key3 != VirtualKey.None && x.Show) || _settings.MenuItems.WindowSizeItems.Any(x => x.Key3 != VirtualKey.None))
            {
                _hotKeyHook.Start(moduleName, _settings.MenuItems);
            }

            _hotKeyMouseHook         = new HotKeys.MouseHook();
            _hotKeyMouseHook.Hooked += HotKeyMouseHooked;
            if (_settings.Closer.MouseButton != MouseButton.None)
            {
                _hotKeyMouseHook.Start(moduleName, _settings.Closer.Key1, _settings.Closer.Key2, _settings.Closer.MouseButton);
            }
#endif
            _windows = EnumWindows.EnumAllWindows(_settings, _windowSettings, new string[] { SHELL_WINDOW_NAME }).ToList();

            foreach (var window in _windows)
            {
                var processPath = window.Process?.GetMainModuleFileName() ?? string.Empty;
                var fileName    = Path.GetFileName(processPath);
                if (!string.IsNullOrEmpty(fileName) && _settings.ProcessExclusions.Contains(fileName.ToLower()))
                {
                    continue;
                }

                var isAdded = window.Menu.Create();
                if (isAdded)
                {
                    window.Menu.CheckMenuItem(window.ProcessPriority.GetMenuItemId(), true);
                    if (window.AlwaysOnTop)
                    {
                        window.Menu.CheckMenuItem(MenuItemId.SC_TOPMOST, true);
                    }

                    if (window.IsExToolWindow)
                    {
                        window.Menu.CheckMenuItem(MenuItemId.SC_HIDE_FOR_ALT_TAB, true);
                    }

                    var windowClassName = window.GetClassName();
                    var states          = _windowSettings.Find(windowClassName, processPath);
                    if (states.Any())
                    {
                        window.ApplyState(states[0], _settings.SaveSelectedItems, _settings.MenuItems.WindowSizeItems);
                        window.Menu.CheckMenuItem(MenuItemId.SC_SAVE_SELECTED_ITEMS, true);
                    }
                }
            }

            _callWndProcHook              = new CallWndProcHook(Handle, MenuItemId.SC_DRAG_BY_MOUSE);
            _callWndProcHook.CallWndProc += WindowProc;
            _callWndProcHook.Start();

            _getMsgHook         = new GetMsgHook(Handle, MenuItemId.SC_DRAG_BY_MOUSE);
            _getMsgHook.GetMsg += WindowGetMsg;
            _getMsgHook.Start();

            _shellHook = new ShellHook(Handle, MenuItemId.SC_DRAG_BY_MOUSE);
            _shellHook.WindowCreated   += WindowCreated;
            _shellHook.WindowDestroyed += WindowDestroyed;
            _shellHook.Start();

            _cbtHook = new CBTHook(Handle, MenuItemId.SC_DRAG_BY_MOUSE);
            _cbtHook.WindowCreated   += WindowCreated;
            _cbtHook.WindowDestroyed += WindowDestroyed;
            _cbtHook.MoveSize        += WindowMoveSize;
            _cbtHook.MinMax          += WindowMinMax;
            _cbtHook.Start();


            _mouseHook = new Hooks.MouseHook(Handle, MenuItemId.SC_DRAG_BY_MOUSE);
            var dragByMouseItemName = MenuItemId.GetName(MenuItemId.SC_DRAG_BY_MOUSE);
            if (_settings.MenuItems.Items.Flatten(x => x.Items).Any(x => x.Type == MenuItemType.Item && x.Name == dragByMouseItemName && x.Show))
            {
                _mouseHook.Start();
            }

            Hide();
        }
예제 #23
0
        protected override bool OnButtonReleaseEvent(Gdk.EventButton evnt)
        {
            if(evnt.Button == 3)
            {
                Gtk.Menu jBox = new Gtk.Menu();
                MenuItem MenuItem1;
                MenuItemId<int> MenuItem2;

                if(ParentCalendar.OrdersTypes == null || ParentCalendar.OrdersTypes.Count == 0)
                {
                    MenuItem1 = new MenuItem("Новый заказ");
                    MenuItem1.Activated += OnButtonPopupAdd;
                    jBox.Add(MenuItem1);
                }
                else if(ParentCalendar.OrdersTypes.Count == 1)
                {
                    MenuItem2 = new MenuItemId<int>("Новый заказ");
                    MenuItem2.ID = ParentCalendar.OrdersTypes.GetEnumerator().Current.Key;
                    MenuItem2.ButtonPressEvent += OnButtonPopupAddWithType;
                    jBox.Add(MenuItem2);
                }
                else
                {
                    MenuItem1 = new MenuItem("Новый заказ");
                    MenuItem1.Submenu = GetNewOrderTypesMenu();
                    jBox.Add(MenuItem1);
                }

                MenuItem1 = new MenuItem("Удалить");
                MenuItem1.Sensitive = item != null;
                MenuItem1.Activated += OnButtonPopupDelete;
                jBox.Add(MenuItem1);
                jBox.ShowAll();
                jBox.Popup();
            }

            return base.OnButtonReleaseEvent(evnt);
        }
예제 #24
0
 private Gtk.Menu GetNewOrderTypesMenu()
 {
     Gtk.Menu jBox2 = new Gtk.Menu();
     MenuItemId<int> MenuItem2;
     foreach(KeyValuePair<int, string> pair in ParentCalendar.OrdersTypes)
     {
         MenuItem2 = new MenuItemId<int>(pair.Value);
         MenuItem2.ID = pair.Key;
         MenuItem2.ButtonPressEvent += OnButtonPopupAddWithType;
         jBox2.Add(MenuItem2);
     }
     return jBox2;
 }
예제 #25
0
 void UpdateRoutesButton()
 {
     var menu = new Gtk.Menu();
     foreach(var route in routesAtDay)
     {
         var name = String.Format("МЛ №{0} - {1}", route.Id, route.Driver.ShortName);
         var item = new MenuItemId<RouteList>(name);
         item.ID = route;
         item.Activated += AddToRLItem_Activated;
         menu.Append(item);
     }
     menu.ShowAll();
     menuAddToRL.Menu = menu;
 }
예제 #26
0
        private void ThreadWorks()
        {
            logger.Info ("Поток: Получаем ленты новостей.");
            SyndicationFeed mainFeed = new SyndicationFeed();
            foreach (var feed in MainNewsFeed.NewsFeeds)
            {
                if (!feed.Active)
                    continue;
                SyndicationFeed syndicationFeed;
                try
                {
                    using (XmlReader reader = XmlReader.Create(feed.FeedUri.AbsoluteUri))
                    {
                        syndicationFeed = SyndicationFeed.Load(reader);
                    }
                    syndicationFeed.Id = feed.Id;
                    syndicationFeed.Items.ToList().ForEach(i => i.SourceFeed = syndicationFeed);
                }
                catch(Exception ex)
                {
                    logger.Warn (ex, "Не удалось прочитать feed");
                    continue;
                }
                SyndicationFeed tempFeed = new SyndicationFeed(
                                                   mainFeed.Items.Union(syndicationFeed.Items).OrderByDescending(u => u.PublishDate));

                mainFeed = tempFeed;
            }
            logger.Info ("Создаем меню новостей..");
            Application.Invoke (delegate {
                logger.Info ("Запуск операций в основном потоке..");
                UnreadNewsCount = 0;
                var newsMenu = new Menu ();
                MenuItemId<SyndicationItem> newsItem;
                foreach (var news in mainFeed.Items) {
                    Label itemLabel = new Label ();
                    if (MainNewsFeed.ItemIsRead (news))
                        itemLabel.Text = news.Title.Text;
                    else {
                        itemLabel.Markup = String.Format ("<b>{0}</b>", news.Title.Text);
                        UnreadNewsCount++;
                    }
                    newsItem = new MenuItemId<SyndicationItem> ();
                    newsItem.Add (itemLabel);
                    newsItem.ID = news;
                    newsItem.TooltipMarkup = String.Format ("<b>{0:D}</b> {1}", news.PublishDate, news.Summary.Text);
                    newsItem.Activated += OnNewsActivated;
                    newsMenu.Append (newsItem);
                }
                this.Submenu = newsMenu;
                UpdateIcon ();
                newsMenu.ShowAll ();
                MainNewsFeed.SaveFirstRead ();
                logger.Info("Ок");
            });
        }