initial commit
[mirrors/ArchLinux-Daemon-Manager.git] / aldm-gui
CommitLineData
d14af94e
H
1#!/usr/bin/env perl
2#ArchLinux Daemon Manager Gui! by Harvie 2oo9
3use strict;
4use warnings;
5use utf8;
6use Gtk2 qw(-init);
7
8if($< > 0) {
9 #run as root
10 print "You are not root! Trying GKSU...\n";
11 system("gksu ".$0);
12 exit;
13}
14
15my $aldm = '/usr/sbin/aldm';
16
17my %iterators = {};
18
19my $builder = Gtk2::Builder->new();
20$builder->add_from_file('/usr/share/aldm-gui/aldm.ui');
21
22my %widgets;
23foreach 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
41refresh_view();
42
43$widgets{'window1'}->show();
44
45
46Gtk2->main();
47exit;
48
49sub on_window1_destroy
50{
51 Gtk2->main_quit();
52}
53
54sub on_imagemenuitem10_activate
55{
56 $widgets{'aboutdialog1'}->show();
57}
58
59sub on_aboutdialog1_close
60{
61 $widgets{'aboutdialog1'}->hide();
62}
63
64sub 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
91sub 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
100sub status
101{
102 $_[0] =~ s/^\s+|\s+$//g; #trim
103 $widgets{'label2'}->set_text($_[0]);
104}
105
106sub s_system
107{
108 open(my $pipe, "$_[0]|");
109 while(<$pipe>) { status($_); }
110 close($pipe);
111}
112
113sub on_button_start_clicked { s_system "$aldm start ".get_selected_daemon(); refresh_view(); }
114sub on_button_stop_clicked { s_system "$aldm stop ".get_selected_daemon(); refresh_view(); }
115sub on_button_restart_clicked { s_system "$aldm restart ".get_selected_daemon(); refresh_view(); }
116
117sub 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
124sub 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
131sub on_button_disable_clicked {
132 my $d = get_selected_daemon();
133 system "$aldm disable ".$d;
134 refresh_view();
135 status($d." disabled!");
136}
This page took 0.210111 seconds and 4 git commands to generate.