diff options
author | tnut <thierryn1 at hispeed dot ch> | 2011-03-13 19:32:51 +0100 |
---|---|---|
committer | tnut <thierryn1 at hispeed dot ch> | 2011-03-13 19:32:51 +0100 |
commit | 415f68839c99f9431b32ffa48ab9d209e7251812 (patch) | |
tree | 86edf1d471bf76a767a40a22c08f5fada555e6e4 /extra/ede1/logoutdialog.cpp | |
parent | e8cd7e0e10b883c434cdcb1dc291acd8067c8961 (diff) | |
download | nutyx-pakxe-415f68839c99f9431b32ffa48ab9d209e7251812.tar.gz nutyx-pakxe-415f68839c99f9431b32ffa48ab9d209e7251812.tar.bz2 nutyx-pakxe-415f68839c99f9431b32ffa48ab9d209e7251812.tar.xz nutyx-pakxe-415f68839c99f9431b32ffa48ab9d209e7251812.zip |
ede1 dans ouvert
Diffstat (limited to 'extra/ede1/logoutdialog.cpp')
-rw-r--r-- | extra/ede1/logoutdialog.cpp | 273 |
1 files changed, 0 insertions, 273 deletions
diff --git a/extra/ede1/logoutdialog.cpp b/extra/ede1/logoutdialog.cpp deleted file mode 100644 index 01f0a5068..000000000 --- a/extra/ede1/logoutdialog.cpp +++ /dev/null @@ -1,273 +0,0 @@ -// generated by Fast Light User Interface Designer (fluid) version 2,0003 - -// Work Panel for EDE is (C) Copyright 2000-2002 by Martin Pekar, -// this program is provided under the terms of GNU GPL v.2, see file COPYING for more information. -// Improvements by Vedran Ljubovic (c) 2005. - -#include "logoutdialog.h" -#include <stdlib.h> -#include <unistd.h> -//#include <sys/stat.h> - -#include <efltk/Fl_Util.h> -#include <efltk/fl_ask.h> - -#include <efltk/x.h> // X stuff -#include <signal.h> -#include <efltk/Fl_Image.h> // icons - -// widgets -Fl_Window* windowLogoutDialog; -Fl_Round_Button* logoutRadioItemLogoutDialog; -Fl_Round_Button* restartRadioItemLogoutDialog; -Fl_Round_Button* shutdownRadioItemLogoutDialog; - -// graphics -static Fl_Image penguin_pix((const char **)penguin_xpm); - -// globals -bool dmAvailable; -char *xdm_fifo; -bool canShutdown; -bool sdForceNow; -bool sdTryNow; - -void SendLogoutMsg(Fl_Window* win) -{ - Atom _XA_EDE_WM_ACTION = XInternAtom(fl_display, "_EDE_WM_ACTION", False); - Atom _XA_EDE_WM_LOGOUT = XInternAtom(fl_display, "_EDE_WM_LOGOUT", False); - XClientMessageEvent evt; - memset(&evt, 0, sizeof(evt)); - evt.type = ClientMessage; - evt.window = fl_xid(win); - evt.format = 32; - evt.message_type = _XA_EDE_WM_ACTION; - evt.data.l[0] = _XA_EDE_WM_LOGOUT; - XSendEvent(fl_display, RootWindow(fl_display, DefaultScreen(fl_display)), False, - SubstructureNotifyMask, (XEvent*)&evt); -} - -// This function looks what a user can do and sets other -// global variables -void checkPermissions() -{ - Fl_String xdm_env = Fl_String(getenv("XDM_MANAGED")); - if (xdm_env == "") - dmAvailable = false; - else - dmAvailable = true; - - // shutting down via XDM fifo - if (dmAvailable) - { - Fl_String_List xdm_env_list = Fl_String_List(xdm_env,","); - xdm_fifo = xdm_env_list.item(0); - if (xdm_fifo[0] != '/') // broken config - { - dmAvailable = false; - xdm_fifo = ""; - } - - // can a user shutdown? - if (xdm_env_list.index_of("maysd")>-1) - canShutdown = true; - else - canShutdown = false; - - // we will use fn/tn only if XDM suggests to do it - if (xdm_env_list.index_of("fn")>-1) - sdForceNow = true; - else - sdForceNow = false; - - if (xdm_env_list.index_of("tn")>-1) - sdTryNow = true; - else - sdTryNow = false; - } - - // the old way - if (!dmAvailable) - { - // shutdown cmd with no params shouldn't do anything... - if (!getuid()) - canShutdown = true; - } -} - -// Logout using XDM messaging -void newLogoutFunction(Fl_Window* win) -{ - - if ((logoutRadioItemLogoutDialog->value()==0) && - (restartRadioItemLogoutDialog->value()==0) && - (shutdownRadioItemLogoutDialog->value() == 0)) - // this shoudn't happen... - return; - - if (restartRadioItemLogoutDialog->value()==1) - { - if (!canShutdown) - { - fl_alert (_("You are not allowed to restart !")); - return; - } - - FILE *fd = fopen(xdm_fifo, "w"); - Fl_String method; - if (sdForceNow) - method = "shutdown\treboot\tforcenow\n"; - else if (sdTryNow) - method = "shutdown\treboot\ttrynow\n"; - else - method = "shutdown\treboot\tschedule\n"; - fputs ((char *)method, fd); - fclose (fd); - } - - if (shutdownRadioItemLogoutDialog->value() == 1) - { - if (!canShutdown) - { - fl_alert (_("You are not allowed to shutdown !")); - return; - } - - FILE *fd = fopen(xdm_fifo, "w"); - Fl_String method; - if (sdForceNow) - method = "shutdown\thalt\tforcenow\n"; - else if (sdTryNow) - method = "shutdown\thalt\ttrynow\n"; - else - method = "shutdown\thalt\tschedule\n"; - fputs ((char *)method, fd); - fclose (fd); - } - - SendLogoutMsg(win); - XCloseDisplay(fl_display); - exit(0); - - //XCloseDisplay(fl_display); - //XSetCloseDownMode(fl_display, DestroyAll); - //XKillClient(fl_display, AllTemporary); - //XUngrabServer(fl_display); - //fl_close_display(); - //exit(0); -} - -// "brute force" logout function -// (in case XDM is not available) -void oldLogoutFunction(Fl_Window* win) -{ - if (logoutRadioItemLogoutDialog->value()==1) - { - SendLogoutMsg(win); - XCloseDisplay(fl_display); - exit(0); - //XKillClient(fl_display, AllTemporary); - //XUngrabServer(fl_display); - //fl_close_display(); - //XCloseDisplay(fl_display); - //exit(0); - } - - if (restartRadioItemLogoutDialog->value()==1) - { -/* if(fl_start_child_process( "shutdown -r now" ) != 0) - fl_alert("You are not alowed to reboot !"); */ - fl_start_child_process( "init 6" ); - } - - if (shutdownRadioItemLogoutDialog->value() == 1) - { - /* if(fl_start_child_process( "shutdown -h now" ) != 0) - fl_alert("You are not alowed to shutdown !"); */ - fl_start_child_process( "init 0" ); - } -} - -// Determine logout type -void LogoutFunction(Fl_Widget *, void* w) -{ - Fl_Window* win = (Fl_Window*)w; - if (dmAvailable) - newLogoutFunction(win); - else - oldLogoutFunction(win); -} - -// Main logout UI and control -static void cb_Cancel(Fl_Button*, void*) -{ - windowLogoutDialog->hide(); -} - -void LogoutDialog(Fl_Widget*, void *) -{ - // first see what options are available - checkPermissions(); - - // draw GUI - Fl_Window* w; - { - Fl_Window* o = windowLogoutDialog = new Fl_Window(171, 160, 330, 190, _("Logout")); - w = o; - { - Fl_Group* o = new Fl_Group(5, 12, 55, 45); - o->image(penguin_pix); - o->align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE); - o->end(); - } - { - Fl_Round_Button* o = logoutRadioItemLogoutDialog = new Fl_Round_Button(80, 67, 225, 20, _("&logout from the current session")); - o->type(Fl_Round_Button::RADIO); - o->value(1); - o->tooltip(_("Logout from the current session.")); - } - { - Fl_Round_Button* o = restartRadioItemLogoutDialog = new Fl_Round_Button(80, 88, 225, 20, _("&restart the computer")); - o->type(Fl_Round_Button::RADIO); - if (canShutdown) - o->tooltip(_("Restart the computer.")); - else - { - o->tooltip(_("Restart the computer. You do not have privileges to do that.")); - o->deactivate(); - } - } - { - Fl_Round_Button* o = shutdownRadioItemLogoutDialog = new Fl_Round_Button(80, 110, 225, 20, _("&shut down the computer")); - o->type(Fl_Round_Button::RADIO); - if (canShutdown) - o->tooltip(_("Shut down the computer.")); - else - { - o->tooltip(_("Shut down the computer. You do not have privileges to do that.")); - o->deactivate(); - } - } - { - Fl_Button* o = new Fl_Button(85, 157, 80, 25, _("&OK")); - o->callback((Fl_Callback*)LogoutFunction, w); - } - { - Fl_Button* o = new Fl_Button(170, 157, 80, 25, _("&Cancel")); - o->callback((Fl_Callback*)cb_Cancel); - } - { - Fl_Box* o = new Fl_Box(65, 7, 260, 63, _("Logout, restart or shut down the computer?")); - o->label_size(18); - o->align(132|FL_ALIGN_INSIDE); - } - - new Fl_Divider(60, 130, 210, 20, ""); - o->x( Fl::info().w/2 - (o->w()/2) ); - o->y( (Fl::info().h/2) - (o->h()/2) ); - o->set_modal(); - o->end(); - } - windowLogoutDialog->end(); - windowLogoutDialog->show(); -} |