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.

Methods

Attributes

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] 

Public Instance methods

i18n the strings of the main window

[Source]

     # 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.

[Source]

     # 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

[Source]

     # 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.

[Source]

     # 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

[Validate]