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

[Source]

# 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

[Source]

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

[Source]

# 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

[Validate]