Class | Ui::Qt4::MainWindow |
In: |
ui/qt/window.rb
|
Parent: | Object |
The main window of the Qt graphical interface. This class contains information about widgets, layouts, menus and icons used in the main window.
MainWindow will be used by DradisWindow to provide the different connections between the elements of the interface.
actionAbout | [R] | |
actionQuit | [R] | |
centralwidget | [R] | |
commandLine | [R] | |
frame | [R] | |
menu_Connection | [R] | |
menu_File | [R] | |
menu_Help | [R] | |
menubar | [R] | |
qgridLayout | [R] | |
qvboxLayout | [R] | |
splitter | [R] | attr_reader :qhboxLayout |
statusbar | [R] | |
textConsole | [R] | |
textRight | [R] | attr_reader :treeRight |
trayIcon | [R] | |
treeLeft | [R] |
i18n the strings of the main window
# File ui/qt/window.rb, line 128 def retranslateUi(mainWindow) mainWindow.setWindowTitle(Qt::Application.translate("MainWindow", "MainWindow", nil, Qt::Application::UnicodeUTF8)) @actionQuit.setText(Qt::Application.translate("MainWindow", "&Quit", nil, Qt::Application::UnicodeUTF8)) @actionQuit.statusTip = Qt::Application.translate("MainWindow", "quit the application", nil, Qt::Application::UnicodeUTF8) @actionAbout.setText(Qt::Application.translate("MainWindow", "&About", nil, Qt::Application::UnicodeUTF8)) @actionAbout.statusTip = Qt::Application.translate("MainWindow", "information about the applications", nil, Qt::Application::UnicodeUTF8) @menu_File.setTitle(Qt::Application.translate("MainWindow", "&File", nil, Qt::Application::UnicodeUTF8)) @menu_Connection.setTitle(Qt::Application.translate("MainWindow", "&Connection", nil, Qt::Application::UnicodeUTF8)) @menu_Help.setTitle(Qt::Application.translate("MainWindow", "&Help", nil, Qt::Application::UnicodeUTF8)) end
Setup the menu bar, the menu items and the actions for each menu item. Also setup the status bar for the main windo.
# File ui/qt/window.rb, line 53 def setupMenuAndStatus(mainWindow) #1: setup menu bar @menubar = Qt::MenuBar.new(mainWindow) @menubar.setObjectName("menubar") @menubar.setGeometry(Qt::Rect.new(0, 0, 621, 28)) #1.1: setup menu items @menu_File = Qt::Menu.new(@menubar) @menu_File.setObjectName("menu_File") @menu_Connection = Qt::Menu.new(@menubar) @menu_Connection.setObjectName("menu_Connection") @menu_Help = Qt::Menu.new(@menubar) @menu_Help.setObjectName("menu_Help") #1.2: add actions to the items #1.2.1: create the actions #------------------------------------- File @actionQuit = Qt::Action.new(mainWindow) @actionQuit.setObjectName("actionQuit") @actionQuit.shortcut = Qt::KeySequence.new( 'Ctrl+Q' ) @actionQuit.setIcon(mainWindow.style().standardIcon(Qt::Style::SP_TitleBarCloseButton)) #------------------------------------- Window #------------------------------------- Help @actionAbout = Qt::Action.new(mainWindow) @actionAbout.setObjectName("actionAbout") #1.2.2: add to the items @menu_File.addAction(@actionQuit) @menu_Help.addAction(@actionAbout) #1.3: add the items to the bar @menubar.addAction(@menu_File.menuAction()) @menubar.addAction(@menu_Connection.menuAction()) @menubar.addAction(@menu_Help.menuAction()) #1.4: add the bar to the main window mainWindow.setMenuBar(@menubar) #2: setup status bar @statusbar = Qt::StatusBar.new(mainWindow) @statusbar.setObjectName("statusbar") mainWindow.setStatusBar(@statusbar) end
Setup the system tray icon and menu
# File ui/qt/window.rb, line 103 def setupSysTray(mainWindow) if !Qt::SystemTrayIcon.isSystemTrayAvailable Qt::MessageBox.critical(nil, Qt::Object.tr("Systray"), Qt::Object.tr("I couldn't detect any system tray " \ "on this system.")) else # @trayIconMenu = Qt::Menu.new(self) do |t| # t.addAction(@minimizeAction) # t.addAction(@maximizeAction) # t.addAction(@restoreAction) # t.addSeparator() # t.addAction(@quitAction) # end icon = Qt::Icon.new("ui/qt/images/bad.svg") @trayIcon = Qt::SystemTrayIcon.new(mainWindow) @trayIcon.contextMenu = @menu_File @trayIcon.icon = icon @trayIcon.show @trayIcon.toolTip = 'dradis' mainWindow.setWindowIcon(icon) end end
Setup the different widgets and layouts of the main window.
# File ui/qt/window.rb, line 144 def setupUi(mainWindow) mainWindow.setObjectName("mainWindow") $qApp.setFont(Qt::Font.new("Verdana", 11)); @centralwidget = Qt::Widget.new(mainWindow) @centralwidget.setObjectName("centralwidget") @qgridLayout = Qt::GridLayout.new(@centralwidget) @qgridLayout.spacing = 6 @qgridLayout.margin = 9 @qgridLayout.setObjectName("qgridLayout") dock = Qt::DockWidget.new(mainWindow) dock_features = Qt::DockWidget::DockWidgetMovable | Qt::DockWidget::DockWidgetFloatable dock.features = dock_features.to_i dock.windowTitle = 'console' #docking chat chat = Qt::DockWidget.new(mainWindow) #qt 4.2 dock.setFeatures(Qt::DockWidget::DockWidgetMovable | Qt::DockWidget::DockWidgetFloatable) chat_features = Qt::DockWidget::DockWidgetMovable | Qt::DockWidget::DockWidgetFloatable chat.features = chat_features.to_i chat.windowTitle = 'chat' @frame = Qt::Frame.new(@centralwidget) @frame.setObjectName("frame") @frame.setFrameShape(Qt::Frame::StyledPanel) @frame.setFrameShadow(Qt::Frame::Raised) @consoleLayout = Qt::GridLayout.new(@frame) @consoleLayout.spacing = 6 @consoleLayout.margin = 9 @consoleLayout.setObjectName("consoleLayout") @textConsole = Qt::TextBrowser.new(@frame) @textConsole.setObjectName("textConsole") @consoleLayout.addWidget(@textConsole, 0, 0, 1, 1) @commandLine = Ui::Qt4::Widgets::CommandLine.new(@frame) @commandLine.setObjectName("commandLine") @consoleLayout.addWidget(@commandLine, 1, 0, 1, 1) dock.widget = @frame mainWindow.addDockWidget(Qt::BottomDockWidgetArea, dock) chat.widget = Ui::Qt4::Widgets::ChatWidget.new mainWindow.addDockWidget(Qt::BottomDockWidgetArea, chat) @splitter = Qt::Splitter.new(@centralwidget) @splitter.setObjectName("splitter") @splitter.setOrientation(Qt::Horizontal) @treeLeft = Qt::TreeWidget.new(@centralwidget) @treeLeft.setObjectName("treeLeft") @treeLeft.alternatingRowColors = true @splitter.addWidget(@treeLeft) @textRight = Ui::Qt4::Widgets::NotesBrowser.new(@centralwidget) @textRight.setObjectName("textRight") @splitter.addWidget(@textRight) @qgridLayout.addWidget(@splitter, 0, 0, 1, 1) mainWindow.setCentralWidget(@centralwidget) Qt::Widget::setTabOrder(@commandLine, @textConsole) Qt::Widget::setTabOrder(@textConsole, @treeLeft) Qt::Widget::setTabOrder(@treeLeft, @treeRight) setupMenuAndStatus(mainWindow) setupSysTray(mainWindow) retranslateUi(mainWindow) size = Qt::Size.new(621, 600) size = size.expandedTo(mainWindow.minimumSizeHint()) mainWindow.resize(size) Qt::MetaObject.connectSlotsByName(mainWindow) end