summaryrefslogtreecommitdiffstats
path: root/languages/ruby/app_templates/kxt/app.rb
blob: 9ab56921db9664bdc61aeedfb150bafc23789988 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
=begin
  This class serves as the main window for %{APPNAME}.  It handles the
  menus, toolbars, and status bars.
 
  @short Main window class
  @author %{AUTHOR} <%{EMAIL}>
  @version %{VERSION}
=end

class %{APPNAMESC} < KDE::MainWindow

    Q_SLOTS 'fileNew()',
          'optionsPreferences()',
          'newToolbarConfig()',
          'changeStatusbar(const QString&)',
          'changeCaption(const QString&)'

    def initialize()
        super( nil, "%{APPNAMESC}" )
        Settings.instance.readConfig
        @view = %{APPNAMESC}View.new(self)
        @printer = nil

        # accept dnd
        setAcceptDrops(true)
    
        # tell the KDE::MainWindow that this is indeed the main widget
        setCentralWidget(@view)
    
        # then, setup our actions
        setupActions()
    
        # and a status bar
        statusBar().show()
    
        # Apply the create the main window and ask the mainwindow to
        # automatically save settings if changed: window size, toolbar
        # position, icon size, etc.  Also to add actions for the statusbar
        # toolbar, and keybindings if necessary.
        setupGUI();
    
        # allow the view to change the statusbar and caption
        connect(@view, SIGNAL('signalChangeStatusbar(const QString&)'),
                self,   SLOT('changeStatusbar(const QString&)'))
        connect(@view, SIGNAL('signalChangeCaption(const QString&)'),
                self,   SLOT('changeCaption(const QString&)'))
    
    end
    
    def setupActions()
        KDE::StdAction.openNew(self, SLOT('fileNew()'), actionCollection())
        KDE::StdAction.quit($kapp, SLOT('quit()'), actionCollection())

        KDE::StdAction.preferences(self, SLOT('optionsPreferences()'), actionCollection())
    
        # this doesn't do anything useful.  it's just here to illustrate
        # how to insert a custom menu and menu item
        custom = KDE::Action.new(i18n("Swi&tch Colors"), KDE::Shortcut.new(),
                                    @view, SLOT('switchColors()'),
                                    actionCollection(), "switch_action")
    end
    
    def fileNew()
        # This slot is called whenever the File.New menu is selected,
        # the New shortcut is pressed (usually CTRL+N) or the New toolbar
        # button is clicked
    
        # create a new window
        %{APPNAMESC}.new.show()
    end
    
    def optionsPreferences()
        # The preference dialog is derived from prefs-base.ui which is subclassed into Prefs
        # 
        # compare the names of the widgets in the .ui file
        # to the names of the variables in the .kcfg file
        dialog = KDE::ConfigDialog.new(self, "settings", Settings.instance, KDE::DialogBase::Swallow)
        dialog.addPage(Prefs.new(), i18n("General"), "package_settings")
        connect(dialog, SIGNAL('settingsChanged()'), @view, SLOT('settingsChanged()'))
        dialog.show()

    end
    
    def changeStatusbar(text)
        # display the text on the statusbar
        statusBar().message(text)
    end
    
    def changeCaption(text)
        # display the text on the caption
        setCaption(text)
    end

end