readme: Link to AUR package - fix
[mirrors/ArchLinux-Daemon-Manager.git] / aldm-gui
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('?', Gtk2::CellRendererText->new, text => 1);
36 $widgets{'treeview1'}->append_column($column);
37
38 $column = Gtk2::TreeViewColumn->new_with_attributes('Running', Gtk2::CellRendererText->new, text => 2);
39 $widgets{'treeview1'}->append_column($column);
40
41 $column = Gtk2::TreeViewColumn->new_with_attributes('WhatIs', Gtk2::CellRendererText->new, text => 3);
42 $widgets{'treeview1'}->append_column($column);
43
44 refresh_view();
45
46 $widgets{'window1'}->show();
47
48
49 Gtk2->main();
50 exit;
51
52 sub on_window1_destroy
53 {
54 Gtk2->main_quit();
55 }
56
57 sub on_imagemenuitem10_activate
58 {
59 $widgets{'aboutdialog1'}->show();
60 }
61
62 sub on_aboutdialog1_close
63 {
64 $widgets{'aboutdialog1'}->hide();
65 }
66
67 sub refresh_view
68 {
69 #clear
70 #$widgets{'liststore1'}->clear();
71
72 #list daemons
73 open(my $daemon_list, "$aldm list|");
74 while(<$daemon_list>) {
75 no warnings 'uninitialized';
76 $_ =~ s/^\s+|\s+$//g; #trim
77 open(my $whatis, "'$aldm' whatis '$_'|"); my $w = <$whatis>; close($whatis); $w =~ s/^\s+|\s+$//g; #trim
78 (my $run, $w) = split(/ /,$w,2);
79
80 #my $iter = $widgets{'liststore1'}->append();
81 #$widgets{'liststore1'}->set($iter, 0 => "$_", 1=> "$run", 2 => "$w");
82
83 my $state = $_;
84 $state =~ s/[a-zA-Z0-9 \-]*//g;
85
86 my $serv = $_;
87 $serv =~ s/^(!|@)//g;
88 if(!defined($iterators{$serv})) {
89 $iterators{$serv} = $widgets{'liststore1'}->append();
90 }
91 $widgets{'liststore1'}->set($iterators{$serv}, 0 => "$serv", 1=> "$state", 2=> "$run", 3 => "$w");
92 }
93 close($daemon_list);
94 }
95
96 sub get_selected_daemon
97 {
98 my $path = $widgets{'treeview1'}->get_selection->get_selected_rows;
99 my $model = $widgets{'treeview1'}->get_model;
100 my $iter = $model->get_iter($path);
101 my $str = $model->get ($iter, 0);
102 return $str;
103 }
104
105 sub status
106 {
107 $_[0] =~ s/^\s+|\s+$//g; #trim
108 $widgets{'label2'}->set_text($_[0]);
109 }
110
111 sub s_system
112 {
113 open(my $pipe, "$_[0]|");
114 while(<$pipe>) { status($_); }
115 close($pipe);
116 }
117
118 sub on_button_start_clicked { s_system "$aldm start ".get_selected_daemon(); refresh_view(); }
119 sub on_button_stop_clicked { s_system "$aldm stop ".get_selected_daemon(); refresh_view(); }
120 sub on_button_restart_clicked { s_system "$aldm restart ".get_selected_daemon(); refresh_view(); }
121
122 sub on_button_enable_fg_clicked {
123 my $d = get_selected_daemon();
124 system "$aldm enable-fg ".$d;
125 refresh_view();
126 status($d." enabled on init!");
127 }
128
129 sub on_button_enable_bg_clicked {
130 my $d = get_selected_daemon();
131 system "$aldm enable-bg ".$d;
132 refresh_view();
133 status($d." enabled on init background!");
134 }
135
136 sub on_button_disable_clicked {
137 my $d = get_selected_daemon();
138 system "$aldm disable ".$d;
139 refresh_view();
140 status($d." disabled!");
141 }
This page took 0.388563 seconds and 4 git commands to generate.