| 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 139
139: def retranslateUi(mainWindow)
140: mainWindow.setWindowTitle(Qt::Application.translate("MainWindow", "MainWindow", nil, Qt::Application::UnicodeUTF8))
141:
142: @actionQuit.setText(Qt::Application.translate("MainWindow", "&Quit", nil, Qt::Application::UnicodeUTF8))
143: @actionQuit.statusTip = Qt::Application.translate("MainWindow", "quit the application", nil, Qt::Application::UnicodeUTF8)
144:
145: @actionAbout.setText(Qt::Application.translate("MainWindow", "&About", nil, Qt::Application::UnicodeUTF8))
146: @actionAbout.statusTip = Qt::Application.translate("MainWindow", "information about the applications", nil, Qt::Application::UnicodeUTF8)
147:
148: @menu_File.setTitle(Qt::Application.translate("MainWindow", "&File", nil, Qt::Application::UnicodeUTF8))
149: @menu_Connection.setTitle(Qt::Application.translate("MainWindow", "&Connection", nil, Qt::Application::UnicodeUTF8))
150: @menu_Help.setTitle(Qt::Application.translate("MainWindow", "&Help", nil, Qt::Application::UnicodeUTF8))
151:
152: 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 64
64: def setupMenuAndStatus(mainWindow)
65:
66: #1: setup menu bar
67: @menubar = Qt::MenuBar.new(mainWindow)
68: @menubar.setObjectName("menubar")
69: @menubar.setGeometry(Qt::Rect.new(0, 0, 621, 28))
70:
71: #1.1: setup menu items
72: @menu_File = Qt::Menu.new(@menubar)
73: @menu_File.setObjectName("menu_File")
74: @menu_Connection = Qt::Menu.new(@menubar)
75: @menu_Connection.setObjectName("menu_Connection")
76: @menu_Help = Qt::Menu.new(@menubar)
77: @menu_Help.setObjectName("menu_Help")
78:
79:
80: #1.2: add actions to the items
81: #1.2.1: create the actions
82: #------------------------------------- File
83: @actionQuit = Qt::Action.new(mainWindow)
84: @actionQuit.setObjectName("actionQuit")
85: @actionQuit.shortcut = Qt::KeySequence.new( 'Ctrl+Q' )
86: @actionQuit.setIcon(mainWindow.style().standardIcon(Qt::Style::SP_TitleBarCloseButton))
87: #------------------------------------- Window
88: #------------------------------------- Help
89: @actionAbout = Qt::Action.new(mainWindow)
90: @actionAbout.setObjectName("actionAbout")
91:
92: #1.2.2: add to the items
93: @menu_File.addAction(@actionQuit)
94: @menu_Help.addAction(@actionAbout)
95:
96: #1.3: add the items to the bar
97: @menubar.addAction(@menu_File.menuAction())
98: @menubar.addAction(@menu_Connection.menuAction())
99: @menubar.addAction(@menu_Help.menuAction())
100:
101:
102: #1.4: add the bar to the main window
103: mainWindow.setMenuBar(@menubar)
104:
105:
106:
107: #2: setup status bar
108: @statusbar = Qt::StatusBar.new(mainWindow)
109: @statusbar.setObjectName("statusbar")
110: mainWindow.setStatusBar(@statusbar)
111: end
Setup the system tray icon and menu
# File ui/qt/window.rb, line 114
114: def setupSysTray(mainWindow)
115:
116: if !Qt::SystemTrayIcon.isSystemTrayAvailable
117: Qt::MessageBox.critical(nil, Qt::Object.tr("Systray"),
118: Qt::Object.tr("I couldn't detect any system tray " \
119: "on this system."))
120: else
121: # @trayIconMenu = Qt::Menu.new(self) do |t|
122: # t.addAction(@minimizeAction)
123: # t.addAction(@maximizeAction)
124: # t.addAction(@restoreAction)
125: # t.addSeparator()
126: # t.addAction(@quitAction)
127: # end
128: icon = Qt::Icon.new("ui/qt/images/bad.svg")
129: @trayIcon = Qt::SystemTrayIcon.new(mainWindow)
130: @trayIcon.contextMenu = @menu_File
131: @trayIcon.icon = icon
132: @trayIcon.show
133: @trayIcon.toolTip = 'dradis'
134: mainWindow.setWindowIcon(icon)
135: end
136: end
Setup the different widgets and layouts of the main window.
# File ui/qt/window.rb, line 155
155: def setupUi(mainWindow)
156: mainWindow.setObjectName("mainWindow")
157: $qApp.setFont(Qt::Font.new("Verdana", 11));
158:
159:
160: @centralwidget = Qt::Widget.new(mainWindow)
161: @centralwidget.setObjectName("centralwidget")
162: @qgridLayout = Qt::GridLayout.new(@centralwidget)
163: @qgridLayout.spacing = 6
164: @qgridLayout.margin = 9
165: @qgridLayout.setObjectName("qgridLayout")
166:
167: dock = Qt::DockWidget.new(mainWindow)
168: dock_features = Qt::DockWidget::DockWidgetMovable | Qt::DockWidget::DockWidgetFloatable
169: dock.features = dock_features.to_i
170: dock.windowTitle = 'console'
171:
172: #docking chat
173: chat = Qt::DockWidget.new(mainWindow)
174: #qt 4.2 dock.setFeatures(Qt::DockWidget::DockWidgetMovable | Qt::DockWidget::DockWidgetFloatable)
175: chat_features = Qt::DockWidget::DockWidgetMovable | Qt::DockWidget::DockWidgetFloatable
176: chat.features = chat_features.to_i
177: chat.windowTitle = 'chat'
178:
179:
180: @frame = Qt::Frame.new(@centralwidget)
181: @frame.setObjectName("frame")
182: @frame.setFrameShape(Qt::Frame::StyledPanel)
183: @frame.setFrameShadow(Qt::Frame::Raised)
184:
185: @consoleLayout = Qt::GridLayout.new(@frame)
186: @consoleLayout.spacing = 6
187: @consoleLayout.margin = 9
188: @consoleLayout.setObjectName("consoleLayout")
189:
190: @textConsole = Qt::TextBrowser.new(@frame)
191: @textConsole.setObjectName("textConsole")
192: @consoleLayout.addWidget(@textConsole, 0, 0, 1, 1)
193:
194: @commandLine = Ui::Qt4::Widgets::CommandLine.new(@frame)
195: @commandLine.setObjectName("commandLine")
196:
197: @consoleLayout.addWidget(@commandLine, 1, 0, 1, 1)
198:
199:
200: dock.widget = @frame
201: mainWindow.addDockWidget(Qt::BottomDockWidgetArea, dock)
202: chat.widget = Ui::Qt4::Widgets::ChatWidget.new
203: mainWindow.addDockWidget(Qt::BottomDockWidgetArea, chat)
204:
205:
206: @splitter = Qt::Splitter.new(@centralwidget)
207: @splitter.setObjectName("splitter")
208: @splitter.setOrientation(Qt::Horizontal)
209:
210: @treeLeft = Qt::TreeWidget.new(@centralwidget)
211: @treeLeft.setObjectName("treeLeft")
212: @treeLeft.alternatingRowColors = true
213:
214: @splitter.addWidget(@treeLeft)
215:
216: @textRight = Ui::Qt4::Widgets::NotesBrowser.new(@centralwidget)
217: @textRight.setObjectName("textRight")
218: @splitter.addWidget(@textRight)
219:
220: @qgridLayout.addWidget(@splitter, 0, 0, 1, 1)
221:
222: mainWindow.setCentralWidget(@centralwidget)
223:
224:
225:
226: Qt::Widget::setTabOrder(@commandLine, @textConsole)
227: Qt::Widget::setTabOrder(@textConsole, @treeLeft)
228: Qt::Widget::setTabOrder(@treeLeft, @treeRight)
229:
230: setupMenuAndStatus(mainWindow)
231: setupSysTray(mainWindow)
232: retranslateUi(mainWindow)
233:
234: size = Qt::Size.new(621, 600)
235: size = size.expandedTo(mainWindow.minimumSizeHint())
236: mainWindow.resize(size)
237:
238:
239: Qt::MetaObject.connectSlotsByName(mainWindow)
240: end