~ubuntu-branches/ubuntu/saucy/wmshutdown/saucy

« back to all changes in this revision

Viewing changes to .pc/20-name-change.patch/wmShutdown.c

  • Committer: Package Import Robot
  • Author(s): Jari Aalto
  • Date: 2012-03-24 02:47:56 UTC
  • mfrom: (2.1.7 sid)
  • Revision ID: package-import@ubuntu.com-20120324024756-4riggsr96aj1utmj
Tags: 0.2-9
* debian/copyright
  - Update to format 1.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * wmShutdown.c
 
3
 *
 
4
 * (C) 2001 Rafael V. Aroca <rafael@linuxqos.cjb.net> 
 
5
 *
 
6
 * This software is under GPL
 
7
 *
 
8
 * Based on foodock lib by Alexey Vyskubov <alexey@pepper.spb.ru>
 
9
 *
 
10
 */
 
11
 
 
12
#include "wmShutdown.h"
 
13
 
 
14
GtkWidget *dialog = NULL;
 
15
 
 
16
GtkWidget *cria_dock(GtkWidget *mw, unsigned int s, int margc, char *margv[]) {
 
17
 
 
18
        GtkWidget *foobox; 
 
19
        Window xmw;
 
20
        XWMHints *wm_hints;
 
21
 
 
22
        xmw = GDK_WINDOW_XWINDOW(mw->window);
 
23
 
 
24
        foobox = gtk_event_box_new();
 
25
        gtk_widget_set_usize(foobox, s, s);
 
26
        gtk_container_add (GTK_CONTAINER (mw), foobox);
 
27
        gtk_widget_realize(foobox);
 
28
 
 
29
        wm_hints = XAllocWMHints();
 
30
        wm_hints->window_group = xmw;
 
31
        wm_hints->icon_window = GDK_WINDOW_XWINDOW(foobox->window);
 
32
        wm_hints->icon_x = 0;
 
33
        wm_hints->icon_y = 0;
 
34
        wm_hints->initial_state = WithdrawnState;
 
35
        wm_hints->flags = StateHint |
 
36
                IconPositionHint |
 
37
                WindowGroupHint |
 
38
                IconWindowHint;
 
39
 
 
40
        XSetWMHints(GDK_DISPLAY(), xmw, wm_hints);
 
41
        XSetCommand(GDK_DISPLAY(), xmw, margv, margc);
 
42
 
 
43
        XFree(wm_hints);
 
44
 
 
45
        return foobox;
 
46
}
 
47
 
 
48
 
 
49
int fecha(void) {
 
50
        //gtk_exit(0);
 
51
        gtk_widget_destroy(dialog);
 
52
        dialog = NULL;
 
53
        //close();      
 
54
}
 
55
 
 
56
int desliga(void) {
 
57
        FILE *output;
 
58
        char *teste;
 
59
 
 
60
        output = popen("/usr/local/bin/Shutdown -h", "r");
 
61
        teste = (char*) fgetc(output);
 
62
        while ((int)teste != EOF) {
 
63
                g_print("%c", teste);
 
64
                teste = (char*) fgetc(output);
 
65
        }
 
66
        pclose(output);
 
67
}
 
68
 
 
69
int reinicia(void) {
 
70
        FILE *output;
 
71
        char *teste;
 
72
 
 
73
        output = popen("/usr/local/bin/Shutdown -r", "r");
 
74
        teste = (char*) fgetc(output);
 
75
        while ((int)teste != EOF) {
 
76
                g_print("%c", teste);
 
77
                teste = (char*) fgetc(output);
 
78
        }
 
79
        pclose(output);
 
80
}
 
81
 
 
82
 
 
83
int button_press(GtkWidget *widget, GdkEvent *event) {
 
84
 
 
85
        GtkWidget *label;
 
86
        gchar *message;
 
87
        GtkWidget *halt_button;
 
88
        GtkWidget *reboot_button;
 
89
        GtkWidget *cancel_button;
 
90
 
 
91
        //Descomentar para debug
 
92
        //g_print("Evento ocorreu");
 
93
 
 
94
        if (event->type == GDK_BUTTON_PRESS) {
 
95
                GdkEventButton  *bevent = (GdkEventButton *)event;
 
96
                
 
97
                switch (bevent->button) {
 
98
                        case 1:
 
99
 
 
100
                                if (dialog != NULL)
 
101
                                        return;
 
102
                                message = "Shutdown confirmation";
 
103
                                dialog = gtk_dialog_new();
 
104
                                label = gtk_label_new (message);
 
105
            
 
106
                                halt_button = gtk_button_new_with_label("Halt");
 
107
                                reboot_button = gtk_button_new_with_label("Reboot");
 
108
                                cancel_button = gtk_button_new_with_label("Cancel");
 
109
 
 
110
                                gtk_signal_connect(GTK_OBJECT(dialog), "destroy", GTK_SIGNAL_FUNC(fecha), NULL);
 
111
                                
 
112
                                gtk_signal_connect_object (GTK_OBJECT (cancel_button), "clicked", GTK_SIGNAL_FUNC (fecha), (gpointer) dialog);
 
113
 
 
114
                                gtk_signal_connect_object (GTK_OBJECT (halt_button), "clicked", GTK_SIGNAL_FUNC (desliga), (gpointer) dialog);
 
115
                
 
116
                                gtk_signal_connect_object (GTK_OBJECT (reboot_button), "clicked", GTK_SIGNAL_FUNC (reinicia), (gpointer) dialog);
 
117
 
 
118
                                gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->action_area), halt_button);
 
119
                                gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->action_area), reboot_button);
 
120
                                gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->action_area), cancel_button);
 
121
 
 
122
                                gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), label);
 
123
 
 
124
                                gtk_widget_show_all (dialog);
 
125
                }
 
126
        }
 
127
}
 
128
 
 
129
 
 
130
int main(int argc, char *argv[]) {
 
131
 
 
132
        GtkWidget *gtkiw;
 
133
        GtkWidget *dockArea;
 
134
        GtkWidget *button;
 
135
        GtkWidget *box1;
 
136
        GtkWidget *icon;
 
137
        GtkWidget *pixmap;
 
138
        GdkBitmap *mask;
 
139
            
 
140
        gtk_init(&argc, &argv);
 
141
        gtk_set_locale();
 
142
 
 
143
        gtkiw = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 
144
        gtk_window_set_title (GTK_WINDOW (gtkiw), "ShutDockApp");
 
145
        gtk_widget_realize(gtkiw);
 
146
            
 
147
        dockArea = cria_dock(gtkiw, 47, argc, argv);
 
148
        gtk_widget_realize(dockArea);       
 
149
 
 
150
        icon = (gpointer) gdk_pixmap_create_from_xpm (gtkiw->window, &mask,
 
151
                        NULL, "/usr/share/pixmaps/wmShutdown.xpm");
 
152
 
 
153
        pixmap = gtk_pixmap_new((gpointer) icon, mask);
 
154
        gtk_widget_show(pixmap);
 
155
        gtk_container_add(GTK_CONTAINER(dockArea), pixmap);
 
156
 
 
157
        gtk_signal_connect(GTK_OBJECT(gtkiw),
 
158
                        "event",
 
159
                        GTK_SIGNAL_FUNC(button_press),
 
160
                        NULL);
 
161
 
 
162
        gtk_widget_show(dockArea);
 
163
        gtk_widget_show(gtkiw);
 
164
 
 
165
        gtk_main ();
 
166
     
 
167
        return(0);
 
168
}
 
169
 
 
170