Commit | Line | Data |
---|---|---|
d14af94e H |
1 | #!/usr/bin/env perl |
2 | #ArchLinux Daemon Manager Gui! by Harvie 2oo9 | |
3 | use strict; | |
4 | use warnings; | |
5 | use utf8; | |
6 | use Gtk2 qw(-init); | |
7 | ||
8 | if($< > 0) { | |
9 | #run as root | |
10 | print "You are not root! Trying GKSU...\n"; | |
11 | system("gksu ".$0); | |
12 | exit; | |
13 | } | |
14 | ||
15 | my $aldm = '/usr/sbin/aldm'; | |
16 | ||
17 | my %iterators = {}; | |
18 | ||
19 | my $builder = Gtk2::Builder->new(); | |
20 | $builder->add_from_file('/usr/share/aldm-gui/aldm.ui'); | |
21 | ||
22 | my %widgets; | |
23 | foreach my $widget qw(window1 aboutdialog1 treeview1 liststore1 label2) | |
24 | { | |
25 | $widgets{$widget}=$builder->get_object($widget); | |
26 | } | |
27 | ||
28 | $builder->connect_signals( undef ); | |
29 | $builder = undef; | |
30 | ||
31 | #create columns in treeview | |
32 | my $column = Gtk2::TreeViewColumn->new_with_attributes('Daemon', Gtk2::CellRendererText->new, text => 0); | |
33 | $widgets{'treeview1'}->append_column($column); | |
34 | ||
35 | $column = Gtk2::TreeViewColumn->new_with_attributes('Running', Gtk2::CellRendererText->new, text => 1); | |
36 | $widgets{'treeview1'}->append_column($column); | |
37 | ||
38 | $column = Gtk2::TreeViewColumn->new_with_attributes('WhatIs', Gtk2::CellRendererText->new, text => 2); | |
39 | $widgets{'treeview1'}->append_column($column); | |
40 | ||
41 | refresh_view(); | |
42 | ||
43 | $widgets{'window1'}->show(); | |
44 | ||
45 | ||
46 | Gtk2->main(); | |
47 | exit; | |
48 | ||
49 | sub on_window1_destroy | |
50 | { | |
51 | Gtk2->main_quit(); | |
52 | } | |
53 | ||
54 | sub on_imagemenuitem10_activate | |
55 | { | |
56 | $widgets{'aboutdialog1'}->show(); | |
57 | } | |
58 | ||
59 | sub on_aboutdialog1_close | |
60 | { | |
61 | $widgets{'aboutdialog1'}->hide(); | |
62 | } | |
63 | ||
64 | sub refresh_view | |
65 | { | |
66 | #clear | |
67 | #$widgets{'liststore1'}->clear(); | |
68 | ||
69 | #list daemons | |
70 | open(my $daemon_list, "$aldm list|"); | |
71 | while(<$daemon_list>) { | |
72 | no warnings 'uninitialized'; | |
73 | $_ =~ s/^\s+|\s+$//g; #trim | |
74 | open(my $whatis, "'$aldm' whatis '$_'|"); my $w = <$whatis>; close($whatis); $w =~ s/^\s+|\s+$//g; #trim | |
75 | (my $run, $w) = split(/ /,$w,2); | |
76 | ||
77 | #my $iter = $widgets{'liststore1'}->append(); | |
78 | #$widgets{'liststore1'}->set($iter, 0 => "$_", 1=> "$run", 2 => "$w"); | |
79 | ||
80 | my $serv = $_; | |
81 | $serv =~ s/^(!|@)//g; | |
82 | ||
83 | if(!defined($iterators{$serv})) { | |
84 | $iterators{$serv} = $widgets{'liststore1'}->append(); | |
85 | } | |
86 | $widgets{'liststore1'}->set($iterators{$serv}, 0 => "$_", 1=> "$run", 2 => "$w"); | |
87 | } | |
88 | close($daemon_list); | |
89 | } | |
90 | ||
91 | sub get_selected_daemon | |
92 | { | |
93 | my $path = $widgets{'treeview1'}->get_selection->get_selected_rows; | |
94 | my $model = $widgets{'treeview1'}->get_model; | |
95 | my $iter = $model->get_iter($path); | |
96 | my $str = $model->get ($iter, 0); | |
97 | return $str; | |
98 | } | |
99 | ||
100 | sub status | |
101 | { | |
102 | $_[0] =~ s/^\s+|\s+$//g; #trim | |
103 | $widgets{'label2'}->set_text($_[0]); | |
104 | } | |
105 | ||
106 | sub s_system | |
107 | { | |
108 | open(my $pipe, "$_[0]|"); | |
109 | while(<$pipe>) { status($_); } | |
110 | close($pipe); | |
111 | } | |
112 | ||
113 | sub on_button_start_clicked { s_system "$aldm start ".get_selected_daemon(); refresh_view(); } | |
114 | sub on_button_stop_clicked { s_system "$aldm stop ".get_selected_daemon(); refresh_view(); } | |
115 | sub on_button_restart_clicked { s_system "$aldm restart ".get_selected_daemon(); refresh_view(); } | |
116 | ||
117 | sub on_button_enable_fg_clicked { | |
118 | my $d = get_selected_daemon(); | |
119 | system "$aldm enable-fg ".$d; | |
120 | refresh_view(); | |
121 | status($d." enabled on init!"); | |
122 | } | |
123 | ||
124 | sub on_button_enable_bg_clicked { | |
125 | my $d = get_selected_daemon(); | |
126 | system "$aldm enable-bg ".$d; | |
127 | refresh_view(); | |
128 | status($d." enabled on init background!"); | |
129 | } | |
130 | ||
131 | sub on_button_disable_clicked { | |
132 | my $d = get_selected_daemon(); | |
133 | system "$aldm disable ".$d; | |
134 | refresh_view(); | |
135 | status($d." disabled!"); | |
136 | } |