=== modified file 'bin/indicator-cpufreq' --- bin/indicator-cpufreq 2011-02-24 03:39:45 +0000 +++ bin/indicator-cpufreq 2011-06-04 06:46:04 +0000 @@ -67,7 +67,10 @@ help=_('Print the maximum debugging info (implies -vv)')) parser.add_option('-v', '--verbose', dest='logging_level', action='count', help=_('set error_level output to warning, info, and then debug')) - parser.set_defaults(logging_level=0, foo=None) + parser.add_option('-c', '--max-cpu', dest='max_cpu', action='store', type='int', + help=_('set maximum number of CPUs to display (default 8)')) + parser.set_defaults(logging_level=0, max_cpu=8, foo=None) + (options, args) = parser.parse_args() # set the verbosity @@ -76,7 +79,12 @@ logging.basicConfig(level=LEVELS[options.logging_level], format='%(asctime)s %(levelname)s %(message)s') # Run your cli application there. - from indicator_cpufreq.indicator import MyIndicator + from indicator_cpufreq.indicator import MyIndicator, CPUError import gtk - ind = MyIndicator() + ind = [] + for cpu in range(options.max_cpu): + try: + ind.append(MyIndicator(cpu)) + except CPUError: + break gtk.main() === modified file 'indicator_cpufreq/indicator.py' --- indicator_cpufreq/indicator.py 2011-02-26 14:36:20 +0000 +++ indicator_cpufreq/indicator.py 2011-06-04 06:47:53 +0000 @@ -37,7 +37,7 @@ # FIXME: replace value with user-selectable unit -FIXME_CPU = 0 +#FIXME_CPU = 0 def readable_frequency(f): return _("%s GHz") % locale.format(_("%.2f"), f / 1.0e6) @@ -56,9 +56,18 @@ else: return g +class CPUError(Exception): + pass + class MyIndicator(appindicator.Indicator): - def __init__(self): - appindicator.Indicator.__init__(self, "indicator-cpufreq", + def __init__(self, cpu_id): + + if cpufreq.cpu_exists(cpu_id) != 0: + raise CPUError() + + self.cpu = cpu_id + + appindicator.Indicator.__init__(self, "indicator-cpufreq-cpu" + str(self.cpu), "indicator-messages", appindicator.CATEGORY_HARDWARE) self.set_status(appindicator.STATUS_ACTIVE) @@ -71,8 +80,11 @@ self.select_items = {} group = None + menu.append(gtk.MenuItem("CPU " + str(self.cpu))) + menu.append(gtk.SeparatorMenuItem()) + # frequency menu items - freqs = cpufreq.get_available_frequencies(FIXME_CPU) + freqs = cpufreq.get_available_frequencies(self.cpu) for freq in freqs: menu_item = gtk.RadioMenuItem(group, readable_frequency(freq)) if group is None: @@ -84,7 +96,7 @@ menu.append(gtk.SeparatorMenuItem()) # governor menu items - governors = cpufreq.get_available_governors(FIXME_CPU) + governors = cpufreq.get_available_governors(self.cpu) for governor in governors: if governor == 'userspace': continue @@ -107,8 +119,8 @@ for i in self.select_items.values(): i.handler_block_by_func(self.select_activated) - fmin, fmax, governor = cpufreq.get_policy(FIXME_CPU) - freq = cpufreq.get_freq_kernel(FIXME_CPU) + fmin, fmax, governor = cpufreq.get_policy(self.cpu) + freq = cpufreq.get_freq_kernel(self.cpu) ratio = min([25, 50, 75, 100], key=lambda x: abs(x - (float(freq) / fmax * 100))) if freq < fmax and ratio == 100: @@ -134,10 +146,10 @@ "/Selector", introspect=False) if select == 'frequency': - proxy.SetFrequency(dbus.UInt32(FIXME_CPU), dbus.UInt32(value), + proxy.SetFrequency(dbus.UInt32(self.cpu), dbus.UInt32(value), dbus_interface='com.ubuntu.IndicatorCpufreqSelector') else: - proxy.SetGovernor(dbus.UInt32(FIXME_CPU), value, + proxy.SetGovernor(dbus.UInt32(self.cpu), value, dbus_interface='com.ubuntu.IndicatorCpufreqSelector') def can_set(self): @@ -146,6 +158,6 @@ gobject.type_register(MyIndicator) if __name__ == "__main__": - ind = MyIndicator() + ind = MyIndicator(0) gtk.main()