public AvatarGridZoomAction(AvatarGrid <T> grid) : base(grid) { m_Grid = grid; m_SliderContainer = new QWidget(); m_SliderContainer.SetLayout(new QHBoxLayout()); m_SliderContainer.Layout().AddWidget(new QLabel("Zoom:", m_SliderContainer)); var zoomSlider = new QSlider(Orientation.Horizontal, m_SliderContainer); zoomSlider.Minimum = 16; zoomSlider.Maximum = 60; zoomSlider.Value = m_Grid.IconSize; QObject.Connect <int>(zoomSlider, Qt.SIGNAL("valueChanged(int)"), HandleZoomSliderValueChanged); m_SliderContainer.Layout().AddWidget(zoomSlider); base.SetDefaultWidget(m_SliderContainer); }
public TabbedChatsWindow() { // FIXME: This doesn't work very well in most themes... //this.SetStyleSheet("QTabWidget::pane { border: 0px; }"); // The tab widget messes up this background color. this.SetStyleSheet("QTabWidget > QWidget { background: palette(window); }"); m_Tabs = new QTabWidget(); m_Tabs.tabPosition = QTabWidget.TabPosition.South; QToolButton newTabButton = new QToolButton(m_Tabs); newTabButton.AutoRaise = true; newTabButton.SetDefaultAction(new QAction(Gui.LoadIcon("tab-new", 16), "New Tab", newTabButton)); newTabButton.SetToolButtonStyle(Qt.ToolButtonStyle.ToolButtonIconOnly); QObject.Connect <QAction>(newTabButton, Qt.SIGNAL("triggered(QAction*)"), HandleNewTab); m_Tabs.SetCornerWidget(newTabButton, Qt.Corner.BottomLeftCorner); QHBoxLayout rightButtonsLayout = new QHBoxLayout(); rightButtonsLayout.SetContentsMargins(0, 0, 0, 0); rightButtonsLayout.Spacing = 0; QToolButton closeTabButton = new QToolButton(m_Tabs); closeTabButton.SetToolButtonStyle(Qt.ToolButtonStyle.ToolButtonIconOnly); closeTabButton.AutoRaise = true; closeTabButton.SetDefaultAction(new QAction(Gui.LoadIcon("window-close", 16), "Close Tab", closeTabButton)); QObject.Connect <QAction>(closeTabButton, Qt.SIGNAL("triggered(QAction*)"), HandleCloseTab); rightButtonsLayout.AddWidget(closeTabButton); QMenu menu = new QMenu(this); menu.AddAction(new QIcon(), "No Recently Closed Tabs"); QToolButton trashButton = new QToolButton(m_Tabs); trashButton.SetToolButtonStyle(Qt.ToolButtonStyle.ToolButtonIconOnly); trashButton.AutoRaise = true; trashButton.PopupMode = QToolButton.ToolButtonPopupMode.InstantPopup; trashButton.SetMenu(menu); trashButton.SetDefaultAction(new QAction(Gui.LoadIcon("user-trash", 16), "Recently Closed Tabs", trashButton)); rightButtonsLayout.AddWidget(trashButton); // FIXME: This looks bad. //rightButtonsLayout.AddWidget(new QSizeGrip(this)); QWidget rightButtonsContainer = new QWidget(m_Tabs); rightButtonsContainer.SetLayout(rightButtonsLayout); m_Tabs.SetCornerWidget(rightButtonsContainer, Qt.Corner.BottomRightCorner); QVBoxLayout layout = new QVBoxLayout(this); layout.SetContentsMargins(0, 0, 0, 0); layout.AddWidget(m_Tabs, 1, 0); this.SetLayout(layout); QObject.Connect <int>(m_Tabs, Qt.SIGNAL("currentChanged(int)"), HandleCurrentChanged); this.SetGeometry(0, 0, 445, 370); Gui.CenterWidgetOnScreen(this); QAction closeAction = new QAction(this); QObject.Connect <bool>(closeAction, Qt.SIGNAL("triggered(bool)"), HandleCloseActionTriggered); closeAction.Shortcut = new QKeySequence("Ctrl+w"); this.AddAction(closeAction); 0.UpTo(9).ForEach(num => { QAction action = new QAction(this); action.Shortcut = new QKeySequence("Alt+" + num.ToString()); QObject.Connect(action, Qt.SIGNAL("triggered(bool)"), delegate { m_Tabs.CurrentIndex = num - 1; }); this.AddAction(action); }); QAction nextTabAction = new QAction(this); nextTabAction.Shortcut = new QKeySequence(QKeySequence.StandardKey.NextChild); QObject.Connect(nextTabAction, Qt.SIGNAL("triggered(bool)"), delegate { if (m_Tabs.CurrentIndex == m_Tabs.Count - 1) { m_Tabs.CurrentIndex = 0; } else { m_Tabs.CurrentIndex += 1; } }); this.AddAction(nextTabAction); QAction prevTabAction = new QAction(this); prevTabAction.Shortcut = new QKeySequence(QKeySequence.StandardKey.PreviousChild); QObject.Connect(prevTabAction, Qt.SIGNAL("triggered(bool)"), delegate { if (m_Tabs.CurrentIndex == 0) { m_Tabs.CurrentIndex = m_Tabs.Count - 1; } else { m_Tabs.CurrentIndex -= 1; } }); var accountService = ServiceManager.Get <AccountService>(); accountService.AccountAdded += HandleAccountAdded; accountService.AccountRemoved += HandleAccountRemoved; foreach (Account account in accountService.Accounts) { HandleAccountAdded(account); } var settingsService = ServiceManager.Get <SettingsService>(); if (settingsService.Has("ChatsWindowGeometry")) { var geometry = settingsService.Get <byte[]>("ChatsWindowGeometry"); base.RestoreGeometry(QByteArrayConverter.FromArray(geometry)); } }