Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:hoisnass
YaRT
yart.pl
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File yart.pl of Package YaRT
#!/usr/bin/perl -w ### FIX: # -Incorrect radio item active when program is run and screen IS rotated other than NORMAL use strict; use warnings; use Shell qw(xrandr xsetwacom); use Switch; use Gtk2 -init; if ($#ARGV != -1) { my $arg; foreach $arg (@ARGV) { switch ($arg) { case '-v' { print "YaRt (Yet Another Rotate Tool) Version 0.2\n";} case '-h' {print "Help!!\n"; shift @ARGV;} print "Unknown argument: $arg\n"; } } } ### Objects / Variables ### my $radio; my $hbox; my $label; my $separator; my $img; my $menuItem; my $cur_orientation; my $rotate_on_left_click = 'false'; my @wacom_dev = qw(stylus eraser cursor touch); my @wacom_param = qw(NONE HALF CCW CW); # Tray Icon my $status_icon = Gtk2::StatusIcon->new_from_file('yart-22.png'); # -Tooltip &set_tooltip; # -Menu my $menu = Gtk2::Menu->new(); ### Radio Menu Items ### # 'Normal' Radio $radio = Gtk2::RadioMenuItem->new(); $radio->signal_connect_swapped('activate', \&rotate_screen,'normal'); $menu->append($radio); # -HBox $hbox = Gtk2::HBox->new(); $radio->add($hbox); # -Label/Image $label = Gtk2::Label->new("Normal "); $hbox->add($label); $img = Gtk2::Image->new_from_stock("gtk-orientation-portrait", 'menu'); $hbox->add($img); # 'Upside Down' Radio $radio = Gtk2::RadioMenuItem->new($radio); $radio->signal_connect_swapped('activate', \&rotate_screen,'inverted'); $menu->append($radio); # -HBox $hbox = Gtk2::HBox->new(); $radio->add($hbox); # -Label/Image $label = Gtk2::Label->new("Upside Down"); $hbox->add($label); $img = Gtk2::Image->new_from_stock("gtk-orientation-reverse-portrait", 'menu'); $hbox->add($img); # 'Left' Radio $radio = Gtk2::RadioMenuItem->new($radio); $radio->signal_connect_swapped('activate', \&rotate_screen,'left'); $menu->append($radio); # -HBox $hbox = Gtk2::HBox->new(); $radio->add($hbox); # -Label/Image $label = Gtk2::Label->new("Left "); $hbox->add($label); $img = Gtk2::Image->new_from_stock("gtk-orientation-reverse-landscape", 'menu'); $hbox->add($img); # 'Right' Radio $radio = Gtk2::RadioMenuItem->new($radio); $radio->signal_connect_swapped('activate', \&rotate_screen,'right'); $menu->append($radio); # -HBox $hbox = Gtk2::HBox->new(); $radio->add($hbox); # -Label/Image $label = Gtk2::Label->new("Right "); $hbox->add($label); $img = Gtk2::Image->new_from_stock("gtk-orientation-landscape", 'menu'); $hbox->add($img); # Separator $separator = Gtk2::SeparatorMenuItem->new(); $menu->append($separator); # Menu Items $menuItem = Gtk2::ImageMenuItem->new_from_stock("gtk-preferences"); $menuItem->signal_connect('activate', \&show_pref_dialog); $menu->append($menuItem); $menuItem = Gtk2::ImageMenuItem->new_from_stock("gtk-about"); $menuItem->signal_connect('activate', \&show_about_dialog); $menu->append($menuItem); $menuItem = Gtk2::ImageMenuItem->new_from_stock('gtk-quit'); $menuItem->signal_connect('activate', \&quit_cb, $status_icon); $menu->append($menuItem); $status_icon->signal_connect('activate', \&activate_icon); $status_icon->signal_connect('popup-menu', \&popup_menu, $menu); $status_icon->set_visible(1); Gtk2->main(); # sub popup_menu { my ($widget, $button, $time, $menu) = @_; if ($button == 3) { my ($x, $y, $push_in) = Gtk2::StatusIcon::position_menu($menu, $widget); $menu->show_all(); $menu->popup(undef, undef, sub{return ($x,$y,0)} ,undef, 0, $time); } } #104-69-16 sub activate_icon { if ($rotate_on_left_click eq 'true') { switch ($cur_orientation) { case 'Normal' {&rotate_screen('right');} case 'Upside Down' {&rotate_screen('left');} case 'Left' {&rotate_screen('normal');} case 'Right' {&rotate_screen('inverted');} } } } # sub show_about_dialog { my $pixbuf = Gtk2::Gdk::Pixbuf->new_from_file("yart-128.png"); my $about_dialog = Gtk2::AboutDialog->new(); $about_dialog->set_default_icon_from_file('yart-16.png'); $about_dialog->set_program_name('YaRt'); $about_dialog->set_version('0.02'); $about_dialog->set_copyright('Copyright (c) 2009 Robert Alfaro'); $about_dialog->set_comments("Yet Another Rotation Tool for Wacom Tablet PC's"); $about_dialog->set_url_hook(\&launch_web_browser); $about_dialog->set_website_label("YaRt Website"); $about_dialog->set_website('http://nacaplaca.com/yart/'); $about_dialog->set_logo($pixbuf); $about_dialog->run(); $about_dialog->destroy(); } # sub launch_web_browser { my $browser=`gconftool-2 --get '/desktop/gnome/url-handlers/http/command' | cut -f1 -d' ' `; #system("$browser http://nacaplaca.com/yart"); } # sub rotate_screen { my( $orientation ) = @_; my $param; switch ($orientation) { case 'normal' {$param = $wacom_param[0];} case 'inverted' {$param = $wacom_param[1];} case 'left' {$param = $wacom_param[2];} case 'right' {$param = $wacom_param[3];} } xrandr("-o $orientation"); my $name; foreach $name (@wacom_dev) { xsetwacom("set $name Rotate $param"); } &set_tooltip; } sub get_current_rotation { my $expr = `xrandr --query --verbose | grep '(normal left inverted right)'`; my @result = split(' ', $expr); $cur_orientation = ucfirst($result[4]); } # sub set_tooltip { &get_current_rotation; if ($cur_orientation eq "Inverted") { $cur_orientation="Upside Down"; } $status_icon->set_tooltip( "Rotation: $cur_orientation" ); } # sub quit_cb { my ( $widget, $status_icon ) = @_; $status_icon->set_visible(0) if $status_icon; Gtk2->main_quit(); }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor